2016-08-25 4 views
0

저는 하나의 응용 프로그램과 통신 할 USB 장치를 사용하고 있습니다. 응용 프로그램에 더 멋진 소프트웨어 인터페이스를 제공하는 Windows 드라이버가 필요할 것 같습니다. (응용 프로그램 자체가 WinUSB를 통해 장치에 하위 수준의 명령을 보내는 것과 반대)DLL 내에서 WinUSB를 사용하고 있습니까?

DLL 내에서 WinUSB를 사용할 수 있습니까? Choosing a driver model for developing a USB client driver은 특별히 언급하지 않았습니다.

이 상황에서 UMDF 기반 또는 KMDF 기반 드라이버 또는 WDM 루틴을 호출하는 하이브리드 드라이버를 작성해야하는 이유가 있습니까?

답변

1

WinUSB를 사용하는 것이 아마도 올바른 방법 일 것입니다. WinUSB는 DLL에서 확실히 사용할 수 있습니다. 일반적으로 다른 DLL에서 함수를 호출하는 DLL을 작성할 수 있으며,이를 수행하지 못하게하는 winusb.dll에 특별한 것은 없습니다. 또한 libusb 및 libusbp와 같은 다른 프로젝트에서도 이미 수행되었습니다.이 프로젝트는 winusb.dll을 사용하는 DLL로 컴파일됩니다.

코드를 교차 플랫폼으로 만들 것을 권장합니다. DLL에서 WinUSB를 직접 호출하지 말고 libusb 또는 libusbp과 같은 USB 추상화 라이브러리를 사용하십시오. Windows 만 지원하려는 경우에도이 라이브러리는 SetupAPI 및 WinUSB보다 훨씬 사용하기 쉽기 때문에 개발 시간을 단축해야합니다. 또한 코드가 다른 운영 체제에서 작동하도록하려면 많은 시간을 절약 할 수 있습니다.

WinUSB에서 지원하지 않는 Windows USB 스택의 고급 기능이 필요한 경우 자신의 UMDF 또는 KMDF 드라이버를 작성해야 할 유일한 이유가 있습니다. 예를 들어, 장치를 다른 USB 구성으로 전환해야하거나 전원 관리로 까다로운 작업을 수행해야하거나 여러 응용 프로그램에서 동시에 장치를 사용하도록 허용해야하는 경우. 일부 데이터를 앞뒤로 보내려면 WinUSB를 사용하는 것이 좋습니다.