WdfDeviceWdmAssignPowerFrameworkSettings 함수(wdfdevice.h)
[KMDF 및 UMDF에 적용]
WdfDeviceWdmAssignPowerFrameworkSettings 메서드는 단일 구성 요소 디바이스에 대한 PoFx(전원 관리 프레임워크) 설정을 등록합니다.
구문
NTSTATUS WdfDeviceWdmAssignPowerFrameworkSettings(
[in] WDFDEVICE Device,
[in] PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
);
매개 변수
[in] Device
PoFx 설정을 지정하는 프레임워크 디바이스 개체에 대한 핸들입니다.
[in] PowerFrameworkSettings
클라이언트 드라이버의 PoFx 설정을 설명하는 WDF_POWER_FRAMEWORK_SETTINGS 구조체에 대한 포인터입니다.
반환 값
WdfDeviceWdmAssignPowerFrameworkSettings 메서드는 작업의 성공 또는 실패를 나타내는 NTSTATUS 값을 반환합니다.
반환 코드 | 설명 |
---|---|
|
WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조체의 크기가 잘못되었습니다. |
|
호출 드라이버는 디바이스의 전원 정책 소유자가 아닙니다. |
|
잘못된 설정 값이 검색되었습니다. |
이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.
설명
WdfDeviceWdmAssignPowerFrameworkSettings 메서드는 단일 구성 요소 디바이스에만 적용됩니다.
이 메서드를 호출하기 전에 클라이언트 드라이버는 먼저 WdfDeviceAssignS0IdleSettings를 성공적으로 호출하고 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조체의 IdleTimeoutType 필드를 SystemManagedIdleTimeout 또는 SystemManagedIdleTimeoutWithHint로 설정해야 합니다.
드라이버는 디바이스가 처음 시작될 때 또는 그 전에 WdfDeviceWdmAssignPowerFrameworkSettings 를 호출해야 합니다. 예를 들어 리소스 재조정이 발생하는 경우 디바이스를 두 번 이상 시작할 수 있으므로 드라이버는 EvtDriverDeviceAdd 또는 EvtDeviceSelfManagedIoInit 내에서 이 메서드를 호출할 수 있습니다. 프레임워크는 디바이스가 두 번 이상 시작되더라도 이러한 함수를 한 번만 호출합니다.
또는 드라이버가 이미 WdfDeviceWdmAssignPowerFrameworkSettings를 호출했는지 여부를 추적하고 EvtDevicePrepareHardware, EvtDeviceD0Entry, EvtDeviceD0EntryPostInterruptsEnabled 또는 EvtDeviceSelfManagedIoRestart 중 하나에서 호출할 수 있습니다.
드라이버가 WdfDeviceWdmAssignPowerFrameworkSettings를 두 번 이상 호출하면 프레임워크에서 검증 도구 오류가 생성됩니다.
PoFx(전원 관리 프레임워크)는 Windows 8 이상에서만 사용할 수 있습니다. PoFx를 지원하지 않는 운영 체제에서 실행하는 경우 WdfDeviceWdmAssignPowerFrameworkSettings 는 아무 작업도 수행하지 않고 STATUS_SUCCESS 반환합니다.
자세한 내용은 기능 전원 상태 지원 및 전원 관리 프레임워크 개요를 참조하세요.
예제
다음 코드 예제에서 드라이버는 WDF_POWER_FRAMEWORK_SETTINGS_INIT 함수를 호출하여 WDF_POWER_FRAMEWORK_SETTINGS 구조를 초기화합니다. 그런 다음 드라이버는 구조체의 일부 멤버를 수동으로 설정한 다음 WdfDeviceWdmAssignPowerFrameworkSettings를 호출합니다.
NTSTATUS status;
WDF_POWER_FRAMEWORK_SETTINGS poFxSettings;
WDF_POWER_FRAMEWORK_SETTINGS_INIT(&poFxSettings);
poFxSettings.EvtDeviceWdmPostPoFxRegisterDevice =
SingleCompWdmEvtDeviceWdmPostPoFxRegisterDevice;
poFxSettings.EvtDeviceWdmPrePoFxUnregisterDevice =
SingleCompWdmEvtDeviceWdmPrePoFxUnregisterDevice;
poFxSettings.Component = &component;
poFxSettings.ComponentIdleStateCallback =
SingleCompWdmIdleStateCallback;
poFxSettings.PoFxDeviceContext = (PVOID) Device;
status = WdfDeviceWdmAssignPowerFrameworkSettings(Device, &poFxSettings);
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 |
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.11 |
최소 UMDF 버전 | 2.33 |
머리글 | wdfdevice.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조) |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf) |
추가 정보
EvtDeviceWdmPostPoFxRegisterDevice