Share via


MyFSD_DeviceIoControl (Compact 2013)

3/26/2014

This function sends an I/O control directly to a specified device driver, causing the corresponding device to perform the specified operation. The application does not call this function directly. Instead, it uses the corresponding standard Win32 function DeviceIoControl. The File System Disk Manager (FSDMGR) determines the file system type and calls the MyFSD_DeviceIoControl implementation of the function.

Syntax

BOOL MyFSD_DeviceIoControl( 
  PFILE pFile, 
  DWORD dwIoControlCode, 
  PVOID pInBuf, 
  DWORD nInBufSize, 
  PVOID pOutBuf, 
  DWORD nOutBufSize, 
  PDWORD pBytesReturned, 
  OVERLAPPED* pOverlapped
);

Parameters

  • pFile
    [in] Pointer to the value that a file system driver (FSD) passes to the FSDMGR_CreateFileHandle function when creating the file handle.
  • dwIoControlCode
    [in] Control code for the operation. This value identifies the specific operation to be performed and the type of device on which the operation is to be performed.
  • pInBuf
    [in] Pointer to a buffer that contains the data required to perform the operation.

    This parameter can be set to NULL if dwIoControlCode specifies an operation that does not require input data.

  • nInBufSize
    [in] Size, in bytes, of the buffer pointed to by pInBuf.
  • pOutBuf
    [out] Pointer to a buffer that receives the operation output.

    This parameter can be set to NULL if dwIoControlCode specifies an operation that does not produce output data.

  • nOutBufSize
    [in] Size, in bytes, of the buffer pointed to by pOutBuf.
  • pBytesReturned
    [out] Pointer to a variable that receives the size, in bytes, of the data stored into the buffer pointed to by pOutBuf.

    The pBytesReturned parameter cannot be NULL. Even when an operation produces no output data and pOutBuf can be NULL, the DeviceIoControl function uses the variable pointed to by pBytesReturned. After such an operation, the value of the variable is without meaning.

  • pOverlapped
    Ignored. Set to NULL.

Return Value

Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.

Remarks

An FSD exports this function if it supports the DeviceIoControl function. All FSD functions can be called on re-entry. Therefore, take this into account when developing an FSD.

FSDMGR is a DLL that manages all OS interaction with installable files systems. Each installable file system requires an FSD, which is a DLL that supports an installable file system. The name of the DLL for an FSD and the names of the functions it exports start with the name of the associated installable file system. For example, if the name of file system is MyFSD, its DLL is MyFSD.dll, and its exported functions are prefaced with MyFSD_*.

FSDMGR provides service functions to FSDs. The FSDMGR_RegisterVolume, the FSDMGR_CreateFileHandle, and the FSDMGR_CreateSearchHandle functions record a DWORD of volume-specific data that an FSD associates with a volume. This volume-specific data is passed as the first parameter of these three functions.

Applications that access an installable file system use standard Win32 functions. For example, when an application creates a folder on a device that contains an installable file system, it calls the CreateDirectory function. FSDMGR recognizes that the path is to a device containing an installable file system and calls the appropriate function, which in the case of the MyFSD file system is MyFSD_CreateDirectoryW. That is, the application calls CreateDirectory, causing FSDMGR to call **MyFSD_CreateDirectoryW.

Requirements

Header

fsdmgr.h

Library

Fsdmgr.lib

See Also

Reference

MyFSD Functions
CreateDirectory
CreateFile
FSDMGR_CreateFileHandle
FSDMGR_CreateSearchHandle
FSDMGR_RegisterVolume
MyFSD_CreateDirectoryW

Other Resources

CreateEvent
DeviceIoControl