올바른 디바이스 전원 상태 확인
전원 정책 소유자는 DEVICE_CAPABILITIES 구조에서 DeviceState 배열을 확인하여 각 시스템 전원 상태에 대해 유효한 디바이스 전원 상태 범위를 확인합니다. 배열에는 기본 디바이스가 각 시스템 전원 상태에 대해 지원할 수 있는 가장 높은 디바이스 전원 상태가 나열됩니다.
이 범위에서 특정 상태를 선택할 때 다음을 고려합니다.
시스템이 S0 상태가 되면 대부분의 디바이스가 D0 상태로 들어갑니다.
시스템이 절전 모드 상태가 되면 대부분의 디바이스는 D3 상태로 들어갑니다. 그러나 절전 모드 해제를 사용하도록 설정된 디바이스는 이러한 상태를 지원하는 경우 D1 또는 D2를 대신 입력해야 할 수 있습니다. 자세한 내용은 보고 디바이스 전원 기능을 참조하세요.
최대 절전 모드 파일을 보유할 디바이스에 대해 특수 규칙이 적용됩니다. 시스템 IRP가 PowerSystemHibernate를 요청하는 경우 최대 절전 모드 파일을 보유하는 디바이스는 전원을 끄지 않아야 합니다. 이러한 디바이스의 전원 정책 소유자는 디바이스 전원 상태 D3를 요청하고 컨텍스트를 저장해야 하지만 디바이스의 드라이버는 디바이스의 전원을 끄면 안 됩니다.
시스템 IRP가 PowerSystemShutdown을 요청하는 경우 드라이버는 Irp-Parameters.Power.ShutdownType>에서 POWER_ACTION 값을 검사 상태 변경 이유를 결정해야 합니다. 자세한 내용은 시스템 전원 작업을 참조하세요.
디바이스 전원 정책 소유자는 디바이스가 이미 올바른 디바이스 전원 상태에 있더라도 각 시스템 세트 전원 IRP에 대해 디바이스 설정 전원 IRP를 보내야 합니다. 드라이버가 이전에 쿼리 전원 IRP에 대한 응답으로 디바이스 작업을 일시 중단한 경우 set-power IRP는 IRP 큐를 중지하고 현재 전원 상태에 대한 정상 작업으로 돌아가도록 알린 것입니다. 유일한 예외는 디바이스가 D3 상태일 때 발생합니다. 이 경우 드라이버는 D3에 대한 추가 IRP_MN_SET_POWER 요청을 보낼 필요가 없습니다.