共用方式為


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 true。 如果 Thread停用對話框、集區配置失敗、已排入佇列的對話方塊,或對等對話框已擱置用戶回應,則此例程會傳回 FALSE(例如等待使用者按 RETURN)。

言論

IoRaiseInformationalHardError 採用系統定義的 NT 錯誤值作為參數。 驅動程式寫入器可以使用事件記錄 API,將驅動程式定義的事件字串傳達給使用者。

IoRaiseInformationalHardError 的行為如下所示:

  • 如果呼叫端提供的 ErrorStatus 值未定義於 Ntstatus.h 頭檔中,則不論 String 參數值為何,對話框一律會顯示「未知的硬式錯誤」文字。
  • 如果呼叫端提供的 ErrorStatus 值是在 Ntstatus.h 頭文件中定義,則不論 String 參數值為何,對話框都會在 Ntstatus.h 中對應的 MessageText 字符串中顯示文字。
  • 如果 Thread 參數指定在應用程式內容中執行的線程,則對話框中顯示的文字為 “ApplicationName.exe - 系統錯誤”。
  • 如果 Thread 參數為 NULL,或指定在任意系統內容中執行的線程,則對話框中顯示的文字為 「系統進程 - 系統錯誤」。 此外,如果在 Ntstatus.h 中定義 ErrorStatus 值,則會將對應的 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