Creazione di una connessione client L2CAP a un dispositivo remoto
Un driver del profilo client L2CAP è un driver di profilo che richiede una connessione ACL (Asynchronous Connectionless Link) a un dispositivo remoto. Se il dispositivo accetta la connessione, il driver del profilo client L2CAP riceve una notifica delle modifiche apportate alla connessione. Ad esempio, un driver del profilo client L2CAP può richiedere una connessione a una stampante remota e, dopo che la stampante accetta la richiesta, lo stack di driver Bluetooth può notificare al driver del profilo quando la stampante è disattivata o rimossa.
Il driver del profilo client L2CAP deve avere informazioni sul dispositivo remoto, ad esempio il multiplexer di protocollo/servizio usato dal dispositivo, per richiedere una connessione al dispositivo. Il driver del profilo client può ottenere queste informazioni tramite le DDI del protocollo SDP (Service Discovery Protocol) o tramite il psm fisso di un servizio. Per altre informazioni su come ottenere queste informazioni, vedere Accesso alle informazioni sul servizio SDP.
Per avviare una connessione L2CAP a un dispositivo remoto, dopo che il driver del profilo client ha le informazioni necessarie sul dispositivo, deve compilare e inviare una richiesta di BRB_L2CA_OPEN_CHANNEL .
Quando il driver del profilo client compila la richiesta, fornisce un puntatore a una struttura _BRB_L2CA_OPEN_CHANNEL nel membro Parameters.Others.Argument1 dell'IRP associato alla richiesta. Questa struttura contiene l'indirizzo Bluetooth per il dispositivo remoto, il PSM registrato per il dispositivo e parametri di configurazione aggiuntivi.
Se il dispositivo remoto accetta la richiesta del canale aperto, i membri OutResults e InResults della struttura _BRB_L2CA_OPEN_CHANNEL contengono informazioni sulla connessione appena creata. Il membro OutResults specifica i parametri per la metà in uscita del canale e il membro InResults specifica i parametri per la metà in ingresso del canale.
Diversi valori di configurazione passati nella struttura _BRB_L2CA_OPEN_CHANNEL, ad esempio il membro Mtu , vengono usati per negoziare la connessione con il dispositivo remoto. I driver del profilo client devono offrire un'ampia gamma possibile per aumentare le probabilità di successo della negoziazione del canale. Specificare una dimensione minima delle unità di trasferimento dei messaggi (MTU) maggiore della dimensione minima MTU Bluetooth di base deve essere eseguita solo quando è assolutamente necessario. Se la negoziazione non riesce, la connessione avrà esito negativo.
Il membro IncomingQueueDepth della struttura _BRB_L2CA_OPEN_CHANNEL specifica il numero massimo di UR che lo stack di driver Bluetooth riceverà e accoderà sulla connessione prima che lo stack di driver Bluetooth inizi a rimuoverli. L'impostazione di questo valore su un numero molto ridotto aumenta le probabilità di perdita di dati, mentre impostandolo su un numero molto elevato aumentano i requisiti di memoria. Microsoft consiglia di impostare questo membro su 10.
Quando il driver del profilo non richiede più la connessione L2CAP al dispositivo remoto, deve compilare e inviare una richiesta di BRB_L2CA_CLOSE_CHANNEL .