다음을 통해 공유


디바이스 작업 상태 D0

D0 디바이스 전원 상태에서 디바이스가 완전히 켜지고 작동합니다. 이 상태에서 디바이스 드라이버는 디바이스와 상호 작용하여 I/O 작업을 수행할 수 있으며 디바이스는 인터럽트 생성을 수행할 수 있습니다. 디바이스에 메모리 또는 I/O 주소 공간에 매핑된 하드웨어 레지스터가 있는 경우 드라이버는 이러한 레지스터에 액세스할 수 있습니다.

Windows 8 시작하여 디바이스 드라이버는 수동 수준 ISR(인터럽트 서비스 루틴)을 디바이스의 인터럽트로 연결할 수 있습니다. 디바이스는 D0에 있는지 여부에 관계없이 인터럽트 생성할 수 있습니다. 저전력 Dx 상태인 경우 디바이스는 디바이스를 D0으로 다시 가져오는 트리거 역할을 하는 인터럽트를 생성할 수 있습니다. ISR은 디바이스가 D0에 진입한 후 IRQL = PASSIVE_LEVEL 실행되도록 예약됩니다. Windows 7을 비롯한 이전 버전의 Windows에서는 디바이스가 D0 이외의 디바이스 전원 상태일 때 인터럽트 생성을 하지 않아야 합니다.

D0에서 저전력 Dx 상태로의 전환은 디바이스 드라이버가 디바이스의 전원 정책 소유자 역할을 하는 동안 PoRequestPowerIrp 루틴을 호출하여 전환을 시작하는 경우에만 발생할 수 있습니다. 전원 관리자가 전원 IRP(IRP_MN_SET_POWER), 디바이스 드라이버, 버스 드라이버 및 플랫폼 펌웨어( Windows ACPI 드라이버, Acpi.sys 통해)를 전송하여 이 호출에 응답하는 경우 이 IRP를 협조적으로 처리하여 디바이스의 전원 상태를 변경합니다.

디바이스 하드웨어는 일반적으로 디바이스 구성 방법에 따라 런타임 인터럽트 또는 절전 모드 해제 신호를 생성할 수 있는 내부 이벤트 집합을 모니터링합니다. 드라이버는 인터럽트 에 응답하는 하나의 코드 경로를 구현하고 다른 하나는 절전 모드 해제 이벤트에 응답합니다. 인터럽트 코드 경로가 절전 모드 해제 이벤트를 처리할 필요가 없으며 절전 모드 해제 코드 경로가 인터럽트 처리할 필요가 없는 경우 드라이버 코드를 간소화할 수 있습니다. 모범 사례로, 드라이버는 디바이스가 D0에 있을 때만 인터럽트 생성 및 디바이스가 저전력 Dx 상태인 경우에만 절전 모드 해제 신호를 생성하도록 디바이스를 구성해야 합니다. 일반적으로 드라이버는 디바이스가 D0을 종료하기 직전에 절전 모드 해제 신호를 생성하도록 디바이스를 구성하고 디바이스가 D0에 진입한 직후 인터럽트 생성을 위해 디바이스를 구성합니다.

일반적으로 디바이스는 하드웨어 재설정 신호가 어설션될 때 D0 상태가 됩니다. 실제로 PCI 및 PCI Express와 같은 버스의 사양에는 이 동작이 필요합니다.

D0 상태의 특징은 다음과 같습니다.

전력 소비량
디바이스에 대한 최고 수준의 연속 전력 소비입니다.

디바이스 컨텍스트
모든 컨텍스트가 유지됩니다.

디바이스 드라이버 동작
정상 작업입니다.

복원 시간
해당 사항 없음

절전 모드 해제 기능
해당 사항 없음