절전 모드 해제에서 최대 절전 모드에서 빠른 시작 구별
Windows에는 세 가지 시작 모드가 있습니다.
- 콜드(기존)
- 절전 모드 해제-최대 절전 모드
- Fast(Windows 8 도입된 처음 두 가지를 결합)
빠른 시작과 절전 모드 해제를 구분하기 위해 커널 모드 디바이스 드라이버는 시스템 전원 IRP를 검사할 수 있습니다.
콜드 시작 중에 부팅 로더는 Windows 커널 파일의 섹션을 메모리에 로드하고 연결하여 커널 메모리 이미지를 생성합니다. 다음으로, 커널은 핵심 시스템 기능을 구성하고, 컴퓨터에 연결된 디바이스를 열거하고, 해당 디바이스에 대한 드라이버를 로드합니다.
반면 빠른 시작은 단순히 최대 절전 모드 파일(Hiberfil.sys)을 메모리에 로드합니다. 빠른 시작은 콜드 스타트업보다 훨씬 적은 시간이 걸리는 경향이 있습니다.
빠른 시작과 절전 모드 해제를 구분하기 위해 드라이버는 컴퓨터가 S0(작업) 상태로 전환되었음을 드라이버에 알리는 시스템 IRP_MN_SET_POWER(set-power) IRP의 정보를 검사할 수 있습니다. 이 IRP에서 드라이버의 I/O 스택 위치에 는 전원 관련 정보가 포함된 구조체인 Power 멤버가 포함되어 있습니다. Windows Vista부터 Power 멤버 구조에는 이전 시스템 전원 상태에 대한 정보가 포함된 SYSTEM_POWER_STATE_CONTEXT 구조체인 SystemPowerStateContext 멤버가 포함됩니다. 이 정보는 SYSTEM_POWER_STATE_CONTEXT 구조체의 비트 필드에 인코딩됩니다.
SYSTEM_POWER_STATE_CONTEXT 구조의 대부분의 비트 필드는 시스템 사용을 위해 예약되어 있으며 드라이버에 불투명합니다. 그러나 이 구조체에는 빠른 시작 또는 절전 모드 해제가 발생했는지 여부를 확인하기 위해 드라이버에서 읽을 수 있는 TargetSystemState 및 EffectiveSystemState라는 두 개의 비트 필드가 포함되어 있습니다.
TargetSystemState 및 EffectiveSystemState 비트 필드는 SYSTEM_POWER_STATE 열거형 값으로 설정됩니다. TargetSystemState = PowerSystemHibernate 및 EffectiveSystemState = PowerSystemHibernate이면 절전 모드 해제가 발생했습니다.
그러나 TargetSystemState = PowerSystemShutdown 및 EffectiveSystemState = PowerSystemHibernate인 경우 빠른 시작이 발생했습니다.
TargetSystemState 비트 필드는 컴퓨터가 종료되거나 최대 절전 모드로 전환되기 전에 드라이버가 시스템 전원 IRP를 받은 마지막 시스템 전원 상태 전환을 지정합니다. EffectiveSystemState 비트 필드는 사용자가 인식한 대로 디바이스의 효과적인 이전 시스템 전원 상태를 나타냅니다. 예를 들어 드라이버가 최대 절전 모드 상태로의 보류 중인 시스템 전환 알림을 받았지만 하이브리드 종료가 발생한 경우 TargetSystemState 및 EffectiveSystemState 값이 일치하지 않을 수 있습니다.
자세한 내용은 SYSTEM_POWER_STATE_CONTEXT 참조하세요.
빠른 시작 준비
빠른 시작을 준비하기 위해 Windows는 전체 종료 시퀀스를 수행하고 최대 절전 모드 파일을 저장합니다.
- 먼저 전체 종료와 마찬가지로 Windows는 모든 애플리케이션을 닫고 모든 사용자 세션을 로그오프합니다. 이 단계에서는 애플리케이션이 실행되고 있지 않지만 Windows 커널이 로드되고 시스템 세션이 실행되고 있습니다.
- 다음으로, 전원 관리자는 디바이스 드라이버에 시스템 전원 IRP를 보내 디바이스가 최대 절전 모드로 전환되도록 준비하도록 지시합니다.
- 마지막으로 Windows는 커널 메모리 이미지(로드된 커널 모드 드라이버 포함)를 Hiberfil.sys 저장하고 컴퓨터를 종료합니다.
디바이스용 드라이버가 콜드 시작 또는 절전 모드 해제 최대 절전 모드 해제 발생 여부에 따라 디바이스를 다르게 구성하는 경우 이 드라이버는 빠른 시작 후 콜드 시작이 발생한 것처럼 디바이스를 구성해야 합니다. 예를 들어 시스템 제공 NDIS 드라이버는 빠른 시작 시 미니포트 절전 모드 해제 기능을 사용하지 않도록 설정하지만 절전 모드 해제 모드에서 최대 절전 모드에서 해제하지는 않습니다.