阅读:1848回复:7
IMD的DriverEntry什么时候被调用?NDIS在IMD中表现为什么方式?一个对象还是就是一个规范?
IMD的DriverEntry什么时候被调用?NDIS在IMD中表现为什么方式?一个对象还是就是一个规范?
|
|
最新喜欢:![]() |
沙发#
发布于:2005-06-23 16:03
这个设备和上层协议发包好像没有什么关系,主要是处理,应用程序可以直接query ,set miniport driver的oid. 至于发包,还是上层协议绑定到你的虚拟miniport后,就可以调用NdisSend发包了。
|
|
板凳#
发布于:2005-06-23 12:25
调用NdisIMRegisterLayeredMiniport,这个函数会创建设备 我大概也猜出来了
让我困惑的是 上层是怎么知道 把包发给 这个新创建的设备.......。。 zhao版 来支几招吧。。 |
|
地板#
发布于:2005-06-23 12:11
>>另 观察了DriveObject 发现后来 里面的处理IRP的函数 都填成 ndis!********+abc 之类的。。。
>>也创建了个设备。。。。 imd调用NdisIMRegisterLayeredMiniport,这个函数会创建设备,并将imd DriverObject里面的Dispatch函数设置成ndis的内部函数 |
|
地下室#
发布于:2005-06-23 11:46
我用passthru 试过。。当在属性里 打勾IM的时候 passthru!driverentry 就会被调用。。。这跟我以前理解有出入。。我以前认为: 只要安装了 passthru后 入口函数就被调用。。驱动就被载入 打勾导致PtBindAdapter调用 去掉导致PtUnbindAdapter调用。。
另 观察了DriveObject 发现后来 里面的处理IRP的函数 都填成 ndis!********+abc 之类的。。。 也创建了个设备。。。。 |
|
5楼#
发布于:2005-06-23 10:01
DriverEntry第一个参数指向DriveObject的指针,第二个参数好像是是驱动程序在注册表中的路径,一般用不到,具体用ice跟踪一下,就明了了。NdisWrapperHandle实际上是一个指针PNDIS_WRAPPER_HANDLE,ndis内部用的,你不用关心。
至于imd DriverEntry具体什么时候被加载,应该是是imd什么时候被加载吧?我也不知道,对于windows这种源代码不公开的os,很多东西,我们只能按照ms的规范去做,就够了,对于linux,我们就可以搞清楚所有的细节。虽说windows代码泄漏了,但目前泄漏出来的w2k的代码,也不包含ndis这部分,nt4的部分可能太老了,和2k以后的也有了很大的差别。当然也不是完全没有办法知道,我们可以在 imd driverentry设置个断点(已经加载了ntoskrnl,ndis的symbols,)然后溯栈,可以知道是谁在调用imd DriverEntry。不了解这个细节,并不会妨碍你实现imd driver. |
|
6楼#
发布于:2005-06-23 08:55
请问DriverEntry中的两个参数到底是什么意思?NdisWrapperHandle到底指向谁?还有driverentry什么时候被系统加载呢?谢谢zhaock 老大拉
|
|
7楼#
发布于:2005-06-22 20:15
ndis分成protocol驱动,miniport驱动,protocol driver 要绑定到miniport driver 上,imd 驱动就是在
protocol driver和miniport driver之间插了一层,对上层的protocol driver 表现为一个miniport driver, 对下面的miniport driver 表现为一个protocol driver. 至于imd的driverentry什么时候被调用,和其他驱动一样,当驱动被系统加载的时候,就会被调用,类似于上层的dll的dllmain |
|