微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > WinCE驱动编写小结

WinCE驱动编写小结

时间:09-12 来源:互联网 点击:

回一个结构指针,用于区分哪个应用程序调用了驱动,这个值还作为参数传递给其他接口函数XXX_Read、XXX_Write、XXX_Seek、XXX_IOControl。

4)BOOL XXX_Close(DWORD hOpenContext);

hOpenContext:XXX_Open返回值。

关闭设备,释放资源。由CloseHandle函数间接调用。

5)DWORD XXX_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count);

hOpenContext:XXX_Open返回值。

pBuffer:缓冲区指针,接收数据。

Count:缓冲区长度。

由ReadFile函数间接调用,用来读取设备上的数据。返回读取的实际数据字节数。

6)DWORD XXX_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD Count);

hOpenContext:XXX_Open返回值。

pBuffer:缓冲区指针,接收数据。

Count:缓冲区长度。

由WriteFile函数间接调用,把数据写到设备上,返回实际写入的数据数。

7)BOOL XXX_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut);

hOpenContext:XXX_Open返回值。

dwCode:控制命令字。

pdwActualOut:实际输出数据长度。

用于向设备发送命令,应用程序通过DeviceIoControl调用来实现该功能。要调用这个接口还需要在应用层和驱动之间建立一套相同的命令,通过宏定义CTL_CODE(DeviceType, Function, Method, Access来实现。如:

#define IOCTL_INIT_PORTS \ CTL_CODE(FILE_DEVICE_UNKNOWN,0X801,METHOD_BUFFERED,FILE_ANY_ACCESS)

8)void XXX_PowerDown(DWORD hDeviceContext);

hDeviceContext:XXX_Init的返回值。

负责设备的上电控制。

9)void XXX_PowerUp(DWORD hDeviceContext);

hDeviceContext:XXX_Init的返回值。

负责设备的断电控制

10) DWORD IOC_Seek(DWORD hOpenContext, long Amount, WORD Type)

hOpenContext:XXX_Open返回值。

Amount:指针的偏移量。

Type:指针的偏移方式。

将设备的数据指针指向特定的位置,应用程序通过SetFilePointer函数间接调用。不是所有设备的属性上都支持这项功能。

5、流接口驱动的加载和注册表设置:

系统启动时启动设备管理程序,设备管理程序读取HKEY_LOCAL_MACHINE\Drivers\BuiltIn键的内容并加载已列出的流接口驱动程序。因此注册表对于驱动的加载有着关键作用。下面是一个例子:

“Prefix”=”XXX”

“Dll”=”drivername.dll”

其中,“Prefix”=“XXX”中的XXX要和XXX_Init等函数中的一样。CreateFile创建的驱动名前缀也必须和它们一致。

6、驱动程序的编写、编译及其相关目录、配置文件的格式和修改:

1)首先必须在PB相应平台的的driver目录下建立要创建的驱动所在的目录。如在x:\Wince420\platform\smdk2410\drivers目录下建立一个IOCtrol目录。

2)修改Drivers目录下的dirs文件。

3)创建驱动源文件XXX.c,在该文件中实现上述流接口函数。并且加入DLL入口函数:

BOOL DllEntry(HINSTANCE hinstDll, /*@parm Instance pointer. */

DWORD dwReason, /*@parm Reason routine is called. */

LPVOID lpReserved /*@parm system parameter. */

)

4)创建Makefile和Sources和.def文件,控制编译。

5)使用CEC Editor修改cec文件,编译添加的新特性。

6)复制新生成的4个文件到Release目录下,修改注册表文件platform.reg和platform.bib文件。

7)Make Image。

8)DownLoad Image。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top