wince驱动程序流程

来源:互联网 发布:2017淘宝主图尺寸大小 编辑:程序博客网 时间:2024/06/03 23:41

欢迎加入Wince技术讨论群QQ#326444254

wince驱动程序流程

在ce中,最简单的驱动莫过于build-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.在注册表中添加(分common.reg,platform.reg,project.reg)一般添加在platform.reg中,直接修改的是bsp包中的注册表项
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SampleDev]
"Prefix"="XXX"
"Dll"="MyDev.Dll"
"Order"=dword:1
3.在BIB(二进制映像文件)中添加项目,该文件功能是告诉编译器哪些exe,dll及文件被添加到bin映像中
MyDev.dll $(_FLATRELEASEDIR)\MyDev.dll NK SH
SH表示系统隐藏文件
4.在你的wince500的platform中对应的bsp包direction中找到driver文件,在该文件下新建一个文件夹,命名为你的驱动名,将你写好的.cpp和.h文件添加进来,在新建.def和source以及makefile文件
makefile文件是告诉编译器如何进行编译,但是没有实际功能,实际的工作都由.def和source文件做了。
.def主要是定义需要输出的函数,这些函数能够被其他代码动态加载的方法调用
LIBRARY MyDev(这个字符串要和将要生成的动态库的文件名一样)

EXPORTS
XXX_Init
XXX_Deinit
XXX_Open
XXX_Close
XXX_PowerOff
XXX_Power_Down
XXX_IOControl
source文件很重要,主要是帮助生成动态库,以及指明动态库的入口函数,动态库名等
TARGETNAME=MyDev(指定要生成的动态库的名称)
TARGETTYPE=DYNLINK(指定要生成的是一个动态库)
(下面两项指定需要与哪些动态库链接,一般要第一项就足够了)
TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib

DEFFILE=MyDev.def (指定def文件)

DLLENTRY=DllEntry(指定动态库的入口函数)

SOURCES=(请在这写上你所有源文件的名字,它们将会被编译)
原创粉丝点击