Bug 检查 0x7C:BUGCODE_NDIS_DRIVER
BUGCODE_NDIS_DRIVER Bug 检查的值为 0x0000007C。 此 Bug 检查表明操作系统检测到网络驱动程序中错误。
重要
这篇文章适合程序员阅读。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答。
BUGCODE_NDIS_DRIVER 参数
参数 1 表示违规类型。 其他参数的含义取决于参数 1 的值。 如果参数的值为“0”,则表示未使用此参数。
参数 1 | 参数 1 值和错误原因 | 参数 2 | 参数 3 | 参数 4 |
---|---|---|---|---|
0x01 |
NDIS_BUGCHECK_ALLOCATE_SHARED_MEM_HIGH_IRQL 一个驱动程序在高 IRQL 下调用了 NdisMAllocateSharedMemory。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
请求的共享内存的长度 |
当前 IRQL |
0x02 |
NDIS_BUGCHECK_SHARED_MEM_CORRUPTION 在调用 NdisMAllocateSharedMemory 时,NDIS 检测到以前分配的共享内存页已损坏。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
已损坏的共享内存页 |
NDIS_WRAPPER_CONTEXTE 的地址,用于跟踪驱动程序分配的共享内存 |
0x03 |
NDIS_BUGCHECK_FREE_INVALID_SHARED_MEM 一个微型端口驱动程序调用了 NdisMFreeSharedMemory(Async),其共享内存地址已被释放。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
从中分配此共享内存的页面 |
共享内存的虚拟地址 |
0x04 |
NDIS_BUGCHECK_UNLOAD_DRIVER_INVALID_PARAMETER 调用 AddDevice 时使用的驱动程序不在 NDIS 注册的驱动程序列表中。 仅在特殊检测的 NDIS 上启用。 |
NDIS_M_DRIVER_BLOCK 的地址 |
DRIVER_OBJECT 的地址 |
0 |
0x05 |
NDIS_BUGCHECK_RECVD_PACKET_IN_USE_BAD_STACK_LOCATION 以太网驱动程序指示它使用协议堆栈当前正在使用的数据包描述符收到了数据包。 通过检查堆栈数据包位置捕获。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
驱动程序使用的数据包描述符的地址。 请使用此地址运行 !ndiskd.pkt 获取详细信息。 |
包含此数据包描述符的数据包数组的地址 |
0x06 |
NDIS_BUGCHECK_RECVD_PACKET_IN_USE_BAD_REF_COUNT 以太网驱动程序指示它使用协议堆栈当前正在使用的数据包描述符收到了数据包。 通过检查数据包引用计数捕获。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
驱动程序使用的数据包描述符的地址。 请使用此地址运行 !ndiskd.pkt 获取详细信息。 |
包含此数据包描述符的数据包数组的地址 |
0x07 |
FDDI 驱动程序指示它使用协议堆栈当前正在使用的数据包描述符收到了数据包。 通过检查引用计数捕获。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
驱动程序使用的数据包描述符的地址。 请使用此地址运行 !ndiskd.pkt 获取详细信息。 |
包含此数据包描述符的数据包数组的地址 |
0x08 |
NDIS_BUGCHECK_HALT_WITHOUT_INTERRUPT_DEREGISTER 微型端口驱动程序在停止过程中未取消注册其中断。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
NDIS_MINIPORT_INTERRUPT 的地址 |
0 |
0x09 |
NDIS_BUGCHECK_HALT_WITHOUT_CANCEL_TIMER 微型端口驱动程序在未成功取消其所有计时器的情况下停止。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
微型端口驱动程序计时器队列的地址 (NDIS_MINIPORT_TIMER) |
0 |
0x0A |
NDIS_BUGCHECK_DRIVER_UNLOAD_UNEXPECTED 微型端口驱动程序过早卸载。 |
NDIS_M_DRIVER_BLOCK 的地址 |
DRIVER_OBJECT 的地址 |
微型端口驱动程序的引用计数 |
0x0B |
NDIS_BUGCHECK_INIT_FAILED_WITHOUT_INTERRUPT_DEREGISTER 微型端口驱动程序在未取消注册中断的情况下初始化失败。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
NDIS_MINIPORT_INTERRUPT 的地址 |
0 |
0x0C |
NDIS_BUGCHECK_INIT_FAILED_WITHOUT_CANCEL_TIMER 微型端口驱动程序在未成功取消其所有计时器的情况下初始化失败。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
微型端口驱动程序计时器队列的地址 (NDIS_MINIPORT_TIMER) |
0 |
0x0D |
NDIS_BUGCHECK_HALT_INIT_WITHOUT_INTERRUPT_DEREGISTER 微型端口驱动程序在停止过程中未取消注册其中断。 在微型端口驱动程序从初始化处理程序返回成功后,从初始化例程调用了停止。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
NDIS_MINIPORT_INTERRUPT 的地址 |
0 |
0x0E |
NDIS_BUGCHECK_HALT_INIT_WITHOUT_CANCEL_TIMER 微型端口驱动程序在未成功取消其所有计时器的情况下停止。 在微型端口驱动程序从初始化处理程序返回成功后,从初始化例程调用了停止。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
微型端口驱动程序计时器队列的地址 (NDIS_MINIPORT_TIMER) |
0 |
0x0F |
NDIS_BUGCHECK_RESET_COMPLETE_UNEXPECTED 一个微型端口驱动程序调用了 NdisMResetComplete,没有任何挂起的重置请求。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
重置状态 |
AddressingReset (BOOLEAN) |
0x10 |
NDIS_BUGCHECK_PM_INIT_FAILED_NO_INT_DEREGISTER 从低功率状态恢复后,微型端口驱动程序在没有取消注册其中断的情况下初始化失败。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
NDIS_MINIPORT_INTERRUPT 的地址 |
0 |
0x11 |
NDIS_BUGCHECK_PM_INIT_FAILED_NO_CANCEL_TIMER 从低功率状态恢复后,微型端口驱动程序在未成功取消其所有计时器的情况下初始化失败。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
微型端口驱动程序计时器队列的地址 (NDIS_MINIPORT_TIMER) |
0 |
0x12 |
NDIS_BUGCHECK_NFILTER_RECVD_PACKET_BAD_REF_COUNT 微型端口驱动程序指示它使用协议堆栈当前正在使用的数据包描述符收到了数据包。 通过检查数据包引用计数捕获。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
驱动程序使用的数据包描述符的地址。 请使用此地址运行 !ndiskd.pkt 获取详细信息。 |
包含此数据包描述符的数据包数组的地址 |
0x13 |
NDIS_BUGCHECK_TFILTER_RECVD_PACKET_BAD_REF_COUNT 令牌环微型端口驱动程序指示它使用协议堆栈当前正在使用的数据包描述符收到了数据包。 通过检查数据包引用计数捕获。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
驱动程序使用的数据包描述符的地址。 请使用此地址运行 !ndiskd.pkt 获取详细信息。 |
包含此数据包描述符的数据包数组的地址 |
0x14 |
NDIS_BUGCHECK_WAIT_EVENT_HIGH_IRQL NDIS 驱动程序在非法 IRQL 下调用了 NdisWaitEvent |
实际 IRQL |
0 |
0 |
0x15 |
NDIS_BUGCHECK_INVALID_NDIS5_CALL 微型端口驱动程序调用了为旧版驱动程序保留的 API。 驱动程序应仅调用 NDIS 6.x API。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
0 |
0 |
0x16 |
NDIS_BUGCHECK_INVALID_OPEN_IN_BIND_CONTEXT 协议驱动程序在绑定过程中未正确打开适配器。 |
特定协议的地址。 请使用此地址运行 !ndiskd.protocol 获取详细信息。 |
协议驱动程序分配的上下文区域的地址。 强制转换到 ndis!NDIS_BIND_CONTEXT。 |
打开句柄的地址。 请使用此地址运行 !ndiskd.mopen 获取详细信息。 |
0x17 |
NDIS_BUGCHECK_IFPROVIDER_DEREGISTER_UNEXPECTED 接口提供程序在未先删除其所有接口的情况下调用了 NdisIfDeregisterProvider。 |
接口提供程序句柄的地址。 请使用此地址运行 !ndiskd.ifprovider 获取详细信息。 |
0 |
0 |
0x1B |
NDIS_BUGCHECK_IF_STACK_TABLE_LOOP 驱动程序试图将接口添加到 ifStackTable,但这样做会导致循环。 ifStackTable 不能有循环。 运行 !ndiskd.ifstacktable 查看当前表(调用 NdisIfAddIfStackEntry)。 |
添加到表中的 HigherLayerIfIndex |
添加到表中的 LowerLayerIfIndex |
0 |
0x1C |
NDIS_BUGCHECK_MINIPORT_FAILED_OID_WHICH_MUST_SUCCEED 微型端口驱动程序未成功处理一个不得失败的 OID 请求。 这样做会泄漏内存或其他资源。 |
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
失败的 OID。 使用 !ndiskd.help 查找此 OID 的名称。 |
完成 OID 请求的失败状态代码 (NDIS_STATUS_XXX) |
0x1D |
NDIS_BUGCHECK_OID_REQUEST_INVALID_BUFFER 微型端口驱动程序或筛选器驱动程序非法完成了 OID 请求。 检查 BytesWritten 是否不大于缓冲区的整个长度。 |
特定微型端口适配器或筛选器模块块的地址。 请使用此地址运行 !ndiskd.netadapter 或 !ndiskd.filter 获取详细信息。 |
非法完成的 NDIS_OID_REQUEST 的地址。 使用 !ndiskd.oid 检查它。 |
0 |
0x1E |
NDIS_BUGCHECK_REFCOUNT_IMBALANCE NDIS 检测到内部 refcount 中有错误。 这可能是由引用下溢(取消引用多于引用)或标记不匹配引起的。 |
0 |
内部句柄。 使用 !ndiskd.ndisref 或强制转换为 ndis!NDIS_REFCOUNT_BLOCK。 |
当前 reftag 值 |
0x1F |
NDIS_BUGCHECK_ILLEGAL_MINIPORT_STATE_TRANSITION 微型端口驱动程序非法完成了状态转换。 |
失败的项。 可能的值:
|
特定微型端口适配器块的地址。 请使用此地址运行 !ndiskd.netadapter 获取详细信息。 |
0 |
0x20 |
NDIS_BUGCHECK_STATUS_INDICATION_INVALID_BUFFER 微型端口驱动程序或筛选器驱动程序指示非法 NDIS_STATUS_INDICATION。 |
状态指示的类型。 请使用此代码运行 !ndiskd.help 获取详细信息。 |
指示此非法状态指示的驱动程序实例的句柄。 请使用此句柄运行 !ndiskd.netadapter 或 !ndiskd.filter获取详细信息。 |
状态指示有效负载的地址。 其解释取决于状态指示的类型。 |
0x21 |
NDIS_BUGCHECK_INVALID_OBJECT_HEADER 驱动程序创建了无效的 NDIS_OBJECT_HEADER。 |
指示非法状态指示的驱动程序句柄。 使用此句柄运行 !ndiskd.minidriver 或 !ndiskd.filterdriver,了解详细信息。 |
包含格式错误标头的对象。 其解释取决于所调用的 API。 例如,如果驱动程序调用了 NdisAllocateCloneOidRequest,则将该对象强制转换为 ndis!NDIS_OID_REQUEST。 |
0 |
0x22 |
NDIS_BUGCHECK_ILLEGAL_NET_PNP_EVENT 微型端口驱动程序或筛选器驱动程序指示非法 NET_PNP_EVENT_NOTIFICATION。 |
指示非法状态指示的驱动程序句柄。 使用此句柄运行 !ndiskd.minidriver 或 !ndiskd.filterdriver,了解详细信息。 |
强制转换为 NET_PNP_EVENT_NOTIFICATION |
0 |
0x23 |
NDIS_BUGCHECK_PD_ERROR 在 Packet Direct 数据路径中检测到错误。 |
bugcheck 的子类型。 可能的值:
|
参数 3 的值取决于参数 2 的值。 此列表中的每个数字都与参数 2 中的相同数字相对应。
|
参数 4 的值取决于参数 2 的值。 此列表中的每个数字都与参数 2 中的相同数字相对应。
|
0x24 |
NDIS_BUGCHECK_UNEXPECTED_FAILURE 内部操作意外失败。 这可能是 NDIS.SYS 本身的 Bug。 |
操作失败。 可能的值: 0x01 : NDIS_BUGCHECK_UNEXPECTED_FAILURE_KEWAITFORSINGLEOBJECT 对 KeWaitForSingleObject 的调用失败。 |
失败状态代码 |
0 |
0x25 |
NDIS_BUGCHECK_WATCHDOG 管理网络堆栈的尝试耗时过长。 当 NDIS 调用其他驱动程序时,NDIS 会启动监视器计时器,以确保调用及时完成。 如果调用时间过长,NDIS 会注入 Bug 检查。 这可能是由简单的死锁造成的。 使用“!stacks 2 ndis”或类似命令查看是否有可疑线程。 请特别注意 NDIS_WATCHDOG_TRIAGE_BLOCK中的 PrimaryThread。 这可能是 NBL 丢失造成的,在这种情况下 !ndiskd.pendingnbls 可能会有所帮助。 检查使用 !ndiskd.oid 卡住的 OID。 |
操作耗时过长。 可能的值:
|
强制转换为 ndis!NDIS_WATCHDOG_TRIAGE_BLOCK。 有用的字段:
|
参数 4 的值取决于参数 2 的值。 此列表中的每个数字与参数 2 中相同的十六进制值相对应。
|
0x26 |
NDIS_BUGCHECK_INVALID_OID_COMPLETION 微型端口驱动程序试图完成当前未在该微型端口驱动程序上挂起的 OID 请求。 这可能是由于驱动程序尝试多次完成同一请求导致的。 |
导致 bugcheck 的微型端口驱动程序句柄。 请使用此句柄运行 !ndiskd.minidriver,获取详细信息。 |
微型端口驱动程序正在尝试完成的NDIS OID 请求。 可以尝试使用此请求运行 !ndiskd.oid,但此时内存可能无效。 |
0 |
0x27 |
NDIS_BUGCHECK_LEAKED_NBL 驱动程序泄露了 NET_BUFFER_LIST 结构。 请通过 !ndiskd.pendingnbls 查看此驱动程序上仍在挂起的任何 NBL。 |
检测到泄漏的位置。 可能的值:
|
0 |
0 |
原因
参数 1 表示 BUGCODE_NDIS_DRIVER Bug 检查的具体原因。
注解
BUGCODE_NDIS_DRIVER Bug 检查表示网络驱动程序中的问题。 此问题通常是由 NDIS 微型端口驱动程序造成的。 可以使用 !ndiskd.netadapter获取 NDIS 微型端口驱动程序的完整列表。 可以使用 !ndiskd.netreport 查看网络堆栈的全貌。
此Bug 检查代码仅出现在 Microsoft Windows Server 2003 及更高版本的 Windows 系统中。 在 Windows 2000 和 Windows XP 中,相应的代码是 Bug 检查 0xD2 (BUGCODE_ID_DRIVER)。