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

时间:2017-01-25 07:25:32

标签: driver ndis filter-driver

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

1 个答案:

答案 0 :(得分:0)

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

:用于的Tx 每当协议发送数据包时,您的过滤器的FilterSendNetBufferLists处理程序都会获取数据包。完成协议的数据包后,调用NdisFSendNetBufferListsComplete将其恢复为协议。

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

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

1。 FilterSendNetBufferLists  2. NdisFSendNetBufferLists 3. FilterSendNetBufferListsComplete  4. NdisFSendNetBufferListsComplete

对于RX 只要NIC指示接收,您的过滤器的FilterReceiveNetBufferLists处理程序就会获取该数据包。完成NIC的数据包后,请调用NdisFReturnNetBufferLists。除了!如果设置了特殊的NDIS_RECIEVE_FLAG_RESOURCES标志。

如果您要指示协议的接收,请调用NdisFIndicateReceiveNetBufferLists。使用数据包完成协议后,将调用FilterReturnNetBufferLists处理程序。

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

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