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)

Voir aussi

DEVICE_OBJECT

FILE_OBJECT

Comment le volume est monté