!ndiskd.pendingnbls

!ndiskd.pendingnbls 扩展显示传输中的挂起的 NBL (NET_BUFFER_LIST)。

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

参数

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

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

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

DLL

Ndiskd.dll

示例

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

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 处理程序设置断点后,如果数据路径中没有活动,也可能不会看到任何挂起的 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(设置断点)