Привет всем... У меня такая проблема, как-то недавно делал драйвер на внешнее устройство (по 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 но там лиш сами функции, а как и когда и каким образом не напмсано..
Заранее спасибо...