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 값을 반환합니다.

반환 코드 설명
STATUS_INFO_LENGTH_MISMATCH
WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조체의 크기가 잘못되었습니다.
STATUS_INVALID_DEVICE_REQUEST
호출 드라이버는 디바이스의 전원 정책 소유자가 아닙니다.
STATUS_INVALID_PARAMETER
잘못된 설정 값이 검색되었습니다.
 

이 메서드는 다른 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

EvtDeviceWdmPrePoFxUnregisterDevice

WDF_POWER_FRAMEWORK_SETTINGS

WDF_POWER_FRAMEWORK_SETTINGS_INIT