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