电脑蓝屏提示代码DRIVER_VERIFIER_DETECTED_VIOLATION怎么办
蓝屏代码0x000000C4代表"DRIVER_VERIFIER_DETECTED_VIOLATION",这意味着Windows驱动程序验证器检测到了一个违规情况导致系统崩溃。驱动程序验证器是Windows中的一个工具,用于检测和识别驱动程序中的错误或问题。当发现一个被验证的驱动程序在执行期间出现问题时,系统会产生此错误代码的蓝屏。
快快蓝屏修复助手可以帮你修复各类蓝屏异常和错误问题,能快速检测软件、硬件和驱动故障。分析蓝屏日志。
要解决这个问题,可以尝试以下方法:
方法一:检查硬件兼容性
蓝屏错误可能是由于硬件与驱动程序不兼容而引起的,你可以查看硬件制造商的官方网站,以确保硬件兼容性,并下载适用于你的操作系统的驱动程序。
方法二:检查硬件故障
有时候蓝屏错误也可能是由于硬件故障引起的,您可以尝试检查和重新连接计算机中的硬件设备,如内存条、硬盘等,或者运行Windows自带的硬件诊断工具来检测是否存在硬件问题。
方法三:执行系统还原
如果您在遇到该错误之前进行了系统更改或驱动程序更新,您可以尝试使用系统还原将计算机恢复到先前的工作状态。
方法四:使用一键修复工具助手(强烈推荐)
1、首先你的电脑必须下载与完成安装完成快快蓝屏修复助手。如果你还没有安装点击下方链接下载。
下载地址:>>>快快蓝屏修复助手<<<
提示:安装路径不要选择C盘,避免产生问题造成损失。
2、找到你电脑中的快快蓝屏修复助手,点击进入。看到首页后,点击首页一键扫描按钮开始扫描。等待几分钟,就能获取你急切想要的结果。
3、扫描完成后会显示电脑的所有蓝屏记录以及蓝屏的详细信息。
4、解决方案页面显示了导致该次蓝屏的具体原因和解决方案,点击右上角的一键修复进行修复。
5、切记,当修复完成之后我们还是需要重新启动计算机的。毕竟一切修复的结果,需要重新后,才能被系统认可。
当你完成重启后,你电脑的蓝屏问题已经基本解决了。相信小编,不要急需卸载快快蓝屏修复助手。毕竟它强大的功能是你未来的一个保障,可以随时随地为你服务,让你再次遇到蓝屏问题不在抓狂。
其他相关信息:
DRIVER_VERIFIER_DETECTED_VIOLATION bug 检查 的值为 0x000000C4。 这是驱动程序验证程序发现的严重错误的常规 bug 检查代码。 有关详细信息,请参阅 启用驱动程序验证程序时处理 Bug 检查。
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 的值。这可能是使用未初始化的 parameter.) |
0x31 | 当前 IRQL | 请求的 IRQL | 0:新 IRQL 错误 1:新 IRQL 在 DPC 例程中无效 | 驱动程序将无效参数传递给 KeLowerIrql。 (参数的值高于当前 IRQL 或高于 HIGH_LEVEL。这可能是使用未初始化的 parameter.) |
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 | 要等待的对象 | 超时参数 | KeWaitXxx 例程在 DISPATCH_LEVEL 或更高版本调用。 |
0x3C | 传递给例程的句柄 | 对象类型 | 0 | 驱动程序使用错误的句柄调用 ObReferenceObjectByHandle 。 |
0x3D | 0 | 0 | 错误资源的地址 | 驱动程序将错误的 (未对齐) 资源传递给 ExAcquireResourceExclusive。 |
0x3E | 0 | 0 | 0 | 驱动程序为当前不在关键区域中的线程调用 KeLeaveCriticalRegion 。 |
0x3F | 对象地址 | 新的对象引用计数。 -1:取消引用案例 1:引用案例 | 0 | 驱动程序将 ObReferenceObject 应用于引用计数为零的对象,或驱动程序将 ObDereferenceObject 应用于引用计数为零的对象。 |
0x40 | 当前 IRQL | 旋转锁地址 | 0 | 驱动程序使用 IRQL < DISPATCH_LEVEL调用 KeAcquireSpinLockAtDpcLevel。 |
0x41 | 当前 IRQL | 旋转锁地址 | 0 | 驱动程序使用 IRQL < DISPATCH_LEVEL调用 KeReleaseSpinLockFromDpcLevel。 |
0x42 | 当前 IRQL | 旋转锁地址 | 0 | 驱动程序使用 IRQL > DISPATCH_LEVEL调用 KeAcquireSpinLock。 |
0x51 | 分配的基址 | 超出分配的引用的地址 | 收费字节数 | 驱动程序在写入到分配结束之后尝试释放内存。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x52 | 分配的基址 | 哈希条目 | 收费字节数 | 驱动程序在写入到分配结束之后尝试释放内存。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x53 | 分配的基址 | 标头 | 保留 | 驱动程序在写入到分配结束之后尝试释放内存。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x54 | 分配的基址 | 保留 | 池哈希大小 | 驱动程序在写入到分配结束之后尝试释放内存。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x59 | 分配的基址 | Listindex | 保留 | 驱动程序在写入到分配结束之后尝试释放内存。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x60 | 从分页池分配的字节数 | 从非分页池分配的字节数 | 未释放的分配总数 | 驱动程序正在卸载,但未首先释放其池分配。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x61 | 从分页池分配的字节数 | 从非分页池分配的字节数 | 未释放的分配总数 | 驱动程序线程正在尝试在驱动程序卸载时分配池内存。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 |
0x62 | 驱动程序的名称 | 保留 | 未释放的分配总数,包括分页池和非分页池 | 驱动程序正在卸载,但未首先释放其池分配。 仅当驱动程序验证程序的“池跟踪”选项处于活动状态时,才会使用此参数检查 bug。 键入 !verifier 3 drivername.sys,获取有关导致 bug 检查的已泄漏分配的信息。 |
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,该 MDL 的页面从未成功锁定。 |
0x7D | MDL 地址 | MDL 标志 | 0 | 驱动程序名为 MmUnlockPages,并传递了一个 MDL,该 MDL 的页面来自非分页池。 (这些永远不应解锁。) |
0x7E | 当前 IRQL | DISPATCH_LEVEL | 0 | 名为 MmAllocatePagesForMdl、 MmAllocatePagesForMdlEx 或 MmFreePagesFromMdl 的驱动程序与 IRQL > DISPATCH_LEVEL。 |
0x7F | 当前 IRQL | MDL 地址 | MDL 标志 | 驱动程序名为 BuildMdlForNonPagedPool ,并传递了一个 MDL,该 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) 错误。 仅当驱动程序验证程序的磁盘完整性检查选项处于活动状态时,才会使用此参数检查 bug。 |
0xA1 | 发出读取或写入请求的 IRP 的副本。 (实际 IRP 已完成。) | 较低设备的设备对象 | 检测到错误的扇区数 | 在扇区上检测到 CRC 错误, (异步) 。 仅当驱动程序验证程序的磁盘完整性检查选项处于活动状态时,才会使用此参数检查 bug。 |
0xA2 | 发出读取或写入请求的 IRP,或此 IRP 的副本 | 较低设备的设备对象 | 检测到错误的扇区数 | CRCDISK 校验和副本不匹配。 这可能是分页错误。 仅当驱动程序验证程序的磁盘完整性检查选项处于活动状态时,才会使用此参数检查 bug。 |
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 。 例如,驱动程序传递的 MDL 未锁定到 MmMapLockedPages。 |
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 或获取互斥体时,APC 禁用计数都会递减。 每次驱动程序调用 KeLeaveCriticalRegion、 KeReleaseMutex 或 FsRtlExitFileSystem 时,APC 禁用计数都会递增。 由于这些调用应始终成对,因此每当线程退出时,APC 禁用计数应为零。 负值表示驱动程序已禁用 APC 调用而不重新启用它们。 正值表示反之,则为 true。 |
0xC6 | 驱动程序快速 I/O 调度例程的地址 | 当前线程的 APC 禁用计数 | 线程的 APC 在调用快速 I/O 驱动程序调度例程之前禁用计数 | 驱动程序快速 I/O 调度例程已更改线程的 APC 禁用计数。 每次驱动程序调用 KeEnterCriticalRegion、 FsRtlEnterFileSystem 或获取互斥体时,APC 禁用计数都会递减。 每次驱动程序调用 KeLeaveCriticalRegion、 KeReleaseMutex 或 FsRtlExitFileSystem 时,APC 禁用计数都会递增。 由于这些调用应始终成对,因此每当线程退出时,APC 禁用计数应为零。 负值表示驱动程序已禁用 APC 调用而不重新启用它们。 正值表示反之,则为 true。 |
0xCA | 旁观列表的地址 | 预留 | 预留 | 驱动程序已尝试重新初始化查看列表。 |
0xCB | 旁观列表的地址 | 预留 | 预留 | 驱动程序尝试删除未初始化的 lookaside 列表。 |
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 验证选项处于活动状态时,才会发生带有此参数的 bug 检查。 |
0xD6 | 由驱动程序的已检查内部版本创建的 IO_REMOVE_LOCK 结构的地址 | 与以前的 IoAcquireRemoveLock 标记不匹配的标记 | 以前的 IoAcquireRemoveLock 标记 | 当前的 IoReleaseRemoveLockAndWait 标记与以前的 IoAcquireRemoveLock 标记不匹配。 如果调用 IoReleaseRemoveLock 的驱动程序不是经检查的内部版本,则参数 2 是驱动程序验证程序代表驱动程序创建的影子IO_REMOVE_LOCK结构的地址。 在这种情况下,驱动程序使用的 IO_REMOVE_LOCK 结构的地址根本不使用,因为驱动程序验证程序将替换所有删除锁 API 的锁地址。 仅当驱动程序验证程序的 I/O 验证选项处于活动状态时,才会发生带有此参数的 bug 检查。 |
0xD7 | 驱动程序验证程序在内部使用的已检查内部版本的地址(删除锁定结构) | 驱动程序指定的 Remove Lock 结构的地址 | 保留 | 即使调用 IoReleaseRemoveLockAndWait 后,Remove Lock 也无法重新初始化,因为其他线程可能仍通过调用 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 禁用计数 | 推送锁的地址 | 驱动程序尝试在启用 APC 时获取推送锁。 |
0xEB | 当前 IRQL | 线程的 APC 禁用计数 | 推送锁的地址 | 驱动程序尝试在启用 APC 时释放一个推送锁。 |
0xF0 | 目标缓冲区的地址 | 源缓冲区的地址 | 要复制的字节数 | 一个调用 memcpy 函数的驱动程序,其中包含重叠的源缓冲区和目标缓冲区。 |
0xF5 | NULL 句柄的地址 | 对象类型 | 保留 | 驱动程序将 NULL 句柄传递给 ObReferenceObjectByHandle。 |
0xF6 | 处理被引用的值 | 当前进程的地址 | 执行错误引用的驱动程序内的地址 | 驱动程序将用户模式句柄引用为内核模式。 |
0xF7 | 由调用方指定的句柄值 | 调用方指定的对象类型 | 调用方指定的 AccessMode | 驱动程序正在尝试在系统进程的上下文中对内核句柄进行用户模式引用。 |
0xFA | 完成例程地址。 | 调用完成例程之前的 IRQL 值 | 调用完成例程后的当前 IRQL 值 | IRP 完成例程返回的 IRQL 不同于调用该例程的 IRQL。 |
0xFB | 完成例程地址 | 当前线程的 APC 禁用计数 | 线程的 APC 在调用 IRP 完成例程之前禁用计数 | 线程的 APC 禁用计数已由驱动程序的 IRP 完成例程更改。 每次驱动程序调用 KeEnterCriticalRegion、 FsRtlEnterFileSystem 或获取互斥体时,APC 禁用计数都会递减。 每次驱动程序调用 KeLeaveCriticalRegion、 KeReleaseMutex 或 FsRtlExitFileSystem 时,APC 禁用计数都会递增。 由于这些调用应始终成对,因此每当线程退出时,APC 禁用计数应为零。 负值表示驱动程序已禁用 APC 调用而不重新启用它们。 正值表示反之,则为 true。 |
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,超时为 NULL。 KeWaitForSingleObject 或 KeWaitForMultipleObjects 的调用方可以在 IRQL <= DISPATCH_LEVEL 运行。 如果为 Timeout 提供了 NULL 指针,则调用线程将保持等待状态,直到对象收到信号。 |
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 | 资源的地址 | 预留 | 预留 | 自死锁:当前线程尝试以递归方式以独占方式获取它仅拥有共享的资源。 仅当驱动程序验证程序的“死锁检测”选项处于活动状态时,才会发生带有此参数的 bug 检查。 |
0x1001 | 死锁最终原因的资源的地址 | 预留 | 预留 | 死锁:已发现锁层次结构冲突。 仅当驱动程序验证程序的“死锁检测”选项处于活动状态时,才会发生带有此参数的 bug 检查。 (使用 !deadlock 扩展了解更多信息。) |
0x1002 | 资源的地址 | 预留 | 预留 | 未初始化的资源:已获取资源,但尚未先初始化。 仅当驱动程序验证程序的死锁检测选项处于活动状态时,才会使用此参数检查 bug。 |
0x1003 | 正在释放死锁的资源的地址 | 应先释放的资源的地址 | 保留 | 意外发布:资源已按不正确的顺序释放。 仅当驱动程序验证程序的死锁检测选项处于活动状态时,才会使用此参数检查 bug。 |
0x1004 | 资源的地址 | 获取资源的线程的地址 | 当前线程的地址 | 意外线程:错误的线程释放资源。 仅当驱动程序验证程序的死锁检测选项处于活动状态时,才会使用此参数检查 bug。 |
0x1005 | 资源的地址 | 预留 | 预留 | 多次初始化:一个资源多次初始化。 仅当驱动程序验证程序的死锁检测选项处于活动状态时,才会使用此参数检查 bug。 |
0x1007 | 资源的地址 | 预留 | 预留 | 未获取的资源:在获取资源之前释放资源。 仅当驱动程序验证程序的死锁检测选项处于活动状态时,才会使用此参数检查 bug。 |
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 MdlMapping*) 在逻辑上 OR'd。 | 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 交换机:调用方提供的目标无效。 请参阅 AddNetBufferListDestination 和 UpdateNetBufferListDestinations。 |
0xA006 | 指向 NetBufferList 对象的指针 | 如果非 NULL) ,则指向虚拟交换机对象的指针 (。 | 保留 (未使用的) | VM 交换机:调用方提供了无效的源 NIC 或 Port 对象。 请参阅 Hyper-V 可扩展交换机端口和网络适配器状态。 |
0xA007 | 指向 NetBufferList 对象的指针 | 如果非 NULL) ,则指向虚拟交换机对象的指针 (。 | 保留 (未使用的) | VM 交换机:调用方提供的目标列表无效。 请参阅 AddNetBufferListDestination 和 UpdateNetBufferListDestinations。 |
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 对象的指针 | Send Flags 值 | 如果非 NULL) ,则指向虚拟交换机对象的指针 ( | VM 交换机:设置 NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE 标志时,NetBufferList 链具有多个源端口。 请参阅 Hyper-V 可扩展交换机发送和接收标志。 |
0xA00D | 指向 NetBufferList 对象的指针 | 指向虚拟交换机上下文的指针 | 如果非 NULL) ,则指向虚拟交换机对象的指针 ( | VM 交换机:设置NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP标志时,链中的一个或多个 NetBufferList 的目标无效。 请参阅 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 时才调用 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 规则指定仅在 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 | 指向描述违反规则条件的字符串的指针。 | 保留 (未使用的) | 保留 (未使用的) |
相关推荐
最新文章
|