Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.220.66.151] |
|
Сообщ.
#1
,
|
|
|
Цитата Hryak @ Добрый день, не могли бы вы и мне кое-что подсказать в подобном вопросе? Я пытаюсь получить номер порта устройств USB класса, подключенных к ПК. Код у меня такой(приведу лишь часть кода, касающуюся вопроса, что бы не нагромождать): #include <windows.h> #include <setupapi.h> #include <string.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #pragma comment(lib,"setupapi.lib") #pragma comment(lib,"advapi32.lib") #pragma comment(lib,"user32.lib") #pragma once void GetPORTnum(){ SP_DEVINFO_DATA DeviceInfoData; CHAR devicePortBuf[255] = {'\0'}; DWORD dwType = 0; DWORD dwDataSize = 255; PnPHandle_USB = SetupDiGetClassDevs(&GUID_USB_DEVICE, 0, 0, DIGCF_PRESENT); DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); int ch = 0; int k = 0; // берем каждое USB устройство из списка for (ch = 0; SetupDiEnumDeviceInfo(PnPHandle_USB, k, &DeviceInfoData); k++) { HKEY hKey = SetupDiOpenDevRegKey(PnPHandle_USB, &DeviceInfoData, DICS_FLAG_GLOBAL, NULL, DIREG_DEV, KEY_QUERY_VALUE); if (hKey == INVALID_HANDLE_VALUE) { error = GetLastError(); break; } int result = RegQueryValueEx(hKey, L"PortName", 0, &dwType, (LPBYTE)&devicePortBuf, &dwDataSize); if (result != ERROR_SUCCESS) { MessageBox::Show("Can not read registry value PortName for device "); } ch++; for (const char* p = devicePortBuf; *p; p += strlen(p) + 1) { cbTest->Items->Add(Convert::ToString(p)); } RegCloseKey(hKey); } } Вываливается в сообщение "Can not read registry value PortName for device" ну и соответственно номера портов я получить не могу. Подскажите, что я делаю не так? Или может какой-то другой способ получать номер порта, к которому подключено устройство из списка (SetupDiEnumDeviceInfo(PnPHandle_USB, k, &DeviceInfoData) сможете предложить? Т.к. возможно способ получения порта через реестр не всегда будет корректен и надёжен (вдруг какие-то ограничения доступа будут мешать и т.п.). В общем жду любой помощи! Заранее спасибо! Эта тема была разделена из темы "RegQueryValueEx" |
Сообщ.
#2
,
|
|
|
что там GetLastError возвращает?
|