!ndiskd.pendingnbls

!ndiskd.pendingnbls 扩展显示正在传输的挂起的 NBL (NET_BUFFER_LISTs)。

!ndiskd.pendingnbls [-handle <x>] [-fullstack] [-verbosity <x>] 

参数

-处理
NDIS 微型端口、筛选器或打开的句柄。

-fullstack
显示与句柄关联的整个堆栈中挂起的 NBL。

-冗长
要显示的详细信息级别。

DLL

Ndiskd.dll

例子

!ndiskd.pendingnbls 可以传递 NDIS 微型端口、筛选器或打开的句柄。 以下一系列示例使用微型端口句柄。 若要查看所有微型端口及其关联的微型驱动程序的列表,请运行不带参数的 !ndiskd.netadapter 扩展。 在以下示例输出中,查找Microsoft内核调试网络适配器,其句柄为 ffffe00bc3f701a0。 其微型驱动程序的句柄是 ffffe00bc51b9ae0。

0: kd> !ndiskd.netadapter
    Driver             NetAdapter          Name                                 
    ffffe00bc6e12ae0   ffffe00bc6e4e1a0    Microsoft ISATAP Adapter #2
    ffffe00bc51b9ae0   ffffe00bc3f701a0    Microsoft Kernel Debug Network Adapter

若要查看微型端口的挂起的 NBL,请在其微型驱动程序的 SendNetBufferListsHandler 上设置断点。 使用 minidriver 的句柄运行 !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 处理程序设置断点后,如果数据路径中没有活动,则可能不会看到任何挂起的 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 (设置断点)