次の方法で共有


VPB 構造体 (wdm.h)

ボリューム パラメーター ブロック (VPB) 構造体は、マウントされたファイル システム ボリュームを表すデバイス オブジェクトを、物理ディスク デバイスまたは仮想ディスク デバイスを表すデバイス オブジェクトにマップするために使用されます。

構文

typedef struct _VPB {
  CSHORT                Type;
  CSHORT                Size;
  USHORT                Flags;
  USHORT                VolumeLabelLength;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _DEVICE_OBJECT *RealDevice;
  ULONG                 SerialNumber;
  ULONG                 ReferenceCount;
  WCHAR                 VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
} VPB, *PVPB;

メンバー

Type

構造体が VPB オブジェクトであることを示すためにシステムによって使用される読み取り専用メンバー。

Size

構造体が VPB オブジェクトであることを示すためにシステムによって使用される読み取り専用メンバー。

Flags

意味
VPB_MOUNTED このビットは、ファイル・システムが論理ボリュームをマウントしたことを示すために入出力マネージャーによって設定されます。
VPB_LOCKED このビットは、論理ボリュームをマウントしたファイル システム ドライバーによって設定またはクリアできます。 設定すると、I/O マネージャーは、論理ボリュームを対象とする後続のすべての作成/開く要求に失敗します。 ファイル システムは、ボリュームをロックするアプリケーション要求に応答してこのメンバーを設定するか、作成/開いている要求が続行されないように一時的に望む場合に、このメンバーを設定することを選択できます。
VPB_PERSISTENT このビットは、ファイル システム ドライバーによって設定またはクリアできます。 設定した場合、 ReferenceCount が 0 の場合でも、I/O マネージャーは VPB 構造体を削除しません。
VPB_REMOVE_PENDING 基になるデバイスが削除されていることを示すために、プラグ アンド プレイ (PnP) マネージャーによって設定されます。
VPB_RAW_MOUNT RAW ファイル システムのみをデバイスにマウントできることを示します。
VPB_DIRECT_WRITES_ALLOWED ボリュームへの直接書き込み操作が許可されることを示します。 このフラグは、RAW ファイル・システムがマウントされている場合は入出力マネージャーによって設定され、ボリュームの書き込みが安全であると判断された場合はファイル・システム自体によって設定されます。 通常、ファイル システムがマウント解除されたときにボリュームに書き込むのは安全です。

VolumeLabelLength

ボリューム ラベルの長さをバイト単位で指定する読み取り/書き込みメンバー。 このメンバーは、ファイル システム ドライバーによって設定する必要があります。 ボリュームにラベルがない場合は、このメンバーをゼロに設定する必要があります。

DeviceObject

FILE_DEVICE_DISK_FILE_SYSTEM型のデバイス オブジェクトを指す、ファイル システム ドライバーによって設定される読み取り/書き込 メンバー。 このデバイス オブジェクトは、マウントされたボリュームを表すためにファイル システム ドライバーによって作成されます。

RealDevice

I/O マネージャーによって設定される読み取り専用メンバー。これは、マウント可能な論理ボリューム ( DeviceObject が指す) を含む物理または仮想ディスク デバイスのデバイス オブジェクトを指します。

SerialNumber

ファイル システム ボリュームに関連付けられているシリアル番号を指定する読み取り/書き込みメンバー。 このメンバーは、ファイル システム ドライバー (使用可能な場合) によって設定する必要があります。

ReferenceCount

VPB 構造体の参照カウントを指定する読み取り専用メンバー。 VPB 構造体の参照カウントが 0 より大きい場合、I/O マネージャーは VPB 構造体の割り当てを解除しません。 ファイル システム ドライバーが破棄要求を処理するためにボリュームを保持する必要がある場合、 ReferenceCount は読み取り/書き込みメンバーと見なされる可能性があることに注意してください。

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

マウントされたボリュームのラベルを指定する、ファイル システム ドライバーによって設定される読み取り/書き込みメンバー。 ボリューム・ラベルの長さは、32 文字以下でなければなりません。 現在 、MAXIMUM_VOLUME_LABEL_LENGTH は次のように定義されています。

#define MAXIMUM_VOLUME_LABEL_LENGTH  (32 * sizeof(WCHAR));

注釈

ボリューム パラメーター ブロック (VPB) オブジェクトは、物理ディスク デバイス オブジェクトと論理ボリューム デバイス オブジェクトの間の関連付けを作成するために使用されます。 つまり、VPB は、ファイル システムのボリューム デバイス オブジェクトを、ボリュームがマウントされているデバイスまたはパーティションにマップします。 VPB オブジェクトは、マウント可能な物理メディア、仮想メディア、または論理メディアを表すデバイス オブジェクトに対してのみ存在します。

I/O マネージャーは、VPB 構造体のメモリを非ページ プールから割り当ておよび割り当て解除します。 この割り当て (または割り当て解除) は、 IoCreateDevice 関数または IoVerifyVolume 関数を呼び出すことによってデバイス オブジェクト (前述のように) が作成されるときに発生します。 つまり、作成されるデバイス オブジェクトは、次のいずれかの種類である必要があります。

  • FILE_DEVICE_DISK

  • FILE_DEVICE_CD_ROM

  • FILE_DEVICE_TAPE

  • FILE_DEVICE_VIRTUAL_DISK

デバイス オブジェクトの種類の詳細については、「デバイスの種類 の指定」を参照してください。

ドライバーは、VPB オブジェクトの該当するメンバーにアクセスする前に 、IoAcquireVpbSpinLock を呼び出す必要があります。

不透明なメンバーはアクセス不可と見なす必要があります。 オブジェクト メンバーの場所に依存しているドライバーや、不透明なメンバーへのアクセスを持つドライバーは、移植可能で、時間の経過と共に他のドライバーと相互運用できない可能性があります。

ドライバーは、読み取り専用メンバーを使用して関連情報を取得できます。 ドライバーは、メンバーがポインターである場合、読み取り専用メンバーまたはメンバーが指すオブジェクトを変更することはできません。

要件

要件
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h、FltKernel.h を含む)

こちらもご覧ください

DEVICE_OBJECT

FILE_OBJECT

ボリュームのマウント方法