WINCE驱动的动态加载

niuxiaofeng   2010-5-27 22:58 楼主
请问,WINCE驱动的动态加载,具体怎么做?我按照网上的驱动调试助手,
一步一步来,建注册表文件a.reg,编译流驱动文件b.dll,将a.reg和
b.dll拷到nand-flash目录,a.reg里面的路径为\\nand-flash\\b.dll。
本身注册表里面是已经有驱动b.dll的。想通过驱动调试助手实现动态加载
b.dll,这样就不用再反复的烧NK了。
但是我发现,通过卸载系统本身已经加载好的b.dll后,再导入a.reg,
接着导入b.dll,再加载驱动,发现加载后驱动是能跑了,里面的打印
信息确实能变,但是有些功能根本不能实现。如中断等。重make一下,
烧NK,中断又能产生。用驱动调试助手为什么就不能呢?

回复评论 (6)

可能是驱动在卸载的时候没有正确释放中断导致了重新加载驱动后中断无法正常使用。
点赞  2010-5-28 09:34
[url=http://www.cnblogs.com/we-hjb/archive/2009/05/26/1490461.html][/url]

看看这里吧,希望能有所启发。
点赞  2010-5-28 09:53
通过卸载系统本身已经加载好的b.dll后,再导入a.reg,
接着导入b.dll,再加载驱动,发现加载后驱动是能跑了,里面的打印
信息确实能变,但是有些功能根本不能实现 ???

会有这个问题? 一定出现吗?
点赞  2010-5-28 11:10
会有这个问题? 一定出现吗?

是的,现在我也在怀疑是有些没有释放掉,正查找原因。
点赞  2010-5-28 11:15
我觉得你是应该找找释放的问题,至少我用你那方法,中断都是正常的
点赞  2010-5-28 21:26
在驱动卸载驱动时加入:
       
        InterruptDone(m_dwSysintr_EINT12);
        InterruptDisable(m_dwSysintr_EINT12);   // EINT12
        //release interrupt source
        KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR,&m_dwSysintr_EINT12,sizeof(UINT32),NULL,0,NULL);

        set GPIO as Input.

以上代码加在Deinit()里面。
点赞  2010-5-28 22:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复