Pilha de driver Bluetooth

A pilha de driver Bluetooth compreende a parte principal do suporte fornecido pela Microsoft para o protocolo Bluetooth. Com essa pilha, os dispositivos habilitados para Bluetooth podem localizar uns aos outros e estabelecer conexões. Entre essas conexões, os dispositivos podem trocar dados e interagir entre si por meio de vários aplicativos.

A imagem a seguir mostra os módulos dentro da pilha de driver Bluetooth, juntamente com possíveis drivers personalizados no modo de usuário e no modo kernel não incluídos no Windows Vista e posterior. Esses drivers personalizados são conhecidos como drivers de perfil.

Diagrama mostrando a arquitetura da pilha de driver Bluetooth.

  • Modo de usuário

    • Aplicativo de modo de usuário – um aplicativo de modo de usuário que acessa a pilha de driver Bluetooth por meio de APIs publicadas. Para obter mais informações, consulte Sobre Bluetooth na documentação do SDK do Windows.

      Os aplicativos de modo de usuário devem ser vinculados ao BthProps.lib, em vez de IrProps.lib, para usar APIs, como BluetoothSetLocalServiceInfo.

  • Exemplos de drivers de perfil

    • Driver de modo kernel WAP – o componente WAP (Wireless Application Protocol) é um exemplo de um driver de perfil que se comunica entre a pilha de rede do Windows e o BthPort, acessando a interface L2CAP e, opcionalmente, a interface SDP contida em L2CAP. Outros perfis possíveis incluem o perfil de Distribuição de Áudio Avançada (A2DP), o perfil de Controle Remoto A/V (AVRCP), o PERFIL de Distribuição A/V Genérico (GAVDP) e o perfil DE ACESSO ISDN Comum (CIP).

    • Driver do Modo Kernel de Áudio – um exemplo de um driver de perfil que se comunica entre a pilha de áudio do Windows e o BthPort, acessando as interfaces SCO contidas no último. Os perfis possíveis incluem o HFP (perfil mãos livres), o HSP (perfil de fone de ouvido), o CTP (perfil de telefonia sem fio) e o perfil de intercomunicação (ICP). Esse driver de perfil está incluído no Windows começando com Windows 8.

    • Perfil do Monitor de Freqüência Cardíaca Bluetooth LE – um exemplo de um driver de perfil Bluetooth LE que se comunica com a API de BAIXA Energia (LE) bluetooth.

  • Componentes da pilha de driver Bluetooth

    • IrProps- Um componente usado para compatibilidade com versões anteriores para drivers de perfil criados para a primeira versão da pilha de driver Bluetooth. IrProps é fornecido apenas para compatibilidade com versões anteriores. Use o componente BthProps para um novo desenvolvimento.

    • BthProps - Um componente que contém a implementação da interface do usuário Bluetooth juntamente com a implementação das APIs Bluetooth que os aplicativos de modo de usuário acessam. Esse componente envia consultas ao BthServ por meio de RPC (chamadas de procedimento remoto). Além disso, o BthProps executa trocas de pinos com BthPort por meio de IOCTLs privados. Observe que o BthProps é executado em qualquer sistema com um rádio habilitado para Bluetooth.

    • BthServ - Um serviço responsável por armazenar em cache e encaminhar dados de consulta para o Bthport.

    • BthCi - O instalador de classe Bluetooth.

    • WshBth - O componente auxiliar de soquete bluetooth do Windows. O WshBth é chamado pela camada de soquetes do Windows para executar operações de soquete. O WshBth chama principalmente o RfComm por meio da interface TDI. O WshBth também chama o BthServ para executar consultas remotas de dispositivo e no BthPort para realizar consultas de rádio locais.

    • FSquirt – um componente OBEX (Troca de Objetos Não Existente) que permite que os usuários enviem e recebam arquivos em uma conexão Bluetooth aberta. O OBEX se comunica com dispositivos remotos por meio do RFCOMM que usa o componente WshBth.

    • BthPrint - Um componente que implementa o HCRP (Perfil de Substituição de Cabo Rígido). Esse componente permite que o sistema de impressão envie dados para e receba dados de impressoras habilitadas para Bluetooth. O BthPrint se comunica com a interface SDP no BthPort para consultar impressoras remotas e a interface L2CAP no BthPort para enviar e receber dados.

    • HidBth - O componente que implementa o perfil hid (dispositivo de interface humana). O HidBth também se comunica com as interfaces L2CAP e SDP no BthPort. O HidBth se conecta à pilha HID da mesma forma que o módulo HID USB.

    • BthPan - O componente que implementa o perfil PAN (Rede de Área Pessoal), fornecendo conexões TCP em uma conexão Bluetooth aberta. No Windows Vista e no Windows XP, o BthPan dá suporte apenas a conexões de saída. O BthPan também é um cliente do componente BthPort e usa as interfaces L2CAP e SDP.

    • RfComm- O componente que implementa o protocolo de emulação de cabo serial Bluetooth. RfComm também usa as interfaces L2CAP e SDP encontradas no BthPort. A borda superior do RfComm expõe a interface TDI, permitindo que esse componente pareça ser um transporte de rede. É assim que o WshBth se conecta ao Bluetooth para enviar e receber dados de APIs no modo de usuário.

      Os aplicativos no modo de usuário podem acessar RfComm usando as interfaces winsock descritas no SDK do Windows.

    • BthModem - O componente que implementa portas COM virtuais e DUN (rede discada). O BthModem direciona todas as operações de E/S e controle para RfComm por meio de uma interface TDI. A borda superior do BthModem se comunica com Serial.sys para dar a aparência de ser uma porta COM sem fio.

    • BthEnum- O motorista do ônibus Bluetooth. O BthEnum se comunica com o gerenciador de Plug and Play (PnP) para criar e destruir objetos de dispositivo usados para habilitar serviços Bluetooth. O BthEnum cria um PDO para cada serviço ao qual um dispositivo remoto conectado dá suporte. Por exemplo, quando um usuário conecta um mouse habilitado para Bluetooth, o Windows descobrirá que o mouse dá suporte ao serviço Hid Bluetooth e cria um PDO para o serviço HID que faz com que o gerenciador PnP carregue HidBth.

      Observação

      O BthEnum não criará PDOs para serviços que aparecem na chave do Registro UnsupportedServices , conforme especificado em Bth.inf.

    • BthLEEnum- O motorista de ônibus bluetooth de baixa energia (LE). BthLEEnum implementa o protocolo ATT e o perfil GATT. Ele também é responsável por criar PDOs para representar os dispositivos remotos e seus serviços primários.

    • BthPort - Um minidriver carregado pelo miniporto BthUsb. O BthPort fornece quatro componentes:

      1. O componente HCI se comunica com o rádio local habilitado para Bluetooth por meio da HCI (Interface do Controlador de Host) definida na especificação bluetooth. Como todos os rádios habilitados para Bluetooth implementam a especificação HCI, o BthPort é capaz de se comunicar com qualquer rádio habilitado para Bluetooth, independentemente do fabricante ou modelo.
      2. O componente SCO implementa o protocolo SCO (Connection-Oriented síncrono). Esse protocolo dá suporte à criação de conexões ponto a ponto com um dispositivo remoto. Os clientes SCO se comunicam com a interface SCO criando e enviando BRBs (blocos de solicitação Bluetooth).
      3. O L2CAP implementa o protocolo de adaptação e controle de link lógico Bluetooth. Esse protocolo dá suporte à criação de um canal sem perdas para um dispositivo remoto. Os clientes L2CAP se comunicam com a interface L2CAP criando e enviando BRBs (blocos de solicitação Bluetooth).
      4. O SDP implementa o Protocolo de Descoberta de Serviço Bluetooth.
    • BthUsb.sys– o miniporto que abstrai a interface de barramento do BthPort.