flashstar
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2008-02-25
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
阅读:3314回复:4

哪位研究过WinCE下的NDIS 协议驱动NDISUIO啊?

楼主#
更多 发布于:2007-12-06 14:16
 WinCe 驱动都是流接口形式,
都是 XXX_INIT()  XXX_OPEN, XXX_READ(),之类的,
而NDIS协议驱动另外一套接口,他们是怎么结合的啊,
我也看WINCE中的一个协议驱动NDISUIO 样例, 它是从XP的PACKET里改过来的, 但是感觉很多地方没看懂,比如DriverEntery()函数如何调用, 因为Xp下系统自动调用DriverEntery(),但是WINCE下只会调用XXX_INIT()  ,哪位有过这方面的研究, 请多多赐教!
dfbb7788
驱动牛犊
驱动牛犊
  • 注册日期2007-07-07
  • 最后登录2010-05-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望106点
  • 贡献值0点
  • 好评度40点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-12-06 23:15
ce里得driverentry是ndis.dll调用得,它得流接口是供你调用得
flashstar
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2008-02-25
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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,我改动的地方就是协议的接收,发送地方,其他地方没有改动过,不知道为什么协议驱动和网卡驱动绑定不了。
dfbb7788
驱动牛犊
驱动牛犊
  • 注册日期2007-07-07
  • 最后登录2010-05-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望106点
  • 贡献值0点
  • 好评度40点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-12-07 21:03
有了源代码还不清楚,建议你仔细看看ce下ndis如何实现得
flashstar
驱动牛犊
驱动牛犊
  • 注册日期2007-06-26
  • 最后登录2008-02-25
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-12-11 10:32
现在看来, NDIS 协议驱动无法通过RegisterDevice或者ActivateDevice来手动加载,而只能在注册表BuiltIn目录里添加相应的项目,让它在系统启动时自动加载的项目,这样才能加载成功,不过MSDN上明明说可以手动加载的啊,哪位大侠知不知道如何手动加载NDIS协议驱动啊,请赐教!
游客

返回顶部