2009-09-29 2 views
4

WinUsb.dll을 사용하여 Usb 장치와 통신하는 응용 프로그램을 작성하는 중입니다. 이것은 커널에서 드라이버로 설치된 winusb.sys를 통해 장치와 통신 할 수있는 사용자 모드 라이브러리입니다.WinUsb를 사용하는 응용 프로그램 컴파일

나는 2008 년

WinUsb.h는 Windows DDK에서 발견되는 헤더 그래서 난이 포함 경로를 추가 비주얼 스튜디오와 C++에서이 응용 프로그램을 쓰고 있어요 "D : \ WinDDK \ 7100.0.0 \ INC \ DDK ". 그런 다음 Usb.h가 WinUsb.h에 포함되어 있는지 찾을 수 없다는 오류가 발생합니다. Usb.h도 ddk에 있지만 다른 디렉토리에 있으므로 "D : \ WinDDK \ 7100.0.0 \ inc \ api"를 다음과 같이 추가합니다. 포함 dir. 내가 그 경로를 추가하면

다음 모든 화장실에 가고 나는 STDIO.H와 다른 이상한 장소의 무리에서 컴파일 오류가 점점 시작합니다.

정말 간단하게이 DLL을 사용하려면 DDK 빌드 시스템 및 컴파일러를 사용하지 않으

, 나는 WinUsb를 사용하는 대신에 적절한 드라이버를 쓰고 있어요 주된 이유 중 하나 이잖아.

누구나 WinUsb.dll과 Visual Studio를 사용하여 응용 프로그램을 만들었습니까?

답변

4

나는 크로스 플랫폼 USB 라이브러리를 작성하고 DDK 내 빌드 프로세스는 훨씬 더 복잡 할 것 환경을 구축하여 작업입니다.

WinUsb는 자신의 드라이버로 WinUsb.sys를로드 장치 용 클라이언트 응용 프로그램에서 사용됩니다. 그러나 사용자 모드 프로그램 (UMDF 드라이버 제외)에서 사용하기 위해 패키지화 된 WinUsb 헤더 버전이없는 것 같습니다.

내가 DDK에서 그리고 개인 디렉토리에 winusb.h 지원하는 몇 헤더를 복사 한 일을 결국 무엇을, 나는 그 빌드 중에 포함 디렉토리와 그 디렉토리를 참조합니다. 나는 이러한 개인 디렉토리에 포함 된 내가 컴파일 및 Visual Studio에서 내 프로젝트를 실행할 수 있었다 DDK에 winusb.lib와 연결 한 후

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

:

이 내가 복사하는 데 필요한 헤더는 .

헤더를 변경할 때 DDK 릴리즈 사이가 나쁠 수 있기 때문에 나는이 방법을 권하고 싶습니다 경우 나도 몰라,하지만 난 WinUsb 헤더의 패키지를 만들 MS를 얻을 수 있다면 내가 볼 수있는 CONNECT 버그가 열립니다 클라이언트 사용자 모드 응용 프로그램에 사용됩니다.

+1

"올바른"방법인지 실마리가 없습니다. 적어도 그것은 작동하는 것 같습니다 ... 이것은 정말로 오히려 끔찍합니다. –

+2

이것은 문제의 플랫폼에서 "올바른"것으로 맞아 보이는 것 같습니다.) 실제로 작동합니다! – Magnus

1

역사적으로 DDK 및 SDK 함께 좋은 경기를하지 않은,하지만 그 문제는 비스타가 출시 된 언젠가 전에 수정되었습니다. 그러나 한 SDK의 일부를 다른 SDK와 혼합하는 것은 좋지 않습니다. DDK 빌드 환경을 사용하거나 DDK 환경을 설정하고 복제하는 INCLUDE 경로를 살펴보십시오. VS 프로젝트 설정에서 정확히입니다.

나는이 사용하지 않은, 그래서 나는 그들이 어떻게 작동하는지 잘 모르겠지만, 그들의 비슷한 이름에도 불구하고 점에 유의하고 서로 다른 도구 사용합니다.

+0

마이클, 제 질문에 답변 해 주셔서 감사합니다. 나는 또한 DDK와 SDK의 메쉬 작업이 진행되었다는 말을 들었지만 당신이 말한 것과 같이 무언가 상충되는 것 같다. 나는이 질문에 대한 답이 DDK 빌드 환경을 사용해야 만한다는 것을 두려워했다. 이 문제를 해결할 더러운 방법으로 해결했습니다. – joshperry

관련 문제