Função BluetoothGATTGetServices (bluetoothleapis.h)
A função BluetoothGATTGetServices obtém todos os serviços primários disponíveis para um servidor.
Sintaxe
HRESULT BluetoothGATTGetServices(
[in] HANDLE hDevice,
[in] USHORT ServicesBufferCount,
[out, optional] PBTH_LE_GATT_SERVICE ServicesBuffer,
[out] USHORT *ServicesBufferActual,
[in] ULONG Flags
);
Parâmetros
[in] hDevice
Manipule para o dispositivo Bluetooth do qual obter a lista de serviços primários.
[in] ServicesBufferCount
O número de elementos alocados para o parâmetro ServicesBuffer .
[out, optional] ServicesBuffer
Ponteiro para o buffer que contém uma estrutura BTH_LE_GATT_SERVICE na qual retornar serviços.
[out] ServicesBufferActual
Ponteiro para o buffer no qual o número real de serviços foi retornado no parâmetro ServicesBuffer .
[in] Flags
Sinalizadores para modificar o comportamento de BluetoothGATTGetServices:
Sinalizador | Descrição |
---|---|
BLUETOOTH_GATT_FLAG_NONE | O cliente não tem requisitos de GATT específicos (padrão). |
Retornar valor
Essa função retorna os seguintes valores:
Código de retorno | Descrição |
---|---|
|
A operação foi concluída com sucesso. |
|
O parâmetro buffer é NULL e o número de itens disponíveis está sendo retornado. |
|
Retornado se um serviço pai e um identificador de serviço forem fornecidos e a hierarquia de serviço não for acumulada para o identificador de serviço pai fornecido. |
|
Uma das seguintes condições ocorreu:
|
|
Um buffer é especificado, mas o tamanho da contagem de buffers é menor do que o necessário, em bytes. |
|
Os serviços foram especificados para serem recuperados do cache, mas nenhum serviço está presente no cache. |
|
Os dados atuais no cache parecem ser inconsistentes e estão levando a erros internos. |
|
A operação ficou sem memória. |
Comentários
Os serviços retornados são armazenados em cache após a recuperação bem-sucedida dos serviços do dispositivo diretamente. A menos que um evento de alteração de serviço seja recebido, a lista de serviços retornados não deverá ser alterada.
Os drivers de perfil devem pré-alocar um buffer suficientemente grande para que a matriz de serviços primários seja retornada. Os chamadores podem determinar o tamanho do buffer necessário passando um valor não NULL em ServicesBufferActual e NULL em ServicesBuffer.
Não modifique a estrutura de serviço retornada e use a estrutura modificada em chamadas de função subsequentes. O comportamento será indefinido se o chamador fizer isso.
Exemplo
////////////////////////////////////////////////////////////////////////////
// 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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte em Windows 8 e versões posteriores do Windows. |
Plataforma de Destino | Universal |
Cabeçalho | bluetoothleapis.h |
Biblioteca | BluetoothAPIs.lib |
DLL | BluetoothAPIs.dll |