共用方式為


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 如果使用者只要求列舉中的一個專案,就會設定這個位。 提供者可能會將此視為提示,而且可以選擇傳回多個專案,讓列舉一次傳回一個專案更有效率。 在這種情況下,ProjFS 會將單一專案傳回給使用者,只在需要更多專案時叫用提供者。
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,或提供者存放區中沒有任何專案符合 searchExpression。
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
提供者收到 來自 PrjFillDirEntryBuffer 的錯誤,用於嘗試新增至 dirEntryBufferHandle 的第一個檔案或目錄。
HRESULT_FROM_WIN32 (ERROR_IO_PENDING)
提供者希望稍後完成作業。
 

如果提供者失敗作業,則為適當的 HRESULT 錯誤碼。

備註

叫用 PRJ_START_DIRECTORY_ENUMERATION_CB之後,ProjFS 會叫用此回呼一或多次。 如需詳細資訊,請參閱 PRJ_START_DIRECTORY_ENUMERATION_CB 的一節。

規格需求

需求
最低支援的用戶端 Windows 10 版本 1809 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server [僅限傳統型應用程式]
目標平台 Windows
標頭 projectedfslib.h