Compartir a través de


estructura IO_STATUS_BLOCK (wdm.h)

Un controlador establece el bloque de estado de E/S de IRP para indicar el estado final de una solicitud de E/S, antes de llamar a ioCompleteRequest para irP.

Sintaxis

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

Miembros

Status

Este es el estado de finalización, ya sea STATUS_SUCCESS si la operación solicitada se completó correctamente o un valor informativo, de advertencia o de error STATUS_XXX. Para obtener más información, vea Uso de valores NTSTATUS.

Pointer

Reservado. Solo para uso interno.

Information

Se establece en un valor dependiente de la solicitud. Por ejemplo, al completar correctamente una solicitud de transferencia, se establece en el número de bytes transferidos. Si se completa una solicitud de transferencia con otra STATUS_XXX, este miembro se establece en cero.

Observaciones

A menos que la rutina de distribución de un controlador complete un IRP con un valor de estado de error, el controlador de nivel más bajo de la cadena establece con frecuencia el bloque de estado de E/S del IRP en los valores que se devolverán al solicitante original de la operación de E/S.

Las rutinas de IoCompletion de controladores de nivel superior suelen comprobar el bloque de estado de E/S en IRP completados por controladores inferiores. Por diseño, el bloque de estado de E/S en un IRP es la única información que se pasa del controlador de dispositivo subyacente a todas las rutinas de de los controladores de nivel superior IoCompletion.

El sistema operativo implementa admite rutinas que escriben valores IO_STATUS_BLOCK en búferes de salida proporcionados por el autor de la llamada. Por ejemplo, vea ZwOpenFile o NtOpenFile . Estas rutinas devuelven códigos de estado que podrían no coincidir con los códigos de estado de las estructuras de IO_STATUS_BLOCK. Si una de estas rutinas devuelve STATUS_PENDING, el autor de la llamada debe esperar a que se complete la operación de E/S y, a continuación, compruebe el código de estado en la estructura IO_STATUS_BLOCK para determinar el estado final de la operación. Si la rutina devuelve un código de estado distinto de STATUS_PENDING, el autor de la llamada debe basarse en este código de estado en lugar del código de estado de la estructura IO_STATUS_BLOCK.

Para obtener más información, vea bloques de estado de E/S.

Requisitos

Requisito Valor
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)

Consulte también

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine