共用方式為


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

IRP 因為 ErrorStatus 參數所指定的錯誤而失敗的線程指標。

傳回值

如果對話框已成功排入佇列,IoRaiseInformationalHardError 會傳回 TRUE。 如果線程已停用對話框、集區配置失敗、已排入佇列太多對話框,或對等對話框已經擱置用戶回應 (,則此例程會傳回 FALSE,例如等待使用者按下 RETURN) 。

備註

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

IoRaiseInformationalHardError 的行為如下:

  • 如果在 Ntstatus.h 頭檔中未定義呼叫端提供的 ErrorStatus 值,則不論 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 開始提供。
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <=APC_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport) IrqlIoApcLte (wdm)

另請參閱

IoSetHardErrorOrVerifyDevice

IoSetThreadHardErrorMode

PsGetCurrentThread