USB 직렬 드라이버(Usbser.sys)

Important

이 항목은 프로그래머를 위한 것입니다. USB 문제가 발생한 고객인 경우 Windows에서 USB-C 문제 해결을 참조 하세요.

통신 및 CDC 제어 디바이스에 Microsoft 제공 USB 드라이버(Usbser.sys)를 사용합니다. 가능한 경우 Windows에 포함된 드라이버를 사용하는 것이 좋습니다.

지원되는 버전

  • Windows 11
  • Windows 10

적용 대상

  • CDC 제어 디바이스의 디바이스 제조업체

Windows 10에서는 커널 모드 드라이버 프레임워크사용하여 드라이버를 다시 작성하여 드라이버의 전반적인 안정성을 개선했습니다.

  • 드라이버의 향상된 플러그 앤 플레이 및 전원 관리.
  • USB 선택적 일시 중단과 같은 전원 관리 기능이 추가되었습니다.

또한 UWP 애플리케이션은 이제 앱이 이러한 디바이스와 통신할 수 있도록 하는 Windows.Devices.SerialCommunication 네임스페이스에서 제공하는 API를 사용할 수 있습니다.

Usbser.sys 설치

통신 및 CDC 제어 디바이스에 대해 Microsoft에서 제공하는 기본 제공 드라이버(Usbser.sys)를 로드합니다.

참고 항목

Windows에 포함된 USB 디바이스 클래스 드라이버를 설치하려는 경우 드라이버를 다운로드할 필요가 없습니다. 자동으로 설치됩니다. 자동으로 설치되지 않은 경우 디바이스 제조업체에 문의하세요. Windows에 포함된 USB 디바이스 클래스 드라이버 목록은 Windows에 포함된 USB 디바이스 클래스 드라이버를 참조하세요.

Windows 10부터 Usbser.inf가 %Systemroot%\INF 디렉터리에 추가되어 Usbser.sys 디바이스 스택의 FDO(기능 디바이스 개체)로 로드합니다. 디바이스가 통신 및 CDC 제어 디바이스 클래스 에 속하는 경우 Usbser.sys 자동으로 로드됩니다. 드라이버를 참조하기 위해 사용자 고유의 INF를 작성할 필요가 없습니다. 드라이버는 Windows에 포함된 다른 USB 디바이스 클래스 드라이버와 유사한 호환 ID 일치를 기반으로 로드됩니다.

USB\Class_02

USB\Class_02&SubClass_02

  • Usbser.sys 자동으로 로드하려면 디바이스 설명자에서 클래스 코드를 02로 설정하고 하위 클래스 코드를 02로 설정합니다. 이 방법을 사용하면 시스템에서 Usbser.inf를 사용하기 때문에 디바이스에 대한 INF 파일을 배포할 필요가 없습니다. 자세한 내용은 Communication Devices 1.2에 대한 클래스 정의를 참조하세요.

  • 디바이스가 클래스 코드 02를 지정하지만 02 이외의 하위 클래스 코드 값을 지정하는 경우 Usbser.sys 자동으로 로드되지 않습니다. 플러그 앤 플레이 관리자는 드라이버를 찾으려고 시도합니다. 적합한 드라이버를 찾을 수 없는 경우 디바이스에 드라이버가 로드되지 않을 수 있습니다. 사용자 고유의 드라이버를 로드하거나 다른 기본 제공 드라이버를 참조하는 INF를 작성해야 할 수 있습니다.

  • 디바이스가 클래스 및 하위 클래스 코드를 02로 지정하고 Usbser.sys 대신 다른 드라이버를 로드하려는 경우 설치할 디바이스 및 드라이버의 하드웨어 ID를 지정하는 INF를 작성해야 합니다. 예를 들어 샘플 드라이버에 포함된 INF 파일을 살펴보고 디바이스와 유사한 디바이스를 찾습니다. INF 섹션에 대한 자세한 내용은 INF 파일 개요를 참조 하세요.

Usbser.sys 대한 선택적 일시 중단 구성

Windows 10부터 Usbser.sys USB 선택적 일시 중단을 지원합니다. 연결된 USB-직렬 디바이스는 사용하지 않을 때 저전력 상태로 들어가고 시스템은 S0 상태로 유지됩니다. 디바이스와의 통신이 다시 시작되면 디바이스는 일시 중단 상태를 벗어나 작업 상태를 다시 시작할 수 있습니다. 이 기능은 기본적으로 사용하지 않도록 설정되어 있으며 이 레지스트리 키 아래에 IdleUsbSelectiveSuspendPolicy 항목을 설정하여 사용하도록 설정하고 구성할 수 있습니다.

HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\Device Parameters

Usbser.sys 전원 관리 기능을 구성하려면 IdleUsbSelectiveSuspendPolicy를 다음으로 설정할 수 있습니다.

  • "0x00000001": 유휴 상태일 때 선택적 일시 중단을 입력합니다. 즉, 디바이스 간에 활성 데이터 전송이 없는 경우입니다.

  • "0x00000000": 디바이스에 열린 핸들이 없는 경우에만 선택적 일시 중단을 입력합니다.

해당 항목은 다음 두 가지 방법 중 하나로 추가할 수 있습니다.

  • 설치 INF를 참조하는 INF를 작성하고 HW에 레지스트리 항목을 추가합니다. AddReg 섹션입니다.

  • 확장 속성 OS 기능 설명자의 레지스트리 항목을 설명합니다. bPropertyName 필드를 유니코드 문자열인 "IdleUsbSelectiveSuspendPolicy" 및 wPropertyNameLength를 62바이트로 설정하는 사용자 지정 속성 섹션을 추가합니다. bPropertyData 필드를 "0x00000001" 또는 "0x00000000"로 설정합니다. 속성 값은 little-endian 32비트 정수로 저장됩니다.

    자세한 내용은 Microsoft OS 설명자를 참조 하세요.

USB CDC 디바이스용 Windows 애플리케이션 개발

Windows 10부터 Windows 앱은 Windows.Devices.SerialCommunication 네임스페이스를 사용하여 Usbser.sys 요청을 보낼 수 있습니다. 직렬 포트 또는 직렬 포트의 일부 추상화를 통해 USB CDC 디바이스와 통신하는 데 사용할 수 있는 Windows 런타임 클래스를 정의합니다. 클래스는 이러한 직렬 디바이스를 검색하고, 데이터를 읽고 쓰고, 전송 속도, 신호 상태 설정과 같은 흐름 제어에 대한 직렬별 속성을 제어하는 기능을 제공합니다.