# fpOpenFile()

This function opens a file to make the file accessible for subfile extraction or filtering.

## Syntax

    int (pascal *fpOpenFile) (
        void                      *pContext,
        KVOpenFileArg              openArg,
        void                      **pFile);

## Arguments

`pContext` | A pointer returned from `fpInit()` or `fpInitWithLicenseData()`.
`openArg` | A pointer to the`` KVOpenFileArg structure. This structure defines the input parameters necessary to open a file for extraction, such as credentials, and the default extraction directory. Before you initialize the `KVOpenFileArg` structure, use the macro `KVStructInit` to initialize the `KVStructHead` structure.
`pFile` | A handle for the opened file. This handle is used in subsequent file extraction calls to identify the source file.

## Returns

- If the file is opened, the return value is `KVERR_Success`.

- If the file is not opened, the return value is an error code and `pFile` is `NULL`.

## Discussion

Call fpCloseFile() to free the memory allocated by this function.

When extracting out-of-process in streaming mode, you can only open one container at a time (per `pContext` pointer).

## Example

    KVOpenFileArgRec    openArg;

    /*Initialize the structure using KVStructInit*/
    KVStructInit(&openArg);
    openArg.extractDir = destDir;
    openArg.filePath   = srcFile;

    /*Open the main file */
    if ( (error = extractInterface->fpOpenFile(pFilter,&openArg,&pFile)))
    {
       extractInterface->fpCloseFile(pFile);
       pFile = NULL;
    }

_FT_HTML5_bannerTitle.htm