NDIS_RECEIVE_THROTTLE_PARAMETERS结构 (ndis.h)

NDIS_RECEIVE_THROTTLE_PARAMETERS结构指定微型端口驱动程序应在延迟过程调用(DPC)中指示的最大 NET_BUFFER_LIST 结构数。

语法

typedef struct _NDIS_RECEIVE_THROTTLE_PARAMETERS {
  ULONG MaxNblsToIndicate;
  ULONG MoreNblsPending : 1;
} NDIS_RECEIVE_THROTTLE_PARAMETERS, *PNDIS_RECEIVE_THROTTLE_PARAMETERS;

成员

MaxNblsToIndicate

微型端口驱动程序应包含在接收指示中的最大 NET_BUFFER_LIST 结构数。 如果此值NDIS_INDICATE_ALL_NBLS,微型端口可以指示它拥有的所有NET_BUFFER_LIST结构。

MoreNblsPending

一个值,当 TRUE时,指定微型端口驱动程序在处理 MaxNblsToIndicate 成员中请求的 NDIS 的最大数目或结构后,该微型端口驱动程序具有挂起NET_BUFFER_LIST结构。

注释 如果 NDIS 将 MaxNblsToIndicate 成员设置为 NDIS_INDICATE_ALL_NBLS,则微型端口驱动程序 应在从 DPC 返回之前将 moreNblsPending 设置为 FALSE
 

言论

MiniportInterruptDPC 和 的 ReceiveThrottleParameters 参数 MiniportMessageInterruptDPC DPC 处理程序函数指向NDIS_RECEIVE_THROTTLE_PARAMETERS结构。 此结构指定 NDIS 6.20 及更高版本中 接收端限制 (RST) 的参数。

在 DPC 处理程序的条目中,MaxNblsToIndicate NDIS_RECEIVE_THROTTLE_PARAMETERS 结构的成员指定微型端口驱动程序应在 DPC 中指示的最大 NET_BUFFER_LIST 结构数。 如果此值NDIS_INDICATE_ALL_NBLS,微型端口驱动程序可以指示其队列中具有的所有NET_BUFFER_LIST结构。

微型端口驱动程序处理指定的最大NET_BUFFER_LIST结构数后,微型端口驱动程序在其接收队列中可能有更多的数据包。 在这种情况下,微型端口驱动程序应将 moreNblsPending 成员 设置为 TRUE,并且不应在从 DPC 返回之前重新启用中断。 这适用于基于行的中断和消息偏差中断。

MaxNblsToIndicate 成员设置为NDIS_INDICATE_ALL_NBLS时,微型端口驱动程序应遵循以下准则:

  • NDIS_INDICATE_ALL_NBLS值允许微型端口驱动程序确定它在 DPC 调用中指示的NET_BUFFER_LIST结构数。 这为微型端口驱动程序提供了以下选项:
    • 微型端口驱动程序可以指示其接收队列中的所有挂起NET_BUFFER_LIST结构。
    • 微型端口驱动程序可以限制它根据启发式指示的NET_BUFFER_LIST结构的数量,以避免在 DPC 调用中花费过多的时间。

      具体而言,驱动程序应使用启发式来避免 DPC 超时,这是驱动程序在其 DPC 中花费的最大时间。 超时间隔到期时,系统会在系统上发生 bug 检查。 从 Windows 7 开始,DPC 超时为 10 秒。

  • 微型端口驱动程序应在从 DPC 返回之前 将 MoreNblsPending 设置为 FALSE。 无论驱动程序在其接收队列中是否有挂起的NET_BUFFER_LIST结构尚未指示,驱动程序都应执行此作。
如果微型端口驱动程序使用基于行的中断或单个 MSI 消息,则应对它拥有的所有中断源执行中断处理。 如果接收队列中存在数据包,它应指示最多 MaxNblsToIndicate NET_BUFFER_LIST 结构与 NDIS NdisMIndicateReceiveNetBufferLists 函数。

如果微型端口驱动程序使用多个 MSI 消息来区分不同的中断源,则它应忽略与接收指示无关的 MSI 消息的 ReceiveThrottleParameters 成员。 对于接收中断消息,微型端口驱动程序应指示最多 MaxNblsToIndicate NET_BUFFER_LIST 结构。

注意 如果微型端口驱动程序设置 MoreNblsPending,NDIS 将再次调用 DPC。 但是,未定义下一次 DPC 调用之前经过的时间量。 此外,未定义初始中断服务路由(ISR)返回和 DPC 之间的时间量。 微型端口驱动程序 MoreNblsPending后,它应处理下一个 DPC,因为它处理第一个 DPC。
 

要求

要求 价值
最低支持的客户端 NDIS 6.20 及更高版本中受支持。
标头 ndis.h (包括 Ndis.h)

另请参阅

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists