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