Creación de una conexión de cliente L2CAP a un dispositivo remoto
Un controlador de perfil de cliente L2CAP es un controlador de perfil que solicita una conexión asincrónica de vínculo sin conexión (ACL) a un dispositivo remoto. Si el dispositivo acepta la conexión, se notifica al controlador de perfil de cliente L2CAP cualquier cambio en la conexión. Por ejemplo, un controlador de perfil de cliente L2CAP puede solicitar una conexión a una impresora remota y, después de que la impresora acepte la solicitud, la pila del controlador Bluetooth puede notificar al controlador de perfil cuando la impresora está desactivada o quitada.
El controlador de perfil de cliente L2CAP debe tener información sobre el dispositivo remoto, como el multiplexador de protocolo o servicio (PSM) que usa el dispositivo para solicitar una conexión al dispositivo. El controlador de perfil de cliente puede obtener esta información a través de los DDIs del Protocolo de detección de servicios (SDP) o mediante el PSM fijo de un servicio. Para obtener más información sobre cómo obtener esta información, consulte Acceso a la información del servicio SDP.
Para iniciar una conexión L2CAP a un dispositivo remoto, después de que el controlador de perfil de cliente tenga la información necesaria sobre el dispositivo, debe compilar y enviar una solicitud de BRB_L2CA_OPEN_CHANNEL .
Cuando el controlador de perfil de cliente compila la solicitud, proporciona un puntero a una estructura de _BRB_L2CA_OPEN_CHANNEL en el miembro Parameters.Others.Argument1 del IRP asociado a la solicitud. Esta estructura contiene la dirección Bluetooth del dispositivo remoto, el PSM registrado para el dispositivo y parámetros de configuración adicionales.
Si el dispositivo remoto acepta la solicitud de canal abierto, los miembros OutResults e InResults de la estructura _BRB_L2CA_OPEN_CHANNEL contienen información sobre la conexión recién creada. El miembro OutResults especifica los parámetros de la mitad saliente del canal y el miembro InResults especifica los parámetros de la mitad entrante del canal.
Varios de los valores de configuración pasados en la estructura _BRB_L2CA_OPEN_CHANNEL, como el miembro Mtu , se usan para negociar la conexión con el dispositivo remoto. Los controladores de perfil de cliente deben proporcionar una gama lo más amplia posible para aumentar las posibilidades de una negociación correcta del canal. Especificar un tamaño mínimo de unidades de transferencia de mensajes (MTU) mayor que el tamaño mínimo de MTU de Bluetooth básico solo debe realizarse cuando sea absolutamente necesario. Si se produce un error en la negociación, se producirá un error en la conexión.
El miembro IncomingQueueDepth de la estructura de _BRB_L2CA_OPEN_CHANNEL especifica el número máximo de MTUs que la pila del controlador Bluetooth recibirá y pondrá en cola en la conexión antes de que la pila del controlador Bluetooth comience a descartarlas. Establecer este valor en un número muy pequeño aumenta las posibilidades de pérdida de datos, mientras que al establecerlo en un número muy grande aumenta los requisitos de memoria. Microsoft recomienda establecer este miembro en 10.
Cuando el controlador de perfil ya no requiere la conexión L2CAP al dispositivo remoto, debe compilar y enviar una solicitud de BRB_L2CA_CLOSE_CHANNEL .