다음을 통해 공유


EVT_WDF_DEVICE_D0_EXIT 콜백 함수(wdfdevice.h)

[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 상태를 그대로 둡니다.

  • 시스템과 모든 디바이스가 작동 상태를 떠나 저전력 상태로 진입하려고 합니다.
  • 디바이스가 저전력 유휴 상태를 지원하는 경우 유휴 상태이므로 디바이스가 저전력 상태로 전환하려고 합니다.
  • 플러그 앤 플레이 관리자가 시스템의 하드웨어 리소스를 재배포하려고 합니다.
  • 사용자는 일반적으로 애플리케이션의 사용자 인터페이스를 통해 디바이스를 제거하려고 함을 표시했습니다.
또한 프레임워크는 디바이스가 예기치 않게 제거된 후 EvtDeviceD0Exit 콜백 함수를 호출합니다(서프라이즈 제거).

프레임워크가 이 콜백 함수를 호출하는 시기에 대한 자세한 내용은 PnP 및 전원 관리 시나리오를 참조하세요.

디바이스가 깜짝 제거되지 않는 한 프레임워크는 디바이스의 인터럽트 해제 직후에 이 콜백 함수를 호출하지만 디바이스의 전원이 D0에서 감소하기 전에 호출합니다. TargetState 매개 변수는 디바이스가 입력하려고 하는 디바이스 전원 상태를 식별합니다.

EvtDeviceD0Exit 콜백 함수는 디바이스가 지정된 저전력 상태로 들어가기 전에 필요한 모든 작업을 수행해야 합니다. 예를 들어 드라이버가 나중에 디바이스를 D0 전원 상태로 복원하는 데 필요한 정보를 저장합니다.

TargetState 매개 변수가 WdfPowerDevicePrepareForHibernation인 경우 시스템이 최대 절전 모드 파일을 저장할 때 디바이스를 사용하기 때문에 드라이버가 디바이스를 종료하지 않아야 합니다.

TargetStateWdfPowerDeviceD3Final인 경우 시스템이 꺼져 있거나, 디바이스가 제거되거나, 리소스 재조정이 진행 중이라고 가정해야 합니다. 드라이버가 정보를 저장해야 하는 경우 디스크 또는 다른 영구 스토리지 매체에 기록해야 합니다. 그러나 WdfPowerDeviceD3Final을 검사 디바이스 제거를 위해 정리 작업을 수행하는 것은 올바르지 않습니다. 예를 들어 유휴 상태 때문에 Dx 전원 상태를 입력한 디바이스가 나중에 깜짝 제거되면 EvtDeviceD0Exit 가 다시 호출되지 않습니다. 이 작업을 수행하는 올바른 위치는 대신 EvtDeviceReleaseHardware 에 있습니다.

이 콜백 함수를 제공하는 드라이버에 대한 자세한 내용은 함수 드라이버에서 PnP 및 전원 관리 지원을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfdevice.h(Wdf.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

EvtDeviceD0Entry