{A}
{S0}简介
本文介绍如何创建Windows CE的串行驱动程序。这将添加一个新的串行(COM)端口设备,允许应用程序使用相同的方式使用标准的硬件端口的端口。新的虚拟端口提供硬件端口相同的接口。背景
创建一个虚拟端口的目的是为了让应用程序(如TomTom和世)从GPS接收天线连接到硬件串行端口(COM1),并保存接收到的GPS信号播放需要时,数据模拟实际驾驶。使用代码
驱动程序是一个DLL,出口以下功能:COM_InitCOM_DeinitCOM_OpenCOM_CloseCOM_ReadCOM_WriteCOM_SeekCOM_IOControlCOM_PowerDownCOM_PowerUp
DEMODLL_API DWORD COM_Init(
LPCTSTR pContext, LPCVOID lpvBusContext );
DEMODLL_API BOOL COM_Deinit(
DWORD hDeviceContext );
DEMODLL_API DWORD COM_Open(
DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode );
DEMODLL_API BOOL COM_Close(
DWORD hOpenContext );
DEMODLL_API BOOL COM_IOControl(
DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn,
PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut );
DEMODLL_API void COM_PowerUp(
DWORD hDeviceContext );
DEMODLL_API void COM_PowerDown(
DWORD hDeviceContext );
DEMODLL_API DWORD COM_Read(
DWORD hOpenContext, LPVOID pBuffer, DWORD Count );
DEMODLL_API DWORD COM_Write(
DWORD hOpenContext, LPCVOID pBuffer, DWORD Count );
DEMODLL_API DWORD COM_Seek(
DWORD hOpenContext, long Amount, WORD Type );
在当前采样驱动程序,我们新的串行端口映射到硬件端口(管理端口),因此新的端口上的所有操作都将执行相同的操作上的管理端口。我们也打开日志文件,我们写这个日志的所有执行的操作。
另一个重要组成部分,是如何在Pocket PC设备上安装的驱动程序。 DLL文件必须放置在\ Windows目录,注册表必须更新以下信息:{C}
在这个例子中,我们创建了一个虚拟端口COM6,但是这可以是任何数字从1到9。 ManagePort条目不需要由操作系统创建一个串行端口。这个项目是用我们的演示驱动程序定义的硬件端口号映射到。
安装驱动程序的最简单方法是创建一个CAB文件,将复制DemoDriver.dll的文件到\ Windows目录,并更新所有的注册表设置。我们提供了一个范例。inf文件与CabWiz用于创建一个CAB文件。[Version]
Signature = "$Windows NT$"
Provider = "Code Project"
CESignature = "$Windows CE$"
[CEStrings]
AppName = "DemoDriver"
InstallDir = %CE2%
[Strings]
reg_path = Drivers\Builtin\Serial6
[DefaultInstall]
CopyFiles = Dllfiles
Addreg = Regkeys
[SourceDisksNames]
1 =, "Common Files",, .
[SourceDisksFiles]
DemoDriver.dll = 1
[DestinationDirs]
Dllfiles = 0, %CE2%
[Dllfiles]
"DemoDriver.dll"
[Regkeys]
HKLM,%reg_path%,Dll,0x00000000,DemoDriver.dll
HKLM,%reg_path%,Prefix,0x00000000,COM
HKLM,%reg_path%,FriendlyName,0x00000000,Demo Driver
HKLM,%reg_path%,Index,0x00010001,6
HKLM,%reg_path%,Order,0x00010001,2
HKLM,%reg_path%,ManagePort,0x00010001,1
CAB文件,我们把它复制到设备,然后单击安装。软复位是必要的OS开始运作的驱动程序。
为了使WM5的设备驱动程序的工作,我们已经签署的DLL。在这个例子中,我们使用本文提供的方法:(感谢作者)。我们的例子包括自签名证书MyCert.pfx和驾驶室\ PreXML_MyCert.xml文件,我们提供CabWiz创建CAB文件的同时。
签署的驱动程序,我们称之为:signtool.exe sign /f MyCert.pfx DemoDriver.dll
要创建一个CAB文件,我们运行:
历史2006年3月7日 - 第一个版本。2006年3月27日, - 增加了WM5的支持代码签名。CabWiz.exe driver.inf /prexml PreXML_MyCert.xml