다음을 통해 공유


USB 디바이스용 Windows 클라이언트 드라이버 개발 개요

이 문서에서는 Windows와 상호 운용 가능한 USB 디바이스 드라이버를 개발할 수 있도록 Windows 운영 체제의 USB(유니버설 직렬 버스) 지원에 대해 설명합니다.

USB 디바이스는 단일 포트를 통해 컴퓨터에 연결된 마우스 디바이스 및 키보드와 같은 주변 장치입니다. USB 클라이언트 드라이버는 디바이스 기능을 만들기 위해 하드웨어와 통신하는 컴퓨터에 설치된 소프트웨어입니다. 디바이스가 Microsoft에서 지원하는 디바이스 클래스에 속하는 경우 Windows는 Microsoft에서 제공하는 USB 드라이버(기본 클래스 드라이버) 중 하나를 디바이스에 로드합니다. 그렇지 않으면 하드웨어 제조업체 또는 타사 공급업체에서 사용자 지정 클라이언트 드라이버를 제공해야 합니다. Windows에서 디바이스를 처음 검색할 때 사용자가 디바이스에 대한 클라이언트 드라이버를 설치합니다. 설치가 성공하면 디바이스가 연결 될 때마다 Windows에서 클라이언트 드라이버를 로드하고 디바이스가 호스트 컴퓨터에서 분리 될 때 드라이버를 언로드합니다.

WDF(Windows 드라이버 프레임워크) 또는 WDM(Windows 드라이버 모델)을 사용하여 USB 디바이스에 대한 사용자 지정 클라이언트 드라이버를 개발할 수 있습니다. 대부분의 클라이언트 드라이버는 하드웨어와 직접 통신하는 대신, 하드웨어 추상화 계층(HAL) 함수 호출을 수행하여 클라이언트 드라이버의 요청을 하드웨어로 보내는 Microsoft 제공 USB 드라이버 스택에 요청을 보냅니다. 이 섹션의 항목에서는 클라이언트 드라이버가 보낼 수 있는 일반적인 요청과 클라이언트 드라이버가 해당 요청을 만들기 위해 호출해야 하는 DDI(디바이스 드라이버 인터페이스)에 대해 설명합니다.

대상 개발자

USB 디바이스의 클라이언트 드라이버는 USB 드라이버 스택에 의해 노출되는 DDI를 통해 디바이스와 통신하는 WDF 또는 WDM 드라이버입니다. 이 섹션은 WDM에 익숙한 C/C++ 프로그래머가 사용하기 위한 것입니다. 이 섹션을 사용하기 전에 기본 드라이버 개발을 이해해야 합니다. 자세한 내용은 Windows에서 드라이버 시작을 참조 하세요. WDF 드라이버의 경우 클라이언트 드라이버는 USB 대상을 사용하도록 특별히 설계된 KMDF(커널 모드 드라이버 프레임워크) 또는 UMDF(사용자 모드 드라이버 프레임워크) 인터페이스를 사용할 수 있습니다. USB 관련 인터페이스 에 대한 자세한 내용은 WDF USB 참조UMDF USB I/O 대상 인터페이스를 참조하세요.

개발 도구

WDK(Windows 드라이버 키트)에는 헤더, 라이브러리, 도구 및 샘플과 같은 드라이버 개발에 필요한 리소스가 포함되어 있습니다.

USB 프로그래밍 참조

USB 클라이언트 드라이버에서 사용하는 I/O 요청, 지원 루틴, 구조 및 인터페이스에 대한 사양을 제공합니다. 이러한 루틴 및 관련 데이터 구조는 WDK 헤더에 정의됩니다.

USB 드라이버 샘플

이러한 샘플을 사용하여 USB 클라이언트 드라이버 프로그래밍을 시작합니다.

유니버설 직렬 버스 문서 라이브러리 웹 사이트에서 공식 USB 사양을 다운로드할 수 있습니다 . 이 웹 사이트에는 유니버설 직렬 버스 사양의 다양한 수정 버전에 대한 링크가 포함되어 있습니다.

설명서 섹션

  • USB 클라이언트 드라이버 개발 시작
    USB 드라이버 개발을 소개합니다. 디바이스에 USB 드라이버를 제공하는 데 가장 적합한 모델을 선택하는 방법에 대한 정보를 제공합니다. Microsoft Visual Studio에 포함된 USB 템플릿을 사용하여 첫 번째 기본 사용자 모드 및 커널 모드 USB 드라이버를 작성, 빌드 및 설치합니다.

  • Windows의 USB 호스트 쪽 드라이버
    USB 드라이버 스택 아키텍처의 개요를 제공합니다.

  • USB 블록 요청 정보(URL)
    클라이언트 드라이버가 USB 드라이버 스택에 요청을 제출하기 위해 URB(USB 요청 블록)라는 가변 길이 데이터 구조를 빌드하는 방법을 알아봅니다.

  • USB 설명자
    클라이언트 드라이버가 USB 드라이버 스택에 요청을 제출하기 위해 URB(USB 요청 블록)라는 가변 길이 데이터 구조를 빌드하는 방법을 알아봅니다.

  • USB 드라이버에서 USB 구성 선택
    디바이스 구성은 클라이언트 드라이버가 각 인터페이스에서 USB 구성 및 대체 인터페이스를 선택하기 위해 수행하는 작업을 나타냅니다. 이 섹션에서는 USB 구성을 선택하는 데 필요한 메서드 호출을 보여줍니다.

  • USB 클라이언트 드라이버에서 USB 데이터 전송 보내기
    USB 파이프, I/O 요청에 대한 URL 및 클라이언트 드라이버가 DDI(디바이스 드라이버 인터페이스)를 사용하여 USB 디바이스 간에 데이터를 전송하는 방법을 설명합니다.

  • USB 클라이언트 드라이버에서 전원 관리 구현
    USB(유니버설 직렬 버스) 사양을 준수하는 USB 디바이스의 전원 관리 기능에는 풍부하고 복잡한 전원 관리 기능 집합이 있습니다.