FindFirstFileEx

[New - Windows NT]

The FindFirstFileEx function searches a directory for a file whose name and attributes match those specified in the function call.

HANDLE FindFirstFileEx(

LPCTSTR lpFileName, // pointer to the name of the file to search for
FINDEX_INFO_LEVELS fInfoLevelId, // information level of the returned data
LPVOID lpFindFileData, // pointer to the returned information
FINDEX_SEARCH_OPS fSearchOp, // type of filtering to perform
LPVOID lpSearchFilter, // pointer to search criteria
DWORD dwAdditionalFlags // additional search control flags
);  

Parameters

lpFileName

Points to a null-terminated string that specifies a valid directory or path and filename, which can contain wildcard characters (* and ?).

fInfoLevelId

Specifies the information level of the returned data. If the FindExInfoStandard constant is used, the lpFindFileData pointer is the standard WIN32_FIND_DATA structure used with FindFirstFile. At this time, no other information levels are supported.

lpFindFileData

Pointer to the file data. The pointer type is determined by the level of information specified in the fInfoLevelId parameter.

fSearchOp

Specifies the type of filtering to perform beyond wildcard matching. For more details, see the Remarks section later in this topic.

lpSearchFilter

If the specified fSearchOp needs structured search information, lpSearchFilter points to the search criteria. At this time, none of the supported fSearchOp values require extended search information. Therefore, this pointer must be NULL.

dwAdditionalFlags

Specifies additional flags for controlling the search. You can use the FIND_FIRST_EX_CASE_SENSITIVE flag for case-sensitive searches. The default search is case insensitive. At this time, no other flags are defined.

Return Value

If the function succeeds, the return value is a search handle that can be used in a subsequent call to the FindNextFile or FindClose functions.

If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.

Remarks

The FindFirstFileEx function is provided to open a search handle and return information about the first file whose name matches the specified pattern and attributes.

The way additional filtering is done depends on the value of fSearchOp. The fSearchOp parameter can be one of the following values:

Value Meaning
FindExSearchNameMatch Search for a file that matches the specified filename. Note that lpSearchFilter must be NULL when this search operation is used.
FindExSearchLimitToDevices Only device names are returned. Device names are generally accessible through the \\.\<name> convention. The dwAdditionalFlags parameter cannot be FIND_FIRST_EX_CASE_SENSITIVE when this search operation is used.
FindExSearchLimitToDirectories This is an advisory flag.

If the file system supports directory filtering, the function searches for a "file" that matches the specified filename and that is a directory.

If the file system does not support directory filtering, this flag is silently ignored.

The lpSearchFilter parameter must be NULL when this search operation is used.

If you want directory filtering, use this flag on all file systems, but be sure to examine the file attribute data stored into *lpFindFileData to determine whether the function has indeed returned a handle to a directory.


If the underlying file system does not support a particular type of filtering, other than directory filtering, FindFirstFileEx fails with the error ERROR_NOT_SUPPORTED. The application has to use type FileExSearchNameMatch and perform its own filtering.

Once established, the search handle can be used in the FindNextFile function to search for other files that match the same pattern with the same filtering being performed. When the search handle is no longer needed, it should be closed using the FindClose function.

The call

FindFirstFileEx( lpFileName,

FindExInfoStandard,

lpFindData,

FindExSearchNameMatch,

NULL,

0 );

is equivalent to the call

FindFirstFile( lpFileName, lpFindData);

See Also

FindFirstFile, FindNextFile, FindClose, WIN32_FIND_DATA