次の方法で共有


コールバック関数PRJ_GET_DIRECTORY_ENUMERATION_CB (projectedfslib.h)

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

構文

PRJ_GET_DIRECTORY_ENUMERATION_CB PrjGetDirectoryEnumerationCb;

HRESULT PrjGetDirectoryEnumerationCb(
  [in]           const PRJ_CALLBACK_DATA *callbackData,
  [in]           const GUID *enumerationId,
  [in, optional] PCWSTR searchExpression,
  [in]           PRJ_DIR_ENTRY_BUFFER_HANDLE dirEntryBufferHandle
)
{...}

パラメーター

[in] callbackData

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

FilePathName 列挙するディレクトリを識別します。
VersionInfo 列挙するディレクトリのバージョン情報を提供します。
フラグ 列挙体で返される内容を制御するためのフラグ。 有効な値は次のとおりです。
PRJ_CB_DATA_FLAG_ENUM_RETURN_SINGLE_ENTRY このビットは、ユーザーが列挙体から 1 つのエントリのみを要求している場合に設定されます。 プロバイダーはこれをヒントとして扱い、一度に 1 つの項目を返す列挙を効率的にするために複数のエントリを返すように選択できます。 このような場合、ProjFS はユーザーに 1 つのエントリを返し、より多くのエントリが必要な場合にのみプロバイダーを呼び出します。
PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN このビットは、列挙がディレクトリ内の最初のエントリから開始する場合に設定されます。 列挙セッションに対するこのコールバックの最初の呼び出しでは、プロバイダーは値に関係なく、このフラグをセットとして扱う必要があります。 すべての列挙は、最初のエントリから開始する必要があります。 このコールバックの後続の呼び出しでは、プロバイダーはこの値を受け入る必要があります。
 

プロバイダーは、コールバックの実行中にのみこのバッファーにアクセスできます。 操作をペンで処理し、このバッファーのデータが必要な場合は、独自のコピーを作成する必要があります。

[in] enumerationId

この列挙セッションの識別子。

[in, optional] searchExpression

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

このパラメーターは省略可能であり、NULL である可能性があります。

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

プロバイダーは、列挙セッションのこのコールバックの最初の呼び出しでこのパラメーターの値をキャプチャし、callbackDataFlags メンバーでPRJ_CB_DATA_FLAG_ENUM_RESTART_SCANが指定されていない限り、これらの呼び出しではこのパラメーターを無視して、後続の呼び出しでそれを使用する必要があります。 その場合、プロバイダーは searchExpression の値を再キャプチャする必要があります。

[in] dirEntryBufferHandle

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

戻り値

リターン コード 説明
S_OK
プロバイダーが dirEntryBufferHandle に少なくとも 1 つのエントリを正常に追加したか、プロバイダーのストア match searchExpression にエントリが追加されていない。
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
dirEntryBufferHandle に追加しようとした最初のファイルまたはディレクトリについて、プロバイダーは PrjFillDirEntryBuffer からこのエラーを受信しました。
HRESULT_FROM_WIN32(ERROR_IO_PENDING)
プロバイダーは、後で操作を完了することを望みます。
 

プロバイダーが操作に失敗した場合の適切な HRESULT エラー コード。

注釈

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

要件

要件
サポートされている最小のクライアント Windows 10 Version 1809 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー projectedfslib.h