Compartilhar via


Criando uma conexão de cliente L2CAP com um dispositivo remoto

Um driver de perfil de cliente L2CAP é um driver de perfil que solicita uma conexão ACL (Link Sem Conexão) Assíncrona com um dispositivo remoto. Se o dispositivo aceitar a conexão, o driver de perfil do cliente L2CAP será notificado sobre quaisquer alterações na conexão. Por exemplo, um driver de perfil de cliente L2CAP pode solicitar uma conexão com uma impressora remota e, depois que a impressora aceitar a solicitação, a pilha de driver Bluetooth poderá notificar o driver de perfil quando a impressora for desativada ou removida.

O driver de perfil de cliente L2CAP deve ter informações sobre o dispositivo remoto, como o protocolo/multiplexador de serviço (PSM) que o dispositivo usa para solicitar uma conexão com o dispositivo. O driver de perfil do cliente pode obter essas informações por meio dos DDIs do Protocolo SDP ou por meio do PSM fixo de um serviço. Para obter mais informações sobre como obter essas informações, consulte Acessando informações do serviço SDP.

Para iniciar uma conexão L2CAP com um dispositivo remoto, depois que o driver de perfil do cliente tiver as informações necessárias sobre o dispositivo, ele deverá compilar e enviar uma solicitação de BRB_L2CA_OPEN_CHANNEL .

Quando o driver de perfil do cliente compila a solicitação, ele fornece um ponteiro para uma estrutura _BRB_L2CA_OPEN_CHANNEL no membro Parameters.Others.Argument1 do IRP associado à solicitação. Essa estrutura contém o endereço Bluetooth para o dispositivo remoto, o PSM registrado para o dispositivo e parâmetros de configuração adicionais.

Se o dispositivo remoto aceitar a solicitação de canal aberto, os membros OutResults e InResults da estrutura _BRB_L2CA_OPEN_CHANNEL conterão informações sobre a conexão recém-criada. O membro OutResults especifica os parâmetros para a metade de saída do canal e o membro InResults especifica os parâmetros para a metade de entrada do canal.

Vários dos valores de configuração passados na estrutura _BRB_L2CA_OPEN_CHANNEL, como o membro Mtu , são usados para negociar a conexão com o dispositivo remoto. Os drivers de perfil de cliente devem fornecer o maior intervalo possível para aumentar as chances de negociação de canal bem-sucedida. Especificar um tamanho mínimo de MTU (unidades de transferência de mensagem) maior que o tamanho mínimo de MTU do Bluetooth básico só deve ser feito quando absolutamente necessário. Se a negociação falhar, a conexão falhará.

O membro IncomingQueueDepth da estrutura _BRB_L2CA_OPEN_CHANNEL especifica o número máximo de MTUs que a pilha de driver Bluetooth receberá e enfileirará na conexão antes que a pilha de driver Bluetooth comece a descartá-las. Definir esse valor como um número muito pequeno aumenta as chances de perda de dados, enquanto defini-lo como um número muito grande aumenta os requisitos de memória. A Microsoft recomenda definir esse membro como 10.

Quando o driver de perfil não exigir mais a conexão L2CAP com o dispositivo remoto, ele deverá compilar e enviar uma solicitação de BRB_L2CA_CLOSE_CHANNEL .