<Return[F]><Top>

FindFirstFileEx

Declare Function Api_FindFirstFileEx& Lib "kernel32" Alias "FindFirstFileExA" (ByVal lpFileName$, ByVal InfoLevelId&, lpFindFileData As WIN32_FIND_DATA, ByVal fSearchOp&, ByVal lpSearchFilter&, ByVal dwAdditionalFlags&)

Declare Function FindFirstFileEx Lib "kernel32" Alias "FindFirstFileExA" (ByVal lpFileName As String, ByVal InfoLevelId As Long, lpFindFileData As WIN32_FIND_DATA, ByVal fSearchOp As Long, ByVal lpSearchFilter As Long, ByVal dwAdditionalFlags As Long) As Long

指定された名前と属性が一致するファイルのディレクトリを検索する。

パラメータ
lpFileName
    Windows 95: 有効なディレクトリまたはパスおよびファイル名を表す、NULL で終わる文字列へのポインタを指定する。

    この文字列には、ワイルドカード文字(* と ?)を含めることができる。この文字列の文字数は、MAX_PATH の値以下にする。
    Windows NT/2000: 有効なディレクトリまたはパスおよびファイル名を表す、NULL で終わる文字列へのポインタを指定する。

    この文字列にはワイルドカード文字(* と ?)を指定することができる。
    既定のパス文字列の最大長は、MAX_PATH に指定された文字数である。

    この制限は、FindFirstFileEx 関数がパスを解析する方法と関係がある。

    この制限を超えて MAX_PATH に指定された文字数より長いパスを送信するには、パスの前に "\\?\" を付加して FindFirstFileEx 関数

    のワイド(W)バージョンを呼び出する。"\\?\" を付加すると、関数はパスを解析しないため、FindFirstFileEx 関数で MAX_PATH よ

    り長いパスを使うことができる。ただし、パスに含まれる各構成要素は、MAX_PATH の文字数を超えないようにすること。

    この方法は、UNC 名にも適用できる。"\\?\" はパスの一部として無視される。たとえば、"\\?\C:\myworld\private" は

    "C:\myworld\private" と解釈される。また、"\\?\UNC\bill_g_1\hotstuff\coolapps" は、"\\bill_g_1\hotstuff\coolapps" と解釈され

    る。
fInfoLevelId
    返されるデータの情報レベルを表す、FINDEX_INFO_LEVELS 列挙型を指定する。
lpFindFileData
    ファイルのデータへのポインタを指定する。ポインタの型は、fInfoLevelId パラメータで指定された情報のレベルによって決まる。
fSearchOp
    ワイルドカードとの照合以外のフィルタ処理タイプを表す、FINDEX_SEARCH_OPS 列挙型を指定する。
lpSearchFilter
    指定した fSearchOp パラメータで、構造化検索情報が必要な場合は、lpSearchFilter パラメータに検索条件へのポインタを指定する。

    この関数では、拡張検索情報を必要とする fSearchOp パラメータの値はサポートされていないので、このポインタには NULL を指定する。
dwAdditionalFlags
    検索を制御するための補足フラグを指定する。

    大文字と小文字を区別して検索するには、FIND_FIRST_EX_CASE_SENSITIVE フラグを使う。

    既定の検索条件では、大文字と小文字を区別しない。この関数では、ほかのフラグは定義されていない。
 

戻り値
    関数が成功すると、後に続く FindNextFile 関数または FindClose 関数で使う検索ハンドルが返る。
    関数が失敗すると、INVALID_HANDLE_VALUE が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    FindFirstFileEx 関数は、検索ハンドルを開き、指定されたパターンと属性に最初に一致するファイル名を持つファイルの情報を返す。
    基礎となるファイルシステムが、ディレクトリのフィルタ処理以外に指定されたフィルタ処理タイプをサポートしていない場合、FindFirstFileEx

    関数は失敗し、ERROR_NOT_SUPPORTED エラーが返る。アプリケーションは、FINDEX_SEARCH_OPS 型の

    FileExSearchNameMatch を使って、独自のフィルタ処理を実行する必要がある。
    確立した検索ハンドルは、FindNextFile 関数で同じフィルタ処理のパターンに一致する別のファイルの検索に使う。検索ハンドルが不要に

    なった場合は、FindClose 関数で終了する。