디바이스 전원 정책 관리

전원 관리자가 시스템에 대한 전원 정책을 유지 관리하고 관리하는 것처럼 각 디바이스에 대한 디바이스 스택의 한 드라이버는 디바이스에 대한 전원 정책을 유지 관리하고 관리합니다. 이 드라이버는 디바이스의 디바이스 전원 정책 소유자 입니다.

디바이스 전원 정책 소유자는 디바이스 사용량 및 전원 상태에 대한 정보가 가장 많은 드라이버입니다. 디바이스의 전원을 켜고 끄도록 디바이스 레지스터를 물리적으로 설정할 필요는 없지만 디바이스가 사용 중인 시기, 유휴 상태 및 전원 상태를 변경해야 하는 시기를 확인할 수 있어야 합니다.

일반적으로 디바이스의 함수 드라이버는 전원 정책 소유자이지만 일부 디바이스의 경우 다른 드라이버 또는 시스템 구성 요소가 이 역할을 맡을 수 있습니다. 전원 관리와 관련된 드라이버 유형에 대한 자세한 내용은 WDM 드라이버 유형을 참조하세요.

일부 드라이버는 하나의 디바이스(FDO 만들기) 및 열거된 자식 디바이스에 대한 버스 드라이버(PDO 만들기)의 함수 드라이버 역할을 합니다. 전원 및 PnP IRP에 대한 디스패치 루틴에서 이러한 드라이버는 FDO로 전송된 IR과 PDO로 전송되는 IR의 처리를 구분해야 합니다.

예를 들어 SCSI 어댑터용 드라이버는 어댑터 자체에 대한 함수 드라이버(FDO 만들기)와 어댑터에 연결된 디스크에 대한 버스 드라이버(PDO 만들기)의 역할을 수행할 수 있습니다. SCSI 어댑터에 대한 함수 드라이버/정책 소유자로서의 용량에서 이 드라이버는 시스템 IRP를 수신하고 SCSI 어댑터에 대한 디바이스 IRP를 요청합니다. 디스크용 버스 드라이버로서의 용량에서 만든 디스크 PDO를 지정하는 디바이스 IRP를 처리하고 완료합니다. 드라이버가 한 디바이스(FDO)에 대한 전원 정책을 소유한다고 해서 자식 디바이스(PDO)에 대한 전원 정책을 소유한다는 의미는 아닙니다.

디바이스 전원 정책 소유자는 다음을 담당합니다.

  • 플러그 앤 플레이 관리자의 IRP_MN_START_DEVICE 요청을 처리할 때 PoSetPowerState를 호출하여 디바이스의 초기 전원 상태를 D0으로 설정합니다.

    디바이스는 필요에 따라 전원을 켜야 합니다. 예를 들어 디바이스는 전원을 켜서 I/O 요청을 처리해야 합니다. 디바이스 전원 정책 소유자는 디바이스가 필요한 시기를 확인하고, 디바이스 전원이 켜지도록 하고, 올바른 디바이스 전원 상태를 설정할 책임이 있습니다. 일반적인 디바이스는 PnP 시작 디바이스 IRP가 완료될 때까지 전원을 켜야 합니다.

    일반적으로 대부분의 디바이스는 시스템이 작동 상태에 있는 경우에도 사용하지 않을 때 전원을 꺼야 합니다.

  • PoRequestPowerIrp를 호출하여 시스템 전원 요청에 대한 응답으로 디바이스 전원 요청을 보냅니다.

    예를 들어 정책 소유자가 시스템 설정 전원 IRP를 받으면 디바이스 집합 전원 IRP를 보냅니다. 시스템이 절전 모드 상태가 되면 대부분의 디바이스가 D3에 들어갑니다. DEVICE_CAPABILITIES 구조체의 DeviceState 배열은 디바이스가 각 시스템 전원 상태에 대해 유지할 수 있는 가장 높은 전원 상태를 나열합니다. ( 보고 디바이스 전원 기능을 참조하세요.)

  • 디바이스가 유휴 상태인지 감지하고 절전 모드로 전환하여 에너지를 절약합니다.

    전원 관리자 또는 디바이스 정책 소유자는 유휴 디바이스를 검색하고 디바이스 전원 IRP를 보내 상태를 변경할 수 있습니다. 자세한 내용은 유휴 디바이스 검색을 참조하세요.

  • 필요한 경우 디바이스를 작업 상태로 반환합니다.

    절전 모드 디바이스에 대한 I/O 요청이 도착하면 디바이스의 드라이버는 이를 작업 상태로 반환해야 합니다.

  • 요청 시 디바이스에 대해 절전 모드 해제를 사용하도록 설정하고 사용하지 않도록 설정합니다.

    디바이스 전원 정책 소유자는 Wake-Up 기능이 있는 디바이스 지원에 설명된 대로 대기/절전 모드 해제 IRP를 보내고 취소합니다.