Partager via


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)

Voir aussi

DEVICE_OBJECT

FILE_OBJECT

comment le volume est monté