Qt
Windows系统下Qt获取U盘设备实例路径的方法
zhou7jun 发表于2025-03-17 浏览73 评论0
#ifdef Q_OS_WIN #include <windows.h> #include <setupapi.h> #include <cfgmgr32.h> #include <devguid.h> #pragma comment(lib, "setupapi.lib") QStringList getUsbPhysicalPaths() { QStringList usbPaths; HDEVINFO hDevInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_DISK, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); if (hDevInfo == INVALID_HANDLE_VALUE) return usbPaths; SP_DEVICE_INTERFACE_DATA devInterfaceData = {0}; devInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); for (DWORD i = 0; SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &GUID_DEVINTERFACE_DISK, i, &devInterfaceData); i++) { DWORD requiredSize = 0; SetupDiGetDeviceInterfaceDetail(hDevInfo, &devInterfaceData, NULL, 0, &requiredSize, NULL); PSP_DEVICE_INTERFACE_DETAIL_DATA_W pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA_W)malloc(requiredSize); pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W); SP_DEVINFO_DATA devInfoData = {0}; devInfoData.cbSize = sizeof(SP_DEVINFO_DATA); if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &devInterfaceData, pDetail, requiredSize, NULL, &devInfoData)) { // 获取设备实例路径 wchar_t instanceId[MAX_DEVICE_ID_LEN]; CM_Get_Device_IDW(devInfoData.DevInst, instanceId, MAX_DEVICE_ID_LEN, 0); QString path = QString::fromWCharArray(instanceId); if (path.contains("USBSTOR", Qt::CaseInsensitive)) { usbPaths.append(QString::fromWCharArray(pDetail->DevicePath)); } } free(pDetail); } SetupDiDestroyDeviceInfoList(hDevInfo); return usbPaths; } #endif
其他
通过http请求获取当前公网IP
zhou7jun 发表于2025-03-17 浏览45 评论0
Qt
Ubuntu下编译Qt遇到的问题
zhou7jun 发表于2024-12-25 浏览331 评论0
1. 安装完QtCreator打不开
sudo apt install build-essential sudo apt install libxcb-xinerama0
2. GL/gl.h: No such file or directory