WindowsCE6.0注册表应用示例

Windows CE 6.0有4个基本的注册表键值, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS。其它的都是这4个注册表的子键。

阳谷ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

我们以一个内建的串口驱动为例,它在注册表文件Platform.reg中的描述如下: 其中Prefix 和 Dll项是必不可少的,Prefix代表设备文件名前缀, 与Index合用表示该设备的名称,该注册表子键的设备名称就是"COM1:",该名称可以用于CreateFile调用。Dll则是动态链接库名称。 Index为设备序号。Flags为1表示系统启动时不加载,需要应用程序自己加载,为0表示该驱动在系统启动时加载。

 
 
 
  1. [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]  
  2.               "Prefix"="COM"  
  3.               "Dll"="$(_TGTPLAT_PFX)_serial.dll"  
  4.  
  5.               "Flags"=dword:0  
  6.               "Index"=dword:1 

在%WinCE Dir%Public%Common%OAK%INC%目录下,文件cregedit.h中,定义了一个类CRegistryEdit来封装了注册表的操作。许多的硬件驱动,比如串口类,也继承了CRegistryEdit类。

还有一种方法是利用windows CE提供的API进行注册表项的操作。

方法一: 利用系统提供的注册表类CRegistryEdit

类的定义在文件regedit.h中。   

在构建函数中,会取得当前注册表子键的HANDLE句柄。有3个构造函数,第一个是用全路径,调用hKey = OpenDeviceKey(TEXT("HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\Serial"))构造, 第二个是如果已知其父注册表子键,调用RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT("Drivers\\BuiltIn\\Serial"), 0,0,&hKey). 第三种方法是用RegCreateKeyEx().

析构函数中,调用RegCloseKey(hKey)关闭掉对注册表子键的引用。

读取注册表项可以使用GetRegValue方法,写入注册表项使用RegSetValueEx方法。其方法的实现也是通过windows CE API,具体可以参照下一个Section。

RegGetList和RegSetList方法提供了对类型为REG_MULTI_SZ和DWORD的VALUE的读写操作。

其它类方法GetWindowInfo, GetIsrInfo,GetPciInfo获取注册表更多的信息。

方法二: 利用windows CE API

为了获取一个注册表键值,先要调用RegOpenKeyEx。以上面内建串口驱动为例,RegOpenKey( HKEY_LOCAL_MACHINE, TEXT("Drivers\\BuiltIn\\Serial"), 0, 0, &hKey ), 其中hKey就是我们获取的该注册表子键的HANDLE句柄。接下来对注册表子键的操作就是通过hKey来实现.

有了hKey, 就可以对注册表子键的各个内容进行读写操作。如果要读去子键的Prefix, 调用函数RegQueryValueEx(hKey, TEXT("Prefix"), NULL, &lpType, &lpData, &lpcbData), lpType, lpData为Prefix返回类型和值,该例中,lpType = REG_SZ, lpData = TEXT("COM"). lpcbData当调用时,修饰限制lpData的size in bytes,返回时,为lpData返回值的SIZE。

对应于读操作,写操作是一个相反的过程,RegSetValueEx(hKey, TEXT("Prefix"), NULL, REG_SZ, PBYTE(TEXT("TST")), wcslen(TEXT("TST"))*2). 其中要写入的项为Prefix项,类型为REG_SZ, 值为TEXT("TST"), 最后一个参数为写入值得SIZE in bytes. 注意第二个参数,如果注册表中存在该项,则改写它的值。如果没有,则新建一个注册表项。

某些情况下,我们需要删除一个注册表项,只需调用RegDeleteKey(hKey, TEXT("Index"))就可以删除Index注册表项。

要关闭一个注册表子键,只需要调用RegCloseKey(hKey)就可以完成。

关于注册表有很多更加深入的使用,如RegEnumValue. 更多有关注册表项,可以查看MSDN手册。

分享名称:WindowsCE6.0注册表应用示例
文章URL:http://www.shufengxianlan.com/qtweb/news16/524016.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联