Compartir a través de


IRP_MJ_SET_VOLUME_INFORMATION (controladores de filtro y FS)

Cuándo se envió

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

Operación: controladores del sistema de archivos

El controlador del sistema de archivos debe extraer y descodificar el objeto de archivo para determinar si representa un volumen de usuario abierto. Si es así, el controlador del sistema de archivos debe establecer la información de volumen adecuada y completar el IRP. De lo contrario, el sistema de archivos debe completar el IRP según corresponda sin establecer la información del volumen.

Los tipos de información de volumen que se pueden establecer son dependientes del sistema de archivos, pero generalmente incluyen uno o varios de los valores siguientes:

  • FileFsControlInformation
  • FileFsLabelInformation
  • FileFsObjectIdInformation

Para obtener una lista de todos los tipos de información posibles, vea la enumeración FS_INFORMATION_CLASS en ntifs.h.

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 determinado obtenga un puntero a su propia ubicación de pila en el IRP. En los parámetros siguientes, Irp apunta al IRP e IrpSp apunta al IO_STACK_LOCATION. El controlador puede usar la información establecida en los siguientes miembros del IRP y la ubicación de la pila irP para procesar una solicitud de información de volumen establecida:

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

  • Irp->AssociatedIrp.SystemBuffer apunta a un búfer de entrada que contiene los valores de la información del volumen que se va a establecer. Esta información se almacena en una de las siguientes estructuras:

    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_LABEL_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
  • 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.

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

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

  • IrpSp->MajorFunction se establece en IRP_MJ_SET_VOLUME_INFORMATION.

  • IrpSp->Parameters.SetVolume.FsInformationClass es el tipo de información que se va a establecer para el volumen y puede ser uno de los siguientes:

    Valor Significado
    FileFsControlInformation Establezca FILE_FS_CONTROL_INFORMATION para el volumen.
    FileFsLabelInformation Establezca FILE_FS_LABEL_INFORMATION para el volumen.
    FileFsObjectIdInformation Establezca FILE_FS_OBJECTID_INFORMATION para el volumen.
  • IrpSp->Parameters.SetVolume.Length es la longitud, en bytes, del búfer al que apunta Irp-AssociatedIrp.SystemBuffer>.

Consulte también

FILE_FS_CONTROL_INFORMATION

FILE_FS_LABEL_INFORMATION

FILE_FS_OBJECTID_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile