SetupDiGetClassDevs函数详解
来源:互联网 发布:澳洲工作 知乎 编辑:程序博客网 时间:2024/06/05 19:30
SetupDiGetClassDevs函数
SetupDiGetClassDevs 函数返回一个包含本机上所有被请求的设备信息的设备信息集句柄。
语法
//C++:HDEVINFO SetupDiGetClassDevs( _In_opt_ const GUID *ClassGuid, _In_opt_ PCTSTR Enumerator, _In_opt_ HWND hwndParent, _In_ DWORD Flags);
参数
ClassGuid[输入参数,可选的]
一个指向GUID的指针,此GUID可标识一个设备安装类或一个设备接口类。这个指针是可选的,并且可以为NULL。更多关于ClassGuid赋值问题,请参考备注部分。
Enumerator[输入参数,可选的]
一个指向以空字符结束的字符串的指针,指定了:
即插即用设备枚举树的ID,此ID既可以是全局唯一标识符(GUID)也可以是符号名称。比如:“PCI”可以用于指定PCI的PnP值,符号名称则包括像“USB”,“PCMCIA”和“SCSI”这样的Pnp值。
一个PnP设备句柄ID。当指定了一个PnP设备句柄ID时,DIGCF_DEVICEINTERFACE必须在Flag参数上被设置。
hwndParent[输入参数,可选的]
用于与在设备信息集中安装设备实例相关联的用户界面的顶级窗口句柄。该句柄是可选的,并且可以为NULL。
Flags[输入参数]
Flags是一个DWORD类型的变量,通过此参数来过滤指定的设备信息集中的设备。此参数可以是以下标志位中的一个或多个的按位或组合,更多有关标志位组合的信息,请参考备注部分。
DIGCF_ALLCLASSES
返回所有已安装设备的列表或所有设备接口类。
DIGCF_DEVICEINTERFACE
返回支持指定设备接口类的设备。如果Enumerators参数制定了设备的实例ID,那么必须在Flags参数中设置此标志位。
DIGCF_DEFAULT
对于指定的设备接口类,只返回与系统默认设备接口相关联的设备(如果已设置的话)。
DIGCF_PRESENT
只返回当前系统中存在的(已连接)设备。
DIGCF_PROFILE
只返回当前硬件列表中的一部分设备。
返回值
如果调用成功,SetupDiGetClassDevs将返回一个设备信息集的句柄,该句柄包含了与所提供参数所匹配的所有设备。如果调用失败,函数返回INVALID_HANDLE_VALUE。要进一步获取错误信息,请调用GetLastError。
备注
当调用完此函数并处理完相应数据后,必须调用SetupDiDestroyDeviceInfoList函。
调用SetupDiGetClassDevsEx来检索远程计算机上的设备。
设备安装类控制选项
使用以下过滤选项来控制SetupDiGetClassDevs是否返回所有设备:
- 要返回所有设备,设置标志位DIGCF_ALLCLASSES,并将ClassGuid设置为NULL。
- 如果只是返回指定设备,不要动DIGCF_ALLCLASSES标志位,而是应该使用CLassGuid提供的Guid。
此外,还可以通过下面的组合来进一步控制设备的过滤条件:
- 设置DIGCF_PRESENT标志位来返回系统中当前已连接设备。
- 设置DIGCF_PROFILE标志位来返回当前硬件列表配置文件中的设备。
- 要想返回一个PnP枚举设备,使用Enumerator参数,并提供其GUID或符号名称。如果Enumerator为NULL,SetupDiGetClassDevs返回所有PnP枚举设备。
设备接口类控制选项
使用以下过滤选项来控制SetupDiGetClassDevs是否返回支持任何设备接口类的设备或仅返回支持指定设备接口类的设备:
- 要返回支持任何类接口的设备,请同时设置DIGCF_DEVICEINTERFACE和DIGCF_ALLCLASSES标志位,并将ClassGuid设置为NULL。该函数将设备信息设置为表示这种设备的设备信息元素,然后向设备信息元素添加包含设备支持的所有设备接口的设备接口列表。 -
- SetupDiGetClassDevs函数详解
- SetupDiGetClassDevs函数 ,驱动开发
- SetupDiGetClassDevs
- SetupDiGetClassDevs
- 【VC】 关于SetupDiGetClassDevs函数的使用。
- 介绍一个梅举设备信息的DDK函数:SetupDiGetClassDevs
- SetupDiGetClassDevs介绍
- SetupDiGetClassDevs-使用SetupDi系列函数进行设备信息的管理
- 用SetupDiGetClassDevs枚举设备
- 用SetupDiGetClassDevs枚举设备
- 用SetupDiGetClassDevs枚举设备
- SetupDiGetClassDevs SetupDiEnumDeviceInfo SetupDiGetDeviceRegistryProperty 枚举设备手机
- 函数详解
- API函数详解:CreateSemaphore函数
- sql函数 group_concat函数详解
- 仿函数 ( 函数对象 ) 详解
- send函数&recv函数详解
- scan函数函数用法详解
- VSCode快捷键介绍
- boost noncopyable实现禁止类拷贝
- Android事件分发机制
- 【OpenGL】OpenGL系列——02坐标转换
- checkbox表格全选
- SetupDiGetClassDevs函数详解
- LeetCode算法题目:Same Tree(两种方法解决)
- 液晶显示屏的坏点
- 117. Populating Next Right Pointers in Each Node II
- 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(04) 索引使用的注意事项
- Mysql中limit的用法
- Java多线程探究-死锁例子
- kubenetes源码分析之DNS(三)
- 像考试时前面的10几道单选题的实现(布局文件)