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 字串就會寫入事件記錄檔。
從 Windows Vista 開始,如果例程是從會話 0 中的線程呼叫 (,也就是從任何系統線程) 呼叫例程,則例程成功並傳回 TRUE 時不會出現任何對話方塊。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平台 | Universal |
標頭 | ntddk.h (包含 Ntddk.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <=APC_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS (storport) 、 IrqlIoApcLte (wdm) |