阅读:2247回复:8
请教:如何在驱动层直接发包.我知道是调NDISSend,但是句柄不知道如何获得得到,望高手赐教.
我做的是一个和网络无关的驱动.请问是否一定要注册为协议驱动才能发包呢??
我只知道大概的步骤为 NdisOpenAdapter(参数没有搞明白,死机N次) NdisAllocatePacket NdisSend NdisFreePacket NdisSend 望大侠告知详细参数.查DDK帮助没看明白.都怪曾经太爱国了.E文不好 |
|
沙发#
发布于:2005-07-27 09:41
1.看你发什么包了,写一个t di client,可以象上层应用程序那样类似socket的语义,来收包,发包
2.如果采用注册一个协议的方法,看看xp ddk的ndisuio,基本上拿来直接用就可以了 |
|
板凳#
发布于:2005-07-27 09:42
是的。不注册协议,几个重要的参数无法得到,自然也就不能调用NDISSEND了。
NdisSend必须用NdisBindingHandle, NdisOpenAdapter()得到NdisBindingHandle, NdisOpenAdapter()必须用NdisProtocolHandle, NdisRegisterProtocol()得到 NdisProtocolHandle。 因此必须注册。 当然直接操作网卡也有可能,可以参考一下NE2000或e100bex。 |
|
地板#
发布于:2005-07-27 10:06
呵呵,直接操作网卡,几乎不可行,就不用考虑了
|
|
地下室#
发布于:2005-07-27 21:52
再次请教.如何写一个TDI Client?
我还是初学者. |
|
5楼#
发布于:2005-07-27 21:54
主要是想直接发IP层以下的数据包.
|
|
6楼#
发布于:2005-07-27 22:33
如果是发ip层以下的包,就没有必要考虑tdi了。
|
|
7楼#
发布于:2005-07-27 22:44
是不是只能通过注册协议调用NDISSend发送呢?
|
|
8楼#
发布于:2005-07-28 08:08
imd 也可以调用NdisSend发包,相比之下,还是proctol driver简单,还是用protocol driver吧
|
|