Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: setupapi.dll  (Прочитано 6635 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mustelus
Участник

by
Offline Offline

« : 18-03-2010 10:19 » 

Привет всем... У меня такая проблема, как-то недавно делал драйвер на внешнее устройство (по USB BUS), из приложения верхнего уровня, естественно, понадобилось вызывать WinAPI такие как CreateFile, ReadFile и т.д.
При компиляции возникали ошибки линковки, связанные с вызовами етих API.
Все дело оказалось вот в этих функциях (их нужно как-то использовать)

Код:
[DllImport("setupapi.dll" , CharSet = CharSet::Seeifdef, EntryPoint="SetupDiGetClassDevs")]		
extern "C" HDEVINFO  SetupDiGetClassDevsUM(
LPGUID  ClassGuid, //Input: Supply the class GUID here.
PCTSTR  Enumerator, //Input: Use NULL here, not important for our purposes
HWND  hwndParent, //Input: Use NULL here, not important for our purposes
DWORD  Flags); //Input: Flags describing what kind of filtering to use.

[DllImport("setupapi.dll" , CharSet = CharSet::Seeifdef, EntryPoint="SetupDiEnumDeviceInterfaces")]
extern "C" WINSETUPAPI BOOL WINAPI  SetupDiEnumDeviceInterfacesUM(
HDEVINFO  DeviceInfoSet, //Input: Give it the HDEVINFO we got from SetupDiGetClassDevs()
PSP_DEVINFO_DATA  DeviceInfoData, //Input (optional)
LPGUID  InterfaceClassGuid, //Input
DWORD  MemberIndex, //Input: Specify the "index" of the device you are interested
PSP_DEVICE_INTERFACE_DATA  DeviceInterfaceData);//Output: Give it a pointer to a "SP_DEVICE_INTERFACE_DATA" structure.  

[DllImport("setupapi.dll" , CharSet = CharSet::Seeifdef, EntryPoint="SetupDiEnumDeviceInfo")]
extern "C" WINSETUPAPI BOOL WINAPI  SetupDiEnumDeviceInfoUM(
HDEVINFO  DeviceInfoSet,
DWORD  MemberIndex,
PSP_DEVINFO_DATA  DeviceInfoData);

[DllImport("setupapi.dll" , CharSet = CharSet::Seeifdef, EntryPoint="SetupDiDestroyDeviceInfoList")]
extern "C" WINSETUPAPI BOOL WINAPI  SetupDiDestroyDeviceInfoListUM(
HDEVINFO  DeviceInfoSet); //Input: Give it a handle to a device info list to deallocate from RAM.

[DllImport("setupapi.dll" , CharSet = CharSet::Seeifdef, EntryPoint="SetupDiGetDeviceRegistryProperty")]
extern "C" WINSETUPAPI BOOL WINAPI  SetupDiGetDeviceRegistryPropertyUM(
HDEVINFO  DeviceInfoSet,
PSP_DEVINFO_DATA  DeviceInfoData,
DWORD  Property,
PDWORD  PropertyRegDataType,
PBYTE  PropertyBuffer,  
DWORD  PropertyBufferSize,  
PDWORD  RequiredSize);

[DllImport("user32.dll" , EntryPoint="RegisterDeviceNotification")]
extern "C" HDEVNOTIFY WINAPI RegisterDeviceNotificationUM(
HANDLE hRecipient,
LPVOID NotificationFilter,
DWORD Flags);

Подскажите как и когда их использовать, если можно то привести несколько примеров...
P.S  я читал вот сдесь http://msdn.microsoft.com/en-us/library/ms792991.aspx но там лиш сами функции, а как и когда и каким образом не напмсано..
Заранее спасибо...
« Последнее редактирование: 18-03-2010 18:13 от Sel » Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 18-03-2010 10:59 » 

В DDK есть множество примеров кода. Посмотри, например devcon, но он конечно там далеко не единственный
Записан
mustelus
Участник

by
Offline Offline

« Ответ #2 : 18-03-2010 14:50 » 

А почитать что-нибудь.
« Последнее редактирование: 18-03-2010 18:12 от Sel » Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 18-03-2010 15:19 » 

Не знаю. Помоему нет чтива лучше (познавательнее), чем исходники того, что уже написано и работает Улыбаюсь
« Последнее редактирование: 18-03-2010 15:20 от resource » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines