阅读:3323回复:4
哪位研究过WinCE下的NDIS 协议驱动NDISUIO啊?
WinCe 驱动都是流接口形式,
都是 XXX_INIT() XXX_OPEN, XXX_READ(),之类的, 而NDIS协议驱动另外一套接口,他们是怎么结合的啊, 我也看WINCE中的一个协议驱动NDISUIO 样例, 它是从XP的PACKET里改过来的, 但是感觉很多地方没看懂,比如DriverEntery()函数如何调用, 因为Xp下系统自动调用DriverEntery(),但是WINCE下只会调用XXX_INIT() ,哪位有过这方面的研究, 请多多赐教! |
|
沙发#
发布于:2007-12-06 23:15
ce里得driverentry是ndis.dll调用得,它得流接口是供你调用得
|
|
板凳#
发布于:2007-12-07 09:11
CE自带的例子是这样写的 :
#define VALID_DEVICE_CONTEXT 0xCE400CE400 DWORD UIO_Init (DWORD Index) { int i; DEBUGMSG (ZONE_USER, (TEXT("UIO:: UIO_Init()..\r\n"))); // // Init global vars used by this object.. // InitializeCriticalSection (&g_csOpenContext); for (i = 0 ; i < MAX_HASH_ENTRIES ; i++) g_pOpenContext = NULL; #ifndef CE_NOT_BUILT_IN DriverEntry(NULL, NULL); #endif return (DWORD)VALID_DEVICE_CONTEXT; } // UIO_Init() DriverEntry(NULL, NULL)是我们手动调用啊,我也觉得很奇怪, 这个CE例子是加载在注册表的BuiltIn目录下,现在我把这个例子改了一下,想通过RegisterDevice手动加载驱动,可是加载后,我调用CreateFile可以成功,但是使用参数IOCTL_NDISUIO_QUERY_BINDING调用DeviceIoControl可是失败,说明驱动没有绑定到网卡驱动上,返回的错误码是259,我改动的地方就是协议的接收,发送地方,其他地方没有改动过,不知道为什么协议驱动和网卡驱动绑定不了。 |
|
地板#
发布于:2007-12-07 21:03
有了源代码还不清楚,建议你仔细看看ce下ndis如何实现得
|
|
地下室#
发布于:2007-12-11 10:32
现在看来, NDIS 协议驱动无法通过RegisterDevice或者ActivateDevice来手动加载,而只能在注册表BuiltIn目录里添加相应的项目,让它在系统启动时自动加载的项目,这样才能加载成功,不过MSDN上明明说可以手动加载的啊,哪位大侠知不知道如何手动加载NDIS协议驱动啊,请赐教!
|
|