共用方式為


FSCTL_DELETE_USN_JOURNAL IOCTL (winioctl.h)

刪除磁碟區上的更新序號 (USN) 變更日誌,或等候變更日誌刪除的通知。

C++
BOOL 
WINAPI 
DeviceIoControl( (HANDLE) hDevice,              // handle to volume
                 FSCTL_DELETE_USN_JOURNAL,      // dwIoControlCode(LPVOID) lpInBuffer,           // input buffer
                 (DWORD) nInBufferSize,         // size of input buffer
                 NULL,                          // lpOutBuffer0,                             // nOutBufferSize(LPDWORD) lpBytesReturned,     // number of bytes returned
                 (LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure

言論

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

您可以使用 FSCTL_DELETE_USN_JOURNAL 來刪除變更紀錄。 除非在 DeleteFlagsDELETE_USN_JOURNAL_DATA成員中設定 USN_DELETE_FLAG_NOTIFY 旗標,否則 NTFS 文件系統會啟動刪除作業,並立即傳回呼叫進程。

如果同時設定 USN_DELETE_FLAG_NOTIFYUSN_DELETE_FLAG_DELETE 旗標,則呼叫 FSCTL_DELETE_USN_JOURNAL 會開始刪除程式。 然後呼叫會封鎖呼叫線程並等候刪除(在同步或非重疊的呼叫上),或使用I/O完成埠或其他機制來設定事件通知,並傳回 (在異步或重疊的呼叫上)。

您也可以使用 FSCTL_DELETE_USN_JOURNAL 來接收變更紀錄刪除已完成的通知,方法是只設定 USN_DELETE_FLAG_NOTIFY。 如果您這樣做,FSCTL_DELETE_USN_JOURNAL 作業會等到刪除完成再傳回之前(在同步或非重疊的呼叫上),或使用 I/O 完成埠或其他機制來設定事件通知(在異步或重疊的呼叫上)。

應用程式接收通知的刪除作業可能已由目前進程或其他進程起始。 例如,當應用程式啟動時,它可以使用 FSCTL_DELETE_USN_JOURNAL 來判斷某個其他進程啟動的刪除是否正在進行中,如果是,則結束。

完整刪除變更日誌需要掃描變更日誌所在的磁碟區,這可能需要很長的時間才能在具有許多檔案的磁碟區上。 即使系統重新啟動,作業仍會繼續完成。 試著在刪除進行時建立、修改、刪除或查詢變更紀錄失敗,並傳回錯誤碼 ERROR_JOURNAL_DELETE_IN_PROGRESS

FSCTL_DELETE_USN_JOURNAL 作業具有顯著的效能成本,因此應該謹慎使用。 當目前的 USN 值接近最大可能 USN 值的紀錄時,系統管理員應該刪除日誌。

如需詳細資訊,請參閱 建立、修改和刪除變更日誌

若要擷取磁碟區的句柄,請使用 下列格式的 lpFileName 參數呼叫 createFile

\\.\X

在上述字串中,X 是識別磁碟區出現磁碟驅動器的字母。 磁碟區必須是NTFS。

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

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

要求

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

另請參閱

CREATE_USN_JOURNAL_DATA

變更日誌

CreateFile

DELETE_USN_JOURNAL_DATA

DeviceIoControl

FSCTL_CREATE_USN_JOURNAL

重疊

磁碟區管理控制代碼