Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A extensão !ndiskd.oid exibe informações sobre uma solicitação de OID do NDIS. Se você executar essa extensão sem parâmetros, o !ndiskd exibirá uma lista de todas as solicitações OID pendentes em todos os miniportos e filtros. Cada miniporto ou filtro tem no máximo uma solicitação OID pendente e qualquer número de solicitações OID na fila.
Observe que os filtros normalmente clonam solicitações OID e passam o clone para baixo. Isso significa que, mesmo que um protocolo emita uma única solicitação OID, pode haver várias instâncias de solicitações clonadas: uma em cada filtro e outra no miniporto. !ndiskd.oid mostrará cada clone separadamente, para que você possa ver mais OIDs pendentes do que o protocolo realmente emitido.
!ndiskd.oid [-handle <x>] [-legacyoid] [-nolimit>] [-miniport <x>]
Parâmetros
-manejar
Identificador de um NDIS_OID_REQUEST
-legacyoid
Trata como uma NDIS_REQUEST herdada em vez de uma NDIS_OID_REQUEST.
-nolimit
Não limita o número de OIDs pendentes que são exibidos.
-miniport
Localiza solicitações OID pendentes na pilha deste miniporto.
DLL
Ndiskd.dll
Observações
!ndiskd.oid mostra uma lista de todos os OIDs pendentes no sistema de cada vez, para que ele possa ser útil na depuração de travamentos do sistema ou 0x9F situações de verificação de bugs (DRIVER_POWER_STATE_FAILURE). Por exemplo, suponha que a análise de uma verificação de bug 0x9F fictícia revelou que o sistema estava travado em um IRP e estava aguardando NDIS. No NDIS, os IRPs do sistema operacional são convertidos em OIDs, incluindo transições de energia, portanto, executando !ndiskd.oid , você pode ver que, neste exemplo, um dispositivo na parte inferior da pilha pode estar se agarrando a um OID_PNP_SET_POWER e travado o restante da pilha. Os drivers NDIS não devem aguardar uma OID por mais de um segundo, portanto, você pode investigar por que esse dispositivo manteve a OID pendente por muito tempo para tentar resolver o problema.
Exemplos
Para ver um exemplo de OIDS pendente em um sistema em execução normalmente, defina um ponto de interrupção na rotina do manipulador de solicitação OID de um miniporto (no driver de miniporto correspondente do miniporto). Primeiro, execute o comando !ndiskd.minidriver sem parâmetros para obter uma lista de drivers de miniporto no sistema. Nesta saída de exemplo, procure o identificador do minidriver kdnic, ffffdf801418d650..
3: kd> !ndiskd.minidriver
ffffdf8015a98380 - tunnel
ffffdf801418d650 - kdnic
Clique no identificador do minidriver e, em seguida, clique no link "Manipuladores" na parte inferior de sua página de detalhes para ver a lista de seus manipuladores. Como alternativa, você pode inserir o comando !ndiskd.minidriver -handle -handlers . Depois de ter a lista dos manipuladores do minidriver, procure o OidRequestHandler, cujo identificador é fffff80f1fd71c90 neste exemplo.
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
Agora, clique no link "bp" à direita do OidRequestHandler ou insira o comando bp-handle com seu identificador para definir um ponto de interrupção nessa rotina. Em seguida, digite o comando g para permitir que o computador de destino de depurador seja executado e atinja o ponto de interrupção que você acabou de definir.
2: kd> bp fffff80f1fd71c90
2: kd> g
Breakpoint 1 hit
fffff80f`1fd71c90 448b4204 mov r8d,dword ptr [rdx+4]
Depois de disparar o ponto de interrupção na rotina do manipulador de solicitações OID de um minidriver, conforme mostrado pelo exemplo anterior, você pode executar o comando !ndiskd.oid para ver uma lista de todos os OIDs pendentes no 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
Neste exemplo, o OID pendente é OID_GEN_STATISTICS. Ao examinar os resultados de !ndiskd.oid, lembre-se de que os filtros clonam solicitações de OID e as transmitem para baixo na pilha, e os OIDs normalmente são passados do filtro para o filtro para o miniporto. Portanto, embora possa parecer que há três solicitações OID separadas com o mesmo nome neste exemplo, na verdade, há uma operação lógica em andamento que foi fisicamente distribuída entre 3 OIDs e em 3 drivers.
Consulte também
Guia de design do driver de rede)
Referência de rede posterior e do Windows Vista
Extensões de NDIS (Ndiskd.dll)