WEB开发网
开发学院操作系统windows 2008 Windows CE和 Windows2000/XP设备驱动开发的区别... 阅读

Windows CE和 Windows2000/XP设备驱动开发的区别

 2009-12-30 00:00:00 来源:WEB开发网   
核心提示: 与桌面Windows设备驱动程序开发相比,WindowsCE设备驱动程序开发的主要难点是,Windows CE和 Windows2000/XP设备驱动开发的区别(4),对于不同类型设备的驱动程序架构是不一样的,以流接口驱动程序为例,应用程序需要了解中断处理线程中数据的输入输出完成情况,以便及时地

与桌面Windows设备驱动程序开发相比,WindowsCE设备驱动程序开发的主要难点是,对于不同类型设备的驱动程序架构是不一样的。以流接口驱动程序为例,Windows CE设备驱动程序是用户模式动态链接库(DLL),其入口点在不同的情况有一些细微的差别,主要入口点包括XXX_Init、XXX_Deinit、 XXX_Open、XXX_Close、XXX_IOControl、XXX_Read、XXX_Seek、XXX_PowerUp和 XXX_PowerDown,在实际开发中接口名称中的XXX三个字母由设备驱动的设备文件名前缀代替。

2.2 与应用程序的通信

设备驱动程序构造成功之后,将它与设备一同安装进系统,以便用户可以对设备进行适当的控制及访问。在桌面Windows和Windows CE两个系统中使用Win32 API实现硬件的访问。首先调用CreateFile创建一个设备的连接,获得该设备的句柄(Handle),然后根据需要调用ReadFile、 WriteFile、DeviceIoControI等函数对设备进行读写或者其他I/O控制操作,最后调用CloseHandle关闭设备。

在桌面Windows系统中,当用户需要访问某设备时,必须首先取出指定设备全局唯一标识符(GUID)的设备信息集,枚举设备实例的接口数据,从中获得设备的符号链接名,然后调用CreatFile创建设备,并获得设备句柄,而在驱动程序内部通过处理IRP响应来自Win32应用程序对 IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE和IRP_MJ_OCTL等请求。IRP由IRP首部结构和一系列的栈单元组成,每个栈单元是一个IO_STACK_LOCA-TION结构。驱动程序仅需知道当前I/O栈单元和IRP首部结构中的信息就可以对IRP进行处理。驱动程序处理完IRP后,使用IoCompleteRequest函数通知I/O管理器,可以通过其参数设定状态码和返回的字节数。在Windows CE系统中,应用程序需要了解中断处理线程中数据的输入输出完成情况,以便及时地处理。这就需要建立应用程序和设备驱动程序的同步通信。

上一页  1 2 3 4 5 6  下一页

Tags:Windows CE Windows

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接