錯誤檢查0x7C:BUGCODE_NDIS_DRIVER

BUGCODE_NDIS_DRIVER錯誤檢查的值為 0x0000007C。 這個錯誤檢查指出作業系統在網路驅動程式中偵測到錯誤。

重要

本文適用于程式設計人員。 如果您是在使用電腦時收到藍色螢幕錯誤碼的客戶,請參閱 針對藍色畫面錯誤進行疑難排解

BUGCODE_NDIS_DRIVER參數

參數 1 表示違規類型。 其他參數的意義取決於參數 1 的值。 如果參數的值是 「0」,表示不會使用。

參數 1 參數 1 值和錯誤原因 參數 2 參數 3 參數 4

0x01

NDIS_BUGCHECK_ALLOCATE_SHARED_MEM_HIGH_IRQL

名為 NdisMAllocateSharedMemory 的驅動程式,位於引發的 IRQL。

特定迷你埠配接器區塊的位址。 使用此位址執行 !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

Token-Ring 迷你埠驅動程式指出它已使用通訊協定堆疊目前使用的封包描述元收到封包。

藉由檢查封包參考計數來攔截。

特定迷你埠配接器區塊的位址。 使用此位址執行 !ndiskd.netadapter 以取得詳細資訊。

驅動程式所使用的封包描述元位址。 使用此位址執行 !ndiskd.pkt 以取得詳細資訊。

包含這個封包描述元的封包陣列位址

0x14

NDIS_BUGCHECK_WAIT_EVENT_HIGH_IRQL

在不合法的 IRQL 上名為 NdisWaitEvent 的 NDIS 驅動程式

實際的 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 中偵測到錯誤。 這可能是因為 refcount 下溢 (比參考) 或標籤不相符的參考而造成。

0

內部控制碼。 使用 !ndiskd.ndisref 或轉換成 ndis!NDIS_REFCOUNT_BLOCK。

目前的 reftag 值

0x1F

NDIS_BUGCHECK_ILLEGAL_MINIPORT_STATE_TRANSITION

迷你埠驅動程式不合法地完成狀態轉換。

失敗的內容。 可能的值:

  1. NDIS_BUGCHECK_ILLEGAL_MINIPORT_STATE_TRANSITION_PAUSE_COMPLETE

    名為 NdisMPauseComplete 但沒有任何擱置的暫停作業的迷你埠。

  2. NDIS_BUGCHECK_ILLEGAL_MINIPORT_STATE_TRANSITION_RESTART_COMPLETE

    名為 NdisMRestartComplete 但沒有任何擱置的重新開機作業的迷你埠。

特定迷你埠配接器區塊的位址。 使用此位址執行 !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

在封包直接資料路徑中偵測到錯誤。

錯誤檢查的子類型。 可能的值:

  1. NDIS_BUGCHECK_PD_ERROR_EC_THREAD_MISMATCH

    在錯誤的執行緒上呼叫 API。

  2. NDIS_BUGCHECK_PD_ERROR_ILLEGAL_ARM_BY_CLIENT

    PD 用戶端嘗試在處於不合法的狀態時,將提供者進行 Arm。

  3. NDIS_BUGCHECK_PD_ERROR_ILLEGAL_ARM_NOTIFICATION

    PD 提供者在未受到侵害時,不合法地觸發清空通知。

  4. NDIS_BUGCHECK_PD_ERROR_ILLEGAL_ARM_NOTIFICATION_VIA_ISR

    PD 提供者在未受到侵害時,不合法地觸發 ISR 清空通知。

  5. NDIS_BUGCHECK_PD_ERROR_ILLEGAL_THUNK_BY_LWF

    篩選驅動程式嘗試干擾封包直接資料路徑。

  6. NDIS_BUGCHECK_PD_ERROR_ILLEGAL_BM_GROUP_REQUEST

    PD 提供者不合法地嘗試從緩衝區管理員群組中移除本身。

  7. NDIS_BUGCHECK_PD_ERROR_ILLEGAL_PD_BUFFER_SETUP

    PD 緩衝區安裝要求格式不正確。

參數 3 的值取決於參數 2 的值。 此清單中的每一個數位都會對應至參數 2 中的相同數位。

  1. 轉換成 NDIS_PD_EC
  2. 轉換成NDIS_PD_QUEUE_TRACKER
  3. 轉換成NDIS_PD_QUEUE_TRACKER
  4. 轉換成NDIS_PD_QUEUE_TRACKER
  5. 特定篩選模組的控制碼。 使用這個控制碼執行 !ndiskd.filter 以取得詳細資訊。
  6. 如果已知,緩衝區管理員群組
  7. 來源PD_MEMORY_HANDLE或PD_BUFFER

參數 4 的值取決於參數 2 的值。 此清單中的每一個數位都會對應至參數 2 中的相同數位。

  1. 預期的 ETHREAD
  2. PD 用戶端的控制碼
  3. PD 提供者的控制碼。 使用這個控制碼執行 !ndiskd.netadapter 以取得詳細資訊。
  4. PD 提供者的控制碼。 使用這個控制碼執行 !ndiskd.netadapter 以取得詳細資訊。
  5. PD 提供者的控制碼。 使用這個控制碼執行 !ndiskd.netadapter 以取得詳細資訊。
  6. 如果參數 3 為 0,則這是提供者控制碼。

    如果參數 3 不是零,PD 用戶端尚未釋放所有配置,而這是 PD 用戶端控制碼。

  7. 目標PD_BUFFER

0x24

NDIS_BUGCHECK_UNEXPECTED_FAILURE

內部作業意外失敗。 這可能是 NDIS.SYS 本身的錯誤。

失敗的作業。 可能的值:

0x01:NDIS_BUGCHECK_UNEXPECTED_FAILURE_KEWAITFORSINGLEOBJECT

呼叫 KeWaitForSingleObject 失敗。

失敗狀態碼

0

0x25

NDIS_BUGCHECK_WATCHDOG

嘗試管理網路堆疊所花費的時間太長。 當 NDIS 呼叫其他驅動程式時,NDIS 會啟動監控程式計時器,以確保呼叫會立即完成。 如果呼叫花費太長的時間,NDIS 會插入錯誤檢查。

這可能是由簡單的死結所造成。 查看 「!stacks 2 ndis」 或類似的 ,以查看是否有任何執行緒看起來可疑。 請特別注意NDIS_WATCHDOG_TRIAGE_BLOCK中的 PrimaryThread。

這可能是因為遺失 NBL 所造成,在此情況下 !ndiskd.pendingnbls 可能會有説明。 檢查是否使用 !ndiskd.oid卡住的 OID。

花費太多時間的作業。 可能的值:

  • 0x01:NDIS_BUGCHECK_WATCHDOG_PROTOCOL_PAUSE

    暫停通訊協定驅動程式時發生逾時。

  • 0x02:NDIS_BUGCHECK_WATCHDOG_PROTOCOL_NETPNPEVENT

    將NET_PNP_EVENT_NOTIFICATION傳遞至通訊協定驅動程式時發生逾時。

  • 0x03:NDIS_BUGCHECK_WATCHDOG_PROTOCOL_STATUS_INDICATION

    將狀態指示傳遞給通訊協定驅動程式時發生逾時。

  • 0x04:NDIS_BUGCHECK_WATCHDOG_PROTOCOL_UNBIND

    解除系結通訊協定驅動程式時發生逾時。

  • 0x11:NDIS_BUGCHECK_WATCHDOG_FILTER_PAUSE

    暫停篩選驅動程式時發生逾時。

  • 0x12:NDIS_BUGCHECK_WATCHDOG_FILTER_NETPNPEVENT

    將NET_PNP_EVENT_NOTIFICATION傳遞至篩選驅動程式時發生逾時。

  • 0x13:NDIS_BUGCHECK_WATCHDOG_FILTER_STATUS_INDICATION

    傳遞狀態指示給篩選驅動程式時發生逾時。

  • 0x14:NDIS_BUGCHECK_WATCHDOG_FILTER_DETACH

    中斷連結篩選驅動程式時發生逾時。

  • 0x21:NDIS_BUGCHECK_WATCHDOG_MINIPORT_PAUSE

    暫停迷你埠配接器時發生逾時。

  • 0x22:NDIS_BUGCHECK_WATCHDOG_MINIPORT_HALT

    暫停迷你埠配接器時發生逾時。

  • 0x23:NDIS_BUGCHECK_WATCHDOG_MINIPORT_OID

    將 OID 要求傳遞至迷你埠配接器時發生逾時。

  • 0x24:NDIS_BUGCHECK_WATCHDOG_FILTER_OID

    將 OID 要求傳遞給篩選驅動程式時發生逾時。

  • 0x25:NDIS_BUGCHECK_WATCHDOG_MINIPORT_IDLE

    在閒置迷你埠配接器時發生逾時。

  • 0x26:NDIS_BUGCHECK_WATCHDOG_CANCEL_IDLE

    取消迷你埠配接器上的閒置要求時發生逾時。

轉換成 ndis!NDIS_WATCHDOG_TRIAGE_BLOCK。 有用的欄位:

  • StartTime 會顯示作業在 100ns 單位中啟動的時間,如 KeQueryInterruptTime 所傳回。
  • TimeoutMilliseconds 會顯示在觸發此錯誤檢查之前,至少等待 NDIS 多久。
  • TargetObject 是 NDIS 正在等候之通訊協定、篩選模組或迷你埠介面卡的控制碼。 如需詳細資訊,請執行 !ndiskd.protocol!ndiskd.filter!ndiskd.netadapter
  • PrimaryThread 是 NDIS 起始作業的執行緒。 通常,這是要查看的第一個位置,但如果以非同步方式處理作業,執行緒可能已經離開其他地方。

參數 4 的值取決於參數 2 的值。 此清單中的每個數位都會對應至參數 2 中的相同十六進位值。

  • 0x01: 0
  • 0x02:停滯事件的NET_PNP_EVENT_CODE。 如需這些程式碼的詳細資訊,請參閱 NET_PNP_EVENT。。
  • 0x03:停滯指示的NDIS_STATUS程式碼。 使用 !ndiskd.help 將它解碼。
  • 0x04: 0
  • 0x11: 0
  • 0x12:停滯事件的NET_PNP_EVENT_CODE。 如需可能的值,請參閱這份清單中的前一份專案 2 值清單。
  • 0x13:停滯指示的NDIS_STATUS程式碼。 使用 !ndiskd.help 將它解碼。
  • 0x14: 0
  • 0x21: 0
  • 0x22: 0
  • 0x23:停滯要求的 OID 程式碼。 使用 !ndiskd.help 將它解碼。
  • 0x24:停滯要求的 OID 程式碼。 使用 !ndiskd.help 將它解碼。
  • 0x25: 0
  • 0x26: 0

0x26

NDIS_BUGCHECK_INVALID_OID_COMPLETION

迷你埠驅動程式嘗試完成目前未擱置在該迷你埠驅動程式上的 OID 要求。 這可能會導致驅動程式嘗試多次完成相同的要求。

造成錯誤檢查的迷你埠驅動程式控制碼。 使用這個句 柄執行 !ndiskd.minidriver 以取得詳細資訊。

NDIS OID 要求迷你埠驅動程式嘗試完成。 您可以嘗試使用此要求執行 !ndiskd.oid ,但記憶體目前可能無效。

0

0x27

NDIS_BUGCHECK_LEAKED_NBL

驅動程式已流失 NET_BUFFER_LIST 結構。 請洽詢 !ndiskd.pendingnbls ,以查看此驅動程式上仍在擱置的任何 NBL。

偵測到流失的位置。 可能的值:

  • 0x01:NBL 追蹤器偵測到流失。 目前取消註冊或解除系結的驅動程式可能是最可能的原因。 查看錯誤檢查執行緒的呼叫堆疊。 驅動程式仍然保有作用中的 NBL 時,不得解除系結或取消註冊。

0

0

原因

參數 1 指出BUGCODE_NDIS_DRIVER錯誤檢查的特定原因。

備註

BUGCODE_NDIS_DRIVER錯誤檢查網路驅動程式的問題。 問題通常是由 NDIS 迷你埠驅動程式所造成。 您可以使用 !ndiskd.netadapter取得 NDIS 迷你埠驅動程式的完整清單。 您可以使用 !ndiskd.netreport取得網路堆疊的概觀。

此錯誤檢查程式碼只會發生在 Microsoft Windows Server 2003 和更新版本的 Windows 上。 在 Windows 2000 和 Windows XP 中,對應的程式碼是 錯誤檢查0xD2 (BUGCODE_ID_DRIVER) 。