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) |