IoRaiseInformationalHardError 函数 (ntddk.h)
IoRaiseInformationalHardError 例程向用户发送对话框,警告设备 I/O 错误,指示用户 I/O 请求失败的原因。
语法
BOOLEAN IoRaiseInformationalHardError(
[in] NTSTATUS ErrorStatus,
[in, optional] PUNICODE_STRING String,
[in, optional] PKTHREAD Thread
);
参数
[in] ErrorStatus
错误状态代码(IO_ERR_XXX)。
[in, optional] String
指向 Unicode 字符串的指针,该字符串提供有关错误的其他信息。 某些 NT 状态代码需要字符串参数,例如文件或目录名称。 如果指定的 ErrorStatus 值不需要字符串参数,请将 字符串 设置为 NULL。
[in, optional] Thread
指向其 IRP 由于 ErrorStatus 参数指定的错误而失败的线程的指针。
返回值
IoRaiseInformationalHardError 如果对话框成功排队,则返回 TRUE。 如果 线程禁用对话框,则此例程将返回 FALSE;池分配失败、已排队的对话框过多或等效对话框已挂起用户响应(例如等待用户按 RETURN)。
言论
IoRaiseInformationalHardError 采用系统定义的 NT 错误值作为参数。 驱动程序编写器可以使用事件日志 API 向用户传达驱动程序定义的事件字符串。
IoRaiseInformationalHardError 的行为如下所示:
- 如果在 Ntstatus.h 头文件中未定义调用方提供的 ErrorStatus 值,则无论 字符串 参数值如何,对话框始终显示文本“未知硬错误”。
- 如果在 Ntstatus.h 头文件中定义了调用方提供的 ErrorStatus 值,则对话框会显示 Ntstatus.h 中相应 MessageText 字符串中的文本,而不考虑 String 参数值。
- 如果 Thread 参数指定在应用程序上下文中运行的线程,对话框中显示的文本为“ApplicationName.exe - 系统错误”。
- 如果 Thread 参数为 NULL 或指定在任意系统上下文中运行的线程,则对话框中显示的文本为“系统进程 - 系统错误”。 此外,如果在 Ntstatus.h 中定义了 ErrorStatus 值,则相应的 MessageText 字符串将写入事件日志。
从 Windows Vista 开始,如果例程从会话 0 中的线程(即来自任何系统线程)调用,则例程成功并返回 TRUE时,不会显示任何对话框。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 普遍 |
标头 | ntddk.h (包括 Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=APC_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIs(storport),IrqlIoApcLte(wdm) |