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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de