!ndiskd.pendingnbls
A extensão !ndiskd.pendingnbls exibe NBLs (NET_BUFFER_LISTs) pendentes que estão em trânsito.
!ndiskd.pendingnbls [-handle <x>] [-fullstack] [-verbosity <x>]
Parâmetros
-manejar
Identificador de uma miniporta NDIS, filtro ou aberto.
-pilha cheia
Mostra NBLs pendentes de toda a pilha associada ao identificador.
-verbosidade
Nível de detalhe a ser exibido.
DLL
Ndiskd.dll
Exemplos
!ndiskd.pendingnbls pode ser passado o identificador de uma miniporta NDIS, filtro ou aberto. A série de exemplos a seguir usa um identificador de miniporta. Para ver uma lista de todas as miniportas e os minidrivers associados, execute a extensão !ndiskd.netadapter sem parâmetros. Na saída de exemplo a seguir, procure o Microsoft Kernel Debug Network Adapter, cujo identificador é ffffe00bc3f701a0. O identificador do minidriver é ffffe00bc51b9ae0.
0: kd> !ndiskd.netadapter
Driver NetAdapter Name
ffffe00bc6e12ae0 ffffe00bc6e4e1a0 Microsoft ISATAP Adapter #2
ffffe00bc51b9ae0 ffffe00bc3f701a0 Microsoft Kernel Debug Network Adapter
Para ver os NBLs pendentes de uma miniporta, defina um ponto de interrupção no SendNetBufferListsHandler do minidriver. Use o identificador do minidriver para executar o comando !ndiskd.minidriver -handle -handlers para ver uma lista de processadores e, em seguida, clique no link "bp" à direita do SendNetBufferListsHandler. Como alternativa, você pode inserir o comando bp -handle na linha de comando.
0: kd> !ndiskd.minidriver ffffe00bc51b9ae0 -handlers
HANDLERS
NDIS Handler Function pointer Symbol (if available)
InitializeHandlerEx fffff80ae9618230 bp
SetOptionsHandler fffff80ae9612800 bp
HaltHandlerEx fffff80ae9618040 bp
ShutdownHandlerEx fffff80ae96122c0 bp
CheckForHangHandlerEx fffff80ae9612810 bp
ResetHandlerEx fffff80ae9612f70 bp
PauseHandler fffff80ae9618000 bp
RestartHandler fffff80ae9618940 bp
OidRequestHandler fffff80ae9611c90 bp
CancelOidRequestHandler fffff80ae96122c0 bp
DirectOidRequestHandler [None]
CancelDirectOidRequestHandler [None]
DevicePnPEventNotifyHandler fffff80ae96189a0 bp
SendNetBufferListsHandler fffff80ae9611870 bp
ReturnNetBufferListsHandler fffff80ae9611b50 bp
CancelSendHandler fffff80ae96122c0 bp
Depois de definir o ponto de interrupção no SendNetBufferListsHandler, digite o comando g para permitir que o computador de destino de depuração seja executada e chegue no ponto de interrupção.
0: kd> bp fffff80ae9611870
0: kd> g
Breakpoint 0 hit
fffff80a`e9611870 4053 push rbx
Agora, depois de atingir o ponto de interrupção SendNetBufferListsHandler do minidriver, você pode ver todos os NBLs pendentes para a miniporta inserindo o comando !ndiskd.pendingnbls -handle com o identificador da miniporta.
Observação O computador de destino do depurador neste exemplo estava carregando uma página da Web quando atingiu o ponto de interrupção, portanto, o tráfego estava fluindo pelo caminho de dados da miniporta. Portanto, tinha um NBL pendente para enviar. Mesmo depois de definir um ponto de interrupção em um ou mais processadores NBL para o minidriver, você pode não ver nenhum NBL pendente se não houver atividade no caminho de dados.
0: kd> !ndiskd.pendingnbls ffffe00bc3f701a0
PHASE 1/3: Found 20 NBL pool(s).
PHASE 2/3: Found 342 freed NBL(s).
Pending Nbl Currently held by
ffffe00bc5545c60 ffffe00bc3f701a0 - Microsoft Kernel Debug Network Adapter [NetAdapter]
PHASE 3/3: Found 1 pending NBL(s) of 4817 total NBL(s).
Search complete.
Confira também
Guia de design para driver de rede