Bluetooth 프로필 드라이버에서 L2CAP 연결 수락

L2CAP 서버 프로필 드라이버는 원격 디바이스에서 들어오는 L2CAP(논리 링크 제어 및 적응 프로토콜) 연결 요청에 응답합니다. 예를 들어 PDA에 대한 L2CAP 서버 프로필 드라이버는 PDA에서 들어오는 연결 요청에 응답합니다.

들어오는 L2CAP 연결 요청을 받으려면

  1. 특정 PSM에 대한 원격 디바이스에서 들어오는L2CAP 연결 요청을 받으려면 프로필 드라이버가 먼저 BRB_L2CA_REGISTER_SERVER 요청을 빌드하고 보내야 하며, BtAddress 멤버에서 NULL을 지정하고 요청의 _BRB_L2CA_REGISTER_SERVER 구조의 Psm 멤버에 0을 지정해야 합니다. 또한 프로필 드라이버는 BRB_L2CA_REGISTER_SERVER 요청을 보낼 때 Bluetooth 드라이버 스택에 L2CAP 콜백 함수를 등록해야 합니다. 이렇게 하면 Bluetooth 드라이버 스택이 들어오는 L2CAP 연결 요청을 프로필 드라이버에 알릴 수 있습니다.

    그런 다음, Bluetooth 드라이버 스택이 요청에 의해 등록된 PSM의 연결을 수락할 수 있도록 프로필 드라이버가 BRB_REGISTER_PSM 요청을 빌드하고 보내야 합니다. 그렇지 않으면 Bluetooth 드라이버 스택은 알 수 없는(등록되지 않은) 연결 요청이 있는 모든 연결 요청을 거부합니다. PSM에 대한 자세한 내용은 _BRB_PSM 구조를 참조하세요.

  2. 특정원격 디바이스/PSM 쌍에서 들어오는 L2CAP 연결 요청을 받으려면 프로필 드라이버가 요청과 함께 제공되는 _BRB_L2CA_REGISTER_SERVER 구조의 BtAddress 멤버에서 원격 디바이스의 주소 및 PSM 멤버의 PSM을 지정하는 BRB_L2CA_REGISTER_SERVER 요청을 빌드하고 보내야 합니다. 또한 프로필 드라이버는 BRB_L2CA_REGISTER_SERVER 요청을 보낼 때 Bluetooth 드라이버 스택에 L2CAP 콜백 함수를 등록해야 합니다. 이렇게 하면 Bluetooth 드라이버 스택이 들어오는 L2CAP 연결 요청을 프로필 드라이버에 알릴 수 있습니다.

  3. 프로필 드라이버는 IOCTL_BTH_SDP_SUBMIT_RECORD 발급해야 합니다. 그런 다음 프로필 드라이버는 프로필 드라이버가 지원하는 서비스를 설명하는 SDP 레코드를 등록하여 원격 시스템이 SDP를 사용하여 새 서비스를 검색할 수 있도록 할 수 있습니다.

  4. Bluetooth 드라이버 스택이 원격 디바이스에서 들어오는 L2CAP 연결 요청을 받으면 Bluetooth 드라이버 스택은 프로필 드라이버에서 이전에 등록된 L2CAP 콜백 함수 를 호출합니다. Bluetooth 드라이버 스택은 값 IndicationRemoteConnect 를 콜백 함수의 표시 매개 변수에 전달합니다.

  5. 들어오는 연결 요청에 응답하려면 프로필 드라이버가 BRB_L2CA_OPEN_CHANNEL_RESPONSE 요청을 빌드하고 보내야 합니다. 서버 프로필 드라이버는 콜백 함수의 Parameters 매개 변수에 있는 Bluetooth 드라이버 스택에서 전달된 값을 사용하여 원격 디바이스와 연결 설정을 협상합니다. 이 요청과 함께 전달된 _BRB_L2CA_OPEN_CHANNEL 구조체의 Response 멤버 값에 따라 서버 프로필 드라이버는 연결 요청을 수락하거나 거부합니다.

  6. 서버 프로필 드라이버가 연결을 수락하는 경우 Bluetooth 드라이버 스택은 _BRB_L2CA_OPEN_CHANNEL 구조의 콜백 멤버에 지정된 대로 L2CAP 콜백 함수를 호출할 수 있습니다. Bluetooth 드라이버 스택은 이 함수를 사용하여 서버 프로필 드라이버에 L2CAP 연결에 대한 변경 내용을 알립니다.

참고

  • 단일 프로필 드라이버는 여러 L2CAP 서버를 등록하기 위해 여러 BRB_L2CA_REGISTER_SERVER 요청을 빌드하고 전송하여 여러 원격 디바이스/PSM 쌍에서 들어오는 L2CAP 연결 요청을 수신하도록 등록할 수 있으며, 요청의 BtAddressPsm 멤버에서 고유한 원격 디바이스 주소 및 PSM 쌍을 지정할 수 있습니다.
  • 단일 프로필 드라이버는 특정 PSM에 대한 모든 원격 디바이스에서 들어오는 L2CAP 연결 요청을 수신하도록 등록할 수 있으며, 먼저 특정 PSM에 대한 원격 디바이스에서 들어오는 L2CAP 연결 요청을 수신하도록 등록한 다음 특정 PSM이 등록된 특정 원격 디바이스/PSM 쌍에서 들어오는 L2CAP 연결 요청을 수신하도록 등록하여 여러 원격 디바이스/PSM 쌍에서 들어오는 L2CAP 연결 요청을 수신할 수 있습니다. 첫 번째 단계에서 다시 등록되지 않습니다.
  • 여러 프로필 드라이버는 동일한 PSM에 대한 원격 디바이스에서 들어오는 L2CAP 연결 요청을 수신하도록 등록할 수 없습니다. Bluetooth 드라이버 스택은 하나의 프로필 드라이버만 특정 PSM에 대한 원격 디바이스에서 들어오는 L2CAP 연결 요청을 수신할 수 있도록 허용합니다.

프로필 드라이버가 연결 요청을 수락한 후 다른 BRB를 사용하여 새로 설정된 L2CAP 연결을 통해 데이터를 보내고 받을 수 있습니다.

원격 디바이스 L2CAP 연결 시도에 대한 알림 수신을 중지하려면 프로필 드라이버가 알림을 제거하기 플러그 앤 플레이 IRP_MN_REMOVE_DEVICE 처리할 때 프로필 드라이버가 서버 등록을 취소하는 BRB_L2CA_UNREGISTER_SERVER 요청을 빌드하고 보내야 합니다.

알림 및 콜백 기능에 대한 자세한 내용은 Bluetooth 이벤트 알림 지원을 참조하세요.