Structure VPB (wdm.h)
La structure de bloc de paramètres de volume (VPB) est utilisée pour mapper un objet d’appareil qui représente un volume de système de fichiers monté à un objet d’appareil qui représente un périphérique de disque physique ou virtuel.
Syntaxe
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;
Membres
Type
Membre en lecture seule utilisé par le système pour indiquer que la structure est un objet VPB.
Size
Membre en lecture seule utilisé par le système pour indiquer que la structure est un objet VPB.
Flags
Valeur | Signification |
---|---|
VPB_MOUNTED | Ce bit est défini par le gestionnaire d’E/S pour indiquer que le système de fichiers a monté le volume logique. |
VPB_LOCKED | Ce bit peut être défini ou effacé par le pilote du système de fichiers qui a monté le volume logique. Lorsqu’il est défini, le gestionnaire d’E/S échoue toutes les requêtes de création/ouverture suivantes qui sont ciblées sur le volume logique. Les systèmes de fichiers peuvent choisir de définir ce membre en réponse aux demandes d’application pour verrouiller le volume, ou s’ils souhaitent temporairement empêcher toute demande de création/ouverture de continuer. |
VPB_PERSISTENT | Ce bit peut être défini ou effacé par les pilotes du système de fichiers. S’il est défini, le gestionnaire d’E/S ne supprime pas la structure VPB même si ReferenceCount est égal à zéro. |
VPB_REMOVE_PENDING | Défini par le gestionnaire Plug-and-Play (PnP) pour indiquer que l’appareil sous-jacent est supprimé. |
VPB_RAW_MOUNT | Indique que seul le système de fichiers RAW peut être monté sur l’appareil. |
VPB_DIRECT_WRITES_ALLOWED | Indique que les opérations d’écriture directes dans le volume sont autorisées. Cet indicateur est défini par le gestionnaire d’E/S lorsque le système de fichiers RAW est monté ou par le système de fichiers lui-même lorsqu’il détermine que le volume peut être écrit en toute sécurité. Il est généralement sûr d’écrire dans un volume lorsque le système de fichiers est démonté. |
VolumeLabelLength
Membre en lecture/écriture qui spécifie la longueur de l’étiquette de volume, en octets. Ce membre doit être défini par le pilote du système de fichiers. Si le volume n’a pas d’étiquette, ce membre doit être défini sur zéro.
DeviceObject
Membre en lecture/écriture, défini par le pilote du système de fichiers, qui pointe vers un objet de périphérique de type FILE_DEVICE_DISK_FILE_SYSTEM. Cet objet d’appareil est créé par le pilote du système de fichiers pour représenter le volume monté.
RealDevice
Membre en lecture seule, défini par le gestionnaire d’E/S, qui pointe vers l’objet d’appareil pour un appareil de disque physique ou virtuel qui contient le volume logique montable (pointé par DeviceObject).
SerialNumber
Membre en lecture/écriture qui spécifie le numéro de série associé au volume du système de fichiers. Ce membre doit être défini par le pilote du système de fichiers, le cas échéant.
ReferenceCount
Membre en lecture seule qui spécifie le nombre de références pour la structure VPB. Si le nombre de références pour la structure VPB est supérieur à zéro, le gestionnaire d’E/S ne désalloue pas la structure VPB. N’oubliez pas que ReferenceCount peut être considéré comme un membre en lecture/écriture lorsqu’un pilote de système de fichiers doit conserver le volume présent pour traiter une demande de destruction.
VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]
Membre en lecture/écriture, défini par le pilote du système de fichiers, qui spécifie l’étiquette du volume monté. La longueur de l’étiquette de volume doit être de 32 caractères larges ou moins. Actuellement, MAXIMUM_VOLUME_LABEL_LENGTH est définie comme suit :
#define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR));
Remarques
Un objet VPB (Volume Parameter Block) est utilisé pour créer une association entre un objet d’appareil de disque physique et un objet d’appareil de volume logique. Autrement dit, un VPB mappe l’objet d’appareil de volume d’un système de fichiers à l’appareil ou à la partition sur lequel le volume est monté. Un objet VPB existe uniquement pour les objets d’appareil qui représentent des supports physiques, des supports virtuels ou des supports logiques pouvant être montés.
Le gestionnaire d’E/S alloue et libère de la mémoire pour la structure VPB du pool non paginé. Cette allocation (ou désallocation) se produit lorsqu’un objet d’appareil (comme décrit précédemment) est créé en appelant les fonctions IoCreateDevice ou IoVerifyVolume. Autrement dit, l’objet d’appareil créé doit être l’un des types suivants :
FILE_DEVICE_DISK
FILE_DEVICE_CD_ROM
FILE_DEVICE_TAPE
FILE_DEVICE_VIRTUAL_DISK
Pour plus d’informations sur les types d’objets d’appareil, consultez Spécification des types d’appareils.
Les pilotes doivent appeler IoAcquireVpbSpinLock avant d’accéder aux membres applicables de l’objet VPB.
Les membres opaques doivent être considérés comme inaccessibles. Les pilotes avec dépendances sur les emplacements des membres d’objet ou l’accès aux membres opaques peuvent ne pas rester portables et interopérables avec d’autres pilotes au fil du temps.
Les pilotes peuvent utiliser des membres en lecture seule pour acquérir des informations pertinentes. Les pilotes ne doivent pas modifier les membres en lecture seule ou l’objet vers lequel le membre pointe, si le membre est un pointeur.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h) |