WdfDeviceAssignS0IdleSettings 함수(wdfdevice.h)
[KMDF 및 UMDF에 적용]
WdfDeviceAssignS0IdleSettings 메서드는 디바이스가 유휴 상태이고 시스템이 S0(작동 중) 상태일 때 프레임워크에서 사용하는 드라이버 제공 정보를 제공합니다.
통사론
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
매개 변수
[in] Device
프레임워크 디바이스 개체에 대한 핸들입니다.
[in] Settings
호출자가 제공한 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조체에 대한 포인터입니다.
반환 값
작업이 성공하면 WdfDeviceAssignS0IdleSettings STATUS_SUCCESS 반환합니다. 추가 반환 값은 다음과 같습니다.
반환 코드 | 묘사 |
---|---|
|
호출 드라이버는 디바이스의 전원 정책 소유자가 아닙니다. |
|
잘못된 설정 값이 검색되었습니다. |
|
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조체의 크기가 잘못되었습니다. |
|
다음 중 하나가 발생하면 이 값이 반환됩니다.
|
메서드는 다른NTSTATUS 값을 반환할 수 있습니다.
드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.
발언
드라이버가 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGSIdleTimeoutType 멤버를 systemManagedIdleTimeout 또는 SystemManagedIdleTimeoutWithHint 설정하는 경우 EvtDeviceD0Entry반환하기 전에 WdfDeviceAssignS0IdleSettings 호출해야 합니다. 일반적으로 드라이버는 먼저 EvtDriverDeviceAddWdfDeviceAssignS0IdleSettings 호출합니다.
WdfDeviceAssignS0IdleSettings 대한 추가 호출은 언제든지 수행할 수 있습니다. 그러나 드라이버가 WdfDeviceAssignS0IdleSettings대한 첫 번째 호출에서 IdleTimeoutType 멤버의 값을 설정한 후에는 이 메서드에 대한 이후 호출에서 이 값을 변경해서는 안 됩니다.
드라이버가 EvtDriverDeviceAdd 비동기 알림을 등록하는 경우(예: PoRegisterPowerSettingCallback 또는 IoRegisterPlugPlayNotification), 드라이버는 등록한 드라이버 콜백 루틴 내에서 WdfDeviceAssignS0IdleSettings 호출하면 안 됩니다.
자세한 내용은 유휴 전원 다운 지원하는참조하세요.
예제
다음 코드 예제에서는 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조를 초기화하고, 유휴 시간 제한 값을 10초로 설정하고, WdfDeviceAssignS0IdleSettings 호출합니다.
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;
NTSTATUS status = STATUS_SUCCESS;
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(
&idleSettings,
IdleCanWakeFromS0
);
idleSettings.IdleTimeout = 10000;
status = WdfDeviceAssignS0IdleSettings(
device,
&idleSettings
);
if (!NT_SUCCESS(status)) {
return status;
}
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
헤더 | wdfdevice.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf), FDOPowerPolicyOwnerAPI(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NonFDONotPowerPolicyOwnerAPI(kmdf) |