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 値に文字列パラメーターが必要ない場合は、 StringNULL に設定します。

[in, optional] Thread

ErrorStatus パラメーターで指定されたエラーが原因で IRP が失敗したスレッドへのポインター。

戻り値

ダイアログ ボックスが正常にキューに入った場合、IoRaiseInformationalHardError はTRUE を返します。 スレッドに対してダイアログ ボックスが無効になっている場合、プールの割り当てに失敗した場合、既にキューに入っているダイアログ ボックスが多すぎる場合、または同等のダイアログ ボックスが既にユーザー応答を保留している (ユーザーが RETURN キーを押すのを待っているなど) 場合、このルーチンは FALSE を返します。

注釈

IoRaiseInformationalHardError は 、システム定義の NT エラー値をパラメーターとして受け取ります。 ドライバー ライターは、イベント ログ API を使用して、ドライバー定義のイベント文字列をユーザーに伝えることができます。

IoRaiseInformationalHardError は次のように動作します。

  • 呼び出し元が指定した ErrorStatus 値が Ntstatus.h ヘッダー ファイルで定義されていない場合、ダイアログ ボックスには 文字列 パラメーター値に関係なく、常に "Unknown Hard Error" というテキストが表示されます。
  • 呼び出し元が指定した ErrorStatus 値が Ntstatus.h ヘッダー ファイルで定義されている場合、ダイアログ ボックスには、 String パラメーター値に関係なく、Ntstatus.h の対応する MessageText 文字列のテキストが表示されます。
  • Thread パラメーターがアプリケーションのコンテキストで実行されているスレッドを指定する場合、ダイアログ ボックスに表示されるテキストは "ApplicationName.exe - システム エラー" です。
  • Thread パラメーターが NULL の場合、または任意のシステム コンテキストで実行されているスレッドを指定している場合、ダイアログ ボックスに表示されるテキストは "System Process - System Error" です。 さらに、 ErrorStatus 値が Ntstatus.h で定義されている場合は、対応する MessageText 文字列がイベント ログに書き込まれます。
IoSetThreadHardErrorMode ルーチンの以前の呼び出しで、指定したスレッドのハード エラーが無効にされた場合、IoRaiseInformationalHardError はFALSE を返します。

Windows Vista 以降では、セッション 0 のスレッド (つまり、任意のシステム スレッドから) からルーチンが呼び出された場合、ルーチンが成功して TRUE を返したときにダイアログ ボックスは表示されません。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <=APC_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlIoApcLte(wdm)

こちらもご覧ください

IoSetHardErrorOrVerifyDevice

IoSetThreadHardErrorMode

PsGetCurrentThread