Struttura VPB (wdm.h)

La struttura del blocco di parametri del volume (VPB) viene usata per eseguire il mapping di un oggetto dispositivo che rappresenta un volume del file system montato a un oggetto dispositivo che rappresenta un dispositivo disco fisico o virtuale.

Sintassi

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;

Members

Type

Membro di sola lettura utilizzato dal sistema per indicare che la struttura è un oggetto VPB.

Size

Membro di sola lettura utilizzato dal sistema per indicare che la struttura è un oggetto VPB.

Flags

Valore Significato
VPB_MOUNTED Questo bit viene impostato dal gestore di I/O per indicare che il file system ha montato il volume logico.
VPB_LOCKED Questo bit può essere impostato o cancellato dal driver del file system che ha montato il volume logico. Se impostato, la gestione di I/O avrà esito negativo per tutte le successive richieste di creazione/apertura destinate al volume logico. I file system possono scegliere di impostare questo membro in risposta alle richieste dell'applicazione per bloccare il volume o se desiderano impedire temporaneamente l'esecuzione di qualsiasi richiesta di creazione/apertura.
VPB_PERSISTENT Questo bit può essere impostato o cancellato dai driver del file system. Se impostato, il gestore di I/O non eliminerà la struttura VPB anche se ReferenceCount è zero.
VPB_REMOVE_PENDING Impostato dal gestore Plug and Play (PnP) per indicare che il dispositivo sottostante viene rimosso.
VPB_RAW_MOUNT Indica che solo il file system RAW può essere montato nel dispositivo.
VPB_DIRECT_WRITES_ALLOWED Indica che sono consentite operazioni di scrittura dirette al volume. Questo flag viene impostato dal gestore di I/O quando il file system RAW viene montato o dal file system stesso quando determina che il volume può essere scritto in modo sicuro. In genere è consigliabile scrivere in un volume quando il file system viene smontato.

VolumeLabelLength

Membro di lettura/scrittura che specifica la lunghezza dell'etichetta del volume, in byte. Questo membro deve essere impostato dal driver del file system. Se il volume non ha un'etichetta, questo membro deve essere impostato su zero.

DeviceObject

Membro di lettura/scrittura, impostato dal driver del file system, che punta a un oggetto dispositivo di tipo FILE_DEVICE_DISK_FILE_SYSTEM. Questo oggetto dispositivo viene creato dal driver del file system per rappresentare il volume montato.

RealDevice

Membro di sola lettura, impostato dal gestore di I/O, che punta all'oggetto dispositivo per un dispositivo disco fisico o virtuale che contiene il volume logico montabile, a cui punta DeviceObject.

SerialNumber

Membro di lettura/scrittura che specifica il numero di serie associato al volume del file system. Questo membro deve essere impostato dal driver del file system, se disponibile.

ReferenceCount

Membro di sola lettura che specifica il conteggio dei riferimenti per la struttura VPB. Se il conteggio dei riferimenti per la struttura VPB è maggiore di zero, il gestore di I/O non dealloca la struttura VPB. Tenere presente che ReferenceCount può essere considerato un membro di lettura/scrittura quando un driver del file system deve mantenere il volume presente per elaborare una richiesta di disinstallazione.

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

Membro di lettura/scrittura, impostato dal driver del file system, che specifica l'etichetta del volume montato. La lunghezza dell'etichetta del volume deve essere di 32 caratteri wide o inferiore. Attualmente MAXIMUM_VOLUME_LABEL_LENGTH è definito come segue:

#define MAXIMUM_VOLUME_LABEL_LENGTH  (32 * sizeof(WCHAR));

Commenti

Un oggetto VPB (Volume Parameter Block) viene usato per creare un'associazione tra un oggetto dispositivo disco fisico e un oggetto dispositivo del volume logico. Ovvero, un VPB esegue il mapping dell'oggetto dispositivo del volume di un file system al dispositivo o alla partizione in cui viene montato il volume. Esiste un oggetto VPB solo per gli oggetti dispositivo che rappresentano supporti fisici, supporti virtuali o supporti logici che possono essere montati.

Il gestore di I/O alloca e dealloca la memoria per la struttura VPB dal pool non di paging. Questa allocazione (o deallocazione) si verifica quando viene creato un oggetto dispositivo (come descritto in precedenza) chiamando le funzioni IoCreateDevice o IoVerifyVolume . Ovvero, l'oggetto dispositivo creato deve essere uno dei tipi seguenti:

  • FILE_DEVICE_DISK

  • FILE_DEVICE_CD_ROM

  • FILE_DEVICE_TAPE

  • FILE_DEVICE_VIRTUAL_DISK

Per altre informazioni sui tipi di oggetto dispositivo, vedere Specifica dei tipi di dispositivo.

I driver devono chiamare IoAcquireVpbSpinLock prima di accedere a tutti i membri applicabili dell'oggetto VPB.

I membri opachi devono essere considerati inaccessibili. I driver con dipendenze dalle posizioni dei membri degli oggetti o dall'accesso a membri opachi potrebbero non rimanere portabili e interoperabili con altri driver nel tempo.

I driver possono usare membri di sola lettura per acquisire informazioni pertinenti. I driver non devono modificare membri di sola lettura o l'oggetto a cui punta il membro, se il membro è un puntatore.

Requisiti

Requisito Valore
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h)

Vedi anche

DEVICE_OBJECT

FILE_OBJECT

Modalità di montaggio del volume