Estructura VPB (wdm.h)

La estructura del bloque de parámetros de volumen (VPB) se usa para asignar un objeto de dispositivo que representa un volumen del sistema de archivos montado a un objeto de dispositivo que representa un dispositivo de disco físico o virtual.

Sintaxis

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;

Miembros

Type

Miembro de solo lectura que usa el sistema para indicar que la estructura es un objeto VPB.

Size

Miembro de solo lectura que usa el sistema para indicar que la estructura es un objeto VPB.

Flags

Valor Significado
VPB_MOUNTED El administrador de E/S establece este bit para indicar que el sistema de archivos ha montado el volumen lógico.
VPB_LOCKED Este bit se puede establecer o borrar mediante el controlador del sistema de archivos que ha montado el volumen lógico. Cuando se establece, el administrador de E/S producirá un error en todas las solicitudes posteriores de creación o apertura destinadas al volumen lógico. Los sistemas de archivos pueden optar por establecer este miembro en respuesta a las solicitudes de aplicación para bloquear el volumen, o si desean impedir que se continúe cualquier solicitud de creación o apertura.
VPB_PERSISTENT Este bit se puede establecer o borrar mediante controladores del sistema de archivos. Si se establece, el administrador de E/S no eliminará la estructura VPB incluso si ReferenceCount es cero.
VPB_REMOVE_PENDING Establezca por el administrador de Plug and Play (PnP) para indicar que se está quitando el dispositivo subyacente.
VPB_RAW_MOUNT Indica que solo se puede montar el sistema de archivos RAW en el dispositivo.
VPB_DIRECT_WRITES_ALLOWED Indica que se permiten operaciones de escritura directa en el volumen. El administrador de E/S establece esta marca cuando el sistema de archivos RAW está montado o por el propio sistema de archivos cuando determina que el volumen se puede escribir de forma segura. Normalmente es seguro escribir en un volumen cuando se desmonta el sistema de archivos.

VolumeLabelLength

Miembro de lectura y escritura que especifica la longitud de la etiqueta de volumen, en bytes. El controlador del sistema de archivos debe establecer este miembro. Si el volumen no tiene etiqueta, este miembro debe establecerse en cero.

DeviceObject

Miembro de lectura y escritura, establecido por el controlador del sistema de archivos, que apunta a un objeto de dispositivo de tipo FILE_DEVICE_DISK_FILE_SYSTEM. El controlador del sistema de archivos crea este objeto de dispositivo para representar el volumen montado.

RealDevice

Un miembro de solo lectura, establecido por el administrador de E/S, que apunta al objeto de dispositivo para un dispositivo de disco físico o virtual que contiene el volumen lógico montable (al que apunta DeviceObject).

SerialNumber

Miembro de lectura y escritura que especifica el número de serie asociado al volumen del sistema de archivos. El controlador del sistema de archivos debe establecer este miembro, si está disponible.

ReferenceCount

Miembro de solo lectura que especifica el recuento de referencias de la estructura VPB. Si el recuento de referencias de la estructura VPB es mayor que cero, el administrador de E/S no desasigna la estructura VPB. Tenga en cuenta que ReferenceCount se puede considerar un miembro de lectura y escritura cuando un controlador del sistema de archivos debe mantener el volumen presente para procesar una solicitud de anulación.

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

Miembro de lectura y escritura, establecido por el controlador del sistema de archivos, que especifica la etiqueta del volumen montado. La longitud de la etiqueta de volumen debe tener 32 caracteres anchos o menos. Actualmente MAXIMUM_VOLUME_LABEL_LENGTH se define de la siguiente manera:

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

Comentarios

Un objeto de bloque de parámetros de volumen (VPB) se usa para crear una asociación entre un objeto de dispositivo de disco físico y un objeto de dispositivo de volumen lógico. Es decir, una VPB asigna el objeto de dispositivo de volumen de un sistema de archivos al dispositivo o partición en el que se monta el volumen. Un objeto VPB solo existe para objetos de dispositivo que representan medios físicos, medios virtuales o medios lógicos que se pueden montar.

El administrador de E/S asigna y desasigna la memoria para la estructura VPB del grupo no paginado. Esta asignación (o desasignación) se produce cuando se crea un objeto de dispositivo (como se ha descrito anteriormente) mediante una llamada a las funciones IoCreateDevice o IoVerifyVolume . Es decir, el objeto de dispositivo que se crea debe ser uno de los siguientes tipos:

  • FILE_DEVICE_DISK

  • FILE_DEVICE_CD_ROM

  • FILE_DEVICE_TAPE

  • FILE_DEVICE_VIRTUAL_DISK

Para obtener más información sobre los tipos de objetos de dispositivo, vea Especificar tipos de dispositivo.

Los controladores deben llamar a IoAcquireVpbSpinLock antes de acceder a los miembros aplicables del objeto VPB.

Los miembros opacos deben considerarse inaccesibles. Es posible que los controladores con dependencias en las ubicaciones de miembros del objeto o el acceso a miembros opacos no permanezcan portátiles e interoperables con otros controladores a lo largo del tiempo.

Los controladores pueden usar miembros de solo lectura para adquirir información relevante. Los controladores no deben modificar miembros de solo lectura ni el objeto al que apunta el miembro, si el miembro es un puntero.

Requisitos

Requisito Valor
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h)

Consulte también

DEVICE_OBJECT

FILE_OBJECT

Cómo se monta el volumen