!ndiskd.oid

Rozšíření !ndiskd.oid zobrazuje informace o požadavku NDIS OID. Pokud toto rozšíření spustíte bez parametrů, nástroj !ndiskd zobrazí seznam všech čekajících požadavků OID ve všech miniportech a filtrech. Každý miniport nebo filtr má maximálně jeden čekající požadavek OID a libovolný počet požadavků OID zařazených do fronty.

Všimněte si, že filtruje obvykle klonování požadavků OID a předává klon dolů. To znamená, že i když protokol vydá jeden požadavek OID, může existovat více instancí klonovaných požadavků: jeden v každém filtru a druhý v miniportu. !ndiskd.oid zobrazí jednotlivé klony samostatně, takže se může zobrazit více čekajících identifikátorů OID, než který protokol skutečně vydal.

!ndiskd.oid [-handle <x>] [-legacyoid] [-nolimit>] [-miniport <x>] 

Parametry

-klika
Popisovač NDIS_OID_REQUEST

-legacyoid
Považuje se za starší NDIS_REQUEST místo NDIS_OID_REQUEST.

-nolimit
Neomezuje počet zobrazených identifikátorů OID čekajících na vyřízení.

-miniport
Najde čekající požadavky OID v zásobníku tohoto miniportu.

knihovna DLL

Ndiskd.dll

Poznámky

!ndiskd.oid zobrazuje seznam všech čekajících identifikátorů OID v systému najednou, takže může být užitečné při zablokování systému ladění nebo 0x9F situací kontroly chyb (DRIVER_POWER_STATE_FAILURE). Předpokládejme například, že analýza fiktivní 0x9F kontroly chyb odhalila, že systém se zablokoval na protokolu IRP a čekal na NDIS. Ve službě NDIS se irps z operačního systému překládají na identifikátory OID, včetně přechodů napájení, takže spuštěním příkazu !ndiskd.oid můžete vidět, že v tomto příkladu mohlo být zařízení v dolní části zásobníku přichycené k OID_PNP_SET_POWER a zavěsilo zbytek zásobníku. Ovladače NDIS by neměly perem OID na více než jednu sekundu, takže byste mohli zjistit, proč toto zařízení ponechá OID čekající na příliš dlouhou dobu, než se pokusí problém vyřešit.

Examples

Pokud chcete zobrazit příklad čekajících identifikátorů OIDS v systému, který běží normálně, nastavte zarážku v rutině obslužné rutiny požadavku OID miniportu (v odpovídajícím ovladači miniportu miniportu). Nejprve spusťte příkaz !ndiskd.minidriver bez parametrů, abyste získali seznam ovladačů miniportu v systému. V tomto příkladu výstupu vyhledejte popisovač minidriveru kdnic ffffdf801418d650..

3: kd> !ndiskd.minidriver
    ffffdf8015a98380 - tunnel
    ffffdf801418d650 - kdnic

Klikněte na úchyt minidriveru a potom klikněte na odkaz Obslužné rutiny v dolní části stránky s podrobnostmi a zobrazte seznam jeho obslužných rutin. Můžete také zadat příkaz !ndiskd.minidriver -handle -handlers . Jakmile budete mít seznam obslužných rutin minidriveru, vyhledejte OidRequestHandler, jehož popisovač je fffff80f1fd71c90 v tomto příkladu.

2: kd> !ndiskd.minidriver ffffdf801418d650 -handlers


HANDLERS

    NDIS Handler                           Function pointer   Symbol (if available)
    InitializeHandlerEx                    fffff80f1fd78230  bp
    SetOptionsHandler                      fffff80f1fd72800  bp
    HaltHandlerEx                          fffff80f1fd78040  bp
    ShutdownHandlerEx                      fffff80f1fd722c0  bp

    CheckForHangHandlerEx                  fffff80f1fd72810  bp
    ResetHandlerEx                         fffff80f1fd72f70  bp

    PauseHandler                           fffff80f1fd78000  bp
    RestartHandler                         fffff80f1fd78940  bp

    OidRequestHandler                      fffff80f1fd71c90  bp
    CancelOidRequestHandler                fffff80f1fd722c0  bp
    DirectOidRequestHandler                [None]
    CancelDirectOidRequestHandler          [None]
    DevicePnPEventNotifyHandler            fffff80f1fd789a0  bp

    SendNetBufferListsHandler              fffff80f1fd71870  bp
    ReturnNetBufferListsHandler            fffff80f1fd71b50  bp
    CancelSendHandler                      fffff80f1fd722c0  bp

Teď buď klikněte na odkaz "bp" napravo od OidRequestHandler nebo zadejte příkaz bp -handle s jeho popisovačem pro nastavení zarážky v této rutině. Dále zadejte příkaz g , který umožní cílovému počítači ladění spustit a stisknout zarážku, kterou jste právě nastavili.

2: kd> bp fffff80f1fd71c90
2: kd> g
Breakpoint 1 hit
fffff80f`1fd71c90 448b4204        mov     r8d,dword ptr [rdx+4]

Jakmile aktivujete zarážku v rutině obslužné rutiny požadavku OID minidriveru, jak je znázorněno v předchozím příkladu, můžete spustit příkaz !ndiskd.oid a zobrazit seznam všech čekajících identifikátorů OID v systému.

1: kd> !ndiskd.oid


ALL PENDING OIDs

    NetAdapter         ffffdf80140c71a0 - Microsoft Kernel Debug Network Adapter
        Current OID        OID_GEN_STATISTICS
    Filter             ffffdf8014950c70 - Microsoft Kernel Debug Network Adapter-WFP Native MAC Layer LightWeight Filter-0000
        Current OID        OID_GEN_STATISTICS
    Filter             ffffdf801494dc70 - Microsoft Kernel Debug Network Adapter-QoS Packet Scheduler-0000
        Current OID        OID_GEN_STATISTICS

V tomto příkladu je čekající identifikátor OID_GEN_STATISTICS. Když se podíváte na výsledky !ndiskd.oid, vzpomeňte si, že filtruje klonování požadavků OID a předává je do zásobníku a identifikátory OID se obvykle předávají z filtru do miniportu. Proto může vypadat, že existují tři samostatné požadavky OID se stejným názvem v tomto příkladu, ve skutečnosti probíhá jedna logická operace, která byla fyzicky rozložena mezi 3 identifikátory OID a na 3 ovladačích.

Viz také

Průvodce návrhem síťových ovladačů)

Referenční informace k sítím systému Windows Vista a novějších verzí

Ladění zásobníku sítě

Rozšíření NDIS (Ndiskd.dll)

!ndiskd.help

kontrola chyb 0x9F

OID_PNP_SET_POWER

bp, bu, bm (Nastavení zarážky)

OID_GEN_STATISTICS

Identifikátory NDIS OID

Rozhraní požadavku NDIS OID