基于WinCE的车载智能显示终端CAN流接口驱动开发
- 格式:pdf
- 大小:238.75 KB
- 文档页数:3
我的第一个WinCE驱动--流式驱动【转】转做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,PBYTE pBufOut, DWORD dwLenOut,PDWORD pdwActualOut);XXX是任意的大写字符串(只能是三个字符,偶刚开始用的FM,后面回出问题),且保证与注册表Prefix项后的一样哦把以上接口给实现了,接下来就是弄注册表咯在注册表中添加如下项目。
WinCE中的驱动程序开发一.实验目的1、熟悉WinCE中流式接口驱动程序的12个接口的功能。
2、掌握流式驱动程序的工作过程。
3、能够编写出流式接口的驱动程序。
二.实验内容使用VS2005的智能设备应用程序开发方法,进行网络通信的编程,并通信多线程技术实现服务器与客户端之间的文件传输。
三.实验设备及工具硬件:PC机一台;软件:Windows XP操作系统,VS2005开发环境,WinCE 6.0开发环境,或Windows Mobile 5.0 SDK四.实验步骤及说明(1)写出流式接口驱动程序的12个接口,及每个接口的功能。
答:见教材515页(2)写出流式驱动程序的工作过程。
答:第一步:加载驱动程序,主要有两种加载方式:(1)当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE\Drivers\BuiltIn键下面的子键,并逐一加载该子键下的每一个驱动,此过程称为BusEnum;(2)应用程序可调用ActivateDeviceEx()函数动态地加载驱动程序。
第二步:设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。
第三步:设备管理器调用LoadDriver()函数把该DLL加载到自己的虚拟地址空间中。
第四步:设备管理器在注册表的HKEY_LOCAL_MACHINE\Drivers\Active下,记录所有已经加载的驱动程序。
第五步:设备管理器调用驱动程序中的COM_Init函数,并把上一步中添加的注册表项的完整路径作为COM_Init函数的第1个参数传入驱动程序内。
第六步:在COM_Init中,通常须对硬件进行一些最基本的初始化操作。
通过以上的操作完成流式驱动程序的加载任务。
对驱动程序的操作:第一步:应用程序使用该设备。
首先,应用程序调用CreateFile(TEXT(“COM1”)….)打开设备。
然后,文件系统判断打开的是文件还是设备。
最后,如果打开的是设备,就将控制权交回设备管理器。
C#开发基于wince SDK的PWM控制软件前些天本人苦于vs2005下开发pwm的控制软件,经过几天的努力,现已成功写出了pwm的控制软件,现总结如下开发环境:mini2440+vs2005+vs2005 sp1+mini2440 SDK没有安装wince6.0及PB一、学习相关的知识1、流驱动的相关知识1.1 流驱动的主要接口Wince流驱动方式与c++中开发dll很相相似,主要有以下几个接口:流接口函数功能描述调用流接口对象XXX_Init() 初始化设备系统设备管理器XXX_Denit() 卸载设备系统设备管理器XXX_Open() 打开设备进行读写操作文件API函数CreateFile()XXX_Close() 关闭设备文件API函数CloseHandle()XXX_Read() 读取设备数据文件API函数ReadFile()XXX_Write() 向设备写数据文件API函数WriteFile()XXX_IOControl() 对设备进行各种操作文件API函数DeviceIOControl()XXX_Seek() 移动设备数据的指针位置文件API函数SetFilePointer()XXX_PowerDown() 使设备休眠系统电源管理器XXX_PowerUp() 恢复设备电源系统电源管理器图1 流驱动主要接口1.2 流驱动工作及调用过程1)加载驱动。
在当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE\Driver\BuiltIn键下面的子键,并逐一加载子键下的每个驱动,此过程叫BusEnum。
2)设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。
3)设备管理器调用LoadDriver()函数把DLL加载到自己的虚拟地址空间内。
4)设备管理器在注册表的HKEY_LOCAL_MACHINE\Driver\Active下面,记录所有已经加载的驱动程序。
CAN Bus Driver Developer’s Manual(Wince 4.2 Operating System)深圳英贝德科技有限公司Revision History一、重新编写CAN驱动1.编写CAN 总线的驱动程序,驱动程序编写可以使用Platform Builder 4.2或者是eMbedded Visual C++ 4.0,在此我们使用的是Platform Builder 4.2,首先进入你建立的Platform 中,接着在Platform Builder 4.2中新建工程文件,如图1所示:图 1单击New Project or File…菜单命令,弹出如下图2所示界面:图 2单击WCE Dynamic-Link Library 选项,在右则的Project name 输入框中输入驱动文件名CAN 然后点击OK按钮。
接着出现图3所示对话框:图 3选定A simple Windows CE DLL project选项,然后单击Finish按钮,进入Platform Builder 4.2主界面,将其目录展开可见到如图4所示的窗口:图 4双击CAN.cpp 图标,即可进行CAN驱动源程序的编写。
在Windows CE操作系统中,驱动程序都是以动态链接库文件存在的。
我们编写的驱动程序为流接口驱动程序,因此在该动态链接库文件内要定义标准的流接口函数。
其标准流接口函数有:CAN_Init()CAN_Deinit()CAN_Open()CAN_Close()CAN_IOControl()CAN_PowerUp()CAN_PowerDown()CAN_Read()CAN_Seek()CAN_Write()以上每个函数的功能如其函数名称所示。
它们为标准的流接口函数,具体的功能如果没有必要,也就只需定义其函数不用具体实现,在我们的驱动程序中主要完成的代码编写有CAN_Init()、CAN_Deinit()、CAN_Open()、CAN_Close()、CAN_IOControl()、CAN_Read()、CAN_Write()。
基于WinCE环境的CAN适配卡驱动程序的设计与实现
1.引言
WinCE 是一种为多种嵌入式系统和产品设计的紧凑、高效、可升级的操作系统,WinCE 采用标准模式,其最主要的特征:为有限的硬件资源提供了多线程、多任务和完全优先级的计算环境。
WinCE 操作系统支持两种类型的驱动程序:[1]本地驱动程序(Build-In),是
把设备驱动程序作为独立任务实现,直接在顶层任务中实现硬件操作,完成特有专用的驱动程序;流接口驱动程序,WinCE 的I/O 系统将设备程序作为内核过程实现,这种方式便于实现I/O 子系统的层次模型,便于文件系统一起把设
备作为特殊文件处理,提供统一的管理、统一的界面和统一的使用方法,并把设备、文件及网络通信组织成为一致的更高层次的抽象,为用户提供统一的系统服务和用户接口。
驱动程序封装了将这些命令转换为它所控制的设备上的适当操作所需的全部信息。
流接口驱动程序有在启动时加载和动态加载两种方式。
本文实现的在WinCE 环境下流结构的PC/104-CAN 驱动程序是在系统启动时加载的。
2. CAN 总线技术简介
CAN 总线是德国Bosch 公司开发的一种串行数据通信协议,CAN 总线属于总线式串行通讯网络,具有总线为多主方式工作且无需站地址节点信息、CAN 网络上的节点信息分成不同的优先级、总线冲突仲裁时间低和总线的通信介质选择灵活等优点[2]。
CAN 适配卡的核心工作单元是它的控制器,控制器SJA1000 的组织结构如图1 所示。
基于WINCE的CAN总线设备驱动研究
目前嵌入式车载网络系统一般采用LINUX 嵌入式操作系统,以
ARM7s3c44Bo 为微控制器,SJAl000 为CAN 控制器的解决方案,实现LINUX 下的CAN 通信.在WINCE 平台下,CAN 卡的研究已经有很多。
也取得了不
错的应用效果,但以ARM9s3c2440 为嵌入式系统硬件核心,外围扩展CAN 控制器SJA1000,嵌入式操作系统采用WINCE 的应用方案几乎没有,所以值得研究.
1 嵌入式车载网络的构成
嵌人式车载网络由若干个子节点控制器和主控制单元组成,其中主控单元
对子节点进行监视与控制,实现不同的CAN 数据总线系统问的数据交换,网
络的拓朴结构如图1 所示.
图1 系统网络拓扑结构
2 系统采用的驱动模型
目前基于WINCE 的两种驱动模型是本机设备驱动程序和流接口驱动程序,不同的驱动模型只能通过它们支持的软件接口来区别.
本系统采用的是流接口驱动程序,图2 给出了流接口驱动的工作结构.流
接口驱动模型由设备管理器统一加载、管理和卸载,应用程序通过文件系统的API 函数调用流接口函数,然后由流接口驱动程序调用本机驱动或者通过设备
管理器与系统内核或外围设备进行信息交流。
图2 流接口工作结构
3 车载网络主控单元硬件平台实现。
基于WINCE5.0的ⅡC总线驱动程序设计陈绍贵;王新华;郭淑琴【摘要】该文主要研究在嵌入式操作系统WinCE5.0下,如何设计实现S3C2440A 芯片具有ⅡC接口的驱动程序.简单介绍WINCE5.0分层驱动的结构,将驱动程序使用Platform Builder编译进操作系统,最后使用动态加载方式提供给用户使用.【期刊名称】《杭州电子科技大学学报》【年(卷),期】2012(032)004【总页数】4页(P80-83)【关键词】微软嵌入式操作系统;集成电路间总线;驱动程序【作者】陈绍贵;王新华;郭淑琴【作者单位】浙江工业大学信息学院,浙江杭州310023;浙江科技学院信息学院,浙江杭州310023;浙江工业大学信息学院,浙江杭州310023【正文语种】中文【中图分类】TP316.70 引言随着信息技术的发展,以嵌入式智能设备为核心的后PC时代已经来临,嵌入式技术和产品得到了很大的发展,美国微软公司也发布了一系列嵌入式操作系统,并且取得了巨大的成功。
WinCE是微软公司设计的一个开放的、可裁剪的、32位的实时窗口操作系统,具有可靠性好、实时性高、内核体积小等特点;拥有良好的通信能力、出色的图形界面、灵活的电源管理,并内置多媒体功能、支持多种CPU,所以被广泛应用于移动应用产品、消费类电子产品和嵌入式智能设备的开发[1]。
为了使操作系统与硬件很好的连接在一起,编写硬件的驱动程序就显得至关重要了。
1 IIC总线协议IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。
所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
IIC总线是遵从串行传输协议的。
当总线开始工作的时候,即各位串行(一位接一位)发送,由时钟(clock)线指示读数据(data)线的时刻。
IIC总线数据由8位构成,传输数据前首先传输一个地址,地址由8位组成,前7位为设备地址,第8位为传输方向。
基于WINCE的某型车载记录仪CAN通信模块的设计张瑜洁【摘要】为实现与某型武器系统的无缝集成,文中提出了基于WINCE的某型车载记录仪CAN通信模块的研究与设计.该模块具有抗干扰能力较强的硬件结构,移植了WINCE嵌入式实时操作系统,并提出采用WINCE事件响应机制方法,实现CAN 模块高速、可靠通信.试验表明,该设计通用性好,鲁棒性高,已经成功应用于某型武器系统.【期刊名称】《弹箭与制导学报》【年(卷),期】2010(030)005【总页数】3页(P203-204,208)【关键词】CAN总线;面向对象;多线程;MFC【作者】张瑜洁【作者单位】中国兵器工业第203研究所,西安,710065【正文语种】中文【中图分类】TJ810.360 引言武器系统作战流程中采用CAN总线通信方式。
某型车载记录仪CAN通信模块用来实时、安全可靠的记录作战流程中的CAN信息,以便对武器系统的工作状态进行判断,为试验分析、检测维修提供依据。
1 CAN通信1.1 CAN总线的特点CAN(Controller Area NetWork)总线是一种有效支持分布式控制系统或实时控制的串行通信网络,是一个多主总线。
总线上的各节点都有权随时向其他节点发送信息,总线冲突时通过总线仲裁方式决定占用总线的节点。
它可以通过简单的协议,实现在电磁干扰环境下远距离实时数据的可靠传输。
1.2 CAN通信的报文格式1.2.1 帧格式有2种不同的帧格式,不同之处是标识符域的长度不同:含有11位标识符的帧称之为标准帧,含有29位标识符的帧为扩展帧[1]。
1.2.2 帧类型报文传输有4个不同类型的帧,分别是数据帧、远程帧、错误帧和过载帧[1]。
该武器系统作战流程的CAN总线通信采用扩展格式数据帧的报文传送方式。
2 CAN通信模块的设计2.1 CAN通信模块的硬件结构车载记录仪采用PC104/PC104+结构,硬件选用A3-CSD板卡。
A3-CSD具有2个光电隔离的非智能CAN Bus接口,内存模式访问。
WINCE的CAN总线设备驱动的设计与实现摘要本文围绕WinCE下外设驱动模型及驱动程序的设计,结合车辆实际应用需要,介绍了基于S3C6410和带SPI接口的CAN控制器MCP2515的CAN流接口驱动程序设计方法,并在实验室环境下进行了通信测试,验证了该驱动程序的正确性。
关键词CAN总线;WINCE操作系统;流接口驱动0引言在WINCE系统下,CAN的研究已经有很多,也取得了不错的应用效果,但是以S3C6410为嵌入式系统硬件核心,外围扩展CAN 控制器MCP2515,采用嵌入式操作系统WINCE的方案几乎没有,所以有研究的价值。
1 系统硬件结构Microchip公司生产的MCP2515芯片是一款带有两个SPI接口的CAN控制器,支持CAN技术规范V2.0A/B,能够接收和发送标准和扩展信息帧,同时具有接收滤波和信息管理的功能。
MCP2515芯片通过SPI接口与处理器进行数据通信,数据传输速率最高可达5Mb/s。
本设计的相关硬件部分为S3C6410和CAN 控制器MCP2515、CAN控制器MCP2515和CAN收发器MCP2551以及CAN 收发器MCP2551和CAN总线的物理连接。
MCP2515芯片作为处理器S3C6410的外围设备,可以将处理器S3C6410本身的SPI接口接在MCP2515芯片的SPI 接口上,MCP2515的TXCAN、RXCAN分别接MCP2551的TXD、RXD,MCP2551的CANH、CANL与CAN总线相连。
2 软件设计该设计采用的是wince流接口驱动。
流接口驱动程序的主要任务是为应用程序屏蔽了硬件细节,在应用程序看来硬件只不过是一个设备的文件,应用程序可以像操作普通文件一样对硬件设备进行操作。
对流驱动设备的开发主要包括2方面的工作,第一是编写流接口驱动程序,这是最复杂最关键的部分;第二是编写上层应用程序,此时的硬件设备就是一个普通文件,应用程序通过调用API函数即可操作硬件设备。
《基于CAN总线的嵌入式人机交互终端的设计与开发》篇一一、引言随着科技的飞速发展,嵌入式系统在各个领域的应用越来越广泛。
其中,基于CAN总线的嵌入式人机交互终端因其高效率、高可靠性及低成本等优点,在工业控制、智能交通、智能家居等领域得到了广泛应用。
本文将详细介绍基于CAN总线的嵌入式人机交互终端的设计与开发过程。
二、系统需求分析在系统需求分析阶段,我们需要明确人机交互终端的主要功能、性能指标及使用环境等要求。
具体包括:1. 功能需求:实现数据采集、处理、传输及显示等功能,同时支持用户界面操作。
2. 性能指标:要求系统具有高可靠性、低功耗、实时性等特点。
3. 使用环境:考虑终端设备在复杂环境下的适应能力,如温度、湿度、振动等因素。
三、硬件设计硬件设计是嵌入式人机交互终端的基础,主要包括主控制器、CAN总线接口、显示模块、输入模块等部分。
1. 主控制器:选用高性能、低功耗的微处理器,如ARM系列芯片。
2. CAN总线接口:选用具有高速传输、高可靠性的CAN控制器及物理层芯片。
3. 显示模块:根据需求选择合适的显示屏幕,如LCD、OLED等。
4. 输入模块:设计合理的按键或触摸屏等输入设备,以满足用户操作需求。
四、软件开发软件开发是嵌入式人机交互终端的核心部分,主要包括操作系统选择、系统架构设计、软件开发流程及优化等方面。
1. 操作系统选择:根据硬件平台及功能需求,选择合适的嵌入式操作系统,如Linux、RT-Thread等。
2. 系统架构设计:采用模块化设计思想,将系统划分为数据采集模块、数据处理模块、CAN通信模块、显示模块及用户界面模块等,以提高系统的可维护性和可扩展性。
3. 软件开发流程:包括需求分析、软件设计、编码实现、测试及调试等环节。
在编码实现阶段,采用C语言等嵌入式系统常用的编程语言进行开发。
4. 软件优化:针对系统性能及实时性要求,对软件进行优化,如任务调度、内存管理、代码优化等。
五、CAN总线通信设计CAN总线作为嵌入式人机交互终端的重要通信方式,其设计涉及到CAN总线协议的配置、数据传输及错误处理等方面。
WinCE的USB Camera流接口驱动开发引言WinCE5.0是一个32位、多任务、多线程的实时嵌入式操作系统。
USB Camera 以其良好的性能和低廉的价格得到广泛的应用,同时因其灵活、方便的特性,易于集成到嵌入式系统中。
通过采用USB Camera可以在WinCE5.0下方便地得到实时图像。
但是由于嵌入式硬件环境的多样性以及WinCE5.0对USB设备驱动开发只提供了一些底层支持,摄像头厂商尚未提供WinCE5.0下USB摄像头的驱动,因此开发出WinCE5.0下USB摄像头驱动具有实际的意义和价值。
本文正是针对这一情况,对WinCE5.0下USB设备驱动开发进行研究,并设计出基于流接口驱动模型的USB摄像头驱动程序。
现在已经开发出来的驱动适用于Zc030x PLUS这一系列的摄像头。
Samstmg 2410为实验的硬件平台。
1 WinCE5.0下USB总线驱动框架USB系统由USB主机、一个或多个USB设备和物理总线组成。
主机上又分两层:较高的包含USB设备驱动程序的软件层和主机控制器硬件层,也称作“适配层”。
主机的主要任务是控制对USB设备的双向数据传输。
物理总线是一组USB电缆,用来将控制器和外围设备连接起来。
WinCE5.0的USB系统软件由两层组成:USB设备驱动程序层和底层的由WinCE5.0实现的USB函数层。
USB设备驱动程序使用USB函数来建立与它们所控制设备的连接,并对这些设备进行配置和通信。
较低的USB函数层本身又由两部分组成——较高的通用串行总线驱动程序(USBD)模块和较低的主控制器驱动程序(HCD)模块。
HCD提供了抽象的主机控制器,且对主机控制器所见到的USB系统的数据传输进行抽象。
USBD提供一个抽象的设备,且对USBD客户和USB设备功能部件之间的数据传输进行抽象。
USB设备驱动程序使用USBD接口函数与外围设备进行通信。
IHV和USB设备制造商利用USBD提供的函数来实现USB设备的驱动程序。
基于WinCE的流接口驱动程序开发
张毅;王学思
【期刊名称】《工业控制计算机》
【年(卷),期】2008(21)6
【摘要】针对Windows CE嵌入式产品开发中流接口驱动程序的广泛应用,介绍了流接口驱动程序的工作机制及开发工具,最后在Cayman PXA270开发板上以LCD 显示屏的背光控制流接口驱动程序实例详细分析了Windows CE流接口驱动程序开发过程.
【总页数】2页(P47-48)
【作者】张毅;王学思
【作者单位】重庆邮电大学移动通信重点实验室,重庆,400065;重庆邮电大学移动通信重点实验室,重庆,400065
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于WinCE流接口模型的设备驱动设计 [J], 丁炜;吕梁;齐冬莲
2.基于WinCE的车载智能显示终端CAN流接口驱动开发 [J], 穆云丽;王立德;宋娟
3.基于WinCE的USB设备流接口驱动研究与实现 [J], 潘磊磊;王勇
4.基于ARM-WinCE力量健身器材流接口驱动程序开发 [J], 孙华强;陈婷;吴娟娟
5.WinCE6.0下的SSI协议流接口驱动程序实现 [J], 卓璐;陈富林;沈金龙;
因版权原因,仅展示原文概要,查看原文内容请购买。
WinCE中串口驱动及接口函数介绍在WinCE中,串口驱动实际上就是一个流设备驱动,具体架构如图:串口驱动本身分为MDD层和PDD层。
MDD层对上层的Device Manag er提供了标准的流设备驱动接口(COM_xxx),PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操作的函数指针,这些函数指针将指向PDD层中的串口操作函数。
DDSI是指MDD层与PDD层的接口,在串口驱动中实际上就是指HWOBJ,PDD层会传给MDD层一个HWOBJ结构的指针,这样MDD层就可以调用PDD层的函数来操作串口。
微软针对于串口驱动提供了参考源代码,可以在下面的目录下找到:”\WINCE600\ PUBLIC\COMMON\OAK\DRIVERS\SERIAL”。
串口驱动的结构也就是这样了,下面介绍相关的驱动中的接口。
1. HWOBJ结构在串口驱动中,HWOBJ结构中的函数实现了对串口硬件的操作,并在MD D层被调用。
可以说,该结构描述了串口设备的所有特性,先来介绍一下该结构,具体定义如下:typedef struct __HWOBJ{ULONG BindFlags;DWORD dwIntID;PHW_VTBL pFuncTbl;} HWOBJ, *PHWOBJ;BindFlags:用于控制MDD层如何来处理IST,具体值如下:THREAD_IN_PDD:MDD层不处理,中断在PDD层处理。
THREAD_AT_INIT:在驱动初始化的时候,MDD层启动IST。
THREAD_AT_OPEN:在驱动被Open的时候,MDD层启动IST。
dwInitID:系统的中断号pFuncTbl:指向一个PHW_VTBL结构,该结构中包含一个函数指针列表,这些函数指针指向串口硬件操作函数,用于操作串口。
view plaincopy to clipboardprint?1.typedef struct __HW_VTBL2.3. {4.5. PVOID (*HWInit)(ULONG Identifier, PVOID pMDDContext);6.7. ULONG (*HWDeinit)(PVOID pHead);8.9. BOOL (*HWOpen)(PVOID pHead);10.11. ULONG (*HWClose)(PVOID pHead);12.13. ULONG (*HWGetBytes)(PVOID pHead, PUCHAR pTarget, PULONG pBytes);14.15. PVOID (*HWGetRxStart)(PVOID pHead);16.17. INTERRUPT_TYPE (*HWGetIntrType)(PVOID pHead);18.19. VOID (*HWOtherIntrHandler)(PVOID pHead);20.21. VOID (*HWLineIntrHandler)(PVOID pHead);22.23. ULONG (*HWGetRxBufferSize)(PVOID pHead);24.25. VOID (*HWTxIntrHandler)(PVOID pHead);26.27. ULONG (*HWPutBytes)(PVOID pHead, PUCHAR pSrc, ULONG NumBytes, PULONG pBytesSent);28.29. BOOL (*HWPowerOff)(PVOID pHead);30.31. BOOL (*HWPowerOn)(PVOID pHead);32.33. VOID (*HWClearDTR)(PVOID pHead);34.35. VOID (*HWSetDTR)(PVOID pHead);36.37. VOID (*HWClearRTS)(PVOID pHead);38.39. VOID (*HWSetRTS)(PVOID pHead);40.41. BOOL (*HWEnableIR)(PVOID pHead, ULONG BaudRate);42.43. BOOL (*HWDisableIR)(PVOID pHead);44.45. VOID (*HWClearBreak)(PVOID pHead);46.47. VOID (*HWSetBreak)(PVOID pHead);48.49. BOOL (*HWXmitComChar)(PVOID pHead, UCHAR ComChar);50.51. ULONG (*HWGetStatus)(PVOID pHead, LPCOMSTAT lpStat);52.53. VOID (*HWReset)(PVOID pHead);54.55. VOID (*HWGetModemStatus)(PVOID pHead, PULONG pModemStatus);56.57. VOID (*HWGetCommProperties)(PVOID pHead, LPCOMMPROP pCommProp);58.59. VOID (*HWPurgeComm)(PVOID pHead, DWORD fdwAction);60.61. BOOL (*HWSetDCB)(PVOID pHead, LPDCB pDCB);62.63. BOOL (*HWSetCommTimeouts)(PVOID pHead, LPCOMMTIMEOUTS lpCommTO);64.65. BOOL (*HWIoctl)(PVOID pHead, DWORD dwCode,PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut);66.67.} HW_VTBL, *PHW_VTBL;这些函数将在PDD层实现,用于实际的串口硬件操作。