Aceitando conexões L2CAP em um driver de perfil Bluetooth
Um driver de perfil de servidor L2CAP responde a solicitações de conexão L2CAP (Controle de Link Lógico e Protocolo de Adaptação) de entrada de dispositivos remotos. Por exemplo, um driver de perfil de servidor L2CAP para um PDA responderia a uma solicitação de conexão de entrada do PDA.
Para receber solicitações de conexão L2CAP de entrada
Para receber solicitações de conexão L2CAP deentrada de qualquerdispositivo remoto para um PSM específico, os drivers de perfil devem primeiro compilar e enviar uma solicitação de BRB_L2CA_REGISTER_SERVER , especificando NULL no membro BtAddress e 0 no membro Psm da estrutura _BRB_L2CA_REGISTER_SERVER da solicitação. Os drivers de perfil também devem registrar uma função de retorno de chamada L2CAP com a pilha de driver Bluetooth ao enviar a solicitação de BRB_L2CA_REGISTER_SERVER . Isso permite que a pilha de driver Bluetooth notifique o driver de perfil de solicitações de conexão L2CAP de entrada.
Em seguida, os drivers de perfil devem compilar e enviar uma solicitação de BRB_REGISTER_PSM para que a pilha de driver Bluetooth aceite conexões do PSM registrado pela solicitação. Caso contrário, a pilha de driver Bluetooth rejeitará todas as solicitações de conexão que tenham solicitações de conexão desconhecidas (não registradas). Para obter mais informações sobre PSMs, consulte a estrutura _BRB_PSM .
Para receber solicitações de conexão L2CAP de entrada de um par de dispositivo remoto/PSMespecífico, os drivers de perfil devem criar e enviar uma solicitação de BRB_L2CA_REGISTER_SERVER, especificando o endereço do dispositivo remoto no membro BtAddress e o PSM no membro Psm da estrutura de _BRB_L2CA_REGISTER_SERVER que acompanha a solicitação. Os drivers de perfil também devem registrar uma função de retorno de chamada L2CAP com a pilha de driver Bluetooth ao enviar a solicitação de BRB_L2CA_REGISTER_SERVER . Isso permite que a pilha de driver Bluetooth notifique o driver de perfil de solicitações de conexão L2CAP de entrada.
O driver de perfil deve emitir uma IOCTL_BTH_SDP_SUBMIT_RECORD. Em seguida, o driver de perfil pode registrar um registro SDP que descreve o serviço ao qual o driver de perfil dá suporte, para que os sistemas remotos possam descobrir o novo serviço usando o SDP.
Quando a pilha de driver Bluetooth recebe uma solicitação de conexão L2CAP de entrada de um dispositivo remoto, a pilha de driver Bluetooth chama a Função de Retorno de Chamada L2CAP registrada anteriormente pelo driver de perfil. A pilha de driver Bluetooth passa o valor IndicationRemoteConnect para o parâmetro Indication da função de retorno de chamada.
Para responder a solicitações de conexão de entrada, os drivers de perfil devem criar e enviar uma solicitação de BRB_L2CA_OPEN_CHANNEL_RESPONSE . O driver de perfil do servidor usa o valor passado da pilha de driver Bluetooth no parâmetro Parameters da função de retorno de chamada para negociar as configurações de conexão com o dispositivo remoto. Com base no valor do membro Response da estrutura _BRB_L2CA_OPEN_CHANNEL passada com essa solicitação, o driver de perfil do servidor aceita ou rejeita a solicitação de conexão.
Se o driver de perfil do servidor aceitar a conexão, a pilha de driver Bluetooth poderá chamar a Função de Retorno de Chamada L2CAP , conforme especificado no membro Callback da estrutura _BRB_L2CA_OPEN_CHANNEL . A pilha de driver Bluetooth usa essa função para notificar o driver de perfil do servidor de quaisquer alterações na conexão L2CAP.
Observação
- Um único driver de perfil pode se registrar para receber solicitações de conexão L2CAP de entrada de vários pares de dispositivo remoto/PSM diferentes criando e enviando várias solicitações de BRB_L2CA_REGISTER_SERVER para registrar vários servidores L2CAP, especificando endereço de dispositivo remoto exclusivo e pares PSM nos membros BtAddress e Psm das solicitações.
- Um único driver de perfil pode se registrar para receber solicitações de conexão L2CAP de entrada de qualquer dispositivo remoto para um PSM específico, além de receber solicitações de conexão L2CAP de entrada de vários pares de dispositivo remoto/PSM diferentes, primeiro registrando-se para receber solicitações de conexão L2CAP de entrada de qualquer dispositivo remoto para um PSM específico e, em seguida, registrando-se para receber solicitações de conexão L2CAP de entrada de um par de dispositivo remoto/PSM específico, desde que o PSM específico registrado na primeira etapa não está registrado novamente.
- Vários drivers de perfil não podem se registrar para receber solicitações de conexão L2CAP de entrada de qualquer dispositivo remoto para o mesmo PSM. A pilha de driver Bluetooth permite que apenas um driver de perfil receba solicitações de conexão L2CAP de entrada de qualquer dispositivo remoto para um PSM específico.
Depois que o driver de perfil aceitar uma solicitação de conexão, ele poderá usar outros BRBs para enviar e receber dados pela conexão L2CAP recém-estabelecida.
Para parar de receber notificações de tentativas de conexão L2CAP de dispositivo remoto, os drivers de perfil devem criar e enviar uma solicitação BRB_L2CA_UNREGISTER_SERVER para cancelar o registro de um servidor quando o driver de perfil processar IRP_MN_REMOVE_DEVICE Plug and Play remover notificações.
Para obter mais informações sobre notificações e funções de retorno de chamada, consulte Suporte a notificações de eventos Bluetooth.