Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Получение статуса порта USB |
Автор: ZIFIR 5.11.2012, 00:21 | ||
Получаю имя хост-контроллера, имя корневого хаба, количество портов. Дальше пытаюсь получить статус порта
ConnectionStatus в структуре NodeConnInfo опред. так: BYTE ConnectionStatus[4]; DeviceConnected, NoDeviceConnected ... из перечисления (от 0 до 10) NodeConnInfo.ConnectionStatus[1] всегда равно 12, поэтому вышеуказанные условия проходят мимо. |
Автор: Dem_max 5.11.2012, 05:24 | ||
Держи весь код 100% рабочий, не пугайся что он большой, для корректной работы такой и нужен.
|
Автор: NurMKM 28.2.2013, 20:02 | ||
Добрый день. прошу сильно не пинать. при запуске вашего кода выходить сообщение fatal error C1083: Не удается открыть файл включение: hidsdi.h: No such file or directory Может я проект не правильно создаю, или же надо где то подключить библиотеку. Проект создавал: Создать-> Visual C++ -> Win32 -> Проект Win32. Внутри создавал файл с расширением срр. В папке C:\Program Files\Microsoft Visual Studio 10.0\VC\include #include "hidsdi.h" #include "hidpi.h" #include "usbiodef.h" #include "usbioctl.h" не одно из них. |
Автор: Dem_max 1.3.2013, 06:13 |
Эти все файлы находятся в Windows Driver Development Kit (DDK) Или вот держи подкрепляю. |
Автор: NurMKM 1.3.2013, 07:46 | ||
Добрый день, Dem_max. Я до этого системными программированием не занимался. Но пришло время заниматься. И мне сказали наши безопасники что при вставке флешки на компьютер, записывался типа как лог. Там должный быть VID PID и.т.д. Как выше написал создал проект создавал Visual C++ -> Win32 Console Application Application type: Console application(может тут надо выбрать DLL) Далее создаю внутри отдельно файл usb.cpp и вставляю ваш код и запускаю. Думаю мне не хватает библиотеки. 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\hidsdi.h(32): error C2146: syntax error : missing ';' before identifier 'NTSTATUS' 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\hidsdi.h(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\hidsdi.h(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\hidusage.h(26): error C2146: syntax error : missing ';' before identifier 'USAGE' 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\hidusage.h(26): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int Заранее спасибо. |
Автор: NurMKM 1.3.2013, 08:44 | ||||||
Добавил еще библиотеки : #include <windows.h> #include <stdio.h> #include <tchar.h> #include <setupapi.h> Вообще надо эти библиотеки(иметься виду все)? Теперь другие ошибки вышли:
Для каждого версии Microsoft Visual C++, своя должно быть библиотека или же подойдут из старых версий так как в начале пишет что я пользуюсь устаревшим библиотекой. У меня на работе устаовлено Microsoft Visual C++ 2010 Express, a дома - ultimate. Библиотеки ваши. Заранее спасибо. |
Автор: Dem_max 1.3.2013, 08:52 |
Если нужно чтобы программа висела фоном, то нужно создавать Win console application, дальше в нем создавать цикл сообщений и принимать сообщение WM_DEVICECHANGE Ссылка http://forum.sources.ru/index.php?showtopic=351895 http://forum.sources.ru/index.php?showtopic=351430 вот еще примеры |
Автор: Dem_max 1.3.2013, 08:53 | ||
Я библиотеки не давал, так как они у меня в формате COFF, а тебе нужны в OMF |
Автор: NurMKM 1.3.2013, 09:00 | ||||
Спасибо за помощь. Но чем отличие и как можно преобразовать от COFF в OMF? Или же где можно найти эти библиотеки? Заранее спасибо. |
Автор: Dem_max 1.3.2013, 09:12 |
Лучше скачать Windows Driver Development Kit (DDK) и там взять |
Автор: NurMKM 1.3.2013, 09:13 | ||
Уже качаю. Только WDK весит 1 гб. Спасибо. |