FSCTL_QUERY_FILE_LAYOUT控件程序代碼
FSCTL_QUERY_FILE_LAYOUT控制程式代碼會擷取檔系統磁碟區的檔案配置資訊。 此要求的結果是檔案配置信息專案的集合。 傳回的專案類型是透過在 QUERY_FILE_LAYOUT_INPUT 結構中設定包含旗標來控制。 您可以選擇性地篩選結果,方法是提供一組檔案範圍來限制配置資訊的選取範圍。
若要執行這項作業,請使用下列參數呼叫 FltFsControlFile 或 ZwFsControlFile 。
參數
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以及傳回的檔案配置和數據流配置結構。
狀態區塊
FltFsControlFile 或 ZwFsControlFile 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一個值:
程式碼 | 意義 |
---|---|
STATUS_INVALID_PARAMETER | 檔系統磁碟區不是開啟的使用者磁碟區,或是緩衝區長度值不正確,或是已設定無效的查詢選項。 |
STATUS_ACCESS_DENIED | 呼叫端無法存取檔系統磁碟區。 |
STATUS_INVALID_USER_BUFFER | InputBuffer 或 OutputBuffer 的指標未正確對齊。 |
STATUS_BUFFER_TOO_SMALL | OutputBufferLength 中的值表示 OutputBuffer 太小而無法包含至少一個版面配置專案。 |
STATUS_END_OF_FILE | InputBuffer 或 OutputBuffer 的指標未正確對齊。 |
備註
若要擷取磁碟區的所有配置專案,FSCTL_QUERY_FILE_LAYOUT要求會多次發出,直到 傳回STATUS_END_OF_FILE 為止。 傳回 STATUS_SUCCESS 時,呼叫端可以繼續傳送其餘版面配置專案的FSCTL_QUERY_FILE_LAYOUT要求。
配置專案的列舉可以隨時重新啟動,方法是在 QUERY_FILE_LAYOUT_INPUT 的 Flags 成員中包含 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.h 或 Fltkernel.h) |