次の方法で共有


!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.

関連項目

ネットワーク ドライバー設計ガイド

Windows Vista 以降のネットワーク リファレンス

ネットワークスタックのデバッグ

NDIS 拡張コマンド (Ndiskd.dll)

!ndiskd.help

NET_BUFFER_LIST

!ndiskd.netadapter

!ndiskd.minidriver

bp、bu、bm (ブレークポイントの設定)