структура IO_STATUS_BLOCK (wdm.h)

Драйвер задает блок состояния ввода-вывода IRP, чтобы указать окончательное состояние запроса ввода-вывода перед вызовом IoCompleteRequest для IRP.

Синтаксис

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

Члены

Status

Это состояние завершения, STATUS_SUCCESS, если запрошенная операция была успешно завершена, либо информационное значение, предупреждение или ошибка STATUS_XXX . Дополнительные сведения см. в разделе Использование значений NTSTATUS.

Pointer

Зарезервировано. Только для внутреннего использования.

Information

Для этого параметра задано значение, зависящее от запроса. Например, при успешном выполнении запроса на передачу устанавливается количество переданных байтов. Если запрос на передачу завершается с помощью другого STATUS_XXX, этот член имеет значение 0.

Комментарии

Если подпрограмма диспетчеризации драйвера не завершает IRP со значением состояния ошибки, драйвер самого низкого уровня в цепочке часто задает для блока состояния ввода-вывода IRP значения, которые будут возвращены исходному инициатору запроса операции ввода-вывода.

Процедуры IoCompletion драйверов более высокого уровня обычно проверка блок состояния ввода-вывода в IRP, завершенных более низкими драйверами. По умолчанию блок состояния ввода-вывода в IRP — это единственная информация, передаваемая из базового драйвера устройства всем подпрограммам IoCompletion драйверов более высокого уровня.

Операционная система реализует подпрограммы поддержки , которые записывают IO_STATUS_BLOCK значения в буферы вывода, предоставляемые вызывающим объектом. Например, см . ZwOpenFile или NtOpenFile. Эти подпрограммы возвращают коды состояния, которые могут не совпадать с кодами состояния в структурах IO_STATUS_BLOCK . Если одна из этих подпрограмм возвращает STATUS_PENDING, вызывающий объект должен дождаться завершения операции ввода-вывода, а затем проверка код состояния в структуре IO_STATUS_BLOCK, чтобы определить окончательное состояние операции. Если подпрограмма возвращает код состояния, отличный от STATUS_PENDING, вызывающий объект должен полагаться на этот код состояния, а не на код состояния в структуре IO_STATUS_BLOCK .

Дополнительные сведения см. в разделе Блоки состояния ввода-вывода.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)

См. также раздел

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine