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 ファイル システムは削除操作を開始し、DELETE_USN_JOURNAL_DATA の DeleteFlags メンバーでUSN_DELETE_FLAG_NOTIFY フラグが設定されていない限り、呼び出し元のプロセスに直ちに戻ります。

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 値に近づくと、管理者はジャーナルを削除する必要があります。

詳細については、「 変更履歴の作成、変更、および削除」を参照してください。

ボリュームへのハンドルを取得するには、 lpFileName パラメーターを次の形式の文字列に設定して CreateFile を呼び出します。

\.\X:

前の文字列の X は、ボリュームが表示されるドライブを識別する文字です。 ボリュームは NTFS である必要があります。

Windows 8 および Windows Server 2012 では、このコードは次のテクノロジでサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル いいえ
SMB 3.0 Transparent Failover (TFO) いいえ
スケールアウト ファイル共有 (SO) を使う SMB 3.0 いいえ
クラスターの共有ボリューム ファイル システム (CsvFS) はい

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winioctl.h (Windows.h を含む)

関連項目

CREATE_USN_JOURNAL_DATA

変更ジャーナル

CreateFile

DELETE_USN_JOURNAL_DATA

DeviceIoControl

FSCTL_CREATE_USN_JOURNAL

OVERLAPPED

ボリューム管理の制御コード