USN_RECORD_V4 構造体 (winioctl.h)
更新シーケンス番号 (USN) 変更ジャーナル バージョン 4.0 レコードの情報を格納します。 バージョン 2.0 と 3.0 のレコードはそれぞれ、USN_RECORD_V2 (USN_RECORD とも呼ばれる) と USN_RECORD_V3 構造体によって定義されます。
構文
typedef struct {
USN_RECORD_COMMON_HEADER Header;
FILE_ID_128 FileReferenceNumber;
FILE_ID_128 ParentFileReferenceNumber;
USN Usn;
DWORD Reason;
DWORD SourceInfo;
DWORD RemainingExtents;
WORD NumberOfExtents;
WORD ExtentSize;
USN_RECORD_EXTENT Extents[1];
} USN_RECORD_V4, *PUSN_RECORD_V4;
メンバー
Header
レコードの長さ、メジャー バージョン、マイナー バージョンを記述する USN_RECORD_COMMON_HEADER 構造体。
FileReferenceNumber
このレコードが変更を記録するファイルまたはディレクトリの 128 ビットの序数。
この値は、ジャーナル レコードをファイルに関連付ける任意に割り当てられた値です。
ParentFileReferenceNumber
このレコードに関連付けられているファイルまたはディレクトリが配置されているディレクトリの 128 ビットの序数。
この値は、ジャーナル レコードを親ディレクトリに関連付ける任意に割り当てられた値です。
Usn
このレコードの USN。
Reason
ファイルまたはディレクトリーがオープンされてから、このファイルまたはディレクトリー・ジャーナル・レコードに累積された変更の理由を識別するフラグ。
ファイルまたはディレクトリが閉じると、 USN_REASON_CLOSE フラグが設定された最終的な USN レコードが生成されます。 次の変更 (たとえば、次のオープン操作または削除後) は、新しい理由フラグのセットを含む新しいレコードを開始します。
名前の変更または移動操作では、2 つの USN レコードが生成されます。1 つはアイテムの古い親ディレクトリを記録し、もう 1 つは新しい親を記録します。
次の表は、使用可能なフラグを示しています。
SourceInfo
変更のソースに関する追加情報。DeviceIoControl 操作のFSCTL_MARK_HANDLEによって設定されます。
スレッドが新しい USN レコードを書き込むとき、前のレコードのソース情報フラグは、スレッドもそれらのフラグを設定した場合にのみ存在し続けます。 したがって、ソース情報構造を使用すると、アプリケーションは、既知のソース (ウイルス対策フィルターなど) によってのみ設定された USN レコードを除外できます。
次のいずれかの値を設定できます。
RemainingExtents
現在のUSN_RECORD_V4 レコードの後に残るエクステント の 数。 特定のファイルのすべての変更されたエクステントを記述するには、複数のバージョン 4.0 レコードが必要になる場合があります。 RemainingExtents メンバーが 0 の場合、現在のUSN_RECORD_V4 レコードはファイルの最後のUSN_RECORD_V4 レコードです。 特定 のファイルの最後のUSN_RECORD_V4 エントリの後に、少なくとも USN_REASON_CLOSE フラグが設定された USN_RECORD_V3 レコードが常 に 続きます。
NumberOfExtents
現在の USN_RECORD_V4 エントリ内のエクステントの数。
ExtentSize
Extents メンバー内の各USN_RECORD_EXTENT構造体のサイズ (バイト単位)。
Extents[1]
USN_RECORD_V4エントリ内のエクステントを表すUSN_RECORD_EXTENT構造体の配列。
注釈
USN_RECORD_V4 レコードは、範囲の追跡が有効になっていて、ファイル サイズが RangeTrackFileSizeThreshold メンバーの値以上である場合にのみ出力されます。 ユーザーは常に、1 つ以上のUSN_RECORD_V4 レコードの後 に 1 つの USN_RECORD_V3 レコードを受け取ります。
変更ジャーナル クライアントのパス フォワード互換性を提供するために、Microsoft は、変更ジャーナル ソフトウェアのメジャー バージョン番号とマイナー バージョン番号を USN_RECORD_V4 構造で提供します。 コードでは、これらの値を調べ、変更ジャーナル ソフトウェアとの独自の互換性を調べ、必要に応じて非互換性を適切に処理する必要があります。
マイナー バージョン番号の変更は、既存の USN_RECORD_V4 構造体メンバーがまだ有効であることを示しますが、最後のメンバー (可変長文字列) の間に新しいメンバーが追加されている可能性があります。
このような変更を適切に処理するには、最後のメンバーの場所に依存するコンパイル時ポインターの算術演算をコードで実行しないでください。 たとえば、マイナー バージョン番号を変更すると、呼び出しが sizeof(USN_RECORD)
信頼できなくなります。 代わりに、 RecordLength メンバーを使用する実行時の計算に依存します。
変更ジャーナル・ソフトウェアのメジャー・バージョン番号の増加は、 USN_RECORD_V4 構造に大きな変更が加えられた可能性があり、現在の定義が信頼できない可能性があることを示しています。 コードが変更ジャーナル・ソフトウェアのメジャー・バージョン番号の変更を検出した場合、コードは変更ジャーナルで機能しません。
詳細については、「変更ジャーナルの作成、変更、および削除」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 R2 [デスクトップ アプリのみ] |
Header | winioctl.h (Windows.h を含む) |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示