Share via


VPB-Struktur (wdm.h)

Die Volume-Parameterblock-Struktur (VPB) wird verwendet, um ein Geräteobjekt, das ein eingebundenes Dateisystemvolume darstellt, einem Geräteobjekt zuzuordnen, 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;

Member

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 eingebunden hat.
VPB_LOCKED Dieses Bit kann vom Dateisystemtreiber festgelegt oder gelöscht werden, der das logische Volume eingebunden hat. Wenn festgelegt, schlägt der E/A-Manager alle nachfolgenden Create/Open-Anforderungen fehl, die auf das logische Volume ausgerichtet sind. Dateisysteme können diesen Member 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. Wenn festgelegt, löscht der E/A-Manager die VPB-Struktur nicht, auch wenn ReferenceCount 0 ist.
VPB_REMOVE_PENDING Legen Sie vom Plug & 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 eingebunden werden kann.
VPB_DIRECT_WRITES_ALLOWED Gibt an, dass direkte Schreibvorgänge auf das Volume zulässig sind. Dieses Flag wird entweder vom E/A-Manager festgelegt, wenn das RAW-Dateisystem eingebunden wird, oder vom Dateisystem selbst, wenn ermittelt wird, dass das Volume sicher geschrieben werden kann. Es ist in der Regel sicher, auf ein Volume zu schreiben, wenn das Dateisystem nicht eingebunden wird.

VolumeLabelLength

Ein Lese-/Schreibelement, das die Länge der Volumebezeichnung in Bytes angibt. Dieses Element muss vom Dateisystemtreiber festgelegt werden. Wenn das Volume keine Bezeichnung aufweist, muss dieses Element auf 0 festgelegt werden.

DeviceObject

Ein vom Dateisystemtreiber festgelegtes Lese-/Schreibelement, das auf ein Geräteobjekt vom Typ FILE_DEVICE_DISK_FILE_SYSTEM verweist. Dieses Geräteobjekt wird vom Dateisystemtreiber erstellt, um das eingebundene Volume darzustellen.

RealDevice

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

SerialNumber

Ein Lese-/Schreibelement, das die seriennummer angibt, die dem Dateisystemvolume zugeordnet ist. Dieser Member sollte vom Dateisystemtreiber festgelegt werden, sofern verfügbar.

ReferenceCount

Ein schreibgeschütztes Element, das die Verweisanzahl für die VPB-Struktur angibt. Wenn die Verweisanzahl für die VPB-Struktur größer als 0 ist, behandelt der E/A-Manager die Zuordnung der VPB-Struktur nicht. Beachten Sie, dass ReferenceCount als Lese-/Schreibelement betrachtet werden kann, wenn ein Dateisystemtreiber das Volume vorhanden halten muss, um eine Abrissanforderung zu verarbeiten.

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

Ein vom Dateisystemtreiber festgelegtes Lese-/Schreibelement, das die Bezeichnung des eingebundenen Volumes angibt. Die Länge der Volumebezeichnung muss maximal 32 Breitzeichen betragen. Derzeit ist MAXIMUM_VOLUME_LABEL_LENGTH wie folgt definiert:

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

Hinweise

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

Der E/A-Manager weist Arbeitsspeicher für die VPB-Struktur aus einem nicht ausgelagerten Pool zu und verwaltet diesen. Diese Zuordnung (oder Deallocation) tritt auf, wenn ein Geräteobjekt (wie zuvor beschrieben) durch Aufrufen der Funktionen IoCreateDevice oder IoVerifyVolume 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 anwendbare Member des VPB-Objekts zugreifen.

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

Treiber können schreibgeschützte Member verwenden, um relevante Informationen zu erhalten. Treiber dürfen schreibgeschützte Member oder das Objekt, auf das das Element verweist, nicht ändern, 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)

Weitere Informationen

DEVICE_OBJECT

FILE_OBJECT

Einbindung des Volumes