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 值不需要字符串参数,请将 String 设置为 NULL。
[in, optional] Thread
指向由于 ErrorStatus 参数指定的错误而 IRP 失败的线程的指针。
返回值
如果对话框已成功排队,IoRaiseInformationalHardError 将返回 TRUE。 如果线程禁用对话框、池分配失败、对话框已排队过多或等效对话框已挂起用户响应 ((例如等待用户按 RETURN) ),则此例程返回 FALSE。
注解
IoRaiseInformationalHardError 采用系统定义的 NT 错误值作为参数。 驱动程序编写器可以使用事件日志 API 向用户传达驱动程序定义的事件字符串。
IoRaiseInformationalHardError 的行为如下所示:
- 如果未在 Ntstatus.h 头文件中定义调用方提供的 ErrorStatus 值,则无论 字符串 参数值如何,对话框始终显示文本“未知硬错误”。
- 如果在 Ntstatus.h 头文件中定义了调用方提供的 ErrorStatus 值,则无论 String 参数值如何,对话框都会在 Ntstatus.h 中显示相应的 MessageText 字符串中的文本。
- 如果 Thread 参数指定在应用程序上下文中运行的线程,则对话框中显示的文本为“ApplicationName.exe - 系统错误”。
- 如果 Thread 参数为 NULL 或指定在任意系统上下文中运行的线程,则对话框中显示的文本为“系统进程 - 系统错误”。 此外,如果在 Ntstatus.h 中定义了 ErrorStatus 值,则会将相应的 MessageText 字符串写入事件日志。
从 Windows Vista 开始,如果从会话 0 中的线程调用例程 (即从任何系统线程) 调用,则当例程成功并返回 TRUE 时,不会显示任何对话框。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=APC_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , IrqlIoApcLte (wdm) |