Функция IoRaiseInformationalHardError (ntddk.h)

Подпрограмма IoRaiseInformationalHardError отправляет пользователю диалоговое окно с предупреждением об ошибке ввода-вывода устройства, которая указывает на причину сбоя запроса ввода-вывода пользователя.

Синтаксис

BOOLEAN IoRaiseInformationalHardError(
  [in]           NTSTATUS        ErrorStatus,
  [in, optional] PUNICODE_STRING String,
  [in, optional] PKTHREAD        Thread
);

Параметры

[in] ErrorStatus

Код состояния ошибки (IO_ERR_XXX).

[in, optional] String

Указатель на строку Юникода, которая предоставляет дополнительные сведения об ошибке. Для некоторых кодов состояния NT требуется строковый параметр, например имя файла или каталога. Если для указанного значения ErrorStatus не требуется строковый параметр, задайте для параметра String значение NULL.

[in, optional] Thread

Указатель на поток, для которого произошел сбой IRP из-за ошибки, указанной параметром ErrorStatus .

Возвращаемое значение

IoRaiseInformationalHardError возвращает значение TRUE , если диалоговое окно успешно помещено в очередь. Эта подпрограмма возвращает значение FALSE , если диалоговые окна отключены для потока, произошел сбой выделения пула, слишком много диалоговых окон уже поставлено в очередь или эквивалентное диалоговое окно уже ожидает ответа пользователя (например, ожидает, пока пользователь нажмет клавишу RETURN).

Комментарии

IoRaiseInformationalHardError принимает системное значение ошибки NT в качестве параметра. Средства записи драйверов могут использовать API-интерфейсы журнала событий для передачи определяемых драйвером строк событий пользователю.

IoRaiseInformationalHardError ведет себя следующим образом:

  • Если предоставленное вызывающей стороны значение ErrorStatus не определено в файле заголовка Ntstatus.h, в диалоговом окне всегда отображается текст "Неизвестная жесткая ошибка", независимо от значения параметра String .
  • Если предоставленное вызывающим объектом значение ErrorStatus определено в файле заголовка Ntstatus.h, в диалоговом окне отображается текст в соответствующей строке MessageText в Ntstatus.h, независимо от значения параметра String .
  • Если параметр Thread указывает поток, выполняющийся в контексте приложения, в диалоговом окне отображается текст "ApplicationName.exe — системная ошибка".
  • Если параметр Thread имеет значение NULL или указывает поток, выполняющийся в произвольном системном контексте, в диалоговом окне отображается текст "Системный процесс — системная ошибка". Кроме того, если значение ErrorStatus определено в ntstatus.h, соответствующая строка MessageText записывается в журнал событий.
Если предыдущий вызов подпрограммы IoSetThreadHardErrorMode отключал жесткие ошибки для указанного потока, IoRaiseInformationalHardError возвращает значение FALSE.

Начиная с Windows Vista, если подпрограмма вызывается из потока в сеансе 0 (т. е. из любого системного потока), диалоговое окно не появляется при успешном выполнении подпрограммы и возвращает значение TRUE.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlIoApcLte(wdm)

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

IoSetHardErrorOrVerifyDevice

IoSetThreadHardErrorMode

PsGetCurrentThread