다음을 통해 공유


SET_D3COLD_SUPPORT 콜백 함수(wdm.h)

SetD3ColdSupport 콜백 루틴은 D3cold 디바이스 전원 상태로의 전환을 사용하거나 사용하지 않도록 설정합니다.

구문

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

매개 변수

[in, optional] Context

인터페이스별 컨텍스트 정보에 대한 포인터입니다. 호출자는 이 매개 변수를 인터페이스에 대한 D3COLD_SUPPORT_INTERFACE 구조체의 Context 멤버 값으로 설정합니다.

[in] D3ColdSupport

D3hot에서 D3cold로의 전환을 허용할지 여부입니다. 이러한 전환을 사용하도록 설정하려면 TRUE 로 설정합니다. 그렇지 않으면 를 FALSE 로 설정합니다. 자세한 내용은 비고를 참조하세요.

반환 값

없음

설명

디바이스의 PPO(전원 정책 소유자)인 드라이버는 이 루틴을 호출하여 컴퓨터가 S0(작업) 시스템 전원 상태에 있고 S0 종료를 준비하지 않을 때 발생할 수 있는 D3cold 하위 상태로의 전환을 사용하거나 사용하지 않도록 설정할 수 있습니다.

디바이스가 들어오는 저전력 Dx 상태에서 절전 모드 해제 이벤트를 신호할 수 있어야 하는 경우 디바이스가 이 하위 상태에서 절전 모드 해제 이벤트를 신호할 수 없는 한 이 디바이스의 드라이버는 D3cold 하위 상태로의 전환을 사용하도록 설정해서는 안 됩니다. 그렇지 않으면 D3cold를 입력한 후 컴퓨터가 다시 시작되거나 절전 모드에서 해제될 때까지 디바이스를 사용할 수 없습니다.

디바이스의 드라이버는 GetIdleWakeInfo 루틴을 호출하여 디바이스가 D3cold에서 절전 모드 해제 이벤트를 신호로 표시할 수 있는지 여부를 결정할 수 있습니다.

필요한 경우 디바이스용 드라이버는 일련의 SetD3ColdSupport 호출을 만들어 동적으로 변화하는 조건에 대응하여 D3cold 전환을 번갈아 사용하거나 사용하지 않도록 설정할 수 있습니다.

예를 들어 그래픽 디바이스에는 D3cold에서 D0으로 전환한 후 복원할 큰 하드웨어 컨텍스트가 있을 수 있습니다. 이 컨텍스트를 복원하는 데 필요한 시간은 사용자가 현재 수행하고 있는 작업 집합에 따라 허용되거나 허용되지 않을 수 있습니다. 또한 복원 시간은 이 작업 조합에 따라 달라질 수 있습니다. 드라이버는 작업 조합이 변경될 때 D3cold로의 전환을 동적으로 사용하도록 설정하고 사용하지 않도록 설정해야 할 수 있습니다.

디바이스는 D3hot 하위 상태에서만 D3cold 하위 상태를 입력할 수 있습니다. 드라이버가 SetD3ColdSupport 를 호출하여 D3hot에서 D3cold로의 전환을 사용하도록 설정하는 경우 디바이스는 D3hot에 진입한 후 D3cold를 입력하거나 입력하지 않을 수 있습니다. 절전 모드 해제 이벤트에 대한 응답으로 디바이스는 D3cold를 통과하지 않고 D3hot에서 직접 D0을 입력할 수 있습니다.

디바이스가 D3hot에서 D3cold로 이동하면 일부 다른 디바이스와 공유하는 전원이 꺼져 있기 때문에 디바이스가 D3hot에서 D3cold로 이동하면 됩니다. 이러한 디바이스가 D3cold를 입력한 후 잠시 후 디바이스 중 하나에 대한 드라이버가 D0으로의 전환을 요청할 수 있습니다. 이 요청에 대한 응답으로 부모 버스 드라이버 또는 ACPI 필터 드라이버는 전원을 켜고 전원을 공유하는 모든 디바이스는 기본 전원 켜기 상태를 입력합니다.

이 전원 상태 변경을 예상하는 유일한 디바이스 드라이버는 변경을 요청한 드라이버입니다. 다른 디바이스의 드라이버는 D0에서 작동하도록 디바이스를 제대로 초기화할 수 있도록 이 변경에 대한 알림을 받아야 합니다. 이 알림을 받을 수 있는 드라이버만 디바이스에서 D3cold를 입력할 수 있도록 설정해야 합니다. 그렇지 않으면 디바이스가 D0에 들어갈 때 드라이버가 알 수 없습니다.

Windows 8 WDM 드라이버는 디바이스를 Power Framework(PoFx)에 등록하고 디바이스가 D0에 들어갈 때 DevicePowerRequiredCallback 루틴에 의해 알림을 받을 수 있습니다. 마찬가지로 KMDF 드라이버는 PoFx에 디바이스를 등록하고 EvtDeviceD0Entry 이벤트 콜백에 의해 알림을 받을 수 있습니다.

디바이스를 PoFx에 등록하지 않은 드라이버는 디바이스가 절전 모드 해제로 구성된 경우 D0으로의 전환에 대한 알림을 계속 받을 수 있습니다. 버스 드라이버가 디바이스에 전원을 켜면 드라이버의 IRP_MN_WAIT_WAKE 요청을 완료합니다. 이에 대한 응답으로 드라이버는 D0에서 작동하도록 디바이스를 초기화합니다.

여러 디바이스에서 공유하는 전원이 켜지면 드라이버가 D0으로의 전환을 요청한 디바이스가 이러한 디바이스 중 유일하게 작동할 수 있습니다. 다른 디바이스는 유휴 상태일 가능성이 높으며, 이 경우 드라이버가 일정 시간 후에 이러한 디바이스를 D3hot으로 이동합니다.

드라이버가 SetD3ColdSupport 를 호출하여 D3cold로의 전환을 사용하지 않도록 설정하는 경우 D0은 디바이스가 D3hot에서 입력할 수 있는 유일한 디바이스 전원 상태입니다.

드라이버가 SetD3ColdSupport 를 호출하여 D3cold로의 전환을 사용하도록 설정하는 경우 이러한 전환은 다른 이유로 비활성화될 수 있습니다. 드라이버는 GetD3ColdCapability 루틴을 호출하여 디바이스가 D3cold 하위 상태를 입력할 수 있는지 여부를 확인할 수 있습니다. 그러나 드라이버에는 이 정보가 필요하지 않을 수 있습니다. 디바이스가 D3cold를 입력할 수 없는 경우 SetD3ColdSupport 에 대한 호출은 효과가 없지만 무해합니다.

SetD3ColdSupport 루틴은 컴퓨터가 S0 상태에 있고 종료할 준비를 하지 않을 때 발생할 수 있는 D3hot-D3cold 전환에만 영향을 줍니다. 이 루틴은 컴퓨터가 S0을 종료하고 저전력 시스템 상태를 입력할 준비를 하는 경우에 영향을 주지 않습니다. D3hot 하위 상태의 디바이스는 컴퓨터가 시스템 저전력 상태로 들어가기 직전에 항상 D3cold 하위 상태를 입력할 수 있습니다.

기본적으로 SetD3ColdSupport 루틴에 대한 첫 번째 호출 전에 D3hot-D3cold 전환은 사용하지 않도록 설정됩니다. 첫 번째 SetD3ColdSupport 호출 전에 D3hot-D3cold 전환을 사용하도록 설정하도록 이 기본값을 변경하려면 디바이스의 드라이버 패키지에 드라이버를 설치하는 INF 파일의 DDInstall.HW 섹션에 다음 두 줄이 포함될 수 있습니다.

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 컴퓨터가 S0 상태로 유지되는 동안 D3cold 하위 상태를 입력하고 종료할 수 있는 디바이스를 지원하는 Windows의 첫 번째 버전입니다. 자세한 내용은 디바이스 Low-Power 상태를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 wdm.h(Wdm.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability

IRP_MN_WAIT_WAKE