This function searches a directory for a file in an installable file system whose name matches the specified file name. This function also examines subdirectory names as well as file names. The application does not call this function directly. Instead, use the corresponding standard Win32 function FindFirstFile. The file system driver (FSD) Manager determines the file system type and calls the MyFSD_FindFirstFileW implementation of the function.

HANDLE MyFSD_FindFirstFileW( 
PVOLUME pVolume, 
PCWSTR pwsFileSpec, 


  • pVolume
    Pointer to the value that the file system driver (FSD) passes to the FSDMGR_RegisterVolume function when it creates the file handle.

  • hProc
    Handle of the process that calls FindFirstFile.

  • pwsFileSpec
    [in] Pointer to a null-terminated string that specifies a valid directory or path and filename, which can contain wildcard characters (* and ?).

    There is a default string size limit for paths of MAX_PATH characters. This limit is related to how the FindFirstFile function parses paths.

  • pfd
    [out] Pointer to the WIN32_FIND_DATA structure that receives information about the found file or subdirectory.

Return Values

A search handle used in a subsequent call to MyFSD_FindNextFileW or MyFSD_FindClose indicates success. INVALID_HANDLE_VALUE indicates failure. To get extended error information, call GetLastError.


The **MyFSD_FindFirstFileW function opens a search handle and returns information about the first file whose name matches the specified pattern. Once the search handle is established, the **MyFSD_FindNextFileW function searches for other files that match the same pattern. When the search handle is no longer needed, close it by using the **MyFSD_FindClose function.

This function searches for files by name only; it cannot be used for attribute-based searches.

An FSD exports this function if it wants to support the FindFirstFile function. All FSD functions can be called reentryly, therefore, FSD developers must take this into account when developing an FSD.

The Fsdmgr component is a dynamic-link library (DLL) that manages all operating system interaction with installable files systems. Each installable file system requires an FSD, which is a DLL that exports an API needed to support an installable file system. The name of the DLL for the 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, then its DLL is MyFSD.dll and its exported functions are prefaced with MyFSD_*.

Fsdmgr provides service functions to FSDs. The FSDMGR_RegisterVolume, FSDMGR_CreateFileHandle, and FSDMGR_CreateSearchHandle functions record a DWORD of volume-specific data the FSD needs to keep associated with 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 wants to create a folder on a device that contains an installable file system, it calls CreateDirectory. 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.


Runs on Versions Defined in Include Link to
Windows CE OS 2.10 and later Fsdmgr.h    

Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

See Also

CreateDirectory, FindFirstFile, FindClose, FindNextFile, FSDMGR_CreateFileHandle, FSDMGR_CreateSearchHandle, FSDMGR_RegisterVolume, GetLastError, MyFSD_CreateDirectoryW, MyFSD_FindClose, MyFSD_FindNextFileW, WIN32_FIND_DATA

 Last updated on Tuesday, July 13, 2004

© 1992-2000 Microsoft Corporation. All rights reserved.