Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > C/C++: Системное программирование и WinAPI > Bluetooth Low Energy - BluetoothGATTGetServices() - C++ WinAPI


Автор: RazDva1212 21.07.17, 12:41
Здравствуйте,

Такая проблема, пишу программу для BLE, вот дошел до поиска устройств, но тут затык.

Я получил хэндл устройства на компьютере, теперь пытаюсь найти устройств внешние устройства.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    HANDLE hLEDevice = GetBLEHandle(AGuid);
        USHORT serviceBufferCount;
    HRESULT hr = BluetoothGATTGetServices(
            hLEDevice,
            0,
            NULL,
            &serviceBufferCount,
            BLUETOOTH_GATT_FLAG_NONE);
     
        if (HRESULT_FROM_WIN32(ERROR_MORE_DATA) != hr) {
            printf("BluetoothGATTGetServices - Buffer Size %d", hr);
        }
     
        PBTH_LE_GATT_SERVICE pServiceBuffer = (PBTH_LE_GATT_SERVICE)
            malloc(sizeof(BTH_LE_GATT_SERVICE) * serviceBufferCount);
     
        if (NULL == pServiceBuffer) {
            printf("pServiceBuffer out of memory\r\n");
        }
        else {
            RtlZeroMemory(pServiceBuffer,
                sizeof(BTH_LE_GATT_SERVICE) * serviceBufferCount);
        }
    USHORT numServices;
        hr = BluetoothGATTGetServices(
            hLEDevice,
            serviceBufferCount,
            pServiceBuffer,
            &numServices,
            BLUETOOTH_GATT_FLAG_NONE);
     
        if (S_OK != hr) {
            printf("BluetoothGATTGetServices - Buffer Size %d", hr);
        }
     
    USHORT charBufferSize;
        hr = BluetoothGATTGetCharacteristics(
            hLEDevice,
            pServiceBuffer,
            0,
            NULL,
            &charBufferSize,
            BLUETOOTH_GATT_FLAG_NONE);

функция hr = BluetoothGATTGetServices(), ничего не дает. То есть hr =(HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)), соответственно
на функции BluetoothGATTGetCharacteristics() вылетает exception 0x0f20e128.
HANDLE я как вроде бы получил, думаю там все нормально, сам комп BLE видит, а вот код не работает. Подскажите,что сделать?

Заметил, что когда использую
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    HRESULT hr = BluetoothGATTGetServices(
    hLEDevice,
    0,
    NULL,
    &serviceBufferCount,
    BLUETOOTH_GATT_FLAG_NONE);



serviceBufferCount становится равен 0. То есть не видит внешних устройств получается... Хотя комп через сервисы виндосовские видит
Заранее спасибо!

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)