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 參數所指向的緩衝區大小 (以位元組為單位)。 此值必須至少是 sizeof(FSCTL_OFFLOAD_READ_OUTPUT)。
狀態區塊
如果作業成功,FltFsControlFile 或 ZwFsControlFile 會傳回STATUS_SUCCESS。 否則,適當的函式可能會傳回下列其中一個 NTSTATUS 值。
| Code | Meaning |
|---|---|
| STATUS_INVALID_DEVICE_REQUEST | 指定的控制碼不是有效的檔案控制碼 |
| STATUS_INVALID_PARAMETER | 參數無效。 請參閱備註。 |
| STATUS_VOLUME_DISMOUNTED | 檔案系統磁碟區已卸載。 |
| STATUS_NOT_SUPPORTED | 此磁碟區不支援卸載讀取作業。 |
| STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED | 不支援要求的檔案類型。 下列檔案類型不支援卸載作業:交易檔案 (TxF);非使用者檔案;壓縮文件;加密檔案;稀疏檔案;NTFS 中繼資料檔案。 |
| 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_RESOURCES | 沒有足夠的資源來完成請求。 |
| 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 不是磁區邏輯磁區大小的倍數。
- 尺寸 不是 FSCTL_OFFLOAD_READ_INPUT 結構的大小。
- 檔案位移 + 複製長度>MAXULONGLONG。
需求
| 需求類型 | Requirement |
|---|---|
| 最低支援的用戶端 | 視窗8 |
| Header | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |