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 值写入调用方提供的输出缓冲区。 例如,请参阅 ZwOpenFile 或 NtOpenFile。 这些例程返回可能与 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) |