IRP_MJ_QUERY_VOLUME_INFORMATION (controladores de filtro y FS)

Cuándo se envió

El Administrador de E/S envía la solicitud de IRP_MJ_QUERY_VOLUME_INFORMATION . Se puede enviar, por ejemplo, cuando una aplicación en modo de usuario ha llamado a una función Win32, como GetDiskFreeSpace o GetFileType.

Operación: controladores del sistema de archivos

El controlador del sistema de archivos debe extraer y descodificar el objeto de archivo para determinar si el objeto de dispositivo de destino es el objeto de dispositivo de control del sistema de archivos. Si es así y si la solicitud se ha emitido en un identificador que es un volumen abierto (o una apertura de un objeto en el volumen), el controlador del sistema de archivos debe procesar la solicitud y completar el IRP.

De lo contrario, el controlador del sistema de archivos debe producir un error en la consulta y completar el IRP.

Los tipos de información de volumen que se pueden consultar dependen del sistema de archivos, pero generalmente incluyen los siguientes valores:

  • FileFsAttributeInformation
  • FileFsDeviceInformation
  • FileFsSizeInformation
  • FileFsVolumeInformation

Para obtener una lista de todos los tipos de información posibles, vea IrpSp-Parameters.QueryVolume.FsInformationClass>.

Operación: Controladores de redirección de red

Un redirector de red que recibe una solicitud de FileFsDeviceInformation, debe incluir FILE_REMOTE_DEVICE como una de las opciones para el miembro DeviceCharacteristics de la estructura FILE_FS_DEVICE_INFORMATION devuelta.

Operación: controladores de filtro del sistema de archivos heredados

El controlador de filtro debe pasar este IRP al siguiente controlador inferior de la pila.

Parámetros

Un controlador de filtro o sistema de archivos llama a IoGetCurrentIrpStackLocation para que el IRP especificado obtenga un puntero a su propia ubicación de pila en el IRP. En los parámetros siguientes, Irp apunta a IRP e IrpSp apunta al IO_STACK_LOCATION. El controlador puede usar la información que se establece en los siguientes miembros del IRP y la ubicación de la pila irP para procesar una solicitud de información de volumen de consulta:

  • DeviceObject es un puntero al objeto de dispositivo de destino.

  • Irp->AssociatedIrp.SystemBuffer apunta a un búfer de salida proporcionado por el sistema donde se devolverá la información del volumen. Esta información se almacena en una de las estructuras siguientes:

    • FILE_FS_ATTRIBUTE_INFORMATION
    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_DEVICE_INFORMATION
    • FILE_FS_DRIVER_PATH_INFORMATION
    • FILE_FS_FULL_SIZE_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
    • FILE_FS_SIZE_INFORMATION
    • FILE_FS_VOLUME_FLAGS_INFORMATION
    • FILE_FS_VOLUME_INFORMATION
    • FILE_FS_SECTOR_SIZE_INFORMATION

    La clase FileFsVolumeFlagsInformation y la estructura de FILE_FS_VOLUME_INFORMATION asociada están disponibles en Windows Vista y versiones posteriores.

  • Irp->IoStatus apunta a una estructura de IO_STATUS_BLOCK que recibe el estado de finalización final e información sobre la operación solicitada.

  • Irp->UserBuffer es un puntero opcional a un búfer de salida proporcionado por el autor de la llamada en el que el administrador de E/S copia el contenido de Irp-AssociatedIrp.SystemBuffer>. Los controladores no usan este búfer para devolver ningún dato de la solicitud.

  • IrpSp->FileObject apunta al objeto de archivo asociado a DeviceObject.

    El parámetroIrpSp-FileObject> contiene un puntero al campo RelatedFileObject, que también es una estructura FILE_OBJECT. El campo RelatedFileObject de la estructura FILE_OBJECT no es válido durante el procesamiento de IRP_MJ_QUERY_VOLUME_INFORMATION y no se debe usar.

  • IrpSp->MajorFunction se establece en IRP_MJ_QUERY_VOLUME_INFORMATION.

  • IrpSp->Parameters.QueryVolume.FsInformationClass es el tipo de información de volumen que devolverá el sistema de archivos. Este miembro puede ser uno de los valores siguientes.

Valor Significado
FileFsAttributeInformation Devuelve una estructura FILE_FS_ATTRIBUTE_INFORMATION que contiene información de atributo sobre el sistema de archivos responsable del volumen.
FileFsControlInformation Devuelve una estructura de FILE_FS_CONTROL_INFORMATION que contiene información de control del sistema de archivos sobre el volumen.
FileFsDeviceInformation Devuelve una estructura de FILE_FS_DEVICE_INFORMATION que contiene información del dispositivo para el volumen.
FileFsDriverPathInformation Devuelve una estructura de FILE_FS_DRIVER_PATH_INFORMATION que contiene información sobre si un controlador especificado está en la ruta de acceso de E/S del volumen. El originador de la solicitud de IRP_MJ_QUERY_VOLUME_INFORMATION debe almacenar el nombre del controlador en la estructura de FILE_FS_DRIVER_PATH_INFORMATION antes de enviar el IRP a la pila de dispositivos de volumen del sistema de archivos.
FileFsFullSizeInformation Devuelve una estructura FILE_FS_FULL_SIZE_INFORMATION que contiene información sobre la cantidad total de espacio disponible en el volumen.
FileFsObjectIdInformation Devuelve una estructura de FILE_FS_OBJECTID_INFORMATION que contiene información del identificador de objeto específico del sistema de archivos para el volumen. Esta información de identificador de objeto no es la misma que el nombre de volumen único (basado en GUID) que el sistema operativo asignó.
FileFsSizeInformation Devuelve una estructura de FILE_FS_SIZE_INFORMATION que contiene información sobre la cantidad de espacio en el volumen que está disponible para el usuario asociado al subproceso que originó la solicitud de IRP_MJ_QUERY_VOLUME_INFORMATION .
FileFsVolumeInformation Devuelve un FILE_FS_VOLUME_INFORMATION que contiene información sobre el volumen, como la etiqueta del volumen, el número de serie y la hora de creación.
FileFsSectorSizeInformation Devuelve una estructura FILE_FS_SECTOR_SIZE_INFORMATION que contiene información sobre los tamaños de sector físico y lógico de un volumen.
  • IrpSp->Parameters.QueryVolume.Length es la longitud, en bytes, del búfer al que apunta Irp-UserBuffer>. A la devolución, esta variable recibe el número de bytes escritos en el búfer.

Consulte también

FILE_FS_ATTRIBUTE_INFORMATION

FILE_FS_CONTROL_INFORMATION

FILE_FS_DEVICE_INFORMATION

FILE_FS_DRIVER_PATH_INFORMATION

FILE_FS_FULL_SIZE_INFORMATION

FILE_FS_OBJECTID_INFORMATION

FILE_FS_SECTOR_SIZE_INFORMATION

FILE_FS_SIZE_INFORMATION

FILE_FS_VOLUME_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile