문제

Winusb.dll을 사용하여 USB 장치와 통신하기 위해 응용 프로그램을 작성하는 중입니다. 이 라이브러리는 커널에 드라이버로 설치된 winusb.sys를 통해 장치와의 통신을 허용하는 사용자 모드 라이브러리입니다.

이 응용 프로그램을 C ++에서 Visual Studio 2008과 함께 작성하고 있습니다.

헤더 winusb.h는 Windows DDK에서 찾을 수 있으므로 "d : winddk 7100.0.0 inc ddk"포함 경로를 추가합니다. 그런 다음 winusb.h가 포함하는 USB.H를 찾을 수없는 오류가 발생하지만 USB.H는 DDK에도 있지만 다른 디렉토리에 있으므로 "d : winddk 7100.0.0 inc api"를 추가합니다. 포함 Dir.

그 길을 추가하면 모든 것이 화장실에 들어가서 stdio.h에서 컴파일 오류를 얻기 시작합니다.

이 DLL을 간단히 사용하기 위해 DDK 빌드 시스템과 컴파일러를 사용하고 싶지 않습니다. 이것이 제가 적절한 드라이버를 쓰는 대신 WinUSB를 사용하는 주된 이유 중 하나입니다.

Winusb.dll 및 Visual Studio를 사용하여 응용 프로그램을 구축 한 사람이 있습니까?

도움이 되었습니까?

해결책

크로스 플랫폼 USB 라이브러리를 작성하고 DDK 빌드 환경을 사용하면 빌드 프로세스가 훨씬 더 복잡해집니다.

Winusb는 Winusb.sys를 드라이버로로드하는 장치에 클라이언트 애플리케이션에서 사용해야합니다. 그러나 사용자 모드 프로그램 (UMDF 드라이버 제외)에 사용하기 위해 포장 된 Winusb 헤더 버전은없는 것 같습니다.

내가 한 일은 DDK에서 Winusb.h를 지원하는 몇 가지 헤더를 DDK에서 개인 디렉토리로 복사 한 다음 해당 디렉토리를 빌드 중에 포함 디렉토리로 참조하는 것이 었습니다.

이들은 복사해야 할 헤더입니다.

POPPACK.h
PSHPACK1.h
usb.h
usb100.h
usb200.h
winusb.h
winusbio.h

일단 개인 디렉토리에 포함되어 있고 DDK의 Winusb.lib와 연결되면 Visual Studio에서 프로젝트를 컴파일하고 실행할 수있었습니다.

헤더가 DDK 릴리스간에 변경 될 때 나빠질 수 있으므로이 방법을 추천할지 모르겠지만 Connect 버그를 열어 MS가 클라이언트에서 사용할 WinUsb 헤더 패키지를 만들 수 있는지 확인합니다. 사용자 모드 애플리케이션.

다른 팁

역사적으로 DDK와 SDK는 함께 잘 작동하지 않았지만 Vista가 출시되기 전에 언젠가 문제가 해결되었습니다. 그러나 한 SDK의 일부를 다른 SDK와 혼합 한 것 같습니다. DDK 빌드 환경을 사용하거나 최소한 DDK 환경이 설정 한 경로를 살펴보고 복제합니다. 바로 그거죠 VS 프로젝트 설정에서.

DDK 빌드 환경을 사용하고 'makefile project'를 만들어 VS IDE를 사용할 수 있습니다. 그렇지 않으면 OSR 또는 Hollistech의 DDKBuild 도구와 같은 것을 사용할 수 있습니다.

나는 이것을 사용하지 않았으므로 그들이 얼마나 잘 작동하는지 잘 모르겠지만 비슷한 이름과 사용에도 불구하고 다른 도구라는 점에 유의하십시오.

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