Função IoSetMasterIrpStatus (ntddk.h)
A rotina IoSetMasterIrpStatus substitui condicionalmente o valor de Status em um IRP pelo valor NTSTATUS especificado.
Sintaxe
void IoSetMasterIrpStatus(
[in, out] PIRP MasterIrp,
[in] NTSTATUS Status
);
Parâmetros
[in, out] MasterIrp
Um ponteiro para o IRP domestre. Para obter mais informações, consulte Comentários.
[in] Status
Um valor NTSTATUS a ser comparado ao Status membro do bloco de status de E/S no IRP mestre.
Valor de retorno
Nenhum
Observações
Ao receber um IRP, um driver pode criar dois ou mais IRPs subordinados para executar o trabalho solicitado pelo IRP original (ou mestre). Quando os IRPs subordinados são concluídos, o driver coleta os códigos de status de conclusão dos IRPs subordinados e os mescla para formar um único código de status de conclusão para o IRP mestre.
IoSetMasterIrpStatus implementa uma política uniforme para mesclar os códigos de status de vários IRPs subordinados em um código de status para um IRP mestre. Por exemplo, se um IRP mestre for dividido em dois IRPs subordinados e um desses IRPs subordinados for bem-sucedido e o outro falhar, o código de status do IRP com falha será usado como o código de status para o IRP mestre. No entanto, se ambos os IRPs subordinados falharem, o código de falha mais grave será usado como o status do IRP mestre.
Antes da primeira chamada para IoSetMasterIrpStatus, o driver define o membro IoStatus.Status no IRP mestre como STATUS_SUCCESS (ou STATUS_FT_READ_FROM_COPY caso seja esperado). Em seguida, conforme cada IRP subordinado é concluído, o driver chama IoSetMasterIrpStatus para mesclar o código de status desse IRP com o código de status no IRP mestre. Nesta chamada, o parâmetro PIRP aponta para o IRP mestre e o parâmetro status é definido como o valor do membro IoStatus.Status no IRP subordinado.
Como regra geral, IoSetMasterIrpStatus substitui o código de status em PIRP -> IoStatus.Status pelo valor status nos seguintes casos:
- O valor de status em **PIRP* é STATUS_SUCCESS e Status é um código de erro.
- O valor de status em **PIRP* é um código de erro, mas Status é um código de erro mais grave.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 8. |
da Plataforma de Destino | Universal |
cabeçalho | ntddk.h (inclua Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | Qualquer nível. |