转做WinCE驱动已经有两个月了,却没有做过一个真正的WinCE平台下的驱动,心里都有些急了,很想尝试下,好尽快融入WinCE驱动开发这个团队。 头儿也很理解,给了俺个简单的,可以说是非常简单的任务,好让俺找找入门的感觉,就是做一个FM的驱动。 由于WinCE下的驱动大多是基于流接口的,所以偶也采用了流接口,做比较起来简单,呵呵 说白了,流接口就是实现以下几个接口: BOOL WINAPI DllMain(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved); DWORD XXX_Init(LPCTSTR pContext, LPCVOID lpvBusContext); BOOL XXX_Deinit(DWORD hDeviceContext); DWORD XXX_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode); BOOL XXX_Close(DWORD hOpenContext); BOOL XXX_PowerUp(DWORD hDeviceContext); BOOL XXX_PowerDown(DWORD hDeviceContext); BOOL XXX_PowerDown(DWORD hDeviceContext); DWORD XXX_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count); DWORD XXX_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD Count); DWORD XXX_Seek(DWORD hOpenContext, long Amount, WORD Type); BOOL XXX_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, XXX是任意的大写字符串(只能是三个字符,偶刚开始用的FM,后面回出问题),且保证与注册表Prefix项后的一样哦 把以上接口给实现了,接下来就是弄注册表咯 在注册表中添加如下项目。(一般放在Platform.reg)
在platform/你的平台(如:smdk2410)/drivers 下新建一个目录(偶的是FM),然后在drivers目录中的dirs文件中加入以你刚新建的目录名。 mydriver.def文件定义需要输出的函数,这些函数能够被其它代码用动态加载的方法调用。格式: LIBRARY MyDev(这个字符串要和将要生成的动态库的文件名一样) EXPORTS TARGETNAME=MyDev(指定要生成的动态库的名称) (下面两项指定需要与哪些动态库链接,一般要第一项就足够了) DEFFILE=MyDev.def (指定def文件) DLLENTRY=DllEntry(指定动态库的入口函数) SOURCES=(请在这写上你所有源文件的名字,它们将会被编译) 一个流驱动就大功告成咯~~~~~~ |
|