---
name: "FDICreate"
section: "3w"
platform: "linux"
package: "libwine-dev"
version: "1.4.1-4"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/FDICreate"
---

# FDICreate(3w)

## NAME

**FDICreate** (CABINET.20)

## SYNOPSIS

HFDI FDICreate\
  (\
   PFNALLOC *pfnalloc*,\
   PFNFREE  *pfnfree*,\
   PFNOPEN  *pfnopen*,\
   PFNREAD  *pfnread*,\
   PFNWRITE *pfnwrite*,\
   PFNCLOSE *pfnclose*,\
   PFNSEEK  *pfnseek*,\
   int      *cpuType*,\
   PERF     *perf*\
  )

## DESCRIPTION

Provided with several callbacks (all of them are mandatory), returns a handle which can be used to perform operations on cabinet files.

## PARAMS

*pfnalloc* **\[In\]**  A pointer to a function which allocates ram. Uses the same interface as malloc.

*pfnfree* **\[In\]**  A pointer to a function which frees ram. Uses the same interface as free.

*pfnopen* **\[In\]**  A pointer to a function which opens a file. Uses the same interface as \_open.

*pfnread* **\[In\]**  A pointer to a function which reads from a file into a caller-provided buffer. Uses the same interface as \_read.

*pfnwrite* **\[In\]**  A pointer to a function which writes to a file from a caller-provided buffer. Uses the same interface as \_write.

*pfnclose* **\[In\]**  A pointer to a function which closes a file handle. Uses the same interface as \_close.

*pfnseek* **\[In\]**  A pointer to a function which seeks in a file. Uses the same interface as \_lseek.

*cpuType* **\[In\]**  The type of CPU; ignored in Wine (recommended value: cpuUNKNOWN, aka **-1**).

*perf* **\[IO\]**  A pointer to an **ERF** structure. When FDICreate returns an error condition, error information may be found here as well as from GetLastError.

## RETURNS

On success, returns an **FDI** handle of type **HFDI**. On failure, the **NULL** file handle is returned. Error info can be retrieved from *perf*.

## INCLUDES

fdi.h

## IMPLEMENTATION

Declared in **"fdi.h"**.

Implemented in **"dlls/cabinet/fdi.c"**.

Debug channel **"cabinet"**.
