FSCTL_OFFLOAD_READ控件程式代碼
FSCTL_OFFLOAD_READ控制程式代碼會針對支援卸除讀取基本類型之記憶體系統中的數據區塊起始卸除讀取。
若要執行這項作業,請使用下列參數呼叫 FltFsControlFile 或 ZwFsControlFile 。
參數
實例 [in]: 僅限 FltFsControlFile 。 呼叫端的不透明實例指標。 這個參數是必要的,而且不能是 NULL。
FileObject [in]: 僅限 FltFsControlFile 。 指定要從中讀取之檔案的檔案指針對象。 這個參數是必要的,而且不能是 NULL。
FileHandle [in]: 僅限 ZwFsControlFile 。 要讀取之檔案的檔案句柄。 這個參數是必要的,而且不能是 NULL。
FsControlCode [in]:作業的控制程序代碼。 針對此作業使用 FSCTL_OFFLOAD_READ 。
InputBuffer [in]: FSCTL_OFFLOAD_READ_INPUT 結構的指標,其中包含要讀取的數據區塊大小和位移。
InputBufferLength [in]: InputBuffer 所指向緩衝區的大小,以位元組為單位。 這個值為 sizeof (FSCTL_OFFLOAD_READ_INPUT) 。
OutputBuffer [out]: FSCTL_OFFLOAD_READ_OUTPUT 結構的指標,可接收卸除讀取作業的結果。
OutputBufferLength [out]: OutputBuffer 參數所指向緩衝區的大小,以位元組為單位。 此值必須至少 為大小 (FSCTL_OFFLOAD_READ_OUTPUT) 。
狀態區塊
FltFsControlFile 或 ZwFsControlFile 會在作業成功時傳回STATUS_SUCCESS。 否則,適當的函式可能會傳回下列其中一個NTSTATUS值。
程式碼 | 意義 |
---|---|
STATUS_INVALID_DEVICE_REQUEST | 指定的句柄不是有效的檔案句柄 |
STATUS_INVALID_PARAMETER | 有一個參數無效。 請參閱<備註>。 |
STATUS_VOLUME_DISMOUNTED | 檔系統磁碟區已卸除。 |
STATUS_NOT_SUPPORTED | 此磁碟區不支援卸除讀取作業。 |
STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED | 不支援要求的文件類型。 這些文件類型不支援卸除作業:交易的檔案 (TxF) ;非用戶檔案;壓縮檔案;加密的檔案;疏鬆檔案;NTFS Metatdata 檔案。 |
STATUS_FILE_DELETED | 此檔案的數據流無效。 |
STATUS_FILE_CLOSED | 檔案句柄已關閉。 |
STATUS_INVALID_HANDLE | 指定的檔案句柄無效。 |
STATUS_FILE_LOCK_CONFLICT | 由於目前的檔案鎖定狀態,讀取許可權不足。 |
STATUS_END_OF_FILE | FSCTL_OFFLOAD_READ_INPUT的 FileOffset 成員會在文件尾 (EOF) 之後開始。 |
STATUS_DISMOUNTED_VOLUME | 卸除讀取無法在卸除的磁碟區上發生。 |
STATUS_INSUFFICIENT_RESOUCES | 資源不足,無法完成要求。 |
STATUS_BUFFER_TOO_SMALL | OutputBufferLength 太小,因此 OutputBuffer 無法接收 FSCTL_OFFLOAD_READ_OUTPUT 結構。 |
備註
卸除讀取僅適用於一般檔案。 如需不支援的文件類型清單,請參閱 STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED 的描述。
讀取可能會從有效數據長度 (VDL) 開始,但不能超過 EOF。
傳回STATUS_INVALID_PARAMETER時,錯誤可能是下列其中一個無效的參數:
- 檔案大小小於 PAGE_SIZE。
- InputBufferLength<
sizeof(FSCTL_OFFLOAD_READ_INPUT)
。 - 其中一或多個 FSCTL_OFFLOAD_READ_INPUT 成員不正確:
- FileOffset 不是磁碟區邏輯扇區大小的倍數。
- CopyLength 不是磁碟區邏輯扇區大小的倍數。
- size 不是 FSCTL_OFFLOAD_READ_INPUT 結構的大小。
- FileOffset + CopyLength>MAXULONGLONG。
規格需求
需求類型 | 需求 |
---|---|
最低支援的用戶端 | Windows 8 |
標頭 | Ntifs.h (包含 Ntifs.h 或 Fltkernel.h) |