원격 디바이스에 대한 L2CAP 클라이언트 연결 만들기

L2CAP 클라이언트 프로필 드라이버는 원격 디바이스에 대한 비동기 ACL(연결 없는 링크) 연결을 요청하는 프로필 드라이버입니다. 디바이스에서 연결을 수락하면 L2CAP 클라이언트 프로필 드라이버에 연결 변경 내용이 표시됩니다. 예를 들어 L2CAP 클라이언트 프로필 드라이버는 원격 프린터에 대한 연결을 요청할 수 있으며 프린터에서 요청을 수락한 후 Bluetooth 드라이버 스택은 프린터가 꺼져 있거나 제거될 때 프로필 드라이버에 알릴 수 있습니다.

L2CAP 클라이언트 프로필 드라이버에는 디바이스에 대한 연결을 요청하기 위해 디바이스에서 사용하는 프로토콜/서비스 멀티플렉서(PSM)와 같은 원격 디바이스에 대한 정보가 있어야 합니다. 클라이언트 프로필 드라이버는 SDP(서비스 검색 프로토콜) DPI 또는 서비스의 고정 PSM을 통해 이 정보를 가져올 수 있습니다. 이 정보를 가져오는 방법에 대한 자세한 내용은 SDP 서비스 정보 액세스를 참조하세요.

원격 디바이스에 대한 L2CAP 연결을 시작하려면 클라이언트 프로필 드라이버에 디바이스에 대한 필수 정보가 있으면 BRB_L2CA_OPEN_CHANNEL 요청을 빌드하고 보내야 합니다.

클라이언트 프로필 드라이버는 요청을 빌드할 때 요청과 연결된 IRP의 Parameters.Others.Argument1 멤버에서 _BRB_L2CA_OPEN_CHANNEL 구조에 대한 포인터를 제공합니다. 이 구조에는 원격 디바이스의 Bluetooth 주소, 디바이스에 등록된 PSM 및 추가 구성 매개 변수가 포함됩니다.

원격 디바이스가 열린 채널 요청을 수락하는 경우 _BRB_L2CA_OPEN_CHANNEL 구조의 OutResultsInResults 멤버에는 새로 만든 연결에 대한 정보가 포함됩니다. OutResults 멤버는 채널의 아웃바운드 절반에 대한 매개 변수를 지정하고 InResults 멤버는 채널의 인바운드 절반에 대한 매개 변수를 지정합니다.

Mtu 멤버와 같은 _BRB_L2CA_OPEN_CHANNEL 구조에 전달된 몇 가지 구성 값은 원격 디바이스와의 연결을 협상하는 데 사용됩니다. 클라이언트 프로필 드라이버는 채널 협상의 성공 가능성을 높이기 위해 가능한 한 넓은 범위를 제공해야 합니다. 기본 Bluetooth 최소 MTU 크기보다 큰 최소 MTU(메시지 전송 단위) 크기를 지정하는 작업은 반드시 필요한 경우에만 수행해야 합니다. 협상이 실패하면 연결이 실패합니다.

_BRB_L2CA_OPEN_CHANNEL 구조체의 IncomingQueueDepth 멤버는 Bluetooth 드라이버 스택이 연결을 취소하기 전에 Bluetooth 드라이버 스택이 수신하고 큐에 대기할 최대 MTU 수를 지정합니다. 이 값을 매우 작은 숫자로 설정하면 데이터 손실 가능성이 높아지지만 매우 많은 수로 설정하면 메모리 요구 사항이 증가합니다. 이 멤버를 10으로 설정하는 것이 좋습니다.

프로필 드라이버에 원격 디바이스에 대한 L2CAP 연결이 더 이상 필요하지 않은 경우 BRB_L2CA_CLOSE_CHANNEL 요청을 빌드하고 보내야 합니다.