cjecje Ответов: 0

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, я вообще не смогу получить какие-либо интерфейсы.

Я также пошел по пути просто вытаскивания всех интерфейсов, чем пытаться связать их позже, но мне трудно найти что-то на уровне интерфейса, что скажет мне, с каким устройством он на самом деле связан

0 Ответов