本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

☆★☆★☆★☆★☆★☆
生活的点点记录,以及一些体会...........

喜欢是淡淡的爱,爱是深深的喜欢.

时间会见证一切.......................

欢迎大家指出错误,共同进步..........

期待中..............................

☆★☆★☆★☆★☆★☆


我的分类(专题)

日志更新

最新评论

留言板

链接

世纪音频

 

 


Blog信息
blog名称:
日志总数:162
评论数量:312
留言数量:0
访问次数:941646
建立时间:2005年5月17日




[wince study]WINCE驱动程序快速入门及经验点滴(转)
文章收藏

oceanblue 发表于 2008/5/8 13:30:52

在CE中,最简单的驱动程序莫过于一个内置(Built-in)设备的流接口驱动。对于一个不支持热拔插的设备,最方便的做法就是为其实现一个内置的流接口驱动。这种驱动只需要做以下工作:1.实现一个动态库,其中实现以下函数:    DWORD xxx_Init( LPCTSTR pContext, LPCVOID lpvBusContext);    DWORD xxx_Deinit( DWORD hDeviceContext );        DWORD xxx_Open(DWORD hDeviceContext,DWORD dwAccess, DWORD               dwShareMode);    DWORD xxx_Close(  DWORD hDeviceContext );        void XXX_PowerUp( DWORD hDeviceContext );    void XXX_PowerDown(DWORD hDeviceContext );    DWORD xxx_IOControl(              DWORD hDeviceContext,              DWORD dwCode,              PBYTE pBufIn,              DWORD dwLenIn,              PBYTE pBufOut,              DWORD dwLenOut,              PDWORD pdwActualOut              );2.在注册表中添加如下项目。(一般放在Platform.reg)[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SampleDev]  "Prefix"="XXX"  "Dll"="MyDev.Dll"  "Order"=dword:13.在BIB文件中添加项目,将所用到的文件加入BIN文件(一般放在Platform.bib)。    MyDev.dll     $(_FLATRELEASEDIR)\MyDev.dll     NK SH注:SampleDev为任意与其它项目不重名的字符串.每个函数名的前缀XXX可以是任意大写的字符串,只要保证与注册表中Prefix后面的值相同就行。    现在,已经知道了需要实现那些东西,那你一定急不可待,想知道如何去实现它。好了,一个最直接的方法,在platform/your CPU’s folder/drivers 下新建一个目录,然后在drivers目录中的dirs文件中加入以你刚新建的目录名。    在刚新建的目录下,新建你的C源代码文件,在其中实现上面所述的函数,及其功能。新建名称分别为sources, makefile, mydev.def的文件。其内容如下:    makefile: 只需要这样一行!INCLUDE $(_MAKEENVROOT)\makefile.defmydriver.def文件定义需要输出的函数,这些函数能够被其它代码用动态加载的方法调用。格式:LIBRARY     MyDev(这个字符串要和将要生成的动态库的文件名一样)EXPORTS    XXX_Init    XXX_Deinit    XXX_Open    XXX_Close    XXX_PowerOff    XXX_Power_Down    XXX_IOControlSources:这个文件很重要,内容也多,最基本的一个文件该有如下内容。TARGETNAME=MyDev(指定要生成的动态库的名称)TARGETTYPE=DYNLINK(指定要生成的是一个动态库)(下面两项指定需要与哪些动态库链接,一般要第一项就足够了)TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \              $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.libDEFFILE=MyDev.def (指定def文件)DLLENTRY=DllEntry(指定动态库的入口函数)SOURCES=(请在这写上你所有源文件的名字,它们将会被编译)    好了,现在万事俱备,只剩编译啦。


阅读全文(1599) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.030 second(s), page refreshed 144763751 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号