Bug Check 0x7C: BUGCODE_NDIS_DRIVER
The BUGCODE_NDIS_DRIVER bug check has a value of 0x0000007C. This bug check indicates that the operating system detected an error in a networking driver.
Important
This article is for programmers. If you're a customer who has received a blue screen error code while using your computer, see Troubleshoot blue screen errors.
BUGCODE_NDIS_DRIVER Parameters
Parameter 1 indicates the type of violation. The meaning of the other parameters depends on the value of Parameter 1. If a Parameter's value is "0," that means it is not used.
Parameter 1 | Parameter 1 Value and Cause of Error | Parameter 2 | Parameter 3 | Parameter 4 |
---|---|---|---|---|
0x01 |
NDIS_BUGCHECK_ALLOCATE_SHARED_MEM_HIGH_IRQL A driver called NdisMAllocateSharedMemory at a raised IRQL. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The length of the requested shared memory |
The current IRQL |
0x02 |
NDIS_BUGCHECK_SHARED_MEM_CORRUPTION During a call to NdisMAllocateSharedMemory, NDIS detected that a previously-allocated shared memory page had been corrupted. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The shared memory page that was corrupted |
The address of a NDIS_WRAPPER_CONTEXTE that keeps track of shared memory allocations by the driver |
0x03 |
NDIS_BUGCHECK_FREE_INVALID_SHARED_MEM A miniport driver called NdisMFreeSharedMemory (Async) with a shared memory address that had already been freed. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The page from which this shared memory was allocated |
The virtual address of the shared memory |
0x04 |
NDIS_BUGCHECK_UNLOAD_DRIVER_INVALID_PARAMETER AddDevice was called with a driver that is not on the list of drivers that are registered with NDIS. Enabled only on special instrumented NDIS. |
The address of the NDIS_M_DRIVER_BLOCK |
The address of the DRIVER_OBJECT |
0 |
0x05 |
NDIS_BUGCHECK_RECVD_PACKET_IN_USE_BAD_STACK_LOCATION An Ethernet driver indicated that it received a packet using a packet descriptor that was currently in use by the protocol stack. Caught by checking stack packet location. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the packet descriptor used by the driver. Run !ndiskd.pkt with this address for more information. |
The address of the packet array that contained this packet descriptor |
0x06 |
NDIS_BUGCHECK_RECVD_PACKET_IN_USE_BAD_REF_COUNT An Ethernet driver indicated that it received a packet using a packet descriptor that was currently in use by the protocol stack. Caught by checking packet reference count. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the packet descriptor used by the driver. Run !ndiskd.pkt with this address for more information. |
The address of the packet array that contained this packet descriptor |
0x07 |
An FDDI driver indicated that it received a packet by using a packet descriptor that was currently in use by the protocol stack. Caught by checking reference count. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the packet descriptor used by the driver. Run !ndiskd.pkt with this address for more information. |
The address of the packet array that contained this packet descriptor |
0x08 |
NDIS_BUGCHECK_HALT_WITHOUT_INTERRUPT_DEREGISTER A miniport driver did not deregister its interrupt during the halt process. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the NDIS_MINIPORT_INTERRUPT |
0 |
0x09 |
NDIS_BUGCHECK_HALT_WITHOUT_CANCEL_TIMER A miniport driver stopped without successfully canceling all its timers. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the miniport driver's timer queue (NDIS_MINIPORT_TIMER) |
0 |
0x0A |
NDIS_BUGCHECK_DRIVER_UNLOAD_UNEXPECTED A miniport driver is getting unloaded prematurely. |
The address of the NDIS_M_DRIVER_BLOCK |
The address of the DRIVER_OBJECT |
The reference count for the miniport driver |
0x0B |
NDIS_BUGCHECK_INIT_FAILED_WITHOUT_INTERRUPT_DEREGISTER A miniport driver failed its initialization without deregistering its interrupt. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the NDIS_MINIPORT_INTERRUPT |
0 |
0x0C |
NDIS_BUGCHECK_INIT_FAILED_WITHOUT_CANCEL_TIMER A miniport driver failed its initialization without successfully canceling all its timers. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the miniport driver's timer queue (NDIS_MINIPORT_TIMER) |
0 |
0x0D |
NDIS_BUGCHECK_HALT_INIT_WITHOUT_INTERRUPT_DEREGISTER A miniport driver did not deregister its interrupt during the halt process. The halt was called from the initialize routine after the miniport driver returned success from its initialize handler. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the NDIS_MINIPORT_INTERRUPT |
0 |
0x0E |
NDIS_BUGCHECK_HALT_INIT_WITHOUT_CANCEL_TIMER A miniport driver stopped without successfully canceling all its timers. The halt was called from the initialize routine after the miniport driver returned success from its initialize handler. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the miniport driver's timer queue (NDIS_MINIPORT_TIMER) |
0 |
0x0F |
NDIS_BUGCHECK_RESET_COMPLETE_UNEXPECTED A miniport driver called NdisMResetComplete without any pending reset request. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The reset status |
AddressingReset (BOOLEAN) |
0x10 |
NDIS_BUGCHECK_PM_INIT_FAILED_NO_INT_DEREGISTER After resuming from a low-power state, a miniport driver failed its initialization without deregistering its interrupt. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the NDIS_MINIPORT_INTERRUPT |
0 |
0x11 |
NDIS_BUGCHECK_PM_INIT_FAILED_NO_CANCEL_TIMER After resuming from a low-power state, a miniport driver failed its initialization without successfully canceling all its timers. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the miniport driver's timer queue (NDIS_MINIPORT_TIMER) |
0 |
0x12 |
NDIS_BUGCHECK_NFILTER_RECVD_PACKET_BAD_REF_COUNT A miniport driver indicated that it received a packet using a packet descriptor that was currently in use by the protocol stack. Caught by checking packet reference count. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the packet descriptor used by the driver. Run !ndiskd.pkt with this address for more information. |
The address of the packet array that contained this packet descriptor |
0x13 |
NDIS_BUGCHECK_TFILTER_RECVD_PACKET_BAD_REF_COUNT A Token-Ring miniport driver indicated that it received a packet using a packet descriptor that was currently in use by the protocol stack. Caught by checking packet reference count. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The address of the packet descriptor used by the driver. Run !ndiskd.pkt with this address for more information. |
The address of the packet array that contained this packet descriptor |
0x14 |
NDIS_BUGCHECK_WAIT_EVENT_HIGH_IRQL An NDIS driver called NdisWaitEvent at an illegal IRQL |
The actual IRQL |
0 |
0 |
0x15 |
NDIS_BUGCHECK_INVALID_NDIS5_CALL A miniport driver called an API that is reserved for older drivers. The driver should only call NDIS 6.x APIs. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
0 |
0 |
0x16 |
NDIS_BUGCHECK_INVALID_OPEN_IN_BIND_CONTEXT A protocol driver improperly opened an adapter during binding. |
The address of the specific protocol. Run !ndiskd.protocol with this address for more information. |
The address of the context area that is allocated by the protocol driver. Cast to ndis!NDIS_BIND_CONTEXT. |
The address of the open handle. Run !ndiskd.mopen with this address for more information. |
0x17 |
NDIS_BUGCHECK_IFPROVIDER_DEREGISTER_UNEXPECTED An Interface Provider called NdisIfDeregisterProvider without first removing all its Interfaces. |
The address of the interface provider handle. Run !ndiskd.ifprovider with this address for more information. |
0 |
0 |
0x1B |
NDIS_BUGCHECK_IF_STACK_TABLE_LOOP A driver attempted to add an Interface to the ifStackTable, but doing so would cause a cycle. The ifStackTable must not have cycles. Run !ndiskd.ifstacktable to see the current table (prior to this call to NdisIfAddIfStackEntry). |
The HigherLayerIfIndex being added to the table |
The LowerLayerIfIndex being added to the table |
0 |
0x1C |
NDIS_BUGCHECK_MINIPORT_FAILED_OID_WHICH_MUST_SUCCEED A miniport driver failed an OID request that must not fail. Doing so would leak memory or other resources. |
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
The OID that was failed. Use !ndiskd.help to find the name of this OID. |
The failure status code (NDIS_STATUS_XXX) with which the OID request was completed |
0x1D |
NDIS_BUGCHECK_OID_REQUEST_INVALID_BUFFER A miniport driver or filter driver has completed an OID request illegally. Check that BytesWritten is not greater than the entire length of the buffer. |
The address of the specific miniport adapter or filter module block. Run !ndiskd.netadapter or !ndiskd.filter with this address for more information. |
The address to the NDIS_OID_REQUEST that was completed illegally. Inspect it with !ndiskd.oid. |
0 |
0x1E |
NDIS_BUGCHECK_REFCOUNT_IMBALANCE NDIS has detected an error in an internal refcount. This can be caused by a refcount underflow (more dereferences than references), or by a tag mismatch. |
0 |
Internal handle. Use !ndiskd.ndisref or cast to ndis!NDIS_REFCOUNT_BLOCK. |
The current reftag value |
0x1F |
NDIS_BUGCHECK_ILLEGAL_MINIPORT_STATE_TRANSITION A miniport driver completed a state transition illegally. |
What failed. Possible values:
|
The address of the specific miniport adapter block. Run !ndiskd.netadapter with this address for more information. |
0 |
0x20 |
NDIS_BUGCHECK_STATUS_INDICATION_INVALID_BUFFER A miniport driver or filter driver indicated an illegal NDIS_STATUS_INDICATION. |
The type of the status indication. Run !ndiskd.help with this code for more information. |
The handle of the driver instance that indicated this illegal status indication. Run !ndiskd.netadapter or !ndiskd.filter with this handle for more information. |
The address of the status indication payload. Its interpretation depends on the type of status indication. |
0x21 |
NDIS_BUGCHECK_INVALID_OBJECT_HEADER A driver created an invalid NDIS_OBJECT_HEADER. |
The handle of the driver that indicated the illegal status indication. Run !ndiskd.minidriver or !ndiskd.filterdriver with this handle for more information. |
The object with the malformed header. Its interpretation depends on the API being called. For example, if the driver called NdisAllocateCloneOidRequest, then cast the object to ndis!NDIS_OID_REQUEST. |
0 |
0x22 |
NDIS_BUGCHECK_ILLEGAL_NET_PNP_EVENT A miniport driver or filter driver indicated an illegal NET_PNP_EVENT_NOTIFICATION. |
The handle of the driver that indicated the illegal status indication. Run !ndiskd.minidriver or !ndiskd.filterdriver with this handle for more information. |
Cast to NET_PNP_EVENT_NOTIFICATION |
0 |
0x23 |
NDIS_BUGCHECK_PD_ERROR An error was detected in the Packet Direct datapath. |
The subtype of the bugcheck. Possible values:
|
The value of Parameter 3 depends on the value of Parameter 2. Each number in this list corresponds to the same number in Parameter 2.
|
The value of Parameter 4 depends on the value of Parameter 2. Each number in this list corresponds to the same number in Parameter 2.
|
0x24 |
NDIS_BUGCHECK_UNEXPECTED_FAILURE An internal operation failed unexpectedly. This is likely to be a bug in NDIS.SYS itself. |
The operation that failed. Possible values: 0x01 : NDIS_BUGCHECK_UNEXPECTED_FAILURE_KEWAITFORSINGLEOBJECT A call to KeWaitForSingleObject failed. |
The failure status code |
0 |
0x25 |
NDIS_BUGCHECK_WATCHDOG An attempt to manage the network stack has taken too long. When NDIS calls out into other drivers, NDIS starts a watchdog timer to ensure the call completes promptly. If the call takes too long, NDIS injects a bugcheck. This can be caused by a simple deadlock. Look with "!stacks 2 ndis" or similar to see if any threads look suspicious. Pay special attention to the PrimaryThread from the NDIS_WATCHDOG_TRIAGE_BLOCK. This can be caused by lost NBLs, in which case !ndiskd.pendingnbls may help. Check for OIDs that are stuck using !ndiskd.oid. |
The operation that took too long. Possible values:
|
Cast to ndis!NDIS_WATCHDOG_TRIAGE_BLOCK. Useful fields:
|
The value of Parameter 4 depends on the value of Parameter 2. Each number in this list corresponds to the same hexadecimal value in Parameter 2.
|
0x26 |
NDIS_BUGCHECK_INVALID_OID_COMPLETION A miniport driver attempted to complete an OID request that is not currently pending on that miniport driver. This can be caused by the driver trying to complete the same request more than one time. |
The miniport driver handle that caused the bugcheck. Run !ndiskd.minidriver with this handle for more information. |
The NDIS OID request the miniport driver was trying to complete. You can try to run !ndiskd.oid with this request but the memory might not be valid at this point. |
0 |
0x27 |
NDIS_BUGCHECK_LEAKED_NBL A driver has leaked a NET_BUFFER_LIST structure. Check with !ndiskd.pendingnbls to see any NBLs that are still pending on this driver. |
Where the leak was detected. Possible values:
|
0 |
0 |
Cause
Parameter 1 indicates the specific cause of the BUGCODE_NDIS_DRIVER bug check.
Remarks
The BUGCODE_NDIS_DRIVER bugcheck indendifies problems in network drivers. Often, the problem is caused by a NDIS miniport driver. You can get a complete list of NDIS miniport drivers by using !ndiskd.netadapter. You can get a bigger picture overview of the network stack with !ndiskd.netreport.
This bug check code occurs only on Microsoft Windows Server 2003 and later versions of Windows. In Windows 2000 and Windows XP, the corresponding code is bug check 0xD2 (BUGCODE_ID_DRIVER).