BLE windows 10 C++ как получить все службы для устройства
Это кажется простым, но у меня возникли проблемы с корреляцией нескольких сервисов для устройства. Мне нужно прочитать характеристики для
У меня есть несколько устройств, каждое из которых имеет собственный сервис, а также реализации для некоторых общих сервисов.
Я думал, что если бы я перечислил на основе моего пользовательского сервиса, BluetoothGATTGetServices вернул бы все связанные с ним сервисы...нет
hDevInfo = SetupDiGetClassDevs( NULL, 0, 0, DIGCF_PRESENT | DIGCF_ALLCLASSES | DIGCF_DEVICEINTERFACE ); for ( DWORD j = 0; SetupDiEnumDeviceInterfaces( hDevInfo, NULL, &MyService, j, &did ); ++j ) { ... m_Handle = CreateFile( pInterfaceDetailData->DevicePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); ... USHORT numServices; hr = BluetoothGATTGetServices( hLEDevice, serviceBufferCount, pServiceBuffer, &numServices, BLUETOOTH_GATT_FLAG_NONE );
numServices всегда просто дает мне MyService, но не любой из универсальных интерфейсов, которые он реализует.
Есть идеи?
Что я уже пробовал:
Я перепробовал несколько вещей, но безуспешно. Если я использую SetupDiEnumDeviceInfo для перечисления устройств, а затем использую SP_DEVINFO_DATA устройства, которое я решаю, является моим, основываясь на его дружественном имени в вызове SetupDiEnumDeviceInterfaces, я вообще не смогу получить какие-либо интерфейсы.
Я также пошел по пути просто вытаскивания всех интерфейсов, чем пытаться связать их позже, но мне трудно найти что-то на уровне интерфейса, что скажет мне, с каким устройством он на самом деле связан