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
Wie das Volume bereitgestellt wird