Return 和接收处理程序轻量级过滤器之间的区别

Difference between Return and receive handlers Light Weight Filters

我想找出 ReturnNetBufferListsHandler 和 ReceiveNetBufferListsHandler 之间的区别,NDIS 什么时候调用这些回调。我有轻量级过滤器,它将修改 NIC 上的接收和发送数据包。

LWF 位于 NIC 驱动程序和协议驱动程序(如 TCPIP)之间。 LWF 有机会拦截传输 (Tx) 和接收 (Rx) 路径。

对于 Tx 每当协议发送数据包时,过滤器的 FilterSendNetBufferLists 处理程序都会获取数据包。完成协议数据包后,调用 NdisFSendNetBufferListsComplete return 返回协议。

如果您想将数据包传输到 NIC 驱动程序,请调用 NdisFSendNetBufferLists。当 NIC 驱动程序处理完 Tx 数据包时,将调用过滤器的 FilterSendNetBufferListsComplete 处理程序。

对于典型的直通过滤器,事件序列如下所示:

1。 FilterSendNetBufferLists 2. NdisFSendNetBufferLists 3.FilterSendNetBufferLists完成 4. NdisFSendNetBufferListsComplete

对于 RX 每当 NIC 指示接收时,过滤器的 FilterReceiveNetBufferLists 处理程序都会获取数据包。处理完 NIC 的数据包后,调用 NdisFReturnNetBufferLists。除了!如果设置了特殊的 NDIS_RECIEVE_FLAG_RESOURCES 标志。

如果您想指示协议接收,请调用 NdisFIndicateReceiveNetBufferLists。当协议完成您的数据包时,您的 FilterReturnNetBufferLists 处理程序将被调用。

对于典型的直通过滤器,事件序列如下所示:

1。 FilterReceiveNetBufferLists 2. NdisFIndicateReceiveNetBufferLists 3.FilterReturnNetBufferLists 4. NdisFReturnNetBufferLists