管理者は、変更履歴を作成、削除、および再作成できます。 USN_JOURNAL_DATA 構造体の MaxUsn メンバーで示されているように、現在の更新シーケンス番号 (USN) 値が可能な最大 USN 値に近づくと、管理者はジャーナルを削除する必要があります。 管理者は、変更履歴を削除して再作成して、ディスク領域を再利用することもできます。 これと他のすべてのプログラム以外の変更ジャーナル操作を実行するには、システム管理者特権が必要です。 つまり、Administrators グループのメンバーである必要があります。
指定したボリュームの変更履歴をプログラムで作成または変更するには、FSCTL_CREATE_USN_JOURNAL コントロール コードを使用します。
新しい変更履歴を作成したり、既存の変更履歴を変更したりすると、NTFS ファイル システムは、その変更履歴の情報を CREATE_USN_JOURNAL_DATA 構造の情報から設定します。この情報は、FSCTL_CREATE_USN_JOURNAL 入力として受け取ります。 CREATE_USN_JOURNAL_DATA には、MaximumSize と AllocationDeltaのメンバーがあります。
MaximumSize は、変更ジャーナルのターゲットの最大サイズ (バイト単位) です。 変更ジャーナルはこの値より大きくなる可能性がありますが、NTFS ファイル システムのチェックポイントでは、NTFS ファイル システムがジャーナルを調べ、サイズが MaximumSize の値と AllocationDelta の値超えたときにトリミングします。 (NTFS ファイル システムのチェックポイントでは、オペレーティング システムは NTFS ファイル システムのログ ファイルにレコードを書き込みます。これにより、NTFS ファイル システムは、障害から回復するために必要な処理を判断できます)。
AllocationDelta は、メモリが割り当てまたは割り当て解除されるたびに、末尾に追加され、変更ジャーナルの先頭から削除されたバイト数です。 つまり、割り当てと割り当ての解除は、このサイズの単位で行われます。 クラスター サイズの整数倍数は、このメンバーにとって妥当な値です。
管理者が既存の変更履歴を変更して MaximumSize 値 大きくした場合 (たとえば、ボリュームのインデックスの再作成頻度が高すぎる場合など)、変更履歴は新しい最大サイズを超えるまで新しいエントリを受け取ります。
変更履歴を削除するには、FSCTL_DELETE_USN_JOURNAL コントロール コードを使用します。 この操作を使用すると、ボリューム上のすべてのファイルが確認され、各ファイルの USN が 0 にリセットされます。 その後、操作によって既存の変更履歴が削除されます。 この操作は、システムの再起動後も完了するまで保持されます。 この処理中に変更履歴を読み取り、作成、または変更しようとすると、エラー コード ERROR_JOURNAL_DELETE_IN_PROGRESSで失敗します。
FSCTL_DELETE_USN_JOURNAL 制御コードを使用して、他のプロセスによって開始された削除が進行中かどうかを判断することもできます。 たとえば、アプリケーションの起動時に、削除が進行中かどうかを判断できます。 ジャーナルの削除はシステムの再起動後も保持されるため、システムの再起動時に開始されたサービスとアプリケーションは、継続的な削除を確認する必要があります。
変更履歴は、必ずしも起動時に作成されるとは限りません。 変更履歴を作成するには、管理者が明示的に作成するか、変更履歴を必要とする別のサービスを開始できます。