美食家大橙子 发表于 2024-2-16 05:09:55

Windows下获取设备管理器列表信息-setupAPI

背景及问题:

在与硬件打交道时,经常需要知道当前设备连接的硬件信息,以便连接正确的硬件,比如串口通讯查询连接的硬件及端口,一般手工的方式就是去设备管理器查看相应的信息,应用程序如何读取这一部分信息呢,Windows下的SetupAPI系列就可以解决这个问题示例程序

#include#include#include#include#pragma comment(lib, "setupapi.lib")int main(){        //set chinese character        std::locale::global(std::locale(""));        //The SetupDiGetClassDevs function returns a handle to a device   //information set that contains requested device information   //elements for a local computer.        HDEVINFO hdevinfo = SetupDiGetClassDevs(NULL,                NULL, NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES);        if (hdevinfo != INVALID_HANDLE_VALUE)        {                DWORD MemberIndex = 0;                SP_DEVINFO_DATA sp_devinfo_data;                ZeroMemory(&sp_devinfo_data, sizeof(sp_devinfo_data));                sp_devinfo_data.cbSize = sizeof(sp_devinfo_data);      //The SetupDiEnumDeviceInfo function returns a SP_DEVINFO_DATA         //structure that specifies a device information element in a         //device information set.                while (SetupDiEnumDeviceInfo(hdevinfo, MemberIndex, &sp_devinfo_data))                {                        TCHAR PropertyBuffer;              //The SetupDiGetDeviceRegistryProperty function retrieves                        //a specified Plug and Play device property.                            if (SetupDiGetDeviceRegistryProperty(hdevinfo,                                &sp_devinfo_data,                                SPDRP_DEVICEDESC,                                NULL,                                (PBYTE)&PropertyBuffer,                                sizeof(PropertyBuffer),                                NULL))                        {                                std::wcout
页: [1]
查看完整版本: Windows下获取设备管理器列表信息-setupAPI