[KMDF 및 UMDF에 적용]
드라이버의 EvtDeviceD0Exit 이벤트 콜백 함수는 드라이버의 디바이스가 D0 전원 상태를 벗어나면 필요한 작업을 수행합니다.
통사론
EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;
NTSTATUS EvtWdfDeviceD0Exit(
[in] WDFDEVICE Device,
[in] WDF_POWER_DEVICE_STATE TargetState
)
{...}
매개 변수
[in] Device
프레임워크 디바이스 개체에 대한 핸들입니다.
[in] TargetState
디바이스가 입력하려고 하는 디바이스 전원 상태를 식별하는 WDF_POWER_DEVICE_STATE형식의 열거자입니다.
반환 값
EvtDeviceD0Exit 콜백 함수에 오류가 발생하지 않으면 STATUS_SUCCESS 또는 NT_SUCCESS(상태)가 TRUE 다른 상태 값을 반환해야 합니다. 그렇지 않으면 NT_SUCCESS(상태)가 false 상태 값을 반환해야 합니다.
발언
EvtDeviceD0Exit 콜백 함수를 등록하려면 드라이버가 WdfDeviceInitSetPnpPowerEventCallbacks호출해야 합니다.
드라이버가 EvtDeviceD0Exit 콜백 함수를 등록한 경우 프레임워크는 드라이버의 디바이스 중 하나가 작동 상태(D0)를 떠날 때마다 함수를 호출합니다. 다음 중 하나가 발생하면 디바이스가 D0 상태를 남깁니다.
- 시스템과 모든 장치는 작업 상태를 떠나 저전력 상태로 진입하려고 합니다.
- 디바이스가 저전력 유휴 상태를 지원하는 경우 유휴 상태이므로 디바이스가 저전력 상태로 전환됩니다.
- 플러그 앤 플레이 관리자가 시스템의 하드웨어 리소스를 재배포하려고 합니다.
- 사용자는 일반적으로 애플리케이션의 사용자 인터페이스를 통해 디바이스를 제거하려고 함을 표시했습니다.
프레임워크가 이 콜백 함수를 호출하는 시기에 대한 자세한 내용은 PnP 및 Power Management 시나리오참조하세요.
디바이스가 깜짝 제거되지 않는 한 프레임워크는 디바이스의 인터럽트 기능을 사용하지 않도록 설정한 직후에 이 콜백 함수를 호출하지만 디바이스의 전원이 D0에서 감소하기 전에 호출합니다. TargetState 매개 변수는 디바이스가 입력하려고 하는 디바이스 전원 상태를 식별합니다.
EvtDeviceD0Exit 콜백 함수는 디바이스가 지정된 저전력 상태로 들어가기 전에 필요한 작업을 수행해야 합니다. 예를 들어 드라이버가 나중에 디바이스를 D0 전원 상태로 복원하는 데 필요한 정보를 저장합니다.
TargetState 매개 변수가 WdfPowerDevicePrepareForHibernation 경우 시스템에서 최대 절전 모드 파일을 저장할 때 디바이스를 사용하기 때문에 드라이버가 디바이스를 차단해서는 안 됩니다.
TargetState WdfPowerDeviceD3Final 경우 시스템이 꺼져 있거나, 디바이스가 제거되거나, 리소스 재균형 진행 중이라고 가정해야 합니다. 드라이버가 정보를 저장해야 하는 경우 디스크 또는 다른 영구 스토리지 매체에 기록해야 합니다. 그러나 WdfPowerDeviceD3Final 확인한 다음 디바이스 제거를 위해 정리 작업을 수행하는 것은 잘못된 것입니다. 예를 들어 유휴 상태 때문에 Dx 전원 상태를 입력한 디바이스가 나중에 깜짝 제거되면 EvtDeviceD0Exit 다시 호출되지 않습니다. 이 작업을 수행하는 올바른 위치는 대신 EvtDeviceReleaseHardware 있습니다.
이 콜백 함수를 제공하는 드라이버에 대한 자세한 내용은 함수 드라이버 PnP 및 전원 관리 지원참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
헤더 | wdfdevice.h(Wdf.h 포함) |
IRQL | PASSIVE_LEVEL |