IRP_MJ_QUERY_SECURITY (controladores de filtro y FS)
Cuándo se envió
El Administrador de E/S envía la solicitud de IRP_MJ_QUERY_SECURITY. Se puede enviar, por ejemplo, cuando una aplicación en modo de usuario ha llamado a una función Win32 como GetSecurityInfo.
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 archivo de usuario o un directorio abiertos. Si es así, el controlador debe procesar la consulta y completar el IRP. De lo contrario, el controlador debe completar el IRP según corresponda sin procesar la consulta.
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 pila de IRP para procesar una solicitud de seguridad de consulta:
DeviceObject es un puntero al objeto de dispositivo de destino.
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 apunta a un búfer de salida proporcionado por el autor de la llamada que recibe una copia del descriptor de seguridad del objeto especificado. El proceso de llamada debe tener derecho a ver los aspectos especificados del estado de seguridad del objeto. La estructura SECURITY_DESCRIPTOR se devuelve en formato auto relativo.
IrpSp->FileObject apunta al objeto de archivo asociado a DeviceObject.
En Windows XP y versiones posteriores, el objeto de archivo puede representar un flujo de datos con nombre. Para obtener más información sobre los flujos de datos con nombre, consulte FILE_STREAM_INFORMATION.
El parámetro IrpSp-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_SECURITY y no se debe usar.
IrpSp->MajorFunction se establece en IRP_MJ_QUERY_SECURITY.
IrpSp->Parameters.QuerySecurity.Length es el tamaño, en bytes, del búfer al que apunta el parámetro Irp-UserBuffer>.
IrpSp->Parameters.QuerySecurity.SecurityInformation apunta a la estructura SECURITY_INFORMATION de la operación. Este valor puede ser una combinación válida de los bits siguientes.
Valor securityInformation Significado OWNER_SECURITY_INFORMATION Indica que se está consultando el identificador de propietario del objeto. Requiere acceso READ_CONTROL. GROUP_SECURITY_INFORMATION Indica que se está consultando el identificador de grupo principal del objeto. Requiere acceso READ_CONTROL. DACL_SECURITY_INFORMATION Indica que se está consultando la lista de control de acceso discrecional (DACL) del objeto. Requiere acceso READ_CONTROL. SACL_SECURITY_INFORMATION Indica que se está consultando la ACL del sistema (SACL) del objeto. Requiere acceso ACCESS_SYSTEM_SECURITY.