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 を使用して変更履歴を削除できます。 NTFS ファイル システムは、削除操作を開始し、USN_DELETE_FLAG_NOTIFY フラグが DELETE_USN_JOURNAL_DATAの DeleteFlags メンバーに設定されていない限り、すぐに呼び出し元のプロセスに戻ります。
USN_DELETE_FLAG_NOTIFY フラグと USN_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 値に近づくと、管理者はジャーナルを削除する必要があります。
詳細については、「変更履歴の作成、変更、および削除の
ボリュームへのハンドルを取得するには、
\\.\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 を含む) |
関連項目
CreateFile の
DeviceIoControl の
重複する を
ボリューム管理コントロール コード を