Freigeben über


VPB-Struktur (wdm.h)

Die Struktur des Volumeparameterblocks (VPB) wird verwendet, um ein Geräteobjekt zuzuordnen, das ein bereitgestelltes Dateisystemvolume zu einem Geräteobjekt darstellt, das ein physisches oder virtuelles Datenträgergerät darstellt.

Syntax

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;

Angehörige

Type

Ein schreibgeschütztes Element, das vom System verwendet wird, um anzugeben, dass es sich bei der Struktur um ein VPB-Objekt handelt.

Size

Ein schreibgeschütztes Element, das vom System verwendet wird, um anzugeben, dass es sich bei der Struktur um ein VPB-Objekt handelt.

Flags

Wert Bedeutung
VPB_MOUNTED Dieses Bit wird vom E/A-Manager festgelegt, um anzugeben, dass das Dateisystem das logische Volume bereitgestellt hat.
VPB_LOCKED Dieses Bit kann vom Dateisystemtreiber festgelegt oder gelöscht werden, der das logische Volume bereitgestellt hat. Bei Festlegung schlägt der E/A-Manager alle nachfolgenden Erstellungs-/Öffnungsanforderungen fehl, die auf das logische Volume ausgerichtet sind. Dateisysteme können dieses Mitglied als Reaktion auf Anwendungsanforderungen festlegen, um das Volume zu sperren, oder wenn sie vorübergehend verhindern möchten, dass eine Erstellungs-/offene Anforderung fortgesetzt wird.
VPB_PERSISTENT Dieses Bit kann von Dateisystemtreibern festgelegt oder gelöscht werden. Bei Festlegung löscht der E/A-Manager die VPB-Struktur nicht, auch wenn ReferenceCount null ist.
VPB_REMOVE_PENDING Legen Sie vom Plug and Play -Manager (PnP) fest, um anzugeben, dass das zugrunde liegende Gerät entfernt wird.
VPB_RAW_MOUNT Gibt an, dass nur das RAW-Dateisystem auf dem Gerät bereitgestellt werden kann.
VPB_DIRECT_WRITES_ALLOWED Gibt an, dass direkte Schreibvorgänge auf das Volume zulässig sind. Diese Kennzeichnung wird entweder vom E/A-Manager festgelegt, wenn das RAW-Dateisystem bereitgestellt wird oder vom Dateisystem selbst, wenn festgestellt wird, dass das Volume sicher geschrieben werden kann. Es ist in der Regel sicher, auf ein Volume zu schreiben, wenn das Dateisystem aufgehoben wird.

VolumeLabelLength

Ein Element mit Lese-/Schreibzugriff, das die Länge der Volumebezeichnung in Byte angibt. Dieses Element muss vom Dateisystemtreiber festgelegt werden. Wenn das Volume keine Beschriftung aufweist, muss dieses Element auf Null festgelegt werden.

DeviceObject

Ein Vom Dateisystemtreiber festgelegtes Element mit Lese-/Schreibzugriff, das auf ein Geräteobjekt vom Typ FILE_DEVICE_DISK_FILE_SYSTEMverweist. Dieses Geräteobjekt wird vom Dateisystemtreiber erstellt, um das bereitgestellte Volume darzustellen.

RealDevice

Ein schreibgeschütztes Element, das vom E/A-Manager festgelegt wird, der auf das Geräteobjekt für ein physisches oder virtuelles Datenträgergerät verweist, das das bereitstellungsfähige logische Volume enthält (verweist auf DeviceObject).

SerialNumber

Ein Element mit Lese-/Schreibzugriff, das die Seriennummer angibt, die dem Dateisystemvolume zugeordnet ist. Dieses Element sollte vom Dateisystemtreiber festgelegt werden, sofern verfügbar.

ReferenceCount

Ein schreibgeschütztes Element, das die Referenzanzahl für die VPB-Struktur angibt. Wenn die Referenzanzahl für die VPB-Struktur größer als 0 ist, führt der E/A-Manager keine Zuordnung der VPB-Struktur durch. Beachten Sie, dass ReferenceCount- als Lese-/Schreibelement betrachtet werden kann, wenn ein Dateisystemtreiber das Volume zur Verarbeitung einer Abrissanforderung beibehalten muss.

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

Ein Vom Dateisystemtreiber festgelegtes Lese-/Schreibelement, das die Bezeichnung des bereitgestellten Volumes angibt. Die Länge der Volumebeschriftung muss maximal 32 Zeichen lang sein. Derzeit ist MAXIMUM_VOLUME_LABEL_LENGTH wie folgt definiert:

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

Bemerkungen

Ein Volumeparameterblock (VPB)-Objekt wird verwendet, um eine Zuordnung zwischen einem Objekt eines physischen Datenträgergeräts und einem logischen Volumegerätobjekt zu erstellen. Das heißt, ein VPB ordnet das Volumegerätobjekt eines Dateisystems dem Gerät oder der Partition zu, auf dem das Volume bereitgestellt wird. Ein VPB-Objekt ist nur für Geräteobjekte vorhanden, die physische Medien, virtuelle Medien oder logische Medien darstellen, die bereitgestellt werden können.

Der E/A-Manager weist Speicher für die VPB-Struktur aus nicht seitenseitigem Pool zu und verwaltet diesen. Diese Zuordnung (oder Deallocation) tritt auf, wenn ein Geräteobjekt (wie zuvor beschrieben) durch Aufrufen der IoCreateDevice- oder IoVerifyVolume--Funktionen erstellt wird. Das heißt, das erstellte Geräteobjekt muss einer der folgenden Typen sein:

  • FILE_DEVICE_DISK

  • FILE_DEVICE_CD_ROM

  • FILE_DEVICE_TAPE

  • FILE_DEVICE_VIRTUAL_DISK

Weitere Informationen zu Geräteobjekttypen finden Sie unter Angeben von Gerätetypen.

Treiber müssen IoAcquireVpbSpinLock- aufrufen, bevor sie auf alle anwendbaren Member des VPB-Objekts zugreifen.

Undurchsichtige Member sollten als unzugänglich angesehen werden. Treiber mit Abhängigkeiten von Objektmemberspeicherorten oder Zugriff auf undurchsichtige Member bleiben im Laufe der Zeit möglicherweise nicht portabel und interoperabel mit anderen Treibern.

Treiber können schreibgeschützte Member verwenden, um relevante Informationen zu erhalten. Treiber dürfen keine schreibgeschützten Elemente oder das Objekt ändern, auf das das Element verweist, wenn es sich bei dem Element um einen Zeiger handelt.

Anforderungen

Anforderung Wert
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h)

Siehe auch

DEVICE_OBJECT

FILE_OBJECT

Wie das Volume bereitgestellt wird