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,则指定微型端口驱动程序在处理 NDIS 在 MaxNblsToIndicate 成员中请求的最大数目或结构后具有挂起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 处理程序时,NDIS_RECEIVE_THROTTLE_PARAMETERS 结构的 MaxNblsToIndicate 成员指定微型端口驱动程序应在 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 消息,则应为其拥有的所有中断源执行中断处理。 如果接收队列中存在数据包,它最多应使用 向 NDIS 指示 NET_BUFFER_LIST 结构 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