Creating a SCO Client Connection to a Remote Device
A SCO client profile driver is a profile driver that requests Synchronous Connection-Oriented (SCO) connection to a remote device. If the device accepts the connection, the SCO client profile driver is notified of any changes to the connection. For example, a SCO client profile driver can request a connection to a remote headset, and after the headset accepts the connection request, the Bluetooth driver stack can notify the profile driver when the headset is turned off or removed.
Because SCO connections are point-to-point connections between two Bluetooth devices, a SCO client profile driver needs only the Bluetooth address of the remote device to connect to.
To initiate a SCO connection to a remote device, profile drivers should build and send a _BRB_SCO_OPEN_CHANNEL request.
If the remote device accepts the profile driver's SCO connection request, the profile driver can then perform additional BRB commands across the newly connected channel by using IOCTL_INTERNAL_BTH_SUBMIT_BRB to submit a Bluetooth Request Block (BRB) to the Bluetooth driver stack, including:
Note
Profile drivers should build and send a BRB_SCO_GET_SYSTEM_INFO request during initialization to determine if the underlying hardware supports SCO and, if so, what the global SCO settings are.
When the profile driver no longer requires the SCO connection to the remote device, it should build and send a _BRB_SCO_CLOSE_CHANNEL request.