FSCTL_QUERY_FILE_LAYOUT控件程序代碼

FSCTL_QUERY_FILE_LAYOUT控制程式代碼會擷取檔系統磁碟區的檔案配置資訊。 此要求的結果是檔案配置信息專案的集合。 傳回的專案類型是透過在 QUERY_FILE_LAYOUT_INPUT 結構中設定包含旗標來控制。 您可以選擇性地篩選結果,方法是提供一組檔案範圍來限制配置資訊的選取範圍。

若要執行這項作業,請使用下列參數呼叫 FltFsControlFileZwFsControlFile

參數

  • FileObject [in]: 僅限 FltFsControlFile 。 檔系統磁碟區的檔案物件指標。 這個參數是必要的,而且不能是 NULL

  • FileHandle [in]: 僅限 ZwFsControlFile 。 檔系統磁碟區的檔案句柄。 這個參數是必要的,而且不能是 NULL

  • FsControlCode [in]:作業的控制程序代碼。 針對此作業,請使用 FSCTL_QUERY_FILE_LAYOUT 控件程序代碼。

  • InputBuffer [in]:呼叫端配置的 QUERY_FILE_LAYOUT_INPUT 結構的指標。 這個結構包含選取選項。 選擇性檔案範圍包含在 QUERY_FILE_LAYOUT_INPUT之後。

  • InputBufferLength [in]: InputBuffer 參數所指向之緩衝區的大小,以位元組為單位。 當 NumberOfPairs> 0 時,InputBuffer 的大小至少必須是 sizeof (QUERY_FILE_LAYOUT_INPUT) + (sizeof (Filter) * (NumberOfPairs - 1) ) 。 否則,請設定 InputBufferLength = sizeof (QUERY_FILE_LAYOUT_INPUT) 。

  • OutputBuffer [out]:呼叫 端配置的QUERY_FILE_LAYOUT_OUTPUT 結構的指標。 這是此緩衝區中後續的檔案配置項目標頭。

  • OutputBufferLength [out]: OutputBuffer 參數所指向緩衝區的大小,以位元組為單位。 OutputBuffer 的大小必須夠大,才能包含QUERY_FILE_LAYOUT_OUTPUT以及傳回的檔案配置和數據流配置結構。

狀態區塊

FltFsControlFileZwFsControlFile 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一個值:

程式碼 意義
STATUS_INVALID_PARAMETER 檔系統磁碟區不是開啟的使用者磁碟區,或是緩衝區長度值不正確,或是已設定無效的查詢選項。
STATUS_ACCESS_DENIED 呼叫端無法存取檔系統磁碟區。
STATUS_INVALID_USER_BUFFER InputBufferOutputBuffer 的指標未正確對齊。
STATUS_BUFFER_TOO_SMALL OutputBufferLength 中的值表示 OutputBuffer 太小而無法包含至少一個版面配置專案。
STATUS_END_OF_FILE InputBufferOutputBuffer 的指標未正確對齊。

備註

若要擷取磁碟區的所有配置專案,FSCTL_QUERY_FILE_LAYOUT要求會多次發出,直到 傳回STATUS_END_OF_FILE 為止。 傳回 STATUS_SUCCESS 時,呼叫端可以繼續傳送其餘版面配置專案的FSCTL_QUERY_FILE_LAYOUT要求。

配置專案的列舉可以隨時重新啟動,方法是在 QUERY_FILE_LAYOUT_INPUTFlags 成員中包含 QUERY_FILE_LAYOUT_RESTART 旗標。 此外,在FSCTL_QUERY_FILE_LAYOUT傳回 STATUS_END_OF_FILE之後,必須在下一個FSCTL_QUERY_FILE_LAYOUT要求中包含 QUERY_FILE_LAYOUT_RESTART 旗標,才能開始另一個配置專案列舉。

ReFS 不支援此程序代碼。

規格需求

需求類型 需求
最低支援的用戶端 Windows 8.1 更新版
標頭 Ntifs.h (包含 Ntifs.hFltkernel.h)

另請參閱

QUERY_FILE_LAYOUT_INPUT

QUERY_FILE_LAYOUT_OUTPUT

FltFsControlFile

ZwFsControlFile