阅读:1616回复:11
哪位大侠能解释一下 ReceiveHandler() 参数的意义?
DDK 的帮助文档里面没有介绍!
NDIS_STATUS NDIS_API ReceiveHandler( NDIS_HANDLE ProtocolBindingContext, NDIS_HANDLE MacReceiveContext, PVOID HeaderBuffer, UINT HeaderBufferSize, PVOID LookAheadBuffer, UINT LookaheadBufferSize, UINT PacketSize ) 哪位大侠能给我做个注释,多谢了!!! |
|
沙发#
发布于:2002-07-23 10:58
DDK 的帮助文档里面没有介绍! DDK里有看ProtocolReceive |
|
|
板凳#
发布于:2002-07-23 11:22
(1)那么当有数据到达时,NDIS 是调用 ProtocolReceive() 呢还是调用 Protocol 的 ReceiveHandler() 呢?
(2)是不是在理想情况下,PacketSize = HeaderBufferSize + LookaheadBufferSize? PacketSize 是整个包的尺寸? LookaheadBufferSize 是当前可以接收的尺寸? HeaderBufferSize 又是什么呢?如果的包头的话,是以太头还是 IP 头? |
|
地板#
发布于:2002-07-23 11:46
你用的是什么方法?
passthru? protocolreceive就是receivehandler headerbuffer通常是以太头,lookaheadbuffer通常是mac头后的数据,应该包含了ip头,可能是整个数据包,也可能只有ip头, packetsize是整个包的大小,lookaheadbufersize是告诉你已经有多少数据传上来,理想情况是packetsize = headerbuffersize + lookaheadbuffersize, 但如果是>,那么就要调用transferdata更获得余下的数据! |
|
地下室#
发布于:2002-07-23 12:17
to swift:
非常感谢!这下全明白了。我用的是 NDIS Hook。 |
|
5楼#
发布于:2002-07-23 12:29
经常听到有人说起“passthru”,这是个什么东东?DDK 里面的一个例子?是 Miniport Driver 还是 Protocol Driver?可以用来做截包和过滤吗?是不是经常有人拿它来改写以完成任务啊?
还有人补充吗?如果没有就结贴给分了。 |
|
6楼#
发布于:2002-07-23 13:20
经常听到有人说起“passthru”,这是个什么东东?DDK 里面的一个例子?是 Miniport Driver 还是 Protocol Driver?可以用来做截包和过滤吗?是不是经常有人拿它来改写以完成任务啊? ?1 好东东 ?2 是 ?3 都不是 ?4 是 ?5 是 呵呵! |
|
|
7楼#
发布于:2002-07-23 13:33
to fenger_li:
那它是个 IM Driver 吗?如果不是的话,是什么呢? |
|
8楼#
发布于:2002-07-23 13:37
passthru就是IMD应用的一个例子!
|
|
9楼#
发布于:2002-07-23 13:46
哦,原来如此,不是说 IMD 安装很不方便吗,居然还有很多人在研究(当然功能很强大)。
订正一个错误,免得以后浏览这个帖子的人被误导: 以下来自 DDK 文档: PacketSize Specifies the size, in bytes, of the network packet data. The length of the packet does not include the length of the header. 所以理想状况下,应该是 packetsize = headerbuffersize,如果packetsize > headerbuffersize 就应该调用 TransferData()。 |
|
10楼#
发布于:2002-07-23 14:10
是不是你的问题有没有说清楚啊。
ddk中是没这个函数的。 ReceiveHandler是NDIS_PROTOCOL_CHARACTERISTICS结构的一个属性,注释为:Specifies the entry point of the caller’s ProtocolReceive function。是在DriverEntry中导出的数据接收函数的句柄。 |
|
|
11楼#
发布于:2002-07-23 14:19
对,确实没这个函数,我想其实 ReceiveHandler() 和 ProtocolReceive() 就是一个东西。
|
|