Funzione IoSetMasterIrpStatus (ntddk.h)
La routine IoSetMasterIrpStatus sostituisce in modo condizionale il valore Status in un IRP con il valore NTSTATUS specificato.
Sintassi
void IoSetMasterIrpStatus(
[in, out] PIRP MasterIrp,
[in] NTSTATUS Status
);
Parametri
[in, out] MasterIrp
Puntatore all'IRP master. Per altre informazioni, vedere la sezione Osservazioni.
[in] Status
Valore NTSTATUS da confrontare con il membro Status del blocco di stato di I/O nell'IRP master.
Valore restituito
nessuno
Osservazioni
Al ricevimento di un IRP, un driver può creare due o più IRP subordinati per eseguire il lavoro richiesto dall'IRP originale (o master). Al termine degli IRP subordinati, il driver raccoglie i codici di stato di completamento dai provider di integrazione subordinati e li unisce per formare un singolo codice di stato di completamento per l'IRP master.
IoSetMasterIrpStatus implementa un criterio uniforme per unire i codici di stato da più IRP subordinati in un codice di stato per un IRP master. Ad esempio, se un IRP master è suddiviso in due IRP subordinati e uno di questi IRP subordinati ha esito positivo e l'altro ha esito negativo, il codice di stato dell'IRP non riuscito viene usato come codice di stato per l'IRP master. Tuttavia, se entrambi i runtime di integrazione subordinati hanno esito negativo, il codice di errore più grave viene usato come stato per l'IRP master.
Prima della prima chiamata a IoSetMasterIrpStatus, il driver imposta il membro IoStatus.Status nel master IRP su STATUS_SUCCESS (o su STATUS_FT_READ_FROM_COPY nel caso sia previsto). Al termine di ogni IRP subordinato, il driver chiama IoSetMasterIrpStatus per unire il codice di stato da questo IRP con il codice di stato nel master IRP. In questa chiamata il parametro PIRP punta all'IRP master e il parametro Status viene impostato sul valore del membro IoStatus.Status nell'IRP subordinato.
Come regola generale, IoSetMasterIrpStatus sostituisce il codice di stato in PIRP-IoStatus.Status > con il valore Status nei casi seguenti:
- Il valore di stato in **PIRP* è STATUS_SUCCESS e Status è un codice di errore.
- Il valore di stato in **PIRP* è un codice di errore, ma Status è un codice di errore più grave.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 8. |
Piattaforma di destinazione | Universale |
Intestazione | ntddk.h (include Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Qualsiasi livello. |