Función IoSetMasterIrpStatus (ntddk.h)
El IoSetMasterIrpStatus rutina reemplaza condicionalmente el valor status de en 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 Comentarios.
[in] Status
Valor NTSTATUS que se va a comparar con el miembro Estado de del bloque de estado de E/S de en el IRP maestro.
Valor devuelto
Ninguno
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 completen los IRP subordinados, el controlador recopila los códigos de estado de finalización de los IRP subordinados y los combina para formar un código de estado de finalización único 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 realiza 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 del 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 del IRP subordinado.
Como regla general, IoSetMasterIrpStatus reemplaza el código de estado de PIRP>IoStatus.Status por el valor estado de 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 de **PIRP* es un código de error, pero Status es un código de error más grave.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 8. |
de la plataforma de destino de | Universal |
encabezado de | ntddk.h (incluya Ntddk.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | Cualquier nivel. |