织梦CMS - 轻松建站从此开始!

罗索

如何得到设备的GUID?

落鹤生 发布于 2011-02-10 17:23 点击:次 
我们在用setupapi的时候,总是要用到设备的GUID,但是如果得到GUID确实费率不少功夫。通过这一段的摸索,总结了一下的方法。
TAG:

我们在用setupapi的时候,总是要用到设备的GUID,但是如果得到GUID确实费率不少功夫。通过这一段的摸索,总结了一下的方法。

方法一:

通过注册表的相关键值来找到相应设备的GUID。

找到下面的键值,我们可以看到里面有很多的自建。其名字就是设备的guid。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class

如下就是串口的GUID

{4D36E978-E325-11CE-BFC1-08002BE10318}

Modem的GUID如下:

{4D36E96D-E325-11CE-BFC1-08002BE10318}

如何应用到setup系列的函数里面去呢?我们只需转换下结构就可以了

Modem的GUID转换成如下的结构。

GUID   ClassGuid   =   {0x4D36E96D,   0xE325,   0x11CE,   0xBF,   0xC1,   0x08,   0x00,   0x2B,   0xE1,   0x03,   0x18};  

同理串口的GUID如下:

GUID   ClassGuid   =   {0x4D36E978,   0xE325,   0x11CE,   0xBF,   0xC1,   0x08,   0x00,   0x2B,   0xE1,   0x03,   0x18};  

然后就可以用如下函数,来建立相关的设备信息了。

       hDevInfoSetClass   =   SetupDiGetClassDevs(&ClassGuid,  

              NULL,  

              NULL,    

              DIGCF_PRESENT   |DIGCF_PROFILE  

              );  

 

方法二:

直接利用文件#include <devguid.h>里面的设备的类型定义。

文件devguid.h里面定义了相关的设备的类型GUID,如下:

 

DEFINE_GUID( GUID_DEVCLASS_1394,           0x6bdd1fc1L, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f );

DEFINE_GUID( GUID_DEVCLASS_ADAPTER,        0x4d36e964L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );

DEFINE_GUID( GUID_DEVCLASS_CDROM,          0x4d36e965L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );

….

GUID  ClassGuid = GUID_DEVCLASS_CDROM;// 光驱的GUID

 

注意:如果出现编译错误,请包含以下同文件

#include <objbase.h>  
#include <initguid.h>

#include <devguid.h>

(renjwjx)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201102/10852.html]
本文出处:CSDN博客 作者:renjwjx
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容