BluetoothGATTGetServices-Funktion (bluetoothleapis.h)
Die BluetoothGATTGetServices-Funktion ruft alle primären Dienste ab, die für einen Server verfügbar sind.
Syntax
HRESULT BluetoothGATTGetServices(
[in] HANDLE hDevice,
[in] USHORT ServicesBufferCount,
[out, optional] PBTH_LE_GATT_SERVICE ServicesBuffer,
[out] USHORT *ServicesBufferActual,
[in] ULONG Flags
);
Parameter
[in] hDevice
Handle an das Bluetooth-Gerät, von dem die Liste der primären Dienste abgerufen werden soll.
[in] ServicesBufferCount
Die Anzahl der Elemente, die dem ServicesBuffer-Parameter zugeordnet sind.
[out, optional] ServicesBuffer
Zeiger auf einen Puffer, der eine BTH_LE_GATT_SERVICE Struktur enthält, in die Dienste zurückgegeben werden sollen.
[out] ServicesBufferActual
Zeiger auf den Puffer, in den die tatsächliche Anzahl von Diensten im ServicesBuffer-Parameter zurückgegeben wurde.
[in] Flags
Flags zum Ändern des Verhaltens von BluetoothGATTGetServices:
Flag | Beschreibung |
---|---|
BLUETOOTH_GATT_FLAG_NONE | Für den Client gelten keine spezifischen GATT-Anforderungen (Standard). |
Rückgabewert
Diese Funktion gibt die folgenden Werte zurück:
Rückgabecode | BESCHREIBUNG |
---|---|
|
Der Vorgang wurde erfolgreich abgeschlossen. |
|
Der Pufferparameter ist NULL, und stattdessen wird die Anzahl der verfügbaren Elemente zurückgegeben. |
|
Wird zurückgegeben, wenn sowohl ein übergeordneter Dienst als auch ein Diensthandle bereitgestellt werden und die Diensthierarchie kein Rollup zum bereitgestellten übergeordneten Diensthandle durchführt. |
|
Eine der folgenden Bedingungen ist aufgetreten:
|
|
Es wird ein Puffer angegeben, aber die Pufferanzahl ist kleiner als die erforderliche Größe in Bytes. |
|
Dienste wurden zum Abrufen aus dem Cache angegeben, aber es sind keine Dienste im Cache vorhanden. |
|
Die aktuellen Daten im Cache scheinen inkonsistent zu sein und führen zu internen Fehlern. |
|
Für den Vorgang ist der Arbeitsspeicher nicht mehr vorhanden. |
Hinweise
Zurückgegebene Dienste werden beim erfolgreichen Abruf von Diensten direkt vom Gerät zwischengespeichert. Es wird davon ausgegangen, dass sich die Liste der zurückgegebenen Dienste ändert, sofern kein Dienständerungsereignis empfangen wird.
Profiltreiber sollten vorab einen ausreichend großen Puffer zuordnen, damit das Array der primären Dienste zurückgegeben werden kann. Aufrufer können die erforderliche Puffergröße ermitteln, indem sie einen Wert ungleich NULL in ServicesBufferActual und NULL in ServicesBuffer übergeben.
Ändern Sie nicht die zurückgegebene Dienststruktur, und verwenden Sie dann die geänderte Struktur in nachfolgenden Funktionsaufrufen. Das Verhalten ist nicht definiert, wenn der Aufrufer dies tut.
Beispiel
////////////////////////////////////////////////////////////////////////////
// Determine Services Buffer Size
////////////////////////////////////////////////////////////////////////////
hr = BluetoothGATTGetServices(
hLEDevice,
0,
NULL,
&serviceBufferCount,
BLUETOOTH_GATT_FLAG_NONE);
if (HRESULT_FROM_WIN32(ERROR_MORE_DATA) != hr) {
PrintHr("BluetoothGATTGetServices - Buffer Size", hr);
goto Done;
}
pServiceBuffer = (PBTH_LE_GATT_SERVICE)
malloc(sizeof(BTH_LE_GATT_SERVICE) * serviceBufferCount);
if (NULL == pServiceBuffer) {
printf("pServiceBuffer out of memory\r\n");
goto Done;
} else {
RtlZeroMemory(pServiceBuffer,
sizeof(BTH_LE_GATT_SERVICE) * serviceBufferCount);
}
////////////////////////////////////////////////////////////////////////////
// Retrieve Services
////////////////////////////////////////////////////////////////////////////
hr = BluetoothGATTGetServices(
hLEDevice,
serviceBufferCount,
pServiceBuffer,
&numServices,
BLUETOOTH_GATT_FLAG_NONE);
if (S_OK != hr) {
PrintHr("BluetoothGATTGetServices - Actual Data", hr);
goto Done;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in Windows 8 und höheren Versionen von Windows. |
Zielplattform | Universell |
Header | bluetoothleapis.h |
Bibliothek | BluetoothAPIs.lib |
DLL | BluetoothAPIs.dll |