Windows 8: USB에 대한 새 소식

이 항목에서는 Windows 8에서 USB(범용 직렬 버스) 클라이언트 드라이버의 새로운 기능과 향상된 기능을 요약합니다.

일반적으로 USB의 새로운 기능에 대한 자세한 내용은 USB 드라이버의 새로운 기능을 참조하세요.

USB 3.0 장치의 새로운 드라이버 스택

Windows 8에서는 USB 3.0 장치를 지원하는 새로운 USB 드라이버 스택을 제공합니다. 새 스택에는 USB 3.0 장치를 xHCI 호스트 컨트롤러에 연결하면 Windows에서 로드되는 드라이버가 포함되어 있습니다. 새 드라이버는 KMDF(커널 모드 드라이버 프레임워크)를 기반으로 하며 USB 3.0 사양에 정의된 기능을 구현합니다. 새 드라이버는 다음과 같습니다.

  • Usbxhci.sys
  • Ucx01000.sys
  • Usbhub3.sys

새 드라이버 스택은 Windows 운영 체제의 이전 버전에서 빌드 및 테스트된 기존 클라이언트 드라이버에 대한 호환성을 유지 관리합니다.

USB 드라이버 스택의 아키텍처 블록 다이어그램과 새 드라이버에 대한 간단한 설명을 보려면 USB 3.0 드라이버 스택 아키텍처를 참조하세요.

새 스택에서 지원되는 기능

USB 3.0 장치의 USB 드라이버 스택은 다양한 새 기능을 지원합니다. 일부 기능은 클라이언트 드라이버를 통해 구성할 수 있습니다. 해당 기능은 다음과 같습니다.

  • 대량 끝점의 정적 스트림.

    스트림은 단일 대량 끝점에 대해 여러 데이터 전송을 수행하는 기능을 클라이언트 드라이버에 제공합니다. Windows 8용 WDK(Windows 드라이버 키트)는 클라이언트 드라이버가 대량 끝점에서 최대 255개 스트림을 열 수 있도록 하는 새로운 DDI(장치 드라이버 인터페이스)를 제공합니다. 스트림이 열린 후 클라이언트 드라이버가 특정 스트림에 대한 데이터 전송을 수행할 수 있습니다. 자세한 내용은 USB 대량 끝점에서 정적 스트림을 여닫는 방법을 참조하세요.

  • 체인 MDL

    클라이언트 드라이버는 연속 버퍼 대신에 MDL 체인에서 페이로드를 지정할 수 있습니다. 이를 통해 실제 메모리에서 전송 버퍼를 분할할 수 있으므로 버퍼 수, 크기 및 정렬에 대한 제한 사항이 제거됩니다. 체인 MDL을 사용하면 이중 버퍼링이 방지되므로 데이터 전송 중에 성능이 향상될 수 있습니다. 자세한 내용은 체인 MDL 보내기를 참조하세요.

  • 복합 장치에 대한 기능 일시 중단 및 원격 절전 모드 해제.

    이 기능을 통해 복합 장치의 기능이 다른 기능과 관계없이 절전 상태를 시작되거나 종료할 수 있습니다. 기능 드라이버는 장치에서 시작된 원격 절전 모드 해제를 요청할 수도 있습니다. 해당 요청은 복합 장치의 부모 드라이버를 통해 처리되어야 합니다. Microsoft 제공 부모 드라이버(Usbccgp.sys)는 기능 일시 중단 및 원격 절전 모드 해제 기능을 지원합니다. Windows 8용 WDK는 대체 부모 드라이버가 해당 기능을 구현할 수 있게 하는 DDI를 제공합니다. 자세한 내용은 복합 드라이버에서 기능 절전을 구현하는 방법을 참조하세요.

USB 클라이언트 드라이버에 대한 클라이언트 계약 버전

클라이언트 계약 버전은 USB 드라이버 스택에 요청을 보낼 때 클라이언트 드라이버에 적용되는 규칙 집합을 식별합니다. 작업에 실패하면 예기치 않은 동작이 발생할 수 있습니다. 해당 규칙에 대한 자세한 내용은 모범 사례: URB 사용을 참조하세요.

3.0 장치에 대한 USB 드라이버 스택의 기능을 사용해야 하는 클라이언트 드라이버는 USBD_CLIENT_CONTRACT_VERSION_602의 클라이언트 계약 버전을 통해 자신을 식별해야 합니다. 해당 클라이언트 드라이버를 USB 드라이버 스택에 등록해야 합니다. 등록한 후 스택이 필요한 기능을 지원하는지 여부를 확인하려면 클라이언트 드라이버가 기본 USB 드라이버 스택을 쿼리해야 합니다. 해당 작업을 쉽게 수행할 수 있도록 다음 KMDF 관련 메서드 및 WDM 루틴이 Windows 8용 WDK에 포함되었습니다.

사용 사례KMDF 기반 드라이버 수행 작업...WDM 드라이버 수행 작업...
클라이언트 계약 버전을 지정하고 USB 드라이버 스택을 포함하려면 WdfUsbTargetDeviceCreateWithParameters 메서드를 호출합니다. USBD_CreateHandle 루틴을 호출합니다.
특정 기능을 쿼리하려면 WdfUsbTargetDeviceQueryUsbCapability를 호출하고 쿼리할 기능의 GUID를 지정합니다. USBD_QueryUsbCapability를 호출하고 쿼리할 기능의 GUID를 지정합니다.

 

URB 할당 및 빌드를 위한 새 루틴

Windows 8에서는 URB 할당, 형식 지정 및 해제를 위한 새 루틴을 제공합니다. URB 구조는 USB 드라이버 스택에서 할당됩니다. 기본 스택이 새 USB 드라이버 스택인 경우 URB는 불투명 URB 컨텍스트와 쌍으로 연결됩니다. USB 드라이버 스택은 URB 컨텍스트를 사용하여 URB 추적 및 처리를 향상시킵니다. 루틴에 대한 자세한 내용은 URB 할당 및 빌드를 참조하세요.

새 루틴은 다음과 같습니다.

이전 목록의 루틴 이외에 URB 할당을 위한 새로운 KMDF 관련 메서드가 있습니다. KMDF 기반 클라이언트 드라이버의 경우 다음을 호출하는 것이 좋습니다.

USB 3.0 허브에 대한 새 사용자 모드 I/O 제어 요청

Windows 8에서는 응용 프로그램이 USB 3.0 허브와 해당 포트에 대한 정보를 검색하는 데 사용할 수 있는 새로운 IOCTL을 제공합니다. 새 IOCTL은 다음과 같습니다.

이전 I/O 요청을 USB 드라이버 스택에 보내면 응용 프로그램이 다음 정보를 검색합니다.

  • 허브 설명자
  • 모든 포트 및 도우미 포트 속성
  • 포트에 연결된 장치의 작동 속도

WinUSB에 대한 새 호환 가능 ID

장치 제조업체에서는 Windows에서 장치를 WinUSB 장치로 인식하도록 "WINUSB"를 펌웨어(Microsoft OS 기능 설명자)에 추가할 수 있습니다. Windows 8에서 Winusb.inf는 USB\MS_COMP_WINUSB를 장치 식별자 문자열로 포함하도록 수정되었습니다. 해당 수정을 통해 Windows에서는 장치가 검색되면 즉시 Winusb.sys를 장치의 기능 드라이버로 자동으로 로드합니다. 자세한 내용은 WinUSB 장치를 참조하세요.

USB 클라이언트 드라이버에 대한 새 Visual Studio 템플릿(*Beta의 새로운 기능)

Microsoft Visual Studio 2012에는 각각 UMDF 및 KMDF USB 클라이언트 드라이버에 대한 스타터 코드를 생성하는 USB 사용자 모드 드라이버USB 커널 모드 드라이버 템플릿이 포함되어 있습니다. 템플릿 코드는 USB 대상 장치 개체를 초기화하여 하드웨어와 통신할 수 있도록 합니다. 자세한 내용은 다음 항목을 참조하세요.

자세한 내용은 USB 클라이언트 드라이버 개발 시작을 참조하세요. USB 클라이언트 드라이버의 일반 작업을 수행하여 드라이버를 확장합니다.

UMDF 및 KMDF 드라이버를 구현하는 방법에 대한 자세한 내용은 Microsoft Press Developing Drivers with the Windows Driver Foundation 또는 WHDC 웹 사이트를 참조하세요.

UASP 드라이버

Windows 8에는 UASP(USB Attached SCSI Protocol)를 구현하는 새로운 USB 저장소 드라이버가 포함되어 있습니다. 새 드라이버는 공식 USB 3.0 사양에 따라 대량 끝점에 대한 정적 스트림을 사용합니다.

부팅 지원

Windows to Go 기능을 사용하면 플래시 드라이브 또는 외장형 드라이브에서 Windows를 부팅할 수 있습니다. 다양한 컴퓨터의 해당 드라이브에서 Windows 복사본으로 부팅할 수 있습니다.

향상된 디버깅 및 진단 기능

Windows 8은 USB 문제를 빠르게 진단할 수 있도록 새로운 USB 3.0 디버깅 도구를 제공합니다. USB 3.0 호스트 컨트롤러 및 장치 상태를 검사하는 새로운 USB 3.0 커널 디버거 확장이 있습니다. USB WPP 및 이벤트 추적을 사용하여 USB 조작 방식을 분석하고 USB 장치 문제를 보다 쉽게 해결할 수 있습니다. Windows 8은 USB 3.0을 통한 디버깅을 지원합니다. 자세한 내용은 수동으로 USB 3.0 연결 설정을 참조하세요.

장치 관리자의 새 USB 관련 오류 메시지

경우에 따라 Windows에서 연결된 USB 장치를 열거하지 못할 수 있습니다. 일반적으로 열거 오류는 USB 장치로 전송된 요청이 실패하거나 장치에서 잘못된 설명자를 반환하는 경우에 발생합니다.

Windows 8에서 그런 오류가 발생할 경우 장치 관리자일반 탭에 오류의 원인을 나타내는 USB 관련 오류 메시지가 표시됩니다.

오류 문자열은 다음과 같습니다.

  • USB 장치 설명자에 대한 요청이 실패했습니다.
  • USB 주소 설정 요청이 실패했습니다.
  • USB 포트 다시 설정 요청이 실패했습니다.
  • USB 장치의 이전 인스턴스가 제거되지 않았습니다.
  • USB 장치가 잘못된 USB 구성 설명자를 반환했습니다.
  • USB 장치가 잘못된 USB 장치 설명자를 반환했습니다.
  • 레지스트리에 액세스할 수 없습니다.
  • USB 구성 설명자에 대한 요청이 실패했습니다.
  • USB 장치의 포트 상태에 대한 요청이 실패했습니다.
  • USB 장치가 잘못된 일련 번호 문자열을 반환했습니다.
  • USB SEL 설정 요청이 실패했습니다.
  • USB BOS 설명자에 대한 요청이 실패했습니다.
  • USB 장치 한정자 설명자에 대한 요청이 실패했습니다.
  • USB 일련 번호 문자열 설명자에 대한 요청이 실패했습니다.
  • USB 언어 ID 문자열 설명자에 대한 요청이 실패했습니다.
  • USB 제품 설명 문자열 설명자에 대한 요청이 실패했습니다.
  • Microsoft OS 확장 구성 설명자에 대한 요청이 실패했습니다.
  • Microsoft OS 컨테이너 ID 설명자에 대한 요청이 실패했습니다.
  • USB 장치가 잘못된 USB BOS 설명자를 반환했습니다.
  • USB 장치가 잘못된 USB 장치 한정자 설명자를 반환했습니다.
  • USB 장치가 잘못된 USB 언어 ID 문자열 설명자를 반환했습니다.
  • USB 장치가 잘못된 Microsoft OS 컨테이너 ID 설명자를 반환했습니다.
  • USB 장치가 잘못된 Microsoft OS 확장 구성 설명자를 반환했습니다.
  • USB 장치가 잘못된 제품 설명 문자열 설명자를 반환했습니다.
  • USB 장치가 일련 번호 문자열 설명자를 반환했습니다.

관련 항목

USB 드라이버의 새로운 기능
USB(범용 직렬 버스) 드라이버

 

 

표시:
© 2015 Microsoft