다음을 통해 공유


디바이스가 작동 상태로 돌아갑니다.

다음 중 하나가 발생하면 저전력 상태의 디바이스가 작동 상태로 돌아갑니다.

  • 디바이스는 외부 이벤트를 감지하고 버스에서 절전 모드 해제 신호를 트리거합니다. 절전 모드 해제 신호를 감지하는 버스 드라이버는 WdfDeviceIndicateWakeStatus를 호출합니다. 결과적으로 프레임워크는 버스 드라이버의 EvtDeviceDisableWakeAtBus 콜백 함수를 호출합니다.

  • 디바이스가 유휴 상태이고 드라이버가 WdfDeviceStopIdle을 호출합니다.

  • 시스템의 전원 상태가 저전력 상태에서 작동(S0) 상태로 변경되었습니다.

이러한 각 상황에서 프레임워크는 버스 드라이버의 EvtDeviceD0Entry 콜백 함수를 호출한 다음 디바이스(버스의 자식 디바이스)를 작동(D0) 상태로 복원합니다.

디바이스를 지원하는 각 함수 및 필터 드라이버에 대해 프레임워크는 드라이버 스택에서 가장 낮은 드라이버부터 시작하여 순서대로 한 번에 하나의 드라이버를 수행합니다.

  1. 프레임워크는 드라이버의 EvtDeviceD0Entry 콜백 함수(있는 경우)를 호출합니다.

  2. 프레임워크는 각 인터럽트에 대해 드라이버의 EvtInterruptEnable 콜백 함수(있는 경우)를 호출한 다음 드라이버가 디바이스 인터럽트를 사용하도록 설정할 수 있도록 드라이버의 EvtDeviceD0EntryPostInterruptsEnabled 콜백 함수를 호출합니다.

  3. 하드웨어 및 드라이버가 DMA를 지원하는 경우 프레임워크는 생성된 각 DMA 채널에 대해 드라이버의 EvtDmaEnablerFill, EvtDmaEnablerEnableEvtDmaEnablerSelfManagedIoStart 콜백 함수(있는 경우)를 호출합니다.

  4. 드라이버가 디바이스의 전원 정책 소유자인 경우 프레임워크는 EvtDeviceDisarmWakeFromS0 또는 EvtDeviceDisarmWakeFromSx 콜백 함수를 호출합니다.

  5. 프레임워크는 드라이버의 EvtChildListScanForChildren 콜백 함수(있는 경우)를 호출합니다.

  6. 프레임워크는 드라이버의 전원 관리형 I/O 큐를 모두 다시 시작하고 필요한 경우 EvtIoResume 콜백 함수를 호출합니다.

  7. 드라이버가 자체 관리형 I/O를 사용하는 경우 프레임워크는 드라이버의 EvtDeviceSelfManagedIoRestart 콜백 함수를 호출합니다.