Partilhar via


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

Um driver de perfil cliente L2CAP é um driver de perfil que solicita uma ligação ACL (Ligação Assíncrona Sem Conexão) para um dispositivo remoto. Se o dispositivo aceitar a conexão, o driver de perfil de cliente L2CAP é notificado de 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 de a impressora aceitar a solicitação, a pilha de drivers Bluetooth pode notificar o driver de perfil quando a impressora está desligada 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 das DDIs SDP (Service Discovery Protocol) 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 de 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 deve compilar e enviar uma solicitação BRB_L2CA_OPEN_CHANNEL.

Quando o driver de perfil do cliente cria a solicitação, ele fornece um ponteiro para uma estrutura do tipo _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 contêm 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 uma gama tão ampla quanto possível para aumentar as chances de negociação de canal bem-sucedida. Especificar um tamanho mínimo de unidades de transferência de mensagens (MTU) maior do que o tamanho mínimo de MTU Bluetooth básico só deve ser feito quando absolutamente necessário. Se a negociação falhar, a conexão falhará.

O IncomingQueueDepth membro 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á-los. Definir esse valor para um número muito pequeno aumenta as chances de perda de dados, enquanto defini-lo para um número muito grande aumenta os requisitos de memória. A Microsoft recomenda definir este membro como 10.

Quando o driver de perfil não requer mais a conexão L2CAP para o dispositivo remoto, ele deve compilar e enviar uma solicitação de BRB_L2CA_CLOSE_CHANNEL.