FSCTL_ENUM_EXTERNAL_BACKING控件程式代碼會開始或繼續列舉具有備份來源的磁碟區上的檔案。 針對要求的每個成功完成,會傳回所支援檔案的標識碼。 不論哪個外部提供者支援它,所有支援的檔案都會列舉。 需要後續 FSCTL_ENUM_EXTERNAL_BACKING 要求,才能列舉磁碟區上所有支持的檔案。
若要執行這項作業,請使用下列參數呼叫 FltFsControlFile 或 ZwFsControlFile。
參數
實例 [in]: 僅限 FltFsControlFile 。 呼叫端的不透明實例指標。 這是必要參數,而且無法 NULL。
FileObject [in]: 僅 FltFsControlFile 。 指定要卸除之磁碟區的檔案指針對象。 這是必要參數,而且無法 NULL。
FileHandle [in]: 僅限 ZwFsControlFile 。 要卸除之磁碟區的檔案句柄。 這是必要參數,而且無法 NULL。
FsControlCode [in]:控制作業的程序代碼。 針對此作業使用 FSCTL_ENUM_EXTERNAL_BACKING 。
InputBuffer [in]:無。 設定為 NULL。
InputBufferLength [in]:設定為 0。
OutputBuffer [out]:輸出緩衝區的指標,其大小必須夠大,才能接收一或多個 WOF_EXTERNAL_FILE_ID 結構。
OutputBufferLength [out]: OutputBuffer 所指向的輸出緩衝區大小。 OutputBufferLength 必須是 >= sizeof(WOF_EXTERNAL_FILE_ID)。
LengthReturned [out]:指定成功完成時寫入 OutputBuffer 的位元組數目。
狀態區塊
如果作業成功,FltFsControlFile 或 ZwFsControlFile 會傳回STATUS_SUCCESS。 否則,適當的函式可能會傳回下列其中一個NTSTATUS值。
| Code | 意義 |
|---|---|
| 存取被拒 (STATUS_ACCESS_DENIED) | 要求者沒有系統管理許可權。 |
| STATUS_BUFFER_TOO_SMALL | OutputBuffer 所指向且由 OutputBufferLength 指定的輸出緩衝區長度太小。 |
| STATUS_NO_MORE_FILES | 磁碟區上沒有其他檔案具有備份來源。 |
| 內部錯誤狀態 | 無法存取要求的磁碟區。 |
| STATUS_INVALID_DEVICE_REQUEST | 備份服務不存在或未啟動。 |
備註
OutputBuffer 中所傳回WOF_EXTERNAL_FILE_ID結構包含支援檔案的唯一檔案識別碼。 結構定義於 ntifs.h 中,如下所示。
typedef struct _WOF_EXTERNAL_FILE_ID {
FILE_ID_128 FileId;
} WOF_EXTERNAL_FILE_ID, *PWOF_EXTERNAL_FILE_ID;
系統會連續發出 FSCTL_ENUM_EXTERNAL_BACKING 要求,以擷取具有備份來源之磁碟區上每個檔案的標識符。 列舉所有檔案時,會傳回STATUS_NO_MORE_FILES狀態代碼。
需求
| 需求類型 | 要求 |
|---|---|
| 最低支援的用戶端 | Windows 8.1 更新版 |
| 頁首 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |