MULTI_SECTOR_HEADER構造体
[この構造は NTFS ボリュームのバージョン 3 でのみ有効です。将来のバージョンで変更される可能性があります。
マルチセクター ヘッダーを表します。
構文
typedef struct _MULTI_SECTOR_HEADER {
UCHAR Signature[4];
USHORT UpdateSequenceArrayOffset;
USHORT UpdateSequenceArraySize;
} MULTI_SECTOR_HEADER, *PMULTI_SECTOR_HEADER;
メンバー
-
Signature
-
署名。 この値は、ユーザーの利便性を高めます。
-
UpdateSequenceArrayOffset
-
この構造体の先頭からの更新シーケンス配列へのオフセット。 更新シーケンス配列は、最初のセクターの最後の USHORT 値の前に終了する必要があります。
-
UpdateSequenceArraySize
-
更新シーケンス配列のサイズ (バイト単位)。
解説
この構造体には、関連付けられたヘッダー ファイルがないことに注意してください。
この構造体定義は、 FSCTL_GET_NTFS_VOLUME_DATAによって報告されるメジャー バージョン 3 およびマイナー バージョン 0 または 1 に対してのみ有効です。
multisector ヘッダーと更新シーケンス配列は、物理セクター サイズがシーケンス番号ストライド (512) 以上のデバイス、またはセクターを順不同に転送しないデバイスに対して、不完全なマルチセクター転送の検出を提供します。 シーケンス番号ストライドより小さいセクター サイズを持つデバイスが存在し、セクターが順不同で転送される場合、更新シーケンス配列は不完全な転送の絶対検出を提供しません。 シーケンス番号のストライドは、既知のすべてのハード ディスクに絶対保護を提供するのに十分な数に設定されています。 これ以上小さく設定されていないか、実行時間や領域のオーバーヘッドが過剰になる可能性があります。
更新シーケンス配列は 、nUSHORT 値の配列で構成されます。 ここで、n は保護されている構造体のサイズをシーケンス番号ストライドで割った値です。 最初の単語には、更新シーケンス番号が含まれています。これは、含まれる構造体がディスクに書き込まれた回数の循環カウンターです。 次に、格納されている構造体が最後にディスクに書き込まれた時点で更新シーケンス番号によって上書きされた n 個の保存された USHORT 値です。
保護された構造体がディスクに書き込まれるたびに、各シーケンス番号ストライドの最後の単語がシーケンス番号配列内のそれぞれの位置に保存され、次の更新シーケンス番号で上書きされます。 書き込みの後、または構造体を読み取るたびに、シーケンス番号配列から保存された単語が構造体内の実際の位置に復元されます。 読み取り時に保存された単語を復元する前に、各ストライドの最後にあるすべてのシーケンス番号が、配列の先頭にある実際のシーケンス番号と比較されます。 これらの比較のいずれかが等しくない場合は、失敗したマルチセクター転送が検出されました。
配列のサイズは、格納されている構造体のサイズによって決まります。 更新シーケンス配列は、可変サイズのため、保護している構造体のヘッダーの末尾に含める必要があります。 ユーザーは、(構造体のサイズ / 512 + 1) * sizeof(USHORT) を含む構造体用に正しい領域が予約されていることを確認する必要があります。
関連項目