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 de système de fichiers qui a monté le volume logique. Lorsqu’il est défini, le gestionnaire d’E/S échoue toutes les demandes de création/ouverture suivantes ciblant le volume logique. Les systèmes de fichiers peuvent choisir de définir ce membre en réponse à des 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 de 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 en cours de suppression. |
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 sur le volume sont autorisées. Cet indicateur est défini soit par le gestionnaire d’E/S lorsque le système de fichiers RAW est monté, soit 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 de 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 périphérique 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, s’il est disponible.
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 libère 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 inférieure ou inférieure à 32 caractères larges. Actuellement , MAXIMUM_VOLUME_LABEL_LENGTH est défini 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 de périphérique de disque physique et un objet de périphérique de volume logique. Autrement dit, un VPB mappe l’objet de périphérique de volume d’un système de fichiers à l’appareil ou à la partition sur laquelle le volume est monté. Un objet VPB existe uniquement pour les objets d’appareil qui représentent un média physique, un média virtuel ou un média logique pouvant être monté.
Le gestionnaire d’E/S alloue et libère de la mémoire pour la structure VPB à partir d’un 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 de 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 ayant des dépendances sur les emplacements des membres de l’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 pointe le membre, si le membre est un pointeur.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h) |