Função BluetoothGATTGetIncludedServices (bluetoothleapis.h)
A função BluetoothGATTGetIncludedServices obtém todos os serviços incluídos disponíveis para um determinado serviço.
Sintaxe
HRESULT BluetoothGATTGetIncludedServices(
[in] HANDLE hDevice,
[in, optional] PBTH_LE_GATT_SERVICE ParentService,
[in] USHORT IncludedServicesBufferCount,
[out, optional] PBTH_LE_GATT_SERVICE IncludedServicesBuffer,
[out] USHORT *IncludedServicesBufferActual,
[in] ULONG Flags
);
Parâmetros
[in] hDevice
Manipule para o dispositivo Bluetooth ou o serviço pai.
[in, optional] ParentService
Endereço de uma estrutura BTH_LE_GATT_SERVICE que contém o serviço pai dos serviços incluídos a serem recuperados. Esse parâmetro será necessário se um identificador de dispositivo for passado para hDevice. Esse parâmetro será opcional se um identificador de serviço tiver sido passado para hDevice, nesse caso, o serviço especificado pelo identificador de serviço será tratado como o pai.
[in] IncludedServicesBufferCount
O número de elementos alocados para o parâmetro IncludedServicesBuffer .
[out, optional] IncludedServicesBuffer
Endereço de um buffer que contém uma estrutura BTH_LE_GATT_SERVICE na qual retornar serviços incluídos.
[out] IncludedServicesBufferActual
Ponteiro para o buffer no qual o número real de serviços incluídos foi retornado no parâmetro IncludedServicesBuffer .
[in] Flags
Sinalizadores para modificar o comportamento de BluetoothGATTGetIncludedServices:
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 IncludedServicesBufferActual e NULL em IncludedServicesBuffer.
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 Included Services Buffer Size
////////////////////////////////////////////////////////////////////////////
hr = BluetoothGATTGetIncludedServices(
hLEDevice,
gattService,
0,
NULL,
&inclServicesBufferSize,
BLUETOOTH_GATT_FLAG_NONE);
if (HRESULT_FROM_WIN32(ERROR_MORE_DATA) != hr) {
PrintHr("BluetoothGATTGetIncludedServices - Buffer Size", hr);
goto Done;
}
if (inclServicesBufferSize > 0) {
pInclServicesBuffer = (PBTH_LE_GATT_ PBTH_LE_GATT_SERVICE)
malloc(inclServicesBufferSize * sizeof(BTH_LE_GATT_SERVICE));
if (NULL == pInclServicesBuffer) {
printf("pInclServicesBuffer out of memory\r\n");
goto Done;
} else {
RtlZeroMemory(pInclServicesBuffer,
inclServicesBufferSize * sizeof(BTH_LE_GATT_SERVICE));
}
////////////////////////////////////////////////////////////////////////////
// Retrieve Included Services
////////////////////////////////////////////////////////////////////////////
hr = BluetoothGATTGetIncludedServices (
hLEDevice,
gattService,
inclServicesBufferSize,
pInclServicesBuffer,
&numIncludedServices
BLUETOOTH_GATT_FLAG_NONE);
if (S_OK != hr) {
PrintHr("BluetoothGATTGetIncludedServices - 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 |