Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La extensión !ndiskd.oid muestra información sobre una solicitud OID NDIS. Si ejecuta esta extensión sin parámetros, !ndiskd mostrará una lista de todas las solicitudes OID pendientes en todos los miniportes y filtros. Cada miniporte o filtro tiene como máximo una solicitud OID pendiente y cualquier número de solicitudes OID en cola.
Tenga en cuenta que los filtros suelen clonar solicitudes de OID y pasar el clon hacia abajo. Esto significa que incluso si un protocolo emite una sola solicitud OID, puede haber varias instancias de solicitudes clonadas: una en cada filtro y otra en la miniporte. !ndiskd.oid mostrará cada clon por separado, por lo que es posible que vea más OID pendientes de los que el protocolo ha emitido realmente.
!ndiskd.oid [-handle <x>] [-legacyoid] [-nolimit>] [-miniport <x>]
Parámetros
-asa
Identificador de un NDIS_OID_REQUEST
-legacyoid
Trata como un NDIS_REQUEST heredado en lugar de un NDIS_OID_REQUEST.
-nolimit
No limita el número de identificadores de identificadores pendientes que se muestran.
-miniport
Busca solicitudes de OID pendientes en la pila de este miniport.
DLL
Ndiskd.dll
Observaciones
!ndiskd.oid muestra una lista de todos los OID pendientes en el sistema a la vez, por lo que puede resultar útil para depurar el sistema se bloquea o 0x9F situaciones de comprobación de errores (DRIVER_POWER_STATE_FAILURE). Por ejemplo, supongamos que el análisis de una comprobación de errores ficticia 0x9F reveló que el sistema estaba bloqueado en un IRP y estaba esperando NDIS. En NDIS, los IRP del sistema operativo se traducen en OID, incluidas las transiciones de energía, por lo que al ejecutar !ndiskd.oid podría ver que, en este ejemplo, un dispositivo situado en la parte inferior de la pila podría haberse unido a un OID_PNP_SET_POWER y colgar el resto de la pila. Los controladores NDIS no deben escribir un OID durante más de un segundo, por lo que podría investigar por qué ese dispositivo mantuvo el OID pendiente durante demasiado tiempo para intentar resolver el problema.
Examples
Para ver un ejemplo de OIDS pendiente en un sistema que se ejecuta normalmente, establezca un punto de interrupción en la rutina del controlador de solicitudes OID de un miniporte (en el controlador de miniporte correspondiente). En primer lugar, ejecute el comando !ndiskd.minidriver sin parámetros para obtener una lista de controladores de miniport en el sistema. En esta salida de ejemplo, busque el identificador del minidriver kdnic, ffffdf801418d650..
3: kd> !ndiskd.minidriver
ffffdf8015a98380 - tunnel
ffffdf801418d650 - kdnic
Haga clic en el identificador del minidriver y, a continuación, haga clic en el vínculo "Controladores" en la parte inferior de su página de detalles para ver la lista de sus controladores. También puede escribir el comando !ndiskd.minidriver -handle -handlers . Una vez que tenga la lista de controladores del minidriver, busque OidRequestHandler, cuyo identificador es fffff80f1fd71c90 en este ejemplo.
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
Ahora haga clic en el vínculo "bp" situado a la derecha de OidRequestHandler o escriba el comando bp -handle con su identificador para establecer un punto de interrupción en esa rutina. A continuación, escriba el comando g para permitir que la máquina de destino de debugee se ejecute y alcance el punto de interrupción que acaba de establecer.
2: kd> bp fffff80f1fd71c90
2: kd> g
Breakpoint 1 hit
fffff80f`1fd71c90 448b4204 mov r8d,dword ptr [rdx+4]
Una vez que haya desencadenado el punto de interrupción en la rutina del controlador de solicitudes OID de un minidriver, tal como se muestra en el ejemplo anterior, puede ejecutar el comando !ndiskd.oid para ver una lista de todos los OID pendientes en el sistema.
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
En este ejemplo, el OID pendiente es OID_GEN_STATISTICS. Al examinar los resultados de !ndiskd.oid, recuerde que filtra las solicitudes de OID clonadas y las pasa por la pila y los OID normalmente se pasan de filtro a miniport. Por lo tanto, aunque puede parecer que hay tres solicitudes de OID independientes con el mismo nombre en este ejemplo, en realidad hay una operación lógica que se lleva a cabo que se ha distribuido físicamente entre 3 OID y en 3 controladores.
Consulte también
Guía de diseño de controladores de red)
Referencia de redes de Windows Vista y versiones posteriores
comprobación de errores de 0x9F