过滤钩子驱动程序参考
一个过滤钩子驱动程序提供自己的过滤钩子地址来注册过滤钩子实体指针给系统提供的IP过滤驱动程序. 这个
过滤钩子是一个由PacketFilterExtensionPtr定义的数据类型. 因为一个过滤钩子驱动程序提供这个地址而不是名字,
设备开发者完全任意的命名这个过滤钩子.
typedef PF_FORWARD_ACTION (*PacketFilterExtensionPtr)(
IN unsigned char *PacketHeader,
IN unsigned char *Packet,
IN unsigned int PacketLength,
IN unsigned int RecvInterfaceIndex,
IN unsigned int SendInterfaceIndex,
IN IPAddr RecvLinkNextHop,
IN IPAddr SendLinkNextHop
);
这个PacketFilterExtensionPtr数据类型指向一个过滤钩子回调函数. 这个函数处理发送给他的包并检查
是否转发或drop包或允许IP过滤驱动程序接着处理这个包.
参数:
PacketHeader:包的IP头的指针。过滤钩子能够计算IP头结构的报头指向的信息。
Packet :包含过滤钩子接收的包的信息的缓冲指针。这个缓冲不能包括用包头指向的IP头。
PacketLength :IP包字节长度信息,不包括IP头的长度。
RecvInterfaceIndex:包所到达的接口适配器的索引数目。过滤钩子使用这个索引来标识接受到包的接口
适配器的细节,对于发送的包,这个参数设置成INVALID_PF_IF_INDEX并且RecvLinkNextHop
的信息是无意义的。
SendInterfaceIndex:包所发送的接口适配器的索引数目。如果这个包将要路由的接口的信息是必须的。
过滤钩子能通过SNMP查询路由表. 对于到达的包,这个参数被设置成NVALID_PF_IF_INDEX并且
SendLinkNextHop中的信息是无意义的。






