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) |