共用方式為


FSCTL_SET_ZERO_DATA IOCTL (winioctl.h)

以零 (0) 填滿指定的檔案範圍。 如果檔案是疏鬆或壓縮的,NTFS 檔案系統可能會解除配置檔案中的磁碟空間。 這會將位元組範圍設定為零, (0) 而不擴充檔案大小。

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to a file
  FSCTL_SET_ZERO_DATA,              // dwIoControlCode
  (LPVOID) lpInBuffer,              // input buffer
  (DWORD) nInBufferSize,            // size of input buffer
  NULL,                             // lpOutBuffer
  0,                                // nOutBufferSize
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

備註

如需此作業上重迭 I/O 的影響,請參閱 DeviceIoControl 主題的一節。

如果您使用 WriteFile 函式將零 (0) 寫入疏鬆檔案,則檔案系統會配置您正在寫入之資料的磁碟空間。 如果您使用 FSCTL_SET_ZERO_DATA 控制項程式碼將零 (0) 寫入疏鬆檔案,而零 (0) 區域夠大,檔案系統可能無法配置磁碟空間。

如果您使用 FSCTL_SET_ZERO_DATA 控制項程式碼將零寫入非疏鬆檔案 (0) ,則會將零寫入檔案 (0) 。 系統會為 0 (0) 範圍的所有零配置磁片儲存體,這相當於使用 WriteFile 函式將零寫入檔案 (0) 。

遠端檔案的時間戳記可能無法正確更新。 若要確保結果一致,請使用未緩衝的 I/O。

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

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

規格需求

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

另請參閱