다음을 통해 공유


디바이스 전원 정책 소유자에서 시스템 Set-Power IRP 처리

시스템 설정 전원 IRP에 대한 응답으로 디바이스 스택의 전원 정책 소유자는 디바이스 스택을 적절한 디바이스 전원 상태로 전환해야 합니다.

일반적으로 디바이스 전원 정책 소유자가 시스템 전원 상태에 대한 IRP_MN_SET_POWER 받으면 시스템 전원 IRP를 디바이스 스택 아래로 전달하여 응답해야 합니다. 또한 디바이스 전원 정책 소유자는 IoCompletion 루틴에서 해당 디바이스 전원 상태에 대한 디바이스 스택 IRP_MN_SET_POWER 전송하여 응답해야 합니다. 스택의 모든 드라이버가 디바이스 전원 IRP를 완료하면 디바이스 전원 정책 소유자가 시스템 설정 전원 IRP를 완료합니다.

그러나 시스템 다시 시작 성능을 향상시키려면 자식 디바이스가 없는 디바이스의 디바이스 전원 소유자는 시스템이 절전 모드 상태에서작업 상태 S0으로 돌아가는 데 걸리는 시간을 줄이기 위해 다른 접근 방식을 사용해야 합니다. 이 경우 시스템을 작동 상태 S0으로 반환하는 시스템 설정 전원 IRP에 대한 응답으로 디바이스 전원 정책 소유자는 다음 일련의 작업을 수행해야 합니다.

  1. 드라이버의 DispatchPower 루틴에서 S0 시스템 전원 상태에 대한 IRP_MN_SET_POWER IRP를 받은 후 IRP에 대한 IoCompletion 루틴을 설정하고 IRP를 스택 아래로 전달합니다.

  2. 1단계에서 설정된 IoCompletion 루틴에서 해당 디바이스 전원 상태에 대한 IRP_MN_SET_POWER IRP를 요청한 다음 시스템 집합 전원 IRP를 즉시 완료합니다. 드라이버는 시스템 설정 전원 IRP를 완료하기 전에 디바이스 세트 전원 IRP가 완료되기를 기다리지 않아야 합니다. IoCompletion 루틴은 모든 하위 수준 드라이버가 시스템 설정 전원 IRP를 완료하고 시스템 설정 전원 IRP가 드라이버의 FDO(기능 디바이스 개체)로 다시 전달된 후에 실행됩니다.

  3. 필요한 디바이스별 초기화를 수행합니다.

  4. 2단계에서 전송된 디바이스 집합 전원 IRP를 완료합니다.

  5. 디바이스가 디바이스 절전 모드 상태일 때 큐에 대기된 I/O 요청을 처리합니다.

커널 전원 관리자에는 제한된 IRP 디스패치 큐 집합이 있으며 시스템의 모든 디바이스에 시스템 작업 상태 S0으로의 반환을 신속하게 알려야 합니다. 시스템 전원 IRP를 최대한 빨리 완료하지 못하는 드라이버는 다른 디바이스가 시스템 전원 전원 IRP를 가져오지 못하게 하여 시스템 전원 상태 전환 중 전반적인 시스템 성능에 부정적인 영향을 줄 수 있습니다.

시스템 설정 전원 IRP 처리에 대한 자세한 내용은 다음을 참조하세요.

올바른 디바이스 전원 상태 확인

System Set-Power IRP에 대한 응답으로 디바이스 Set-Power IRP 보내기