Partilhar via


estrutura IO_STATUS_BLOCK (wdm.h)

Um driver define um bloco de status de E/S de IRP para indicar o status final de uma solicitação de E/S, antes de chamar IoCompleteRequest para o IRP.

Sintaxe

typedef struct _IO_STATUS_BLOCK {
  union {
    NTSTATUS Status;
    PVOID    Pointer;
  };
  ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;

Membros

Status

Esse é o status de conclusão, STATUS_SUCCESS se a operação solicitada foi concluída com êxito ou um valor informativo, aviso ou erro STATUS_XXX valor. Para obter mais informações, consulte Usando valores NTSTATUS.

Pointer

Reservado. Somente para uso interno.

Information

Isso é definido como um valor dependente de solicitação. Por exemplo, após a conclusão bem-sucedida de uma solicitação de transferência, isso é definido como o número de bytes transferidos. Se uma solicitação de transferência for concluída com outra STATUS_XXX, esse membro será definido como zero.

Observações

A menos que a rotina de expedição de um driver conclua um IRP com um valor de status de erro, o driver de nível mais baixo da cadeia frequentemente define o bloco de status de E/S do IRP como os valores que serão retornados ao solicitante original da operação de E/S.

O rotinas de de IoCompletion de drivers de nível superior geralmente verificam o bloco de status de E/S em IRPs concluído por drivers inferiores. Por design, o bloco de status de E/S em um IRP é a única informação passada do driver de dispositivo subjacente para todas as rotinas de IoCompletion de drivers de nível superior.

O sistema operacional implementa rotinas de suporte que gravam valores de IO_STATUS_BLOCK em buffers de saída fornecidos pelo chamador. Por exemplo, consulte ZwOpenFile ou NtOpenFile. Essas rotinas retornam códigos de status que podem não corresponder aos códigos de status nas estruturas de IO_STATUS_BLOCK. Se uma dessas rotinas retornar STATUS_PENDING, o chamador deverá aguardar a conclusão da operação de E/S e verificar o código de status na estrutura IO_STATUS_BLOCK para determinar o status final da operação. Se a rotina retornar um código de status diferente de STATUS_PENDING, o chamador deverá contar com esse código de status em vez do código de status na estrutura IO_STATUS_BLOCK.

Para obter mais informações, consulte blocos de status de E/S.

Requisitos

Requisito Valor
cabeçalho wdm.h (incluem Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)

Consulte também

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine