Stack di driver Bluetooth

Lo stack di driver Bluetooth comprende la parte principale del supporto fornito da Microsoft per il protocollo Bluetooth. Con questo stack, i dispositivi abilitati per Bluetooth possono individuarsi tra loro e stabilire connessioni. Attraverso tali connessioni, i dispositivi possono scambiare dati e interagire tra loro tramite varie applicazioni.

L'immagine seguente mostra i moduli all'interno dello stack di driver Bluetooth, insieme ai possibili driver in modalità utente e in modalità kernel non inclusi in Windows Vista e versioni successive. Questi driver personalizzati sono noti come driver di profilo.

Diagramma che mostra l'architettura dello stack di driver Bluetooth.

  • Modalità utente

    • Applicazione in modalità utente: un'applicazione in modalità utente che accede allo stack di driver Bluetooth tramite LE API pubblicate. Per altre informazioni, vedere Informazioni su Bluetooth nella documentazione di Windows SDK.

      Le applicazioni in modalità utente devono essere collegate a BthProps.lib, anziché IrProps.lib, per usare API, ad esempio BluetoothSetLocalServiceInfo.

  • Esempi di driver di profilo

    • Driver in modalità kernel WAP: il componente WAP (Wireless Application Protocol) è un esempio di driver di profilo che comunica tra lo stack di rete Windows e BthPort, accedendo all'interfaccia L2CAP e, facoltativamente, all'interfaccia SDP contenuta in L2CAP. Altri profili possibili includono il profilo A2DP (Advanced Audio Distribution Profile), A/V Remote Control profile (AVRCP), Generic A/V Distribution profile (GAVDP) e common ISDN Access (CIP).

    • Driver in modalità kernel audio: esempio di driver di profilo che comunica tra lo stack audio di Windows e BthPort, accedendo alle interfacce SCO contenute in quest'ultimo. I profili possibili includono il profilo HFP (Hands Free Profile), Il profilo headset (HSP), il profilo di telefonia cordless (CTP) e il profilo intercom (ICP). Questo driver di profilo è incluso in Windows a partire da Windows 8.

    • Profilo Di monitoraggio frequenza cardiaca Bluetooth LE: esempio di driver di profilo Bluetooth LE che comunica con l'API Bluetooth Low Energy (LE).

  • Componenti dello stack di driver Bluetooth

    • IrProps- Componente usato per la compatibilità con le versioni precedenti per i driver di profilo creati per la prima versione dello stack di driver Bluetooth. IrProps è disponibile solo per la compatibilità con le versioni precedenti. Usare il componente BthProps per il nuovo sviluppo.

    • BthProps- Componente che contiene l'implementazione dell'interfaccia utente Bluetooth insieme all'implementazione delle API Bluetooth a cui accedono le applicazioni in modalità utente. Questo componente invia richieste a BthServ tramite chiamate rpc (Remote Procedure Call). BthProps esegue inoltre scambi di pin con BthPort tramite IOCTLs privati. Si noti che BthProps viene eseguito su qualsiasi sistema con una radio abilitata per Bluetooth.

    • BthServ: servizio responsabile della memorizzazione nella cache e dell'inoltro dei dati di richiesta a Bthport.

    • BthCi- Programma di installazione della classe Bluetooth.

    • WshBth: componente helper socket Windows Bluetooth. WshBth viene chiamato dal livello socket di Windows per eseguire operazioni socket. WshBth chiama principalmente RfComm tramite l'interfaccia TDI. WshBth chiama anche BthServ per eseguire richieste di dispositivi remoti e in BthPort per eseguire richieste radio locali.

    • FSquirt: componente OBEX (Nonextensible Object Exchange) che consente agli utenti di inviare e ricevere file attraverso una connessione Bluetooth aperta. OBEX comunica con dispositivi remoti tramite RFCOMM che usa il componente WshBth.

    • BthPrint- Componente che implementa il profilo di sostituzione cavo hardcopy (HCRP). Questo componente consente al sistema di stampa di inviare e ricevere dati da stampanti abilitate per Bluetooth. BthPrint comunica con l'interfaccia SDP in BthPort per eseguire query su stampanti remote e l'interfaccia L2CAP in BthPort per inviare e ricevere dati.

    • HidBth: componente che implementa il profilo HID (Human Interface Device). HidBth comunica anche con le interfacce L2CAP e SDP in BthPort. HidBth si connette allo stack HID in modo analogo al modulo HID USB.

    • BthPan: componente che implementa il profilo PAN (Personal Area Network), fornendo connessioni TCP attraverso una connessione Bluetooth aperta. In Windows Vista e Windows XP BthPan supporta solo le connessioni in uscita. BthPan è anche un client del componente BthPort e usa sia le interfacce L2CAP che SDP.

    • RfComm: componente che implementa il protocollo di emulazione del cavo seriale Bluetooth. RfComm usa anche le interfacce L2CAP e SDP disponibili in BthPort. Il bordo superiore di RfComm espone l'interfaccia TDI, consentendo a questo componente di sembrare un trasporto di rete. Questo è il modo in cui WshBth si connette a Bluetooth per inviare e ricevere dati dalle API in modalità utente.

      Le applicazioni in modalità utente possono accedere a RfComm usando le interfacce Winsock descritte in Windows SDK.

    • BthModem: componente che implementa le porte COM virtuali e la rete remota (DUN). BthModem indirizza tutte le operazioni di I/O e di controllo a RfComm tramite un'interfaccia TDI. Il bordo superiore di BthModem comunica con Serial.sys per dare l'aspetto di essere una porta COM wireless.

    • BthEnum- Il driver del bus Bluetooth. BthEnum comunica con il gestore Plug and Play (PnP) per creare ed eliminare oggetti dispositivo usati per abilitare i servizi Bluetooth. BthEnum crea un PDO per ogni servizio supportato da un dispositivo remoto connesso. Ad esempio, quando un utente connette un mouse abilitato per Bluetooth, Windows rileverà che il mouse supporta il servizio BLUETOOTH HID e crea un PDO per il servizio HID che causa il caricamento hidBth da parte del gestore PnP.

      Nota

      BthEnum non creerà pdo per i servizi visualizzati nella chiave del Registro di sistema UnsupportedServices , come specificato in Bth.inf.

    • BthLEEnum- Il conducente del bus Bluetooth Low Energy (LE). BthLEEnum implementa il protocollo ATT e il profilo GATT. È anche responsabile della creazione di PDO per rappresentare i dispositivi remoti e i relativi servizi primari.

    • BthPort- Un minidriver caricato dal miniport BthUsb. BthPort offre quattro componenti:

      1. Il componente HCI comunica con la radio abilitata per Bluetooth locale tramite l'interfaccia HCI (Host Controller Interface) definita nella specifica Bluetooth. Poiché tutte le radio abilitate per Bluetooth implementano la specifica HCI, BthPort è in grado di comunicare con qualsiasi radio abilitata per Bluetooth, indipendentemente dal produttore o dal modello.
      2. Il componente SCO implementa il protocollo SCO (Synchronous Connection-Oriented). Questo protocollo supporta la creazione di connessioni da punto a punto a un dispositivo remoto. I client SCO comunicano con l'interfaccia SCO creando e inviando blocchi di richiesta Bluetooth (BRB).
      3. L2CAP implementa il controllo del collegamento logico Bluetooth e il protocollo di adattamento. Questo protocollo supporta la creazione di un canale senza perdita in un dispositivo remoto. I client L2CAP comunicano con l'interfaccia L2CAP creando e inviando blocchi di richiesta Bluetooth (BRB).
      4. SDP implementa il protocollo di individuazione del servizio Bluetooth.
    • BthUsb.sys- Miniport che astrae l'interfaccia del bus da BthPort.