!ndiskd.pendingnbls
!ndiskd.pendingnbls 拡張コマンドは、転送時に保留中の NBL (NET_BUFFER_LIST) を表示します。
!ndiskd.pendingnbls [-handle <x>] [-fullstack] [-verbosity <x>]
パラメーター
ハンドル
NDIS ミニポート、フィルター、またはオープンのハンドル。
-fullstack
ハンドルに関連するスタック全体の保留中の NBL を表示します。
-verbosity
表示する詳細レベル。
DLL
Ndiskd.dll
例
!ndiskd.pendingnbls は、NDIS ミニポート、フィルター、オープンのハンドルを渡すことができます。 以下の一連の例では、ミニポート ハンドルを使用しています。 すべてのミニポートと関連するミニドライバーのリストを表示するには、!ndiskd.netadapter 拡張コマンドをパラメーターなしで実行します。 次の出力例では、Microsoft Kernel Debug Network Adapter を探します。そのハンドルは fffe00bc3f701a0 です。 ミニドライバーのハンドルは fffe00bc51b9ae0 です。
0: kd> !ndiskd.netadapter
Driver NetAdapter Name
ffffe00bc6e12ae0 ffffe00bc6e4e1a0 Microsoft ISATAP Adapter #2
ffffe00bc51b9ae0 ffffe00bc3f701a0 Microsoft Kernel Debug Network Adapter
ミニポートの保留中の NBL を表示するには、そのミニドライバーの SendNetBufferListsHandler にブレークポイントを設定します。 ミニドライバーのハンドルを使用して !ndiskd.minidriver -handle -handlers コマンドを実行してハンドラーのリストを表示して、SendNetBufferListsHandler の右側にある "bp" リンクをクリックします。 あるいは、コマンド ラインで bp -handle コマンドを入力することもできます。
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
SendNetBufferListsHandler にブレークポイントを設定した後、g コマンドを入力して、デバッグ対象マシンを実行し、ブレークポイントでヒットさせます。
0: kd> bp fffff80ae9611870
0: kd> g
Breakpoint 0 hit
fffff80a`e9611870 4053 push rbx
これで、ミニドライバーの SendNetBufferListsHandler ブレークポイントでヒットさせた後、ミニポートのハンドルと共に !ndiskd.pendingnbls -handle コマンドを入力することによって、ミニポートの保留中の NBL を表示できます。
注 この例のデバッグ対象マシンは、ブレークポイントでヒットしたときにウェブ ページを読み込んでいたため、ミニポートのデータ パスをトラフィックが流れていました。 したがって、保留中の NBL は送信されました。 ミニドライバーの NBL ハンドラーに 1 つ以上のブレークポイントを設定しても、データ パスにアクティビティがなければ、保留中の NBL が表示されないことがあります。
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.