IO_STATUS_BLOCK结构(wdm.h)

驱动程序设置 IRP 的 I/O 状态块,以指示 I/O 请求的最终状态,然后再为 IRP 调用 IoCompleteRequest

语法

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完成传输请求,则此成员设置为零。

言论

除非驱动程序的调度例程完成具有错误状态值的 IRP,否则链中的最低级别驱动程序通常会将 IRP 的 I/O 状态块设置为将返回到 I/O作的原始请求者的值。

IoCompletion 高级驱动程序的例程通常检查由较低驱动程序完成的 I/O 状态块。 根据设计,IRP 中的 I/O 状态块是唯一从基础设备驱动程序传回到所有更高级别的驱动程序 IoCompletion 例程的信息。

作系统实现 支持例程,IO_STATUS_BLOCK 值写入调用方提供的输出缓冲区。 例如,请参阅 ZwOpenFileNtOpenFile。 这些例程返回可能与 IO_STATUS_BLOCK 结构中的状态代码不匹配的状态代码。 如果其中一个例程返回STATUS_PENDING,则调用方应等待 I/O作完成,然后检查 IO_STATUS_BLOCK 结构中的状态代码以确定作的最终状态。 如果例程返回STATUS_PENDING以外的状态代码,则调用方应依赖于此状态代码,而不是 IO_STATUS_BLOCK 结构中的状态代码。

有关详细信息,请参阅 I/O 状态块

要求

要求 价值
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h)

另请参阅

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine