FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)

指出指定檔案中不需要由儲存系統儲存的範圍。

若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函式。

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // Handle to a file
  FSCTL_FILE_LEVEL_TRIM,            // dwIoControlCode
  (LPVOID) lpInBuffer,              // Input buffer
  (DWORD) nInBufferSize,            // Size of input buffer
  (LPVOID) lpOutBuffer,             // Output buffer
  (DWORD) nOutBufferSize,           // Size of output buffer
  (LPDWORD) lpBytesReturned,        // Number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

備註

FSCTL_FILE_LEVEL_TRIM控件程式代碼是基礎記憶體系統的提示。 當已修剪某個字節範圍時,如果稍後再讀取該範圍,傳回的數據可能是修剪作業之前的原始數據—所有零 (0x00 個字節) 、所有位元組 (0xff 位元組) 或組合。 在修剪作業傳遞至基礎儲存系統之前,輸入範圍會減少,以與 32 位版本和 x64 版本的 Windows) 8,192 個字節 Itanium-Based 版上的頁面界限對齊 (4,096 個字節。

如果在處理 lpInBuffer 參數所指向之輸入緩衝區中FILE_LEVEL_TRIM結構之後的FILE_LEVEL_TRIM_RANGE專案時發生錯誤,則處理會停止,而 lpOutBuffer 參數所指向之FILE_LEVEL_TRIM_OUTPUT結構的 NumRangesProcessed 成員則會指出已成功處理的範圍。 未處理 NumRangesProcessedFILE_LEVEL_TRIM 結構之 NumRanges 成員之間的任何範圍。

FSCTL_FILE_LEVEL_TRIM控件程式代碼與加密或壓縮的檔案不相容, (GetFileAttributes 會傳回FILE_ATTRIBUTE_ENCRYPTEDFILE_ATTRIBUTE_COMPRESSED) 而且會失敗並ERROR_INVALID_PARAMETER。 支援FILE_ATTRIBUTE_SPARSE_FILE ) 所指示的疏鬆檔案 (,但只能修剪已配置的範圍。 支援 BitLocker 技術加密磁碟區上的檔案,而個別加密的檔案則不受支援。

FSCTL_FILE_LEVEL_TRIM控件程式代碼不會參與交易。 如果在交易期間處理 FSCTL_FILE_LEVEL_TRIM 控制程式代碼,且交易已中止,則不會使用交易回復修剪。

成功修剪的範圍將會從文件系統快取中移除。

修剪的範圍可以超出 VDL (的有效數據長度,) 到 EOF (EOF) 為止。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此程序代碼。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明故障轉移 (TFO) Yes
具有向外延展檔案共用的SMB 3.0 (SO) Yes
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS) No

規格需求

需求
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
標頭 winioctl.h (包含 Windows.h)

另請參閱