WinCE驱动编写小结
#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_MACHINEDriversBuiltIn键的内容并加载已列出的流接口驱动程序。因此注册表对于驱动的加载有着关键作用。下面是一个例子:
【HKEY_LOCAL_MACHINEDriversBuiltIIOControler】
“Prefix”=”XXX”
“Dll”=”drivername.dll”
其中,“Prefix”=“XXX”中的XXX要和XXX_Init等函数中的一样。CreateFile创建的驱动名前缀也必须和它们一致。
6、驱动程序的编写、编译及其相关目录、配置文件的格式和修改:
1)首先必须在PB相应平台的的driver目录下建立要创建的驱动所在的目录。如在x:Wince420platformsmdk2410drivers目录下建立一个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。
评论