Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
 Аватар для True_LyaLya
24 / 24 / 16
Регистрация: 23.01.2013
Сообщений: 129

Получение списка usb устройств

30.01.2014, 18:51. Показов 6218. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При компиляции выдает кучу ошибок о том что не верные символы. Аналогичный код на более младшей версии работает.
(Стоит Builder 2010)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 GUID GUID_USB_DEVICE={0x36FC9E60,0xC465,0x11CF,0x80,0x56,0x44,0x45,0x53,0x54,0x00,0x00};
  HDEVINFO LISTDRIVE = NULL;
  SP_DEVINFO_DATA DATAINFO;
  LPTSTR buffer = NULL;
  DWORD  buffersize = 0;
 
  LISTDRIVE = SetupDiGetClassDevs
  (&GUID_USB_DEVICE, // GUID
   0,
   0,
   DIGCF_PRESENT // список устройств, которые в настоящее время присутствуют в системе
   );
   int ch = 0;
   if (LISTDRIVE == INVALID_HANDLE_VALUE)
  {
    ShowMessage("Список устройств НЕ получен.");
    return;
  }
  else
  {
   ShowMessage("Список устройств Получен.");
    return;
  }
  DATAINFO.cbSize = sizeof(SP_DEVINFO_DATA);
 
  // берем каждое устройство из списка
  for(ch=0; SetupDiEnumDeviceInfo(LISTDRIVE, k, &DATAINFO); k++)
  {
    // и читаем его свойства в буфер
      while (!SetupDiGetDeviceRegistryProperty(
      LISTDRIVE,
      &DATAINFO,
      SPDRP_COMPATIBLEIDS,
      NULL,
      buffer,
      buffersize,
      &buffersize))
      {
        if(GetLastError() == ERROR_INSUFFICIENT_BUFFER)
            {
              LocalFree(buffer);
              buffer = (char*)LocalAlloc(LPTR,buffersize*2);
            }
        else break;
      }
     ch++;
     // Выводим в MEMO результат
     Form1->Memo1->Lines->Add("USB-"+IntToStr(ch)+" ID: "+ String(buffer)+"\n");
  }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2014, 18:51
Ответы с готовыми решениями:

Остановка USB устройств
Здраствуйте. Стоит задача: необходимо написать программу на С++, которая позволяет отследить все процессы и все что с ними связано, которые...

Как можно читать состояние usb устройств из с++ ?
Как можно читать состояние usb устройств (флешка, клава, мышка и т. д. любого) из с++ ?

Получение списка подклюнных устройств к USB
Подскажите пожалуйста, как можно получить список подключенных к USB Flash-накопителей?

4
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.01.2014, 20:36
Цитата Сообщение от True_LyaLya Посмотреть сообщение
выдает кучу ошибок
Приведи ошибки ....

Добавлено через 14 минут
Код проблемный.

Посмотри темы:

Как в потоке организовать открытие флешки
Сравнение списков

Кажется там где-то было.
0
 Аватар для True_LyaLya
24 / 24 / 16
Регистрация: 23.01.2013
Сообщений: 129
30.01.2014, 20:41  [ТС]
Ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Compiling Project1.cbproj (Debug configuration)
[BCC32 Error] Unit1.cpp(28): E2451 Undefined symbol 'HDEVINFO'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(28): E2379 Statement missing ;
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(29): E2451 Undefined symbol 'SP_DEVINFO_DATA'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(29): E2379 Statement missing ;
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(33): E2451 Undefined symbol 'LISTDRIVE'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(34): E2268 Call to undefined function 'SetupDiGetClassDevs'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(38): E2451 Undefined symbol 'DIGCF_PRESENT'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Warning] Unit1.cpp(50): W8066 Unreachable code
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(50): E2108 Improper use of typedef 'DATAINFO'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(50): E2109 Not an allowed type
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(53): E2268 Call to undefined function 'SetupDiEnumDeviceInfo'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(53): E2451 Undefined symbol 'k'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(53): E2108 Improper use of typedef 'DATAINFO'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(56): E2268 Call to undefined function 'SetupDiGetDeviceRegistryProperty'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(58): E2108 Improper use of typedef 'DATAINFO'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(59): E2451 Undefined symbol 'SPDRP_COMPATIBLEIDS'
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Warning] Unit1.cpp(76): W8004 'GUID_USB_DEVICE' is assigned a value that is never used
  Full parser context
    Unit1.cpp(26): parsing: void _fastcall TForm1::Button1Click(TObject *)

На всякий случай исходник
Вложения
Тип файла: rar лабораторная 3.rar (3.35 Мб, 85 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
30.01.2014, 20:46
Лучший ответ Сообщение было отмечено True_LyaLya как решение

Решение

C++
1
#include <SetupAPI.h>
, и подавляющего числа ошибок - как не бывало. Остальные уже по ходу доработаешь, там неизвестные переменные...
1
 Аватар для True_LyaLya
24 / 24 / 16
Регистрация: 23.01.2013
Сообщений: 129
30.01.2014, 21:21  [ТС]
Заработало, но почему то не выводит в memo. При запуске отрабатывает сообщение о получении списка, а потом тишина.

C++
1
Thread Exit: Thread ID: 7576. Process Project1.exe (6528)
Добавлено через 14 минут
Проблема решена. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.01.2014, 21:21
Помогаю со студенческими работами здесь

Получение списка PCI устройств из DosBox
Есть задача — получение списка PCI устройств. Интересует следующее — возможно ли сделать это в 16-битном досе или если дос перевести в...

Получение списка подключеных Bluetooth-устройств и передача/прием файлов
скачал wireles framework.как с ним работать.нужно получить список подключеных блютуз-устройств и передать или получить какойто файл на...

Переодически перестают работать USB порты на материнке после подключения устройств к USB корпуса
Собственно проблема почти описана в заголовке. Довольно странная фигня. К материнке подключены клава и мышь. Происходит такое (не...

USB 2.0 и USB 3.0 - питание устройств
Извиняюсь, если не тот раздел форума. Выбрал этот, так как есть что-то общее с вопросом и люди тут присутствуют. 3.0 имеет питание...

"Устройство USB не опознано. Одно из подключенных к этому компьютеру USB-устройств работает неправильно и Windows не удается опознать его..."
У меня такая проблема: глючит USB. Обьясняю суть - на компьютере два разъема для USB, оба рабочие, к одному подключена мышь, ко второму -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru