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를 호출해야 합니다. 일반적으로 드라이버는 먼저 EvtDriverDeviceAdd에서 WdfDeviceAssignS0IdleSettings를 호출합니다.
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) |