次の方法で共有


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 を呼び出す必要があります。

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

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

必要条件

要件 価値
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h、FltKernel.h を含む)

関連項目

DEVICE_OBJECT

FILE_OBJECT

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