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 つは新しい親を記録します。

次の表は、使用可能なフラグを示しています。

メモ 未使用のビットは予約されています。
 
意味
USN_REASON_BASIC_INFO_CHANGE
0x00008000
ユーザーが 1 つ以上のファイル属性またはディレクトリ属性 (読み取り専用、非表示、システム、アーカイブ、スパース属性など)、または 1 つ以上のタイム スタンプを変更しました。
USN_REASON_CLOSE
0x80000000
ファイルまたはディレクトリが閉じられています。
USN_REASON_COMPRESSION_CHANGE
0x00020000
ファイルまたはディレクトリの圧縮状態は、 または から圧縮に変更されます。
USN_REASON_DATA_EXTEND
0x00000002
ファイルまたはディレクトリが拡張されます (追加先)。
USN_REASON_DATA_OVERWRITE
0x00000001
ファイルまたはディレクトリ内のデータが上書きされます。
USN_REASON_DATA_TRUNCATION
0x00000004
ファイルまたはディレクトリが切り捨てられます。
USN_REASON_EA_CHANGE
0x00000400
ユーザーは、ファイルまたはディレクトリの拡張属性を変更しました。

これらの NTFS ファイル システム属性は、Windows ベースのアプリケーションではアクセスできません。

USN_REASON_ENCRYPTION_CHANGE
0x00040000
ファイルまたはディレクトリは暗号化または暗号化解除されます。
USN_REASON_FILE_CREATE
0x00000100
ファイルまたはディレクトリは初めて作成されます。
USN_REASON_FILE_DELETE
0x00000200
ファイルまたはディレクトリが削除されます。
USN_REASON_HARD_LINK_CHANGE
0x00010000
NTFS ファイル システムのハード リンクは、ファイルまたはディレクトリに追加されるか、ファイルまたはディレクトリから削除されます。

POSIX ハード リンクと同様に NTFS ファイル システムのハード リンクは、同じファイルまたはディレクトリを参照する複数のディレクトリ エントリの 1 つです。

USN_REASON_INDEXABLE_CHANGE
0x00004000
ユーザーは 、FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 属性を変更します。

つまり、ユーザーは、コンテンツのインデックスを作成できるファイルまたはディレクトリから、コンテンツのインデックスを作成できないファイルまたはディレクトリに変更します。その逆も可能です。 コンテンツ インデックス作成を使用すると、選択したコンテンツのデータベースを構築することで、データを迅速に検索できます。

USN_REASON_INTEGRITY_CHANGE
0x00800000
ユーザーが、指定されたストリームの FILE_ATTRIBUTE_INTEGRITY_STREAM 属性の状態を変更しました。

ReFS ファイル システムでは、整合性ストリームはそのストリームのすべてのデータのチェックサムを保持するため、読み取り操作または書き込み操作中にファイルの内容を検証できます。

USN_REASON_NAMED_DATA_EXTEND
0x00000020
ファイルの 1 つ以上の名前付きデータ ストリームが拡張 (追加) されます。
USN_REASON_NAMED_DATA_OVERWRITE
0x00000010
ファイルの 1 つ以上の名前付きデータ ストリーム内のデータが上書きされます。
USN_REASON_NAMED_DATA_TRUNCATION
0x00000040
ファイルの 1 つ以上の名前付きデータ ストリームが切り捨てられます。
USN_REASON_OBJECT_ID_CHANGE
0x00080000
ファイルまたはディレクトリのオブジェクト識別子が変更されます。
USN_REASON_RENAME_NEW_NAME
0x00002000
ファイルまたはディレクトリの名前が変更され、 USN_RECORD_V4 構造体のファイル名が新しい名前になります。
USN_REASON_RENAME_OLD_NAME
0x00001000
ファイルまたはディレクトリの名前が変更され、 USN_RECORD_V4 構造体のファイル名が前の名前になります。
USN_REASON_REPARSE_POINT_CHANGE
0x00100000
ファイルまたはディレクトリに含まれる再解析ポイントが変更されるか、再解析ポイントがファイルまたはディレクトリに追加または削除されます。
USN_REASON_SECURITY_CHANGE
0x00000800
ファイルまたはディレクトリへのアクセス権に変更が加えられます。
USN_REASON_STREAM_CHANGE
0x00200000
名前付きストリームがファイルに追加または削除されるか、名前付きストリームの名前が変更されます。
USN_REASON_TRANSACTED_CHANGE
0x00400000
指定されたストリームは、コミットされた TxF トランザクションによって変更されます。

SourceInfo

変更のソースに関する追加情報。DeviceIoControl 操作のFSCTL_MARK_HANDLEによって設定されます。

スレッドが新しい USN レコードを書き込むとき、前のレコードのソース情報フラグは、スレッドもそれらのフラグを設定した場合にのみ存在し続けます。 したがって、ソース情報構造を使用すると、アプリケーションは、既知のソース (ウイルス対策フィルターなど) によってのみ設定された USN レコードを除外できます。

次のいずれかの値を設定できます。

意味
USN_SOURCE_AUXILIARY_DATA
0x00000002
この操作により、プライベート データ ストリームがファイルまたはディレクトリに追加されます。

1 つの例として、チェックサム情報を追加するウイルス検出機能があります。 ウイルス検出機能が項目を変更すると、システムによって USN レコードが生成されます。 USN_SOURCE_AUXILIARY_DATA は、変更によってアプリケーション データが変更されなかったことを示します。

USN_SOURCE_DATA_MANAGEMENT
0x00000001
この操作は、オペレーティング システムによって行われたファイルまたはディレクトリの変更に関する情報を提供します。

一般的な用途は、リモート ストレージ システムが外部ストレージからローカル ストレージにデータを移動する場合です。 リモート ストレージは、階層型ストレージ管理ソフトウェアです。 通常、このような移動では、USN レコードに USN_REASON_DATA_OVERWRITE フラグが追加されます。 ただし、データはユーザーの観点から変更されていません。 SourceInfo メンバーにUSN_SOURCE_DATA_MANAGEMENTを書き込むことで、アイテムに対して書き込み操作が実行されますが、データは変更されていないことを確認できます。

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
この操作では、レプリカ セットの別のメンバーに存在する同じファイルの内容と一致するようにファイルを変更しています。
USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
この操作では、クラウドに存在するのと同じファイルの内容と一致するように、クライアント システム上のファイルを変更しています。

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 を含む)

こちらもご覧ください

FSCTL_MARK_HANDLE

FSCTL_READ_USN_JOURNAL

FSCTL_USN_TRACK_MODIFIED_RANGES

GetFileAttributes

GetVolumeInformation

READ_USN_JOURNAL_DATA

USN_RECORD_COMMON_HEADER

USN_RECORD_EXTENT

USN_RECORD_V2

USN_RECORD_V3

ボリューム管理の構造体