錯誤檢查0xC4:DRIVER_VERIFIER_DETECTED_VIOLATION
DRIVER_VERIFIER_DETECTED_VIOLATION錯誤檢查的 值為 0x000000C4。 這是驅動程式驗證程式所發現嚴重錯誤的一般錯誤檢查程式碼。 如需詳細資訊,請參閱 在啟用驅動程式驗證器時處理錯誤檢查。
重要
本文適用于程式設計人員。 如果您是在使用電腦時收到藍色螢幕錯誤碼的客戶,請參閱 針對藍色畫面錯誤進行疑難排解。
DRIVER_VERIFIER_DETECTED_VIOLATION參數
參數 1 會識別違規的類型。 其餘參數的意義會隨著參數 1 的值而有所不同。 下表說明參數值。
注意 如果您無法檢視此資料表中的所有 5 個數據行,請嘗試下列動作:
- 將瀏覽器視窗展開為完整大小。
- 將游標放在資料表中,並使用方向鍵向左和向右捲動。
0x00至 0x70
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤的原因 |
---|---|---|---|---|
0x00 | 目前的 IRQL | 集區類型 | 位元組數 | 驅動程式要求零位元組集區配置。 |
0x01 | 目前的 IRQL | 集區類型 | 配置大小,以位元組為單位 | 驅動程式嘗試使用 IRQL > APC_LEVEL配置分頁記憶體。 |
0x02 | 目前的 IRQL | 集區類型 | 配置大小,以位元組為單位 | 驅動程式嘗試使用 IRQL > DISPATCH_LEVEL配置非分頁式記憶體。 |
0x03 | 呼叫端嘗試配置多個頁面的 必須成功集區,但此 API 允許的最大頁面是一個頁面。 | |||
0x10 | 不正確的位址 | 0 | 0 | 驅動程式嘗試釋放未從配置呼叫傳回的位址。 |
0x11 | 目前的 IRQL | 集區類型 | 集區的位址 | 驅動程式嘗試使用 IRQL > APC_LEVEL釋放分頁集區。 |
0x12 | 目前的 IRQL | 集區類型 | 集區的位址 | 驅動程式嘗試使用 IRQL > DISPATCH_LEVEL釋放非分頁集區。 |
0x13或0x14 | 保留 | 集區標頭的指標 | 集區標頭內容 | 驅動程式嘗試釋放已釋放的記憶體集區。 |
0x15 | 計時器專案 | 集區類型 | 正在釋放的集區位址 | 呼叫端嘗試釋放的集區包含作用中的計時器。 |
0x16 | 保留 | 集區位址 | 0 | 驅動程式嘗試在不正確的位址釋放集區,或驅動程式將不正確參數傳遞至記憶體常式。 |
0X17 | 資源專案 | 集區類型 | 正在釋放的集區位址 | 呼叫端嘗試釋放的集區包含作用中的 ERESOURCE。 |
0x30 | 目前的 IRQL | 要求的 IRQL | 0 | 驅動程式已將不正確參數傳遞至 KeRaiseIrql。 (參數的值低於目前的 IRQL,或高於HIGH_LEVEL的值。這可能是使用未初始化參數的結果。) |
0x31 | 目前的 IRQL | 要求的 IRQL | 0:新的 IRQL 錯誤 1:DPC 常式內的新 IRQL 無效 | 驅動程式已將不正確參數傳遞至 KeLowerIrql。 (參數的值高於目前的 IRQL,或高於HIGH_LEVEL的值。這可能是使用未初始化參數的結果。) |
0x32 | 目前的 IRQL | 微調鎖定位址 | 0 | 驅動程式在 IRQL 上呼叫 KeReleaseSpinLock ,而不是 DISPATCH_LEVEL。 (這可能是因為微調鎖定的雙釋放。) |
0x33 | 目前的 IRQL | 快速 Mutex 位址 | 0 | 驅動程式嘗試使用 IRQL > APC_LEVEL取得快速 mutex。 |
0x34 | 目前的 IRQL | 執行緒 APC 停用計數 | 快速 Mutex 位址 | 驅動程式嘗試在APC_LEVEL以外的 IRQL 上釋放快速 Mutex。 |
0x35 | 目前的 IRQL | 微調鎖定位址 | 舊 IRQL | 核心釋放了 IRQL 不等於DISPATCH_LEVEL的微調鎖定。 |
0x36 | 目前的 IRQL | 微調鎖定編號 | 舊 IRQL | 核心已釋放佇列的微調鎖定,IRQL 不等於DISPATCH_LEVEL。 |
0x37 | 目前的 IRQL | 執行緒 APC 停用計數 | 資源 | 驅動程式嘗試取得資源,但不會停用 APC。 |
0x38 | 目前的 IRQL | 執行緒 APC 停用計數 | 資源 | 驅動程式嘗試釋放資源,但不會停用 APC。 |
0x39 | 目前的 IRQL | 執行緒 APC 停用計數 | Mutex | 驅動程式嘗試取得具有 IRQL 不等於專案上APC_LEVEL的 mutex 「unsafe」。 |
0x3A | 目前的 IRQL | 執行緒 APC 停用計數 | Mutex | 驅動程式嘗試釋放 mutex 「unsafe」,IRQL 不等於專案上的APC_LEVEL。 |
0x3B | 目前的 IRQL | 要等候的物件 | 逾時參數 | KeWaitXxx 常式是在 DISPATCH_LEVEL 或更高版本呼叫。 |
0x3C | 傳遞至常式的控制碼 | 物件型別 | 0 | 驅動程式稱為 ObReferenceObjectByHandle 且控制碼不正確。 |
0x3D | 0 | 0 | 錯誤的資源位址 | 驅動程式已將未對齊) (不正確的資源傳遞至 ExAcquireResourceExclusive。 |
0x3E | 0 | 0 | 0 | 目前不在重要區域中的執行緒,稱為 KeLeaveCriticalRegion 的驅動程式。 |
0x3F | 物件位址 | 新的物件參考計數。 -1: 取值案例 1:參考案例 | 0 | 驅動程式會將 ObReferenceObject 套用至參考計數為零的物件,或驅動程式將 ObDereferenceObject 套用至參考計數為零的物件。 |
0x40 | 目前的 IRQL | 微調鎖定位址 | 0 | 名為 KeAcquireSpinLockAtDpcLevel 的驅動程式與 IRQL < DISPATCH_LEVEL。 |
0x41 | 目前的 IRQL | 微調鎖定位址 | 0 | 名為 KeReleaseSpinLockFromDpcLevel 的驅動程式與 IRQL < DISPATCH_LEVEL。 |
0x42 | 目前的 IRQL | 微調鎖定位址 | 0 | 名為 KeAcquireSpinLock 的驅動程式與 IRQL > DISPATCH_LEVEL。 |
0x51 | 配置基底位址 | 配置以外的參考位址 | 收費位元組數目 | 驅動程式在寫入超過配置結尾之後,嘗試釋放記憶體。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x52 | 配置基底位址 | 雜湊專案 | 收費位元組數目 | 驅動程式在寫入超過配置結尾之後,嘗試釋放記憶體。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x53 | 配置基底位址 | 標頭 | 保留 | 驅動程式在寫入超過配置結尾之後,嘗試釋放記憶體。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x54 | 配置基底位址 | 保留 | 集區雜湊大小 | 驅動程式在寫入超過配置結尾之後,嘗試釋放記憶體。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x59 | 配置基底位址 | Listindex | 保留 | 驅動程式在寫入超過配置結尾之後,嘗試釋放記憶體。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x60 | 從分頁集區配置的位元組 | 從非分頁集區配置的位元組 | 未釋放的配置總數 | 驅動程式正在卸載,而不需要先釋放其集區配置。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x61 | 從分頁集區配置的位元組 | 從非分頁集區配置的位元組 | 未釋放的配置總數 | 驅動程式執行緒嘗試在驅動程式卸載時組態集區記憶體。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 |
0x62 | 驅動程式的名稱 | 保留 | 未釋放的配置總數,包括分頁和非分頁集區 | 驅動程式正在卸載,而不需要先釋放其集區配置。 只有在驅動程式驗證器的集區追蹤選項作用中時,才會發生此參數的錯誤檢查。 輸入 !verifier 3 drivername.sys,以取得造成錯誤檢查之配置外泄的資訊。 |
0x6F | MDL 位址 | 正在鎖定的實體頁面 | 系統中的最高實體頁面 | 在 PFN 資料庫中的頁面上呼叫 MmProbeAndLockPages。 這通常是呼叫此常式的驅動程式,以鎖定自己的私人雙埠 RAM。 不僅如此,它也可能會損毀具有非連續實體 RAM 的機器上的記憶體。 |
0x70 0x91
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤原因 |
---|---|---|---|---|
0x70 | 目前的 IRQL | MDL 位址 | 存取模式 | 驅動程式稱為 MmProbeAndLockPages 與 IRQL > DISPATCH_LEVEL。 |
0x71 | 目前的 IRQL | MDL 位址 | 進程位址 | 驅動程式稱為 MmProbeAndLockProcessPages 與 IRQL > DISPATCH_LEVEL。 |
0x72 | 目前的 IRQL | MDL 位址 | 進程位址 | 驅動程式稱為 MmProbeAndLockSelectedPages 搭配 IRQL > DISPATCH_LEVEL。 |
0x73 | 目前的 IRQL | 在 32 位 Windows 中:64 位 Windows 中實體位址的低 32 位:64 位實體位址 | 位元組數 | 驅動程式稱為 MmMapIoSpace 與 IRQL > DISPATCH_LEVEL。 |
0x74 | 目前的 IRQL | MDL 位址 | 存取模式 | 驅動程式在核心模式中使用 IRQL > DISPATCH_LEVEL呼叫MmMapLockedPages。 |
0x75 | 目前的 IRQL | MDL 位址 | 存取模式 | 驅動程式在使用者模式中使用 IRQL > APC_LEVEL呼叫MmMapLockedPages。 |
0x76 | 目前的 IRQL | MDL 位址 | 存取模式 | 驅動程式在核心模式中使用 IRQL > DISPATCH_LEVEL呼叫MmMapLockedPagesSpecifyCache。 |
0x77 | 目前的 IRQL | MDL 位址 | 存取模式 | 驅動程式在使用者模式中使用 IRQL > APC_LEVEL呼叫MmMapLockedPagesSpecifyCache。 |
0x78 | 目前的 IRQL | MDL 位址 | 0 | 名為 MmUnlockPages 的驅動程式與 IRQL > DISPATCH_LEVEL。 |
0x79 | 目前的 IRQL | 未對應的虛擬位址 | MDL 位址 | 驅動程式在核心模式中使用 IRQL > DISPATCH_LEVEL呼叫MmUnmapLockedPages。 |
0x7A | 目前的 IRQL | 未對應的虛擬位址 | MDL 位址 | 驅動程式在使用者模式中使用 IRQL > APC_LEVEL呼叫MmUnmapLockedPages。 |
0x7B | 目前的 IRQL | 未對應的虛擬位址 | 位元組數 | 驅動程式稱為 MmUnmapIoSpace 與 IRQL > APC_LEVEL。 |
0x7C | MDL 位址 | MDL 旗標 | 0 | 驅動程式稱為 MmUnlockPages,並傳遞了從未成功鎖定其頁面的 MDL。 |
0x7D | MDL 位址 | MDL 旗標 | 0 | 驅動程式稱為 MmUnlockPages,並傳遞來自非分頁集區的 MDL。 (這些應該永遠不會解除鎖定。) |
0x7E | 目前的 IRQL | DISPATCH_LEVEL | 0 | 驅動程式稱為 MmAllocatePagesForMdl、 MmAllocatePagesForMdlEx或 MmFreePagesFromMdl 搭配 IRQL > DISPATCH_LEVEL。 |
0x7F | 目前的 IRQL | MDL 位址 | MDL 旗標 | 驅動程式稱為 BuildMdlForNonPagedPool ,並傳遞來自分頁集區的 MDL。 |
0x80 | 目前的 IRQL | 事件位址 | 0 | 名為 KeSetEvent 的驅動程式與 IRQL > DISPATCH_LEVEL。 |
0x81 | MDL 位址 | MDL 旗標 | 0 | 名為 MmMapLockedPages 的驅動程式。 (您應該改用 MmMapLockedPagesSpecifyCache ,並將 BugCheckOnFailure 參數設定為 FALSE.) |
0x82 | MDL 位址 | MDL 旗標 | 0 | 名為 MmMapLockedPagesSpecifyCache 的驅動程式,BugCheckOnFailure 參數等於 TRUE。 (此參數應設定為 FALSE.) |
0x83 | 要對應之實體位址範圍的開始 | 要對應的位元組數目 | 未鎖定的第一頁框架編號 | 名為 MmMapIoSpace 的驅動程式,而不需要鎖定 MDL 頁面。 在進行此呼叫之前,必須鎖定所對應實體位址範圍所代表的實體頁面。 |
0x85 | MDL 位址 | 要對應的頁數 | 未鎖定的第一頁框架編號 | 名為 MmMapLockedPages 的 驅動程式,而不需要鎖定 MDL 頁面。 |
0x89 | MDL 位址 | MDL 中非記憶體頁面的指標 | MDL 中的非記憶體頁碼 | MDL 未標示為「I/O」,但它包含非記憶體頁面位址。 |
0x91 | 保留 | 保留 | 保留 | 驅動程式使用作業系統不支援的方法切換堆疊。 擴充核心模式堆疊的唯一支援方式是使用 KeExpandKernelStackAndCallout。 |
要0x140的0xA0
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤原因 |
---|---|---|---|---|
0xA0 | 發出讀取或寫入要求的 IRP 指標 | 較低裝置的裝置物件 | 偵測到錯誤所在的磁區數目 | 在硬碟上偵測到迴圈備援檢查 (CRC) 錯誤。 只有在驅動程式驗證程式的 [磁片完整性檢查] 選項作用中時,才會發生此參數的錯誤檢查。 |
0xA1 | 發出讀取或寫入要求的 IRP 複本。 (已完成實際的 IRP。) | 較低裝置的裝置物件 | 偵測到錯誤所在的磁區數目 | 在磁區上偵測到 CRC 錯誤, (非同步) 。 只有在驅動程式驗證程式的 [磁片完整性檢查] 選項作用中時,才會發生此參數的錯誤檢查。 |
0xA2 | 發出讀取或寫入要求的 IRP,或此 IRP 的複本 | 較低裝置的裝置物件 | 偵測到錯誤所在的磁區數目 | CRCDISK 總和檢查碼複本不相符。 這可能是分頁錯誤。 只有在驅動程式驗證程式的 [磁片完整性檢查] 選項作用中時,才會發生此參數的錯誤檢查。 |
0xB0 | MDL 位址 | MDL 旗標 | 不正確的 MDL 旗標 | 名為 MmProbeAndLockPages 的驅動程式,適用于具有不正確旗標的 MDL。 例如,驅動程式將 MmBuildMdlForNonPagedPool 所建立的 MDL 傳遞至 MmProbeAndLockPages。 |
0xB1 | MDL 位址 | MDL 旗標 | 不正確的 MDL 旗標 | 名為 MmProbeAndLockProcessPages 的驅動程式,適用于具有不正確旗標的 MDL。 例如,驅動程式將 MmBuildMdlForNonPagedPool 所建立的 MDL 傳遞至 MmProbeAndLockProcessPages。 |
0xB2 | MDL 位址 | MDL 旗標 | 不正確的 MDL 旗標 | 驅動程式針對具有不正確旗標的 MDL 呼叫 MmMapLockedPages 。 例如,驅動程式已傳遞已對應至系統位址或未鎖定至 MmMapLockedPages 的 MDL。 |
0xB3 | MDL 位址 | MDL 旗標 | 遺漏 MDL 旗標, (至少預期有一個) | 驅動程式針對具有不正確旗標的 MDL 呼叫 MmMapLockedPages 。 例如,驅動程式傳遞了未鎖定至 MmMapLockedPages 的 MDL。 |
0xB4 | MDL 位址 | MDL 旗標 | 未預期的部分 MDL 旗標 | 部分 MDL 的驅動程式稱為 MmUnlockPages 。 部分 MDL 是由 IoBuildPartialMdl所建立。 |
0xB5 | MDL 位址 | MDL 旗標 | 未預期的部分 MDL 旗標 | 在以 IoBuildPartialMdl) 建立的部分 MDL (上呼叫 MmUnmapLockedPages。 |
0xB6 | MDL 位址 | MDL 旗標 | 遺漏 MDL 旗標 | 在未對應至系統位址的 MDL 上呼叫 MmUnmapLockedPages。 |
0xB7 | 實體頁面損毀的數目。 | 第一個損毀的實體頁面。 | 上次損毀的實體頁面。 | 系統 BIOS 在睡眠轉換期間損毀了低實體記憶體。 |
0xB8 | MDL 位址 | MDL 旗標 | 保留 | MDL 所描述的頁面仍會對應。 驅動程式必須先取消對應頁面,才能呼叫 IoFreeMdl。 |
0xB9 | 正在取消對應的位址。 | MDL 位址。 | 保留 | MmUnmapLockedPages 以不正確的使用者空間位址呼叫。 |
0xC0 | IRP 的位址 | 0 | 保留 | 名為 IoCallDriver 且已停用中斷的驅動程式。 |
0xC1 | 驅動程式分派常式的位址 | 保留 | 保留 | 驅動程式分派常式已傳回,並停用中斷。 |
0xC2 | 0 | 0 | 0 | 停用中斷之後,驅動程式稱為「快速 I/O 分派常式」。 |
0xC3 | 驅動程式快速 I/O 分派常式的位址 | 保留 | 保留 | 驅動程式快速 I/O 分派常式已傳回,並停用中斷。 |
0xC5 | 驅動程式分派常式的位址 | 目前線程的 APC 停用計數 | 在呼叫驅動程式分派常式之前,執行緒的 APC 會先停用計數 | 驅動程式分派常式已變更執行緒的 APC 停用計數。 每次驅動程式呼叫 KeEnterCriticalRegion、 FsRtlEnterFileSystem或取得 mutex 時,都會遞減 APC 停用計數。 每次驅動程式呼叫 KeLeaveCriticalRegion、 KeReleaseMutex或 FsRtlExitFileSystem時,APC 停用計數都會遞增。 因為這些呼叫應該一律成對,所以每當執行緒結束時,APC 停用計數應該為零。 負值表示驅動程式已停用 APC 呼叫,而不重新啟用它們。 正值表示反向為 true。 |
0xC6 | 驅動程式快速 I/O 分派常式的位址 | 目前線程的 APC 停用計數 | 在呼叫快速 I/O 驅動程式分派常式之前,執行緒的 APC 會先停用計數 | 驅動程式快速 I/O 分派常式已變更執行緒的 APC 停用計數。 每次驅動程式呼叫 KeEnterCriticalRegion、 FsRtlEnterFileSystem或取得 mutex 時,都會遞減 APC 停用計數。 每次驅動程式呼叫 KeLeaveCriticalRegion、 KeReleaseMutex或 FsRtlExitFileSystem時,APC 停用計數都會遞增。 因為這些呼叫應該一律成對,所以每當執行緒結束時,APC 停用計數應該為零。 負值表示驅動程式已停用 APC 呼叫,而不重新啟用它們。 正值表示反向為 true。 |
0xCA | lookaside 清單的位址 | 保留 | 保留 | 驅動程式嘗試重新初始化 lookaside 清單。 |
0xCB | lookaside 清單的位址 | 保留 | 保留 | 驅動程式嘗試刪除未初始化的 lookaside 清單。 |
0xCC | lookaside 清單的位址 | 集區配置的起始位址 | 集區配置的大小 | 驅動程式嘗試釋放包含作用中 lookaside 清單的集區配置。 |
0xCD | lookaside 清單的位址 | 呼叫端指定的區塊大小 | 支援的區塊大小下限 | 驅動程式嘗試建立外觀清單,其配置區塊大小太小。 |
0xD0 | ERESOURCE 結構的位址 | 保留 | 保留 | 驅動程式嘗試重新初始化 ERESOURCE 結構。 |
0xD1 | ERESOURCE 結構的位址 | 保留 | 保留 | 驅動程式嘗試刪除未初始化的 ERESOURCE 結構。 |
0xD2 | ERESOURCE 結構的位址 | 集區配置的起始位址 | 集區配置的大小 | 驅動程式嘗試釋放包含使用中 ERESOURCE 結構的集區配置。 |
0xD5 | 驅動程式所檢查組建版本所建立之IO_REMOVE_LOCK結構的位址 | 目前的 IoReleaseRemoveLock 標籤 | 保留 | 目前的 IoReleaseRemoveLock 標籤不符合先前 的 IoAcquireRemoveLock 標籤。 如果呼叫 IoReleaseRemoveLock 的驅動程式不在核取的組建中,參數 2 是驅動程式驗證器代表驅動程式所建立之陰影IO_REMOVE_LOCK結構的位址。 在此情況下,驅動程式所使用的IO_REMOVE_LOCK結構位址完全不會使用,因為驅動程式驗證器會取代所有移除鎖定 API 的鎖定位址。 只有在驅動程式驗證器的 I/O 驗證選項作用中時,才會發生此參數的錯誤檢查。 |
0xD6 | 驅動程式所檢查組建版本所建立之IO_REMOVE_LOCK結構的位址 | 不符合先前 IoAcquireRemoveLock 標籤的標記 | 上一個 IoAcquireRemoveLock 標籤 | 目前的 IoReleaseRemoveLockAndWait 標籤與先前 的 IoAcquireRemoveLock 標籤不符。 如果呼叫 IoReleaseRemoveLock 的驅動程式不是已檢查的組建,參數 2 是驅動程式驗證器代表驅動程式所建立之陰影IO_REMOVE_LOCK結構的位址。 在此情況下,驅動程式所使用的IO_REMOVE_LOCK結構位址完全不會使用,因為驅動程式驗證器會取代所有移除鎖定 API 的鎖定位址。 只有在驅動程式驗證器的 I/O 驗證選項作用中時,才會發生此參數的錯誤檢查。 |
0xD7 | 驅動程式驗證程式在內部使用的已檢查組建移除鎖定結構的位址 | 驅動程式所指定的移除鎖定結構位址 | 保留 | 即使呼叫 IoReleaseRemoveLockAndWait之後,移除鎖定仍無法重新初始化,因為其他執行緒可能仍會藉由呼叫 IoAcquireRemoveLock) 來使用該鎖定 (。 驅動程式應該在其裝置擴充功能內配置 Remove Lock,並一次將其初始化。 鎖定將會與裝置擴充功能一起刪除。 |
0xDA | 驅動程式的起始位址 | 驅動程式內的 WMI 回呼位址 | 保留 | 嘗試卸載尚未取消註冊其 WMI 回呼函式的驅動程式。 |
0xDB | 裝置物件的位址 | 保留 | 保留 | 嘗試刪除未從 WMI 取消註冊的裝置物件。 |
0xDC | 保留 | 保留 | 保留 | 不正確 RegHandle 值已指定為 函式 EtwUnregister的參數。 |
0xDD | 對 EtwRegister 的呼叫位址 | 卸載驅動程式的起始位址 | 對於Windows 8和更新版本,此參數是 ETW RegHandle 值。 | 嘗試卸載驅動程式而不呼叫 EtwUnregister。 |
0xDF | 同步處理物件位址 | 0 | 0 | 同步處理物件位於會話位址空間中。 會話位址空間中不允許同步處理物件,因為它們可以從另一個會話或沒有會話虛擬位址空間的系統執行緒操作。 |
0xE0 | 做為參數的使用者模式位址 | 大小,以位元組為單位,做為參數使用的位址範圍 | 保留 | 呼叫作業系統核心函式,該函式會將使用者模式位址指定為參數。 |
0xE1 | 同步處理物件的位址 | 保留 | 保留 | 找到同步處理物件具有無效或可分頁的位址。 |
0xE2 | IRP 的位址 | IRP 中存在的使用者模式位址 | 保留 | 找到 Irp-RequestorMode > 設為 KernelMode 的 IRP,其使用者模式位址為其中一個成員。 |
0xE3 | 對 API 的呼叫位址 | 在 API 中做為參數的使用者模式位址 | 保留 | 驅動程式已呼叫核心模式 ZwXxx 常式,並使用使用者模式位址做為參數。 |
0xE4 | 對 API 的呼叫位址 | 格式錯誤的UNICODE_STRING結構位址 | 保留 | 驅動程式已呼叫核心模式 ZwXxx 常式,其格式不正確UNICODE_STRING結構做為參數。 |
0xE5 | 目前的 IRQL | 保留 | 保留 | 在不正確的 IRQL 呼叫核心 API。 |
0xE6 | 在驅動程式內進行 Zw API 呼叫的位址 | 目前的 IRQL | 特殊核心 APC。 | 在 IRQL = PASSIVE_LEVEL且啟用特殊核心 APC 時,未呼叫核心 Zw API。 |
0xEA | 目前的 IRQL | 執行緒的 APC 停用計數 | Pushlock 的位址 | 驅動程式已嘗試在啟用 APC 時取得推送鎖定。 |
0xEB | 目前的 IRQL | 執行緒的 APC 停用計數 | Pushlock 的位址 | 驅動程式嘗試在啟用 APC 時釋放推送鎖定。 |
0xF0 | 目的地緩衝區的位址 | 來源緩衝區的位址 | 要複製的位元組數目 | 名為 memcpy 函式的驅動程式,其中包含重迭的來源和目的地緩衝區。 |
0xF5 | Null 控制碼的位址 | 物件型別 | 保留 | 驅動程式已將 Null 控制碼傳遞至 ObReferenceObjectByHandle。 |
0xF6 | 正在參考的控制碼值 | 目前進程的位址 | 執行不正確參考之驅動程式內的位址 | 驅動程式會將使用者模式控制碼參考為核心模式。 |
0xF7 | 處理呼叫端指定的值 | 呼叫端指定的物件類型 | 呼叫端指定的 AccessMode | 驅動程式正在嘗試在系統進程的內容中,嘗試核心控制碼的使用者模式參考。 |
0xFA | 完成常式位址。 | IRQL 值在呼叫完成常式之前 | 目前的 IRQL 值,在呼叫完成常式之後 | IRP 完成常式傳回的 IRQL 與呼叫常式所在的 IRQL 不同。 |
0xFB | 完成常式位址 | 目前線程的 APC 停用計數 | 執行緒的 APC 會先停用計數,再呼叫 IRP 完成常式 | 驅動程式的 IRP 完成常式已變更執行緒的 APC 停用計數。 每次驅動程式呼叫 KeEnterCriticalRegion、 FsRtlEnterFileSystem或取得 mutex 時,都會遞減 APC 停用計數。 每次驅動程式呼叫 KeLeaveCriticalRegion、 KeReleaseMutex或 FsRtlExitFileSystem時,APC 停用計數都會遞增。 因為這些呼叫應該一律成對,所以每當執行緒結束時,APC 停用計數應該為零。 負值表示驅動程式已停用 APC 呼叫,而不重新啟用它們。 正值表示反向為 true。 |
0xFC | 驅動程式內發出不正確 API 呼叫的位址。 | 提供的 ApcCoNtext 值。 | 保留 | 從核心模式呼叫 ZwNotifyChangeKey (,) 不支援的 ApcCoNtext 值。 |
0x105至 0x140
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤的原因 |
---|---|---|---|---|
0x105 | IRP 的位址 | 0 | 0 | 驅動程式會使用 ExFreePool 而非 IoFreeIrp 來釋放 IRP。 |
0x10A | 0 | 0 | 0 | 驅動程式會嘗試將集區配額收費至閒置進程。 |
0x10B | 0 | 0 | 0 | 驅動程式會嘗試從 DPC 常式收取集區配額。 不正確,因為目前的進程內容未定義。 |
0x110 | 插斷服務常式的位址 | 在執行 ISR 之前儲存的擴充內容位址 | 擴充內容的位址在執行 ISR 之後儲存 | 驅動程式的插斷服務常式 (ISR) 已損毀擴充執行緒內容。 |
0x111 | 插斷服務常式的位址 | 執行 ISR 前的 IRQL | 執行 ISR 之後的 IRQL | 插斷服務常式傳回已變更的 IRQL。 |
0x115 | 負責關機的執行緒位址,可能是死結。 | 0 | 0 | 驅動程式驗證器偵測到系統花費的時間超過 20 分鐘,且關閉未完成。 |
0x11A | 目前的 IRQL | 0 | 0 | 驅動程式會在 IRQL > APC_LEVEL呼叫 KeEnterCriticalRegion。 |
0x11B | 目前的 IRQL | 0 | 0 | 驅動程式會在 IRQL > APC_LEVEL呼叫 KeLeaveCriticalRegion。 |
0x120 | IRQL 值的位址 | 要等候的物件位址 | 逾時值的位址 | 執行緒會在 IRQL > DISPATCH_LEVEL等候。 KeWaitForSingleObject 或 KeWaitForMultipleObjects 的呼叫端必須在 IRQL < = DISPATCH_LEVEL執行。 |
0x121 | IRQL 值的位址 | 要等候的物件位址 | 逾時值的位址 | 執行緒會在 IRQL 等候等於 DISPATCH_LEVEL,而 Timeout 為 Null。 KeWaitForSingleObject 或 KeWaitForMultipleObjects 的呼叫端可以在 IRQL < = DISPATCH_LEVEL執行。 如果為 Timeout 提供 Null 指標,則呼叫執行緒會維持等候狀態,直到發出物件訊號為止。 |
0x122 | IRQL 值的位址 | 要等候的物件位址 | 逾時值的位址 | 執行緒會在DISPATCH_LEVEL等候,而 Timeout 值不等於零 (0) 。 如果 Timeout != 0,則 KeWaitForSingleObject 或 KeWaitForMultipleObjects 的呼叫端必須在 IRQL < = APC_LEVEL執行。 |
0x123 | 要等候的物件位址 | 0 | 0 | KeWaitForSingleObject 或 KeWaitForMultipleObjects 的呼叫端已將等候指定為 UserMode,但物件位於核心堆疊上。 |
0x130 | 工作專案的位址 | 0 | 0 | 工作專案位於會話位址空間中。 會話位址空間中不允許工作專案,因為它們可以從另一個會話或沒有會話虛擬位址空間的系統執行緒操作。 |
0x131 | 工作專案的位址 | 0 | 0 | 工作專案位於可分頁記憶體中。 工作專案必須位於不可分頁的記憶體中,因為核心會在DISPATCH_LEVEL使用這些專案。 |
0x135 | IRP 位址 | IoCancelIrp呼叫與此 IRP 完成之間允許的毫秒數 | 0 | 取消的 IRP 未在預期的時間內完成。驅動程式花費的時間超過預期來完成取消的 IRP。 |
0x13A | 正在釋放集區區塊的位址 | 不正確的值 | 不正確值的位址 | 驅動程式已呼叫 ExFreePool ,而 Driver Verifier 會在用來追蹤集區使用量的內部值之一中偵測到錯誤。 |
0x13B | 正在釋放集區區塊的位址 | 不正確值的位址 | 不正確記憶體頁面指標的位址 | 驅動程式已呼叫 ExFreePool ,而 Driver Verifier 會在用來追蹤集區使用量的內部值之一中偵測到錯誤。 |
0x13C | 正在釋放集區區塊的位址 | 不正確的值 | 不正確值的位址 | 驅動程式已呼叫 ExFreePool ,而 Driver Verifier 會在用來追蹤集區使用量的內部值之一中偵測到錯誤。 |
0x13D | 正在釋放集區區塊的位址 | 不正確值的位址 | 預期的正確值 | 驅動程式已呼叫 ExFreePool ,而 Driver Verifier 會在用來追蹤集區使用量的內部值之一中偵測到錯誤。 |
0x13E | 呼叫端指定的集區區塊位址 | 驅動程式驗證程式所追蹤的集區區塊位址 | 驅動程式驗證程式所追蹤之集區區塊位址的指標 | ExFreePool呼叫端所指定的集區區塊位址與驅動程式驗證器所追蹤的位址不同。 |
0x13F | 正在釋放集區區塊的位址 | 正在釋放的位元組數目 | 驅動程式驗證程式所追蹤位元組數目的指標 | 在呼叫 ExFreePool時釋放的記憶體位元組數目,與驅動程式驗證器所追蹤的位元組數目不同。 |
0x140 | 目前的 IRQL | MDL 位址 | 與此 MDL 相關聯的虛擬位址 | 非鎖定的 MDL 是從可分頁或可傳回的記憶體建構而來。 |
0x141 | 要求配置驅動程式的最高實體位址 | 要配置的位元組數目 | 0 | 驅動程式會在 4GB 下明確要求實體記憶體。 |
0x1000至 0x100B - 死結
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤的原因 |
---|---|---|---|---|
0x1000 | 資源的位址 | 保留 | 保留 | 自我死結:目前的執行緒嘗試遞迴且獨佔地取得它只擁有共用的資源。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 |
0x1001 | 造成死結之最終原因的資源位址 | 保留 | 保留 | 死結:發現鎖定階層違規。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 (使用 !deadlock 擴充功能進一步資訊。) |
0x1002 | 資源的位址 | 保留 | 保留 | 未初始化的資源:已取得資源,而不需要先初始化。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 |
0x1003 | 正在釋放死結的資源位址 | 應該先發行的資源位址 | 保留 | 未預期的發行:資源已以不正確的順序發行。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 |
0x1004 | 資源的位址 | 取得資源的執行緒位址 | 目前線程的位址 | 非預期的執行緒:錯誤的執行緒會釋放資源。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 |
0x1005 | 資源的位址 | 保留 | 保留 | 多個初始化:資源已初始化一次以上。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 |
0x1007 | 資源的位址 | 保留 | 保留 | 未取得的資源:資源在取得之前會釋出。 只有在驅動程式驗證程式的死結偵測選項作用中時,才會發生此參數的錯誤檢查。 |
0x1008 | 鎖定位址 | 保留 | 保留 | 驅動程式嘗試使用此鎖定類型不相符的 API 來取得鎖定。 |
0x1009 | 鎖定位址 | 保留 | 保留 | 驅動程式嘗試使用此鎖定類型不相符的 API 來釋放鎖定。 |
0x100A | 擁有者執行緒位址 | 保留 | 終止的執行緒擁有鎖定。 | |
0x100B | 鎖定位址 | 擁有者執行緒位址 | 保留 | 已刪除的鎖定仍由執行緒所擁有。 |
0x1010 | 發出寫入 IRP 的裝置物件。 | IRP 的位址。 | System-Space MDL 所描述之緩衝區的虛擬位址。 | 已修改寫入 Irp 的不變異 MDL 緩衝區內容。 |
0x1011 | 發出寫入 IRP 的裝置物件。 | IRP 的位址。 | System-Space MDL 所描述之緩衝區的虛擬位址。 | 讀取 Irp 的不變異 MDL 緩衝區內容在分派或緩衝期間修改了虛擬頁面所支援的緩衝區。 |
0x1012 | 描述違規之字串的指標。 | 如果未使用) ,則涉及此損毀的資料 (0。 | 如果未使用) ,則涉及此損毀的資料 (0。 | 驗證器擴充功能狀態儲存體偵測到損毀。 |
0x1013 | 驅動程式物件的指標。 | 所擷取原始 I/O 回呼的指標。 | 保留 (未使用的) 。 | 驗證器偵測到擷取的原始 I/O 回呼內部損毀。 |
0x2000至0x2005 - 程式碼完整性問題
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤原因 |
---|---|---|---|---|
0x2000 | 驅動程式程式碼中偵測到錯誤的位址。 | 集區類型。 | 如果提供) ,集區標籤 (。 | 程式碼完整性問題:呼叫端指定可執行集區類型。 預期 (:NonPagedPoolNx) |
0x2001 | 驅動程式程式碼中偵測到錯誤的位址。 | 頁面保護 (WIN32_PROTECTION_MASK) 。 | 0 | 程式碼完整性問題:呼叫端指定了可執行檔頁面保護。 (預期:已清除PAGE_EXECUTE* 位) |
0x2002 | 驅動程式程式碼中偵測到錯誤的位址。 | 頁面優先順序 (MM_PAGE_PRIORITY 邏輯方式為 OR'd 與 MdlMapping*) 。 | 0 | 程式碼完整性問題:呼叫端指定可執行檔 MDL 對應。 預期 (:MdlMappingNoExecute) |
0x2003 | 映射檔案名 (Unicode 字串) 。 | 區段標頭的位址。 | 區段名稱 (UTF-8 編碼字串) 。 | 程式碼完整性問題:映射包含可執行和可寫入的區段。 |
0x2004 | 映射檔案名 (Unicode 字串) 。 | 區段標頭的位址。 | 區段名稱 (UTF-8 編碼字串) 。 | 程式碼完整性問題:影像包含未對齊頁面的區段。 |
0x2005 | 映射檔案名 (Unicode 字串) 。 | IAT 目錄。 | 區段名稱 (UTF-8 編碼字串) 。 | 程式碼完整性問題:映射包含位於可執行檔區段中的 IAT。 |
0xA001至0xA00D - VM 交換器問題
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤原因 |
---|---|---|---|---|
0xA001 | NetBufferList 物件的指標 | 如果 NON-Null) ,則為虛擬交換器物件的指標 ( | 保留 (未使用) | VM 參數:必須設定呼叫端提供的 NetBufferList SourceHandle。 請參閱 AllocateNetBufferListForwardingCoNtext 常式。 |
0xA002 | NetBufferList 物件的指標 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | 保留 (未使用) | VM 交換器:呼叫端提供的 NetBufferList 轉送詳細資料不是零。 請參閱 AllocateNetBufferListForwardingCoNtext 常式。 |
0xA003 | NetBufferList 物件的指標 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | 保留 (未使用) | VM 交換器:呼叫端已提供 NetBufferList,其中包含封包標頭或為 Null 的路由內容。 請參閱 可延伸交換器資料路徑的封包管理指導方針。 |
0xA004 | 無效埠的識別碼 | NIC 索引 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | VM 交換器:呼叫端指定了不正確埠和 NIC 索引組合。 請參閱 Hyper-V 可延伸交換器埠和網路介面卡狀態。 |
0xA005 | NetBufferList 物件的指標 | 目的地清單的指標。 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | VM 交換器:呼叫端提供了不正確目的地。 請參閱 AddNetBufferListDestination 和 UpdateNetBufferListDestinations。 |
0xA006 | NetBufferList 物件的指標 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | 保留 (未使用) | VM 交換器:呼叫端提供不正確來源 NIC 或 Port 物件。 請參閱 Hyper-V 可延伸交換器埠和網路介面卡狀態。 |
0xA007 | NetBufferList 物件的指標 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | 保留 (未使用) | VM 交換器:呼叫端提供了不正確目的地清單。 請參閱 AddNetBufferListDestination 和 UpdateNetBufferListDestinations。 |
0xA008 | 父 NIC 物件 | NIC 索引 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | VM 交換器:不允許時嘗試參考 NIC。 請參閱 Hyper-V 可延伸交換器埠和網路介面卡狀態。 |
0xA009 | 正在參考的埠 | 如果 NON-Null) ,則為虛擬交換器物件的指標 ( | 保留 (未使用) | VM 交換器:嘗試在不允許時參考埠。 請參閱 Hyper-V 可延伸交換器埠和網路介面卡狀態。 |
0xA00A | NetBufferList 物件的指標 | CoNtextTypeInfo 物件 | 保留 (未使用) | VM 交換器:已設定失敗內容。 請參閱 SetNetBufferListSwitchCoNtext。 |
0xA00B | NetBufferList 物件的指標 | NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_* | 如果 NON-Null) ,則為虛擬交換器物件的指標 ( | VM 交換器:為捨棄的 NetBufferList 提供不正確方向。 請參閱 ReportFilteredNetBufferLists。 |
0xA00C | NetBufferList 物件的指標 | 傳送旗標值 | 如果 NON-Null) ,則為虛擬交換器物件的指標 ( | VM 交換器:設定NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE旗標時,NetBufferList 鏈結有多個來源埠。 請參閱 Hyper-V 可延伸交換器傳送和接收旗標。 |
0xA00D | NetBufferList 物件的指標 | 虛擬交換器內容的指標 | 如果 NON-Null) ,則為虛擬交換器物件的指標 ( | VM 交換器:設定NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP旗標時,鏈結中的一或多個 NetBufferList 具有不正確目的地。 請參閱 Hyper-V 可延伸交換器傳送和接收旗標。 |
0xA00E | NetBufferLists 物件的指標。 | 虛擬交換器內容的指標。 | 如果 NON-Null) ,則為虛擬交換器物件的指標 (。 | VM 交換器:設定VMS_NBL_ROUTING_CONTEXT_FLAG_NO_WNV_PROCESSING旗標時,嘗試透過 WNV 完成 NetBufferList。 |
0x00020002 0x00020022 - DDI 合規性規則違規
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤原因 |
---|---|---|---|---|
0x00020002 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlApcLte。 此規則指定只有在 IRQL < = APC_LEVEL時,驅動程式才能呼叫ObGetObjectSecurity和ObReleaseObjectSecurity。 |
0x00020003 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlDispatch。 IrqlDispatch 規則指定只有在 IRQL = DISPATCH_LEVEL 時,驅動程式才必須呼叫特定常式 |
0x00020004 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlExAllocatePool。 IrqlExAllocatePool 規則指定只有在 IRQL < =DISPATCH_LEVEL 時,驅動程式才會呼叫ExAllocatePoolWithTag和 ExAllocatePoolWithTagPriority。 |
0x00020005 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlExApcLte1。 IrqlExApcLte1 規則指定驅動程式只在 IRQL < = APC_LEVEL 呼叫 ExAcquireFastMutex 和 ExTryToAcquireFastMutex。 |
0x00020006 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlExApcLte2。 IrqlExApcLte2 規則指定只有在 IRQL < = APC_LEVEL 時,驅動程式才會呼叫特定常式。 |
0x00020007 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlExApcLte3。 IrqlExApcLte3 規則指定只有在 IRQL < = APC_LEVEL時,驅動程式才必須呼叫特定的主管支援常式。 |
0x00020008 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlExPassive。 IrqlExPassive 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫特定的主管支援常式。 |
0x00020009 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlIoApcLte。 IrqlIoApcLte 規則指定驅動程式只有在 IRQL < = APC_LEVEL時,才必須呼叫特定的 I/O 管理員常式。 |
0x0002000A | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlIoPassive1。 IrqlIoPassive1 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫特定的 I/O 管理員常式。 |
0x0002000B | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlIoPassive2。 IrqlIoPassive2 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫特定的 I/O 管理員常式。 |
0x0002000C | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlIoPassive3。 IrqlIoPassive3 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫特定的 I/O 管理員常式。 |
0x0002000D | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlIoPassive4。 IrqlIoPassive4 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫特定的 I/O 管理員常式。 |
0x0002000E | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlIoPassive5。 IrqlIoPassive5 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫特定的 I/O 管理員常式。 |
0x0002000F | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlKeApcLte1。 IrqlKeApcLte1 規則指定只有在 IRQL < = APC_LEVEL時,驅動程式才必須呼叫特定核心常式。 |
0x00020010 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlKeApcLte2。 IrqlKeApcLte2 規則指定只有在 IRQL < = APC_LEVEL時,驅動程式才必須呼叫特定核心常式。 |
0x00020011 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlKeDispatchLte。 IrqlKeDispatchLte 規則指定只有在 IRQL < = DISPATCH_LEVEL時,驅動程式才必須呼叫特定核心常式。 |
0x00020015 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlKeReleaseSpinLock。 IrqlKeReleaseSpinLock 規則指定只有在 IRQL = DISPATCH_LEVEL時,驅動程式才必須呼叫 KeReleaseSpinLock。 |
0x00020016 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlKeSetEvent。 IrqlKeSetEvent 規則指定 KeSetEvent 常式只有在 IRQL < = DISPATCH_LEVEL設定為 FALSE 時呼叫 KeSetEvent 常式,而當 Wait 設定為 TRUE 時,在 IRQL < = APC_LEVEL呼叫。 |
0x00020019 | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlMmApcLte。 IrqlMmApcLte 規則指定只有在 IRQL < = APC_LEVEL時,驅動程式才必須呼叫特定的記憶體管理員常式。 |
0x0002001A | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlMmDispatch。 IrqlMmDispatch 規則指定驅動程式只有在 IRQL = DISPATCH_LEVEL時,才必須呼叫 MmFreeContiguousMemory 。 |
0x0002001B | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlObPassive。 IrqlObPassive 規則指定驅動程式只有在 IRQL = PASSIVE_LEVEL時,才必須呼叫 ObReferenceObjectByHandle 。 |
0x0002001C | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlPsPassive。 IrqlPsPassive 規則指定只有在 IRQL = PASSIVE_LEVEL 時,驅動程式才必須呼叫特定進程和執行緒管理員常式。 |
0x0002001D | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 IrqlReturn。 |
0x0002001E | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlRtlPassive。 IrqlRtlPassive 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫 RtlDeleteRegistryValue 。 |
0x0002001F | 描述違反規則條件之字串的指標。 | 規則狀態變數 () 選擇性指標。 | 保留 | 驅動程式違反 DDI 合規性規則 IrqlZwPassive。 IrqlZwPassive 規則指定只有在 IRQL = PASSIVE_LEVEL時,驅動程式才必須呼叫 ZwClose 。 |
0x00020022 | 描述違反規則條件之字串的指標。 | 保留 (未使用的) | 保留 (未使用的) | 驅動程式違反 DDI 合規性規則 IrqlIoDispatch。 |
0x00020023 | 字串的指標,描述違反的規則條件。 | 保留 (未使用的) 。 | 保留 (未使用的) 。 | 驅動程式違反 DDI 合規性規則 IrqlIoRtlZwPassive。 IrqlIoRtlZwPassive 規則會指定只有在以 IRQL = PASSIVE_LEVEL執行時,驅動程式才會呼叫規則中列出的 DIS。 |
0x00020024 | 字串的指標,描述違反的規則條件。 | 保留 (未使用的) 。 | 保留 (未使用的) 。 | 驅動程式違反 DDI 合規性規則 IrqlNtifsApcPassive。 IrqlNtifsApcPassive 規則指定只有當驅動程式在 IRQL = PASSIVE_LEVEL或 IRQL < = APC_LEVEL執行時,驅動程式才會呼叫規則中列出的 DIS。 |
0x00020025 | 字串的指標,描述違反的規則條件。 | 保留 (未使用的) 。 | 保留 (未使用的) 。 | 驅動程式違反 Microsoft 內部 DDI 合規性規則 IrqlKeMore。 |
0x00040003至 0x00043006 - DDI 合規性規則違規
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤的原因 |
---|---|---|---|---|
0x00040003 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 CriticalRegions。 |
0x00040006 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 QueuedSpinLock。 |
0x00040007 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 QueuedSpinLockRelease。 |
0x00040009 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 SpinLock。 |
0x0004000A | 描述違反規則條件之字串的指標。 | 將內部規則狀態 (第二個引數的位址!ruleinfo) | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 SpinlockRelease。 |
0x0004000E | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 GuardedRegions。 |
0x0004100B | 描述違反規則條件之字串的指標。 | 保留 (未使用) | 保留 (未使用) | 驅動程式違反 DDI 合規性規則 RequestedPowerIrp。 |
0x0004100F | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 IoSetCompletionExCompleteIrp。 |
0x00043006 | 描述違反規則條件之字串的指標。 | 保留 (未使用) | 保留 (未使用) | 驅動程式違反 DDI 合規性規則 PnpRemove。 |
0x00081001 0x00082005 - AVStream 驅動程式合規性規則違規
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤原因 |
---|---|---|---|---|
0x00081001 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsDeviceMutex。 |
0x00081002 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsStreamPointerClone。 |
0x00081003 | 描述違反規則條件之字串的指標。 | 保留 (未使用) | 保留 (未使用) | 驅動程式違反 DDI 合規性規則 KsStreamPointerLock。 |
0x00081004 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsStreamPointerUnlock。 |
0x00081005 | 描述違反規則條件之字串的指標。 | 保留 (未使用) | 保留 (未使用) | 驅動程式違反 DDI 合規性規則 KsCallbackReturn。 |
0x00081006 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsIrqlDeviceCallbacks。 |
0x00081007 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsIrqlFilterCallbacks。 |
0x00081008 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsIrqlPinCallbacks。 |
0x00081009 | 描述違反規則條件之字串的指標。 | 保留 (未使用) | 保留 (未使用) | 驅動程式違反 DDI 合規性規則 KsIrqlDIS。 |
0x0008100A | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsFilterMutex。 |
0x0008100B | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsProcessingMutex。 |
0x0008100C | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsInvalidStreamPointer。 |
0x00082001 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsTimedPinSetDeviceState。 |
0x00082002 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 DDI 合規性規則 KsTimedDeviceCallbacks。 |
0x00082003 | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 KsTimedFilterCallbacks。 |
0x00082004 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 KsTimedPinCallbacks。 |
0x00082005 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 KsTimedProcessingMutex。 |
0x00091001至 0x0009400C - NDIS DDI 合規性規則違規
參數 1 | 參數 2 | 參數 3 | 參數 4 | 錯誤的原因 |
---|---|---|---|---|
0x00091001 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 NdisOidComplete。 |
0x00091002 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 NdisOidDoubleComplete。 |
0x0009100E | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 DDI 合規性規則 NdisOidDoubleRequest。 |
0x00092003 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 NdisTimedOidComplete。 |
0x0009200D | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 NdisTimedDataSend。 |
0x0009200F | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 NdisTimedDataHang。 |
0x00092010 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 NdisFilterTimedPauseComplete。 |
0x00092011 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 NdisFilterTimedDataSend。 |
0x00092012 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 NdisFilterTimedDataReceive。 |
0x00093004 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanAssociation。 |
0x00093005 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanConnectionRoaming。 |
0x00093006 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanDisassociation。 |
0x00093101 | 描述違反規則條件的字串指標。 | 保留 (未使用的) | 保留 (未使用的) | 驅動程式違反 NDIS/WIFI 驗證規則 WlanAssert。 |
0x00094007 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanTimedAssociation。 |
0x00094008 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanTimedConnectionRoaming。 |
0x00094009 | 描述違反規則條件之字串的指標。 | 將第二個引數 (至 !ruleinfo) 的內部規則狀態位址。 | 補充狀態 (第三個引數的位址!ruleinfo) 。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanTimedConnectRequest。 |
0x0009400B | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanTimedLinkQuality。 |
0x0009400C | 描述違反規則條件之字串的指標。 | 對 !ruleinfo) 的第二個引數 (內部規則狀態的位址。 | !ruleinfo) 的第三個引數 (補充狀態的位址。 | 驅動程式違反 NDIS/WIFI 驗證規則 WlanTimedScan。 |
原因
如需原因的描述,請參閱 Parameters 區段中每個程式碼的描述。 您可以使用 !analyze -v 延伸模組取得進一步的資訊。
解決方案
只有在指示驅動程式驗證程式監視一或多個驅動程式時,才會進行這個錯誤檢查。 如果您不想使用驅動程式驗證器,您應該停用它。 您也可以考慮移除造成此問題的驅動程式。
如果您是驅動程式寫入器,請使用透過這個錯誤檢查取得的資訊來修正程式碼中的 Bug。
如需驅動程式驗證器的完整詳細資料,請參閱 驅動程式驗證器。
備註
_POOL_TYPE程式碼會在 Ntddk.h 中列舉。 特別是, 0 (零) 表示非分頁集區,而 1 (一個) 表示分頁集區。
(Windows 8 和更新版本的 Windows) 如果DDI 合規性檢查造成錯誤檢查,請在驅動程式原始程式碼上執行靜態驅動程式驗證程式,並指定參數 1 值所識別的 DDI 合規性 (規則,) 導致錯誤檢查。 靜態驅動程式驗證程式可協助您找出原始程式碼中問題的原因。