Win32 API 日本語リファレンス
ホーム › Storage.ProjectedFileSystem › PRJ_GET_DIRECTORY_ENUMERATION_CB

PRJ_GET_DIRECTORY_ENUMERATION_CB

コールバック

シグネチャ

HRESULT PRJ_GET_DIRECTORY_ENUMERATION_CB(
    PRJ_CALLBACK_DATA* callbackData,
    GUID* enumerationId,
    LPWSTR searchExpression,
    PRJ_DIR_ENTRY_BUFFER_HANDLE dirEntryBufferHandle
);

パラメーター

フィールド型説明
callbackDataPRJ_CALLBACK_DATA*

操作に関する情報です。このコールバックを実装するには、次の callbackData メンバーが必要です:

FilePathName 列挙対象のディレクトリを示します。
VersionInfo 列挙対象のディレクトリのバージョン情報を提供します。
Flags 列挙で何を返すかを制御するフラグです。有効な値は次のとおりです:
PRJ_CB_DATA_FLAG_ENUM_RETURN_SINGLE_ENTRY ユーザーが列挙から 1 つのエントリのみを要求している場合に、このビットが設定されます。プロバイダーはこれをヒントとして扱うことができ、1 度に 1 項目を返す列挙をより効率的にするために、複数のエントリを返すことを選択してもかまいません。 その場合、ProjFS はユーザーに単一のエントリを返し、さらにエントリが必要になったときにのみプロバイダーを呼び出します。
PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN 列挙をディレクトリの先頭のエントリから開始する場合に、このビットが設定されます。列挙セッションでこのコールバックが最初に呼び出されるときは、プロバイダーはこのフラグの値にかかわらず、設定されているものとして扱う必要があります。すべての列挙は先頭のエントリから開始しなければなりません。 このコールバックの以降の呼び出しでは、プロバイダーはこの値に従う必要があります。

プロバイダーがこのバッファーにアクセスできるのは、コールバックの実行中のみです。操作を保留にしたい場合で、このバッファーのデータが必要なときは、プロバイダー自身がそのコピーを作成する必要があります。

enumerationIdGUID*この列挙セッションの識別子です。
searchExpressionLPWSTR

検索式を指定する、null で終わる Unicode 文字列へのポインターです。検索式にはワイルドカード文字を含めることができます。プロバイダーは、searchExpression にワイルドカードが含まれているかどうかを判定するために PrjDoesNameContainWildCards 関数を使用し、バッキングストア内のエントリがワイルドカードを含む検索式に一致するかどうかを判定するために PrjFileNameMatch 関数を使用してください。

このパラメーターは省略可能で、NULL でもかまいません。

  • このパラメーターが NULL でない場合、プロバイダーは名前が検索式に一致するディレクトリエントリのみを返す必要があります。
  • このパラメーターが NULL の場合、プロバイダーはすべてのディレクトリエントリを返す必要があります。

プロバイダーは、列挙セッションでこのコールバックが最初に呼び出されたときにこのパラメーターの値を保持し、以降の呼び出しではその保持した値を使用して、それらの呼び出しではこのパラメーターを無視してください。ただし、callbackData の Flags メンバーに PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN が指定されている場合は除きます。その場合、プロバイダーは searchExpression. の値を取得し直す必要があります。

dirEntryBufferHandlePRJ_DIR_ENTRY_BUFFER_HANDLEプロバイダーからの列挙結果を受け取る構造体への不透明なハンドルです。プロバイダーは、この構造体を設定するために PrjFillDirEntryBuffer ルーチンを使用します。

公式ドキュメント

プロバイダーにディレクトリ列挙の情報を要求します。

戻り値

戻り値 説明
S_OK
プロバイダーが dirEntryBufferHandle に少なくとも 1 つのエントリを追加できたか、またはプロバイダーのストア内に searchExpression に一致するエントリがありません。
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
プロバイダーが dirEntryBufferHandle に最初に追加しようとしたファイルまたはディレクトリについて、PrjFillDirEntryBuffer からこのエラーを受け取りました。
HRESULT_FROM_WIN32(ERROR_IO_PENDING)

プロバイダーが操作を後で完了することを望んでいます。

プロバイダーが操作を失敗させる場合は、適切な HRESULT エラーコードを返します。

解説(Remarks)

ProjFS は、PRJ_START_DIRECTORY_ENUMERATION_CB を呼び出した後、このコールバックを 1 回以上呼び出します。詳細については、PRJ_START_DIRECTORY_ENUMERATION_CB の「解説」セクションを参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)