UMDF 드라이버에서 유휴 Power-Down 지원

경고

UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한됩니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다.

보관된 UMDF 1 샘플은 Windows 11 버전 22H2 - 2022년 5월 드라이버 샘플 업데이트에서 찾을 수 있습니다.

자세한 내용은 UMDF를 사용하여 시작 참조하세요.

시스템이 작동 상태로 유지되는 동안 일부 디바이스는 절전 모드 상태가 될 수 있습니다. 이러한 디바이스의 경우 프레임워크는 디바이스가 미리 결정된(및 설정 가능한) 시간 동안 유휴(사용되지 않음)된 후 디바이스의 전원을 낮추기 시작합니다.

이러한 디바이스 중 일부는 외부 이벤트를 감지할 때 버스에서 절전 모드 해제 신호를 트리거할 수도 있습니다. 버스 드라이버는 이 신호에 응답하고 드라이버 스택은 디바이스를 작동 상태로 복원합니다. (외부 이벤트를 검색하지 않는 디바이스는 프레임워크가 버스 드라이버에 디바이스를 작동 상태로 복원하도록 요청할 때까지 저전력 상태로 유지됩니다.)

디바이스가 유휴 상태일 때 전원이 켜질 수 있는 경우 전원 정책 소유자는 다음 두 단계를 수행해야 합니다.

  1. IWDFDevice2::AssignS0IdleSettings 또는 IWDFDevice3::AssignS0IdleSettingsEx를 호출하여 다음을 지정합니다.

    • 디바이스가 입력할 저전력 상태
    • 전원 상태를 낮추기 전에 디바이스가 유휴 상태로 유지되어야 하는 시간입니다.
    • 디바이스가 외부 이벤트를 감지하고 버스에서 절전 모드 해제 신호를 트리거할 수 있는지 여부
    • 사용자가 디바이스의 유휴 설정을 제어할 수 있는지 여부
    • 유휴 시간 제한 기간이 만료되면 프레임워크에서 디바이스를 D3cold 전원 상태로 전환할 수 있는지 여부

    드라이버가 프레임워크 버전 1.11 이상으로 빌드된 경우 IWDFDevice2::AssignS0IdleSettings 대신 IWDFDevice3::AssignS0IdleSettingsEx를 호출할 수 있습니다. 위의 기능 외에도 IWDFDevice3::AssignS0IdleSettingsEx 를 사용하면 드라이버에서 다음을 지정할 수 있습니다.

    • 디바이스의 유휴 전원 다운 기능을 사용할지 또는 사용하지 않도록 설정되었는지 여부
    • 시스템이 작동 중(S0) 상태로 돌아갈 때 디바이스가 작동(D0) 상태로 돌아갈지 여부
  2. 디바이스에 필요한 경우 IPowerPolicyCallbackWakeFromS0 인터페이스 및 다음 이벤트 콜백 함수를 구현합니다.

프레임워크는 디바이스를 유휴 상태로 간주하고 다음 조건이 모두 충족되면 유휴 시간 계산을 시작합니다.

  • 이 디바이스에 대해 만든 전원 관리 큐에는 큐에서 대기하거나 드라이버에 디스패치된 요청이 instance 없습니다. 요청이 드라이버에 디스패치되고 드라이버가 I/O 대상으로 보낸 경우 요청은 여전히 큐와 관련이 있으며 디바이스는 유휴 상태로 간주되지 않습니다. 전원이 관리되지 않는 큐의 요청은 디바이스 유휴 상태로 계산되지 않습니다.
  • 드라이버가 이전에 IWDFDevice2::StopIdle을 호출한 경우 드라이버는 이후에 IWDFDevice2::ResumeIdle을 호출했습니다.
  • 전원 정책 소유자가 버스 드라이버인 경우 버스 드라이버의 자식 디바이스는 D0에 없습니다.

드라이버(또는 사용자)가 디바이스에 대해 유휴 전원을 사용하지 않도록 설정하는 경우 IWDFDevice2::StopIdle 메서드를 사용해야 할 수 있습니다. 디바이스가 작동 중(D0) 상태인 경우 이 메서드는 드라이버가 IWDFDevice2::ResumeIdle을 호출할 때까지 디바이스가 유휴 상태가 되지 않도록 합니다. 드라이버가 IWDFDevice2::StopIdle을 호출할 때 디바이스가 저전력 상태이고 시스템이 S0(작동 중) 상태인 경우 프레임워크는 버스 드라이버에 디바이스를 작동(D0) 상태로 복원하도록 요청합니다. 드라이버가 IWDFDevice2::StopIdle을 호출해야 하는 경우에 대한 자세한 내용은 메서드의 참조 페이지를 참조하세요.

디바이스가 저전력 상태에서 절전 모드를 해제할 수 있는 경우 디바이스 버스용 드라이버는 디바이스 절전 모드 해제에 참여합니다. 커널 모드 버스 드라이버는 버스 어댑터에서 필요한 모든 작업을 수행하여 저전력 상태에서 절전 모드를 해제하는 디바이스의 기능을 활성화하고 사용하지 않도록 설정합니다.

디바이스의 유휴 기능을 제어하는 레지스트리 항목에 대한 자세한 내용은 UMDF에서 디바이스 유휴 및 절전 모드 해제 동작의 사용자 제어를 참조하세요.