NDIS_SWITCH_REPORT_FILTERED_NET_BUFFER_LISTS回调函数 (ndis.h)
ReportFilteredNetBufferLists 函数报告可扩展交换机扩展从端口传送中删除或排除的一个或多个网络数据包。 每个网络数据包都是通过 NET_BUFFER_LIST 结构定义的。
语法
NDIS_SWITCH_REPORT_FILTERED_NET_BUFFER_LISTS NdisSwitchReportFilteredNetBufferLists;
void NdisSwitchReportFilteredNetBufferLists(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in] PUNICODE_STRING ExtensionGuid,
[in] PUNICODE_STRING ExtensionFriendlyName,
[in] NDIS_SWITCH_PORT_ID PortId,
[in] UINT32 Flags,
[in] UINT32 NumberOfNetBufferLists,
[in] PNET_BUFFER_LIST NetBufferLists,
[in, optional] PUNICODE_STRING FilterReason
)
{...}
参数
[in] NdisSwitchContext
一个NDIS_SWITCH_CONTEXT值,该值包含 Hyper-V 可扩展交换机扩展所附加到的可扩展交换机模块的句柄。 当扩展调用 NdisFGetOptionalSwitchHandlers 时,将通过 NdisSwitchContext 参数返回此句柄。
[in] ExtensionGuid
指向包含扩展 GUID 的 UNICODE_STRING 结构的指针。 NDIS 在 NDIS_FILTER_ATTACH_PARAMETERS 结构的 FilterModuleGuidName 成员中指定此 GUID。 NDIS 在调用扩展的 FilterAttach 函数时,在 AttachParameters 参数中传递指向此结构的指针。
[in] ExtensionFriendlyName
指向包含扩展的用户友好名称 的UNICODE_STRING 结构的指针。 此名称由扩展的 INF 文件的 AddService 指令中的 DisplayName 条目定义。
[in] PortId
指定可扩展交换机端口的NDIS_SWITCH_PORT_ID值。 有关详细信息,请参见“备注”部分。
[in] Flags
UINT32 值。 指定NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING标志时,它指示 PortId 成员定义丢弃的数据包的源。 如果未指定,则 PortId 成员定义目标可扩展交换机端口。 有关详细信息,请参见“备注”部分。
[in] NumberOfNetBufferLists
包含 NetBufferLists 参数指定的NET_BUFFER_LIST结构数的 UINT32 值。
[in] NetBufferLists
指向 NET_BUFFER_LIST 结构链接列表的指针。
[in, optional] FilterReason
指向 UNICODE_STRING 结构的指针,该结构包含有关丢弃或排除数据包的原因的用户友好说明。 有关详细信息,请参见“备注”部分。
返回值
无
备注
当扩展排除数据包传递到可扩展交换机端口时,它必须调用 ReportFilteredNetBufferLists。 调用此函数时,可扩展交换机模块会递增计数器,并记录已删除或排除的数据包的事件。 当它记录丢弃或排除的数据包集的事件时,可扩展交换机模块使用 FilterReason 参数指定的用户友好说明。
该扩展可以通过以下方式排除数据包的传递:
- 扩展完成数据包,而不是通过可扩展的交换机驱动程序堆栈转发数据包。 例如,扩展可以调用 NdisFSendNetBufferListsComplete ,以删除当 NDIS 调用其 FilterSendNetBufferLists 函数时检查的数据包。
-
该扩展更改数据包的目标端口。 例如,如果扩展在数据包的目标端口的 NDIS_SWITCH_PORT_DESTINATION 结构中将 IsExcluded 成员设置为 TRUE,则扩展必须调用 ReportFilteredNetBufferLists。
有关如何排除到可扩展交换机端口的数据包传送的详细信息,请参阅 排除到可扩展交换机目标端口的数据包传送。
- NetBufferLists 参数指定NET_BUFFER_LIST结构的链接列表。 这些结构指定的所有数据包都必须从同一端口接收或发送到同一端口,并且出于相同原因被删除或排除。
- 如果由于基于源端口的策略而丢弃数据包,则必须指定NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING标志。 扩展还必须将 PortId 参数设置为从中接收数据包的端口的标识符。
- 如果由于基于目标端口的策略而删除数据包,则不能指定NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_IS_INCOMING标志。 扩展还必须将 PortId 参数设置为数据包要发送到的端口的标识符。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.30 及更高版本中受支持。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈