Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í