错误检查 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:新 IRQL 在 DPC 例程中无效 驱动程序将无效参数传递给 KeLowerIrql。 (该参数的值高于当前 IRQL,或者高于 HIGH_LEVEL。这可能是使用未初始化参数的结果。)
0x32 当前 IRQL 自旋锁地址 0 驱动程序在除 DISPATCH_LEVEL 以外的 IRQL 上调用 KeReleaseSpinLock。 (这可能是由于自旋锁的双重释放。)
0x33 当前 IRQL 快速互斥体地址 0 驱动程序尝试使用 IRQL > APC_LEVEL 获取快速互斥体。
0x34 当前 IRQL 线程 APC 禁用计数 快速互斥体地址 驱动程序尝试在除 APC_LEVEL 以外的 IRQL 上释放快速互斥体。
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。
0x3A 当前 IRQL 线程 APC 禁用计数 Mutex 驱动程序试图释放一个“不安全”的互斥体,IRQL 在条目上不等于 APC_LEVEL。
0x3B 当前 IRQL 要等待的对象 超时参数 正在以 DISPATCH_LEVEL 或更高级别调用 KeWaitXxx 例程。
0x3C 传递给例程的句柄 对象类型 0 调用 ObReferenceObjectByHandle 的驱动程序的句柄不正确。
0x3D 0 0 错误资源的地址 驱动程序向 ExAcquireResourceExclusive 传递了一个错误(未对齐)资源。
0x3E 0 0 0 对于当前不在临界区的线程,驱动程序调用 KeLeaveCriticalRegion
0x3F 对象地址 新对象引用计数。 -1:取消引用案例 1:引用案例 0 驱动程序将 ObReferenceObject 应用于引用计数为 0 的对象,或者将 ObDereferenceObject 应用于引用计数为 0 的对象。
0x40 当前 IRQL 自旋锁地址 0 驱动程序使用 IRQL < DISPATCH_LEVEL 调用 KeAcquireSpinLockAtDpcLevel
0x41 当前 IRQL 自旋锁地址 0 驱动程序使用 IRQL < DISPATCH_LEVEL 调用 KeReleaseSpinLockFromDpcLevel
0x42 当前 IRQL 自旋锁地址 0 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 KeAcquireSpinLock
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 地址 访问模式 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 MmProbeAndLockPages
0x71 当前 IRQL MDL 地址 进程地址 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 MmProbeAndLockProcessPages。
0x72 当前 IRQL MDL 地址 进程地址 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 MmProbeAndLockSelectedPages。
0x73 当前 IRQL 在 32 位 Windows 中:物理地址的低 32 位 在 64 位 Windows 中:64 位物理地址 字节数 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 MmMapIoSpace
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 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 MmUnlockPages
0x79 当前 IRQL 正在取消映射虚拟地址 MDL 地址 驱动程序在内核模式下使用 IRQL > DISPATCH_LEVEL 调用 MmUnmapLockedPages
0x7A 当前 IRQL 正在取消映射虚拟地址 MDL 地址 驱动程序在用户模式下使用 IRQL > APC_LEVEL 调用 MmUnmapLockedPages
0x7B 当前 IRQL 正在取消映射虚拟地址 字节数 驱动程序使用 IRQL > APC_LEVEL 调用 MmUnmapIoSpace
0x7C MDL 地址 MDL 标志 0 驱动程序调用 MmUnlockPages,并传递了一个 MDL,其页面从未成功锁定。
0x7D MDL 地址 MDL 标志 0 驱动程序调用 MmUnlockPages,并传递了一个 MDL,其页面来自非分页池。 (这些永远不应该解锁。)
0x7E 当前 IRQL DISPATCH_LEVEL 0 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 MmAllocatePagesForMdlMmAllocatePagesForMdlExMmFreePagesFromMdl
0x7F 当前 IRQL MDL 地址 MDL 标志 驱动程序调用 BuildMdlForNonPagedPool,并传递了一个 MDL,其页面来自分页池。
0x80 当前 IRQL 事件地址 0 驱动程序使用 IRQL > DISPATCH_LEVEL 调用 KeSetEvent
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

0xA0 到 0x140

参数 1 参数 2 参数 3 参数 4 错误消息的原因
0xA0 指向发出读取或写入请求的 IRP 的指针 下层设备的设备对象 检测到错误的扇区编号 在硬盘上检测到循环冗余检查 (CRC) 错误。 只有当驱动程序验证程序的磁盘完整性检查选项处于活动状态时,才会使用此参数进行错误检查。
0xA1 发出读取或写入请求的 IRP 的副本。 (实际 IRP 已完成)。 下层设备的设备对象 检测到错误的扇区编号 在扇区上检测到 CRC 错误(异步)。 只有当驱动程序验证程序的磁盘完整性检查选项处于活动状态时,才会使用此参数进行错误检查。
0xA2 发出读取或写入请求的 IRP,或此 IRP 的副本 下层设备的设备对象 检测到错误的扇区编号 CRCDISK 校验和副本不匹配。 这可能是分页错误。 只有当驱动程序验证程序的磁盘完整性检查选项处于活动状态时,才会使用此参数进行错误检查。
0xB0 MDL 地址 MDL 标志 MDL 标志不正确 驱动程序为 MDL 调用 MmProbeAndLockPages,标志不正确。 例如,驱动程序将 MmBuildMdlForNonPagedPool 创建的 MDL 传递给 MmProbeAndLockPages。
0xB1 MDL 地址 MDL 标志 MDL 标志不正确 驱动程序为 MDL 调用 MmProbeAndLockProcessPages,标志不正确。 例如,驱动程序将 MmBuildMdlForNonPagedPool 创建的 MDL 传递给 MmProbeAndLockProcessPages。
0xB2 MDL 地址 MDL 标志 MDL 标志不正确 驱动程序为 MDL 调用 MmMapLockedPages,标志不正确。 例如,驱动程序传递的 MDL 已映射到系统地址,或者未锁定到 MmMapLockedPages。
0xB3 MDL 地址 MDL 标志 缺少 MDL 标志(至少应有一个) 驱动程序为 MDL 调用 MmMapLockedPages,标志不正确。 例如,驱动程序传递了一个未锁定到 MmMapLockedPages 的 MDL。
0xB4 MDL 地址 MDL 标志 意外的部分 MDL 标志 驱动程序为部分 MDL 调用了 MmUnlockPages。 部分 MDL 由 IoBuildPartialMdl 创建。
0xB5 MDL 地址 MDL 标志 意外的部分 MDL 标志 MmUnmapLockedPages 在部分 MDL 上调用(使用 IoBuildPartialMdl 创建)。
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 禁用计数。 每次驱动程序调用 KeEnterCriticalRegionFsRtlEnterFileSystem 或获取互斥体时,APC 禁用计数都会递减。 每次驱动程序调用 KeLeaveCriticalRegionKeReleaseMutexFsRtlExitFileSystem 时,APC 禁用计数都会递增。 由于这些调用应始终成对进行,因此当线程退出时,APC 禁用计数应为零。 负值表示驱动程序已禁用 APC 调用,而未重新启用它们。 正值表示情况恰好相反。
0xC6 驱动程序快速 I/O 调度例程的地址 当前线程的 APC 禁用计数 在调用快速 I/O 驱动程序调度例程之前,线程的 APC 禁用计数 驱动程序快速 I/O 调度例程已更改线程的 APC 禁用计数。 每次驱动程序调用 KeEnterCriticalRegionFsRtlEnterFileSystem 或获取互斥体时,APC 禁用计数都会递减。 每次驱动程序调用 KeLeaveCriticalRegionKeReleaseMutexFsRtlExitFileSystem 时,APC 禁用计数都会递增。 由于这些调用应始终成对进行,因此当线程退出时,APC 禁用计数应为零。 负值表示驱动程序已禁用 APC 调用,而未重新启用它们。 正值表示情况恰好相反。
0xCA 后备列表的地址 预留 预留 驱动程序已尝试重新初始化后备列表。
0xCB 后备列表的地址 预留 预留 驱动程序已尝试删除未初始化的后备列表。
0xCC 后备列表的地址 池分配的起始地址 池分配的大小 驱动程序已尝试释放包含活动后备列表的池分配。
0xCD 后备列表的地址 调用方指定的块大小 支持的最小块大小 驱动程序试图创建一个分配块大小太小的后备列表。
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)。 驱动程序应在其设备扩展内分配删除锁,并对其进行一次初始化。 锁将与设备扩展一起删除。
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 结构的地址 预留 驱动程序用格式错误的 UNICODE_STRING 结构作为参数调用内核模式 ZwXxx 例程。
0xE5 当前 IRQL 预留 预留 在不正确的 IRQL 上调用了内核 API。
0xE6 进行 Zw API 调用的驱动程序内部的地址 当前 IRQL 特殊内核 APC。 内核 Zw API 未在 IRQL = PASSIVE_LEVEL调用,并且启用了特殊内核 APC。
0xEA 当前 IRQL 线程的 APC 禁用计数 推送锁的地址 在启用 APC时,驱动程序试图获取推送锁。
0xEB 当前 IRQL 线程的 APC 禁用计数 推送锁的地址 在启用 APC时,驱动程序试图释放推送锁。
0xF0 目标缓冲区的地址 源缓冲区的地址 要复制的字节数 名为 memcpy 函数的驱动程序,其中包含重叠的源缓冲区和目标缓冲区。
0xF5 NULL 句柄的地址 对象类型 预留 驱动程序将 NULL 句柄传递给 ObReferenceObjectByHandle
0xF6 正在引用的句柄值 当前进程的地址 执行错误引用的驱动程序内的地址 驱动程序将用户模式句柄引用为内核模式。
0xF7 调用方指定的句柄值 调用方指定的对象类型 调用方指定的 AccessMode 驱动程序正试图在系统进程的上下文中对内核句柄进行用户模式引用。
0xFA 完成例程地址。 调用完成例程之前的 IRQL 值 调用完成例程后的当前 IRQL 值 IRP 完成例程返回的 IRQL 与调用该例程的 IRQL 不同。
0xFB 完成例程地址 当前线程的 APC 禁用计数 线程调用 IRP 完成例程之前的 APC 禁用计数 线程的 APC 禁用计数由驱动程序的 IRP 完成例程更改。 每次驱动程序调用 KeEnterCriticalRegionFsRtlEnterFileSystem 或获取互斥体时,APC 禁用计数都会递减。 每次驱动程序调用 KeLeaveCriticalRegionKeReleaseMutexFsRtlExitFileSystem 时,APC 禁用计数都会递增。 由于这些调用应始终成对进行,因此当线程退出时,APC 禁用计数应为零。 负值表示驱动程序已禁用 APC 调用,而未重新启用它们。 正值表示情况恰好相反。
0xFC 进行错误 API 调用的驱动程序内部的地址。 提供的 ApcContext 值。 预留 使用不支持的 ApcContext 值调用 ZwNotifyChangeKey(从内核模式)。

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 指针,则调用线程将保持等待状态,直到用信号通知 Object 为止。
0x122 IRQL 值的地址 要等待的对象地址 超时值的地址 线程在 DISPATCH_LEVEL 等待,超时值不等于零 (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,驱动程序验证程序在用于跟踪池使用情况的内部值之一中检测到错误。
0x13B 被释放的池块的地址 错误值的地址 指向错误内存页的指针的地址 驱动程序已调用 ExFreePool,驱动程序验证程序在用于跟踪池使用情况的内部值之一中检测到错误。
0x13C 被释放的池块的地址 错误值 错误值的地址 驱动程序已调用 ExFreePool,驱动程序验证程序在用于跟踪池使用情况的内部值之一中检测到错误。
0x13D 被释放的池块的地址 错误值的地址 预期的正确值 驱动程序已调用 ExFreePool,驱动程序验证程序在用于跟踪池使用情况的内部值之一中检测到错误。
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 的地址。 MDL 描述的缓冲区的系统空间虚拟地址。 修改了 Write Irp 的不变 MDL 缓冲区内容。
0x1011 向其发出写入 IRP 的设备对象。 IRP 的地址。 MDL 描述的缓冲区的系统空间虚拟地址。 Read 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 逻辑上与 MdlMapping*为 OR)。 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 对象的指针 指向虚拟交换机对象的指针(如果为非 Null) 预留(未使用) VM 交换机:必须设置调用方提供的 NetBufferList 的 SourceHandle。 请参阅 AllocateNetBufferListForwardingContext 例程。
0xA002 指向 NetBufferList 对象的指针 指向虚拟交换机对象的指针(如果为非 Null)。 预留(未使用) VM 交换机:调用方提供的 NetBufferList 的转发详细信息不是零。 请参阅 AllocateNetBufferListForwardingContext 例程。
0xA003 指向 NetBufferList 对象的指针 指向虚拟交换机对象的指针(如果为非 Null)。 预留(未使用) VM 交换机:调用方提供的 NetBufferList 的数据包标头或路由上下文为 NULL。 请参阅可扩展交换机数据路径的分组管理指南
0xA004 无效端口的 ID NIC 索引 指向虚拟交换机对象的指针(如果为非 Null)。 VM 交换机:调用方指定了无效的端口和 NIC 索引组合。 请参阅 Hyper-V 可扩展交换机端口和网络适配器状态
0xA005 指向 NetBufferList 对象的指针 指向目标列表的指针。 指向虚拟交换机对象的指针(如果为非 Null)。 VM 交换机:调用方提供了无效的目标。 请参阅 AddNetBufferListDestinationUpdateNetBufferListDestinations
0xA006 指向 NetBufferList 对象的指针 指向虚拟交换机对象的指针(如果为非 Null)。 预留(未使用) VM 交换机:调用方提供了无效的源 NIC 或端口对象。 请参阅 Hyper-V 可扩展交换机端口和网络适配器状态
0xA007 指向 NetBufferList 对象的指针 指向虚拟交换机对象的指针(如果为非 Null)。 预留(未使用) VM 交换机:调用方提供了无效的目标列表。 请参阅 AddNetBufferListDestinationUpdateNetBufferListDestinations
0xA008 父 NIC 对象 NIC 索引 指向虚拟交换机对象的指针(如果为非 Null)。 VM 交换机:在不允许时尝试引用 NIC。 请参阅 Hyper-V 可扩展交换机端口和网络适配器状态
0xA009 引用的端口 指向虚拟交换机对象的指针(如果为非 Null) 预留(未使用) VM 交换机:尝试在不允许时引用端口。 请参阅 Hyper-V 可扩展交换机端口和网络适配器状态
0xA00A 指向 NetBufferList 对象的指针 ContextTypeInfo 对象 预留(未使用) VM 交换机:已设置故障上下文。 请参阅 SetNetBufferListSwitchContext
0xA00B 指向 NetBufferList 对象的指针 NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_* 指向虚拟交换机对象的指针(如果为非 Null) VM 交换机:为已删除的 NetBufferList 提供的方向无效。 请参阅 ReportFilteredNetBufferLists
0xA00C 指向 NetBufferList 对象的指针 发送标志值 指向虚拟交换机对象的指针(如果为非 Null) VM 交换机:当设置 NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE 标志时,NetBufferList 链具有多个源端口。 请参阅 Hyper-V 可扩展交换机发送和接收标志
0xA00D 指向 NetBufferList 对象的指针 指向虚拟交换机上下文的指针 指向虚拟交换机对象的指针(如果为非 Null) VM 交换机:设置 NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP 标志时,链中的一个或多个 NetBufferLists 目标无效。 请参阅 Hyper-V 可扩展交换机发送和接收标志
0xA00E 指向 NetBufferLists 对象的指针。 指向虚拟交换机上下文的指针。 指向虚拟交换机对象的指针(如果为非 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 时,驱动程序才能调用 ObGetObjectSecurityObReleaseObjectSecurity
0x00020003 指向描述违反规则条件的字符串的指针。 指向规则状态变量的可选指针。 预留 驱动程序违反了 DDI 合规性规则 IrqlDispatch。 IrqlDispatch 规则指定,仅当 IRQL = DISPATCH_LEVEL 时,驱动程序才必须调用某些例程
0x00020004 指向描述违反规则条件的字符串的指针。 指向规则状态变量的可选指针。 预留 驱动程序违反了 DDI 合规性规则 IrqlExAllocatePool。 IrqlExAllocatePool 规则指定驱动程序仅在 IRQL<=DISPATCH_LEVEL 时调用 ExAllocatePoolWithTagExAllocatePoolWithTagPriority
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 规则指定,当 Wait 设置为 FALSE 时,仅在 IRQL <= DISPATCH_LEVEL 处调用 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,驱动程序才调用规则中列出的 DDI。
0x00020024 指向描述违反规则条件的字符串的指针。 预留(未使用)。 预留(未使用)。 驱动程序违反了 DDI 合规性规则 IrqlNtifsApcPassive。 IrqlNtifsApcPassive 规则指定,仅当驱动程序在 IRQL = PASSIVE_LEVEL 或 IRQL <= APC_LEVEL 执行时,才调用规则中列出的 DDI。
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 合规性规则 KsIrqlDDIs
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

原因

有关原因的说明,请参阅“参数”章节中每个代码的说明。 可以使用 !analyze -v 扩展获取更多信息。

解决方法

只有当驱动程序验证程序被指示监视一个或多个驱动程序时,才能进行此错误检查。 如果不打算使用驱动程序验证程序,则应将其停用。 还可以考虑删除导致此问题的驱动程序。

如果你是驱动程序编写者,请使用通过此错误检查获得的信息来修复代码中的错误。

有关驱动程序验证程序的完整详细信息,请参阅驱动程序验证程序

注解

_POOL_TYPE 代码在 Ntddk.h 中枚举。 其中,0(零)表示非分页池,1(一)表示分页池。

(Windows 8 及更高版本的 Windows)如果 DDI 合规性检查导致错误检查,请在驱动程序源代码上运行静态驱动程序验证程序,并指定导致错误检查的 DDI 合规性规则(由参数 1 值标识)。 静态驱动程序验证程序可以帮助在源代码中找到问题的原因。

另请参阅

在启用驱动程序验证程序的情况下处理错误检查