USB 드라이버의 선택적 일시 중단(WDF)
USB 함수 드라이버는 USB 선택적 일시 중단을 구현하여 런타임 유휴 검색을 지원합니다. 다음은 WDF(Windows® 드라이버 파운데이션)를 기반으로 하는 USB 드라이버에서 선택적 일시 중단을 구현하는 방법에 대한 드라이버 개발자를 위한 콘텐츠입니다.
선택적 일시 중단 정보
선택적 일시 중단은 전원을 끊고 나중에 유휴 USB 장치를 다시 시작하는 기능이며 연결된 컴퓨터는 S0(작업 상태)에 남아 있습니다. 특히 모바일 PC에서 에너지 효율적인 작동을 위해 모든 USB 장치와 드라이버는 선택적 일시 중단을 지원해야 합니다. 유휴 상태일 때 디바이스의 전원을 낮추지만 시스템이 S0 상태로 유지되는 동안 다음과 같은 중요한 이점이 있습니다.
- 선택적 일시 중단은 전원을 절약합니다.
- 선택적 일시 중단은 열 부하 및 소음과 같은 환경 요인을 줄이는 데 도움이 될 수 있습니다.
디바이스 하드웨어가 유휴 상태일 때 전원이 없으면 드라이버에서 이 기능을 지원해야 합니다. WDF(Windows® 드라이버 파운데이션)를 기반으로 하는 USB 드라이버에서 선택적 일시 중단 지원을 사용하려면 기본 플러그 앤 플레이 지원에 필요한 콜백 외에도 최대 몇 가지 추가 콜백이 필요합니다.
USB 디바이스의 모든 함수 드라이버는 시스템이 실행되는 동안 유휴 디바이스를 일시 중단하는 적극적인 전원 관리를 구현해야 합니다. 이 항목에서는 WDF 기반 드라이버에서 선택적 일시 중단을 구현하는 방법에 대해 설명합니다. WDF에 익숙하지 않은 경우 WDK(Windows 드라이버 키트) 및 Windows 드라이버 파운데이션을 사용하여 드라이버 개발을 참조하세요.
USB 디바이스는 USB 선택적 일시 중단을 통해 런타임 유휴 검색을 지원합니다. 선택적 일시 중단을 사용하면 동일한 허브에 연결된 다른 디바이스 또는 다기능 디바이스의 경우 디바이스의 다른 기능에 영향을 주지 않고 유휴 디바이스를 일시 중단된 상태로 전환할 수 있습니다. 모든 디바이스 또는 함수가 일시 중단된 경우 전체 허브 또는 다기능 디바이스의 전원을 끊을 수 있습니다.
하드웨어 관점에서 선택적 일시 중단은 USB 포트의 물리적 상태입니다. 포트에 연결된 모든 함수가 유휴 상태이면 포트에서 선택적 일시 중단을 입력할 수 있습니다.
USB 사양을 준수하려면 모든 USB 디바이스가 선택적 일시 중단을 지원해야 합니다. USB 버스가 유휴 상태이면 디바이스의 전원을 낮출 수 있어야 합니다. Microsoft에서 제공하는 USB 허브 드라이버는 하드웨어 수준에서 선택적 일시 중단을 구현합니다.
USB 함수 드라이버는 WDF를 통해 개별 디바이스 기능에 대한 선택적 일시 중단을 구현해야 하며, 이는 버스 드라이버와 통신하고 디바이스 기능을 일시 중단하고 다시 시작하는 디바이스 I/O 제어 요청을 관리합니다. WDF를 사용하면 커널 모드 및 사용자 모드 드라이버가 모두 선택적 일시 중단을 지원할 수 있습니다.
함수 드라이버의 USB 선택적 일시 중단 코드에 대한 세부 정보는 드라이버가 사용자 모드 또는 커널 모드에서 실행되는지 여부에 따라 달라집니다. 다음 지침을 고려합니다.
- 가능하면 UMDF(사용자 모드 드라이버 프레임워크)를 사용하여 USB 드라이버를 구현합니다. 사용자 모드 드라이버는 시스템 데이터가 손상될 가능성이 적고 커널 모드 드라이버보다 디버그가 더 간단합니다.
- 드라이버가 등시 엔드포인트를 통해 데이터를 스트리밍하거나 커널 모드에서만 사용할 수 있는 다른 기능 또는 리소스가 필요한 경우에만 KMDF(커널 모드 드라이버 프레임워크)를 사용합니다.
전원 정책 소유권, I/O 큐 및 선택적 일시 중단
디바이스 스택에 대한 PPO(전원 정책 소유자)는 지정된 시간에 디바이스가 있어야 하는 전원 상태를 결정하는 드라이버입니다. 각 디바이스 스택에서 하나의 드라이버만 PPO일 수 있습니다. 함수 드라이버는 일반적으로 해당 디바이스의 PPO입니다.
USB 드라이버가 선택적 일시 중단을 지원하고 디바이스 스택의 PPO 위에 계층화된 경우 드라이버는 전원 관리형 큐를 사용하지 않아야 합니다. 이는 UMDF 및 KMDF 드라이버 모두에 적용됩니다. 디바이스가 일시 중단되는 동안 전원 관리 큐에 대한 요청이 도착하면 전체 디바이스 스택이 중단될 수 있습니다.
그림 1은 I/O 큐를 통해 USB 드라이버에 대한 I/O 요청의 흐름을 보여 줍니다.
그림에서 USB 드라이버에 대한 요청이 도착합니다. 프레임워크는 적절한 큐에 요청을 추가합니다.
큐가 전원 관리되지 않는 경우 프레임워크는 드라이버가 큐에 대해 구성한 디스패치 유형(순차적, 병렬 또는 수동)에 따라 드라이버에 요청을 표시합니다. 그런 다음 드라이버는 요청을 처리합니다.
큐가 전원 관리되고 디바이스가 일시 중단되지 않은 경우 프레임워크는 구성된 디스패치 유형에 따라 드라이버에 요청을 표시합니다.
그러나 디바이스가 일시 중단된 경우 프레임워크의 작업은 드라이버가 디바이스 스택의 PPO인지 여부에 따라 달라집니다. 드라이버가 PPO인 경우 프레임워크는 USB 부모 드라이버와 통신하여 디바이스에 전원을 공급합니다. 디바이스가 다시 시작된 후 프레임워크는 드라이버에 요청을 표시합니다.
드라이버가 PPO가 아닌 경우 PPO만 디바이스를 다시 시작할 수 있으므로 프레임워크는 더 이상 작업을 수행하지 않습니다. 요청은 큐에 남아 있습니다. PPO가 디바이스를 다시 시작하도록 하는 요청을 받지 못하면 디바이스 스택이 중단됩니다.
섹션 내용
항목 | Description |
---|---|
UMDF 드라이버의 선택적 일시 중단 | 이 항목에서는 UMDF 함수 드라이버가 USB 선택적 일시 중단을 지원하는 방법을 설명합니다. |
USB KMDF 함수 드라이버의 선택적 일시 중단 | 이 항목에서는 KMDF 함수 드라이버가 USB 선택적 일시 중단을 지원하는 방법을 설명합니다. |