문제

저는 Windows를 사용하여 Bluetooth 장치를 자동으로 연결하는 소프트웨어를 작성 중입니다. 블루투스 API.연결되면 Windows는 예상대로 Bluetooth HID 장치 드라이버 설치를 자동으로 시작합니다.

Installing Bluetooth HID drivers

이 작업은 약 10~15초 정도 소요되며, 그 후 Windows에서는 익숙한 "사용 준비 완료" 메시지가 표시됩니다.

Hardware installed and ready for use

문제는 BluetoothSetServiceState() 드라이버 설치하자마자 복귀 시작하다, 장치가 실제로 사용할 준비가 된 때가 아닙니다.이로 인해 내 코드에 몇 가지 문제가 발생합니다. "연결"되자마자 장치 통신을 위한 별도의 라이브러리를 호출하기 때문입니다.처음 몇 번의 호출은 드라이버 설치가 완료되지 않았기 때문에 실패하고 이러한 연결 시도는 드라이버 설치를 방해하는 것처럼 보입니다. 드라이버 설치가 완료되기 전에 통신 라이브러리를 사용하려고 하면 장치가 설치되기 전에 Windows를 다시 시작하려고 하기 때문입니다. 사용됩니다.

내가 찾고 있는 것은 드라이버 설치가 실제로 완료되었을 때 "사용 준비" 이벤트를 연결하여 통신 라이브러리를 조기에 호출하지 않도록 하는 방법입니다.함수 콜백을 등록하거나 드라이버 설치 상태를 직접 폴링하는 데 사용할 수 있는 Windows API 호출이 있습니까?

저는 .NET이 아닌 바닐라 C/C++로 이 글을 쓰고 있습니다.당신의 도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

당신은보고 싶을 수도 있습니다이 샘플 코드 그리고 RegisterDevicenotification 기능. 100%는 확실하지 않지만 장치 클래스에 올바른 안내서를 지정하면 작동하는 것 같습니다.

다른 팁

여기에 내가 할 일이 있습니다.

  1. 다운로드 WinSpector (또는 스파이 ++ 사용)
  2. WinSpector를 시작하십시오 창 메시지를보기 시작하십시오
  3. 운전자를 설치하십시오
  4. 완료된 드라이버 설치를 표시하는 WM의 지켜보십시오.

#4에 대해 더 설명 할 수 있기를 바랍니다. 그러나 필요한 특정 창 메시지에 익숙하지 않습니다. 여기에 가능한 창 메시지가 기대할 수있는 것을 살펴보십시오..

그러나 찾을 수있는 올바른 창 메시지를 결정하면 프로그래밍 방식으로 프로그램 이이 WM을 대기하고 처리하도록합니다. CodeProject는 C ++ 에서이 작업을 수행하는 방법에 대한 훌륭한 글을 가지고 있습니다.. 몸소, 나는 델파이에서 그것을 선호합니다.

네트워크 바인딩인 경우 RNDIS는 설치가 완료되면 메시지를 보냅니다. RNDIS 드라이버 구현 가이드그리고 정의 RNDIS

또는

다음과 같이 Devcon 유틸리티(소스 코드는 MSDN에서 사용 가능)를 통해 프로그래밍 방식으로 장치 목록을 설치하거나 쿼리할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top