褴褛的帆

导航

在C中提供上层Flash对底层连接CPU读卡器进行读写的接口

这两天在熟悉项目文档和代码,争取能早日接手。

 

 

在get_all_device函数中遇到了个名为 HDEVINFO 的宏,发现在SetupAPI.h 中有如下定义typedef PVOID HDEVINFO; ,在之前还有 *typedef void PVOID;的定义,才知道原来绕这么远HDEVINFO就是个void*罢了。

 

接下来遇到了这个函数:SetupDiGetClassDevsAHDEVINFO就是用来接这个函数的返回值。函数原型为(VS2013下 SetupAPI.h 中):

 

 _Check_return_
    WINSETUPAPI
    HDEVINFO
    WINAPI
    SetupDiGetClassDevsA(
    _In_opt_ CONST GUID *ClassGuid,
    _In_opt_ PCSTR Enumerator,
    _In_opt_ HWND hwndParent,
    _In_ DWORD Flags
    );

 

其中 
PGUID ClassGuid 
在创建设备列表的时候提供一个指向GUID的指针。如果设定了标志DIGCF_ALLCLASSES,则这个参数可以忽略,且列表结果中包括所有已经安装的设备类别。 
PCTSTR Enumerator 
提供包含设备实例的枚举注册表分支下的键名,可以通过它获取设备信息。如果这个参数没有指定,则要从整个枚举树中获取所有设备实例的设备信息。 
HWNDhwndParent 
提供顶级窗口的句柄,所有用户接口可以使用它来与成员联系。 
DWORDFlags 
提供在设备信息结构中使用的控制选项。可以是以下数值: 
DIGCF_PRESENT 只返回当前存在的设备。 
- DIGCF_ALLCLASSES 返回所有已安装的设备。如果这个标志设置了,ClassGuid参数将被忽略。 
- DIGCF_PROFILE 只返回当前硬件配置文件中的设备。 
- DIGCF_INTERFACEDEVICE 返回所有支持的设备。 
- DIGCF_DEFAULT 只返回与系统默认设备相关的设备。

 

HDEVINFO返回值 
如果函数运行成功,返回设备信息结构的句柄,该结构包含与指定参数匹配的所有已安装设备。如果失败,则返回INVALID_HANDLE_VALUE。调用GetLastError可以获得更多错误信息。

 

另:使用此函数,需要包含头文件SetupAPI.h。 
此外,在project setting中的link页面需要添加setupapi.lib

 

posted on 2014-10-16 15:55  褴褛的帆  阅读(191)  评论(0)    收藏  举报