Función IoSetMasterIrpStatus (ntddk.h)
La rutina IoSetMasterIrpStatus reemplaza condicionalmente el valor status de un IRP por el valor NTSTATUS especificado.
Sintaxis
void IoSetMasterIrpStatus(
[in, out] PIRP MasterIrp,
[in] NTSTATUS Status
);
Parámetros
[in, out] MasterIrp
Puntero al IRP maestro. Para obtener más información, vea la sección Comentarios.
[in] Status
Valor NTSTATUS que se va a comparar con el miembro Status del bloque de estado de E/S en el IRP maestro.
Valor devuelto
None
Observaciones
Al recibir un IRP, un controlador puede crear dos o más IRP subordinados para realizar el trabajo solicitado por el IRP original (o maestro). Cuando se completan los IRP subordinados, el controlador recopila los códigos de estado de finalización de los IRP subordinados y los combina para formar un único código de estado de finalización para el IRP maestro.
IoSetMasterIrpStatus implementa una directiva uniforme para combinar los códigos de estado de varios IRP subordinados en un código de estado para un IRP maestro. Por ejemplo, si un IRP maestro se divide en dos IRP subordinados y uno de estos IRP subordinados se ejecuta correctamente y el otro produce un error, el código de estado del IRP con errores se usa como código de estado para el IRP maestro. Sin embargo, si se produce un error en ambos IRP subordinados, se usa el código de error más grave como estado del IRP maestro.
Antes de la primera llamada a IoSetMasterIrpStatus, el controlador establece el miembro IoStatus.Status en el IRP maestro en STATUS_SUCCESS (o en STATUS_FT_READ_FROM_COPY en caso de que se espere). A continuación, a medida que se completa cada IRP subordinado, el controlador llama a IoSetMasterIrpStatus para combinar el código de estado de este IRP con el código de estado en el IRP maestro. En esta llamada, el parámetro PIRP apunta al IRP maestro y el parámetro Status se establece en el valor del miembro IoStatus.Status en el IRP subordinado.
Como regla general, IoSetMasterIrpStatus reemplaza el código de estado en PIRP-IoStatus.Status > por el valor Status en los casos siguientes:
- El valor de estado de **PIRP* es STATUS_SUCCESS y Status es un código de error.
- El valor de estado en **PIRP* es un código de error, pero El estado es un código de error más grave.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 8. |
Plataforma de destino | Universal |
Encabezado | ntddk.h (include Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | Cualquier nivel. |
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