_findfirst, _wfindfirst
Provide information about the first instance of a file name that matches the file specified in the filespec argument.
intptr_t _findfirst( const char *filespec, struct _finddata_t *fileinfo ); intptr_t _findfirst32( const char *filespec, struct _finddata32_t *fileinfo ); intptr_t _findfirst64( const char *filespec, struct _finddata64_t *fileinfo ); intptr_t _findfirsti64( const char *filespec, struct _finddatai64_t *fileinfo ); intptr_t _findfirst32i64( const char *filespec, struct _finddata32i64_t *fileinfo ); intptr_t _findfirst64i32( const char *filespec, struct _finddata64i32_t *fileinfo ); intptr_t _wfindfirst( const wchar_t *filespec, struct _wfinddata_t *fileinfo ); intptr_t _wfindfirst32( const wchar_t *filespec, struct _wfinddata32_t *fileinfo ); intptr_t _wfindfirst64( const wchar_t *filespec, struct _wfinddata64_t *fileinfo ); intptr_t _wfindfirsti64( const wchar_t *filespec, struct _wfinddatai64_t *fileinfo ); intptr_t _wfindfirst32i64( const wchar_t *filespec, struct _wfinddata32i64_t *fileinfo ); intptr_t _wfindfirst64i32( const wchar_t *filespec, struct _wfinddata64i32_t *fileinfo );
If successful, _findfirst returns a unique search handle identifying the file or group of files that match the filespec specification, which can be used in a subsequent call to _findnext or to _findclose. Otherwise, _findfirst returns –1 and sets errno to one of the following values.
For more information about these and other return codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.
If an invalid parameter is passed in, these functions invoke the invalid parameter handler, as described in Parameter Validation.
You must call _findclose after you are finished with either the _findfirst or _findnext function (or any variants). This frees resources used by these functions in your application.
The variations of these functions that have the w prefix are wide-character versions; otherwise, they are identical to the corresponding single-byte functions.
Variations of these functions support 32-bit or 64-bit time types and 32-bit or 64-bit file sizes. The first numeric suffix (32 or 64) indicates the size of the time type; the second suffix is either i32 or i64, and indicates whether the file size is represented as a 32-bit or 64-bit integer. For information about which versions support 32-bit and 64-bit time types and file sizes, see the following table. The i32 or i64 suffix is omitted if it is the same as the size of the time type, so _findfirst64 also supports 64-bit file lengths and _findfirst32 supports only 32-bit file lengths.
These functions use various forms of the _finddata_t structure for the fileinfo parameter. For more information about the structure, see _find, _wfind Functions.
The variations that use a 64-bit time type enable file-creation dates to be expressed up through 23:59:59, December 31, 3000, UTC. Those that use 32-bit time types represent dates only through 19:14:07 January 18, 2038, UTC. Midnight, January 1, 1970, is the lower bound of the date range for all these functions.
Unless you have a specific reason to use the versions that specify the time size explicitly, use _findfirst or _wfindfirst or, if you need to support file sizes larger than 3 GB, use _findfirsti64 or _wfindfirsti64. All these functions use the 64-bit time type. In earlier versions, these functions used a 32-bit time type. If this is a breaking change for an application, you might define _USE_32BIT_TIME_T to revert to the old behavior. If _USE_32BIT_TIME_T is defined, _findfirst, _finfirsti64, and their corresponding Unicode versions use a 32-bit time.
|
Functions |
_USE_32BIT_TIME_T defined? |
Time type |
File length type |
|---|---|---|---|
|
_findfirst , _wfindfirst |
Not defined |
64-bit |
32-bit |
|
_findfirst , _wfindfirst |
Defined |
32-bit |
32-bit |
|
_findfirst32 , _wfindfirst32 |
Not affected by the macro definition |
32-bit |
32-bit |
|
_findfirst64 , _wfindfirst64 |
Not affected by the macro definition |
64-bit |
64-bit |
|
_findfirsti64 , _wfindfirsti64 |
Not defined |
64-bit |
64-bit |
|
_findfirsti64 , _wfindfirsti64 |
Defined |
32-bit |
64-bit |
|
_findfirst32i64 , _wfindfirst32i64 |
Not affected by the macro definition |
32-bit |
64-bit |
|
_findfirst64i32 , _wfindfirst64i32 |
Not affected by the macro definition |
64-bit |
32-bit |
|
Tchar.h routine |
_UNICODE and _MBCS not defined |
_MBCS defined |
_UNICODE defined |
|---|---|---|---|
|
_tfindfirst |
_findfirst |
_findfirst |
_wfindfirst |
|
_tfindfirst32 |
_findfirst32 |
_findfirst32 |
_wfindfirst32 |
|
_tfindfirst64 |
_findfirst64 |
_findfirst64 |
_wfindfirst64 |
|
_tfindfirsti64 |
_findfirsti64 |
_findfirsti64 |
_wfindfirsti64 |
|
_tfindfirst32i64 |
_findfirst32i64 |
_findfirst32i64 |
_wfindfirst32i64 |
|
_tfindfirst64i32 |
_findfirst64i32 |
_findfirst64i32 |
_wfindfirst64i32 |
|
Function |
Required header |
|---|---|
|
_findfirst |
<io.h> |
|
_findfirst32 |
<io.h> |
|
_findfirst64 |
<io.h> |
|
_findfirsti64 |
<io.h> |
|
_findfirst32i64 |
<io.h> |
|
_findfirst64i32 |
<io.h> |
|
_wfindfirst |
<io.h> or <wchar.h> |
|
_wfindfirst32 |
<io.h> or <wchar.h> |
|
_wfindfirst64 |
<io.h> or <wchar.h> |
|
_wfindfirsti64 |
<io.h> or <wchar.h> |
|
_wfindfirst32i64 |
<io.h> or <wchar.h> |
|
_wfindfirst64i32 |
<io.h> or <wchar.h> |
For more compatibility information, see Compatibility in the Introduction.
Invalid parameter: filespec or fileinfo was NULL. Or, the operating system returned an unexpected error. It also occurs if filespec is a path that starts with a space.
- 12/15/2010
- Cédric Guillemette
