DXGKDDI_SET_POWER_STATE 콜백 함수(dispmprt.h)

DxgkDdiSetPowerState 함수는 디스플레이 어댑터 또는 디스플레이 어댑터의 자식 디바이스의 전원 상태를 설정합니다.

구문

DXGKDDI_SET_POWER_STATE DxgkddiSetPowerState;

NTSTATUS DxgkddiSetPowerState(
  [in] IN_CONST_PVOID MiniportDeviceContext,
  [in] IN_ULONG DeviceUid,
  [in] IN_DEVICE_POWER_STATE DevicePowerState,
  [in] IN_POWER_ACTION ActionType
)
{...}

매개 변수

[in] MiniportDeviceContext

디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다. 디스플레이 미니포트 드라이버의 DxgkDdiAddDevice 함수는 이전에 DirectX 그래픽 커널 하위 시스템에 이 핸들을 제공했습니다.

[in] DeviceUid

전원 상태를 설정할 디바이스를 식별하는 양의 정수입니다. DeviceUidDISPLAY_ADAPTER_HW_ID(Video.h에 정의됨)와 같으면 디바이스는 디스플레이 어댑터 자체입니다. 그렇지 않으면 DeviceUid 는 디스플레이 어댑터의 자식 디바이스 식별자입니다. 자식 디바이스 식별자는 이전에 DxgkDdiQueryChildRelations 함수에 의해 할당되었습니다.

[in] DevicePowerState

디바이스를 설정해야 하는 전원 상태(PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3)를 제공하는 DEVICE_POWER_STATE 열거형 값입니다.

[in] ActionType

전원 상태 변경에 대한 이유(PowerActionSleep,PowerActionHibernate, PowerActionShutdown)를 제공하는 POWER_ACTION 열거형 값입니다.

반환 값

DxgkDdiSetPowerState 는 성공하면 STATUS_SUCCESS 반환합니다. DxgkDdiSetPowerState 는 실패하지 않아야 합니다. 그러나 Ntstatus.h 에 정의되고 NT_SUCCESS(상태) 매크로를 전달하는 NTSTATUS 형식 값을 반환할 수 있습니다.

설명

요청된 상태가 PowerDeviceD1, PowerDeviceD2 또는 PowerDeviceD3과 같으면 DxgkDdiSetPowerState 는 나중에 디바이스를 PowerDeviceD0 으로 다시 가져오는 데 필요한 컨텍스트를 저장한 다음 디바이스를 요청된 상태로 설정합니다. 요청된 상태가 PowerDeviceD0 (완전히 켜진 상태)인 경우 DxgkDdiSetPowerState 는 디바이스 컨텍스트를 복원하고 디바이스를 PowerDeviceD0에 배치합니다.

VGA 지원 디스플레이 어댑터를 최대 절전 모드로 전환하라는 요청과 함께 DxgkDdiSetPowerState 가 호출되는 경우 디스플레이 어댑터의 전원을 낮추면 안 됩니다. 대신 컨텍스트를 저장하고 버스 드라이버가 디스플레이 어댑터의 전원을 낮추도록 해야 합니다. 이렇게 하면 전원 상태 변경에 대해 디스플레이 미니포트 드라이버에 알림을 받은 후 전원 관리자가 최대 절전 모드 진행률을 표시할 수 있습니다.

운영 체제는 더 이상 연결되지 않은 디스플레이 어댑터의 자식 디바이스(예: 최근에 분리된 모니터)에서 DxgkDdiSetPowerState 를 호출할 수 있습니다. 이 변칙은 운영 체제가 드라이버의 DxgkDdiSetPowerState 를 호출하는 시간과 운영 체제에서 연결 끊기를 처리하는 시간 사이에 내재된 대기 시간이 있기 때문에 발생합니다. 드라이버는 실패하지 않고 이러한 상황을 처리해야 합니다.

DevicePowerStatePowerDeviceD0과 같으면 ActionType 값을 사용하지 마세요.

WDDM(Windows Display Driver Model) 1.2부터 DevicePowerState 매개 변수가 PowerDeviceD0으로 설정된 경우 디스플레이 미니포트 드라이버는 DxgkCbAcquirePostDisplayOwnership 을 호출하여 디스플레이 모드에 대한 정보를 쿼리해야 합니다. 이 디스플레이 모드는 이전에 펌웨어 및 시스템 로더에 의해 설정되었을 수 있습니다. DxgkCbAcquirePostDisplayOwnershipSTATUS_SUCCESS 함께 반환되는 경우 드라이버는 DisplayInfo 매개 변수를 통해 반환된 디스플레이 모드 정보를 기반으로 디스플레이를 다시 초기화해야 하는지 여부를 결정해야 합니다. 그렇지 않으면 드라이버는 특정 디스플레이 모드가 현재 디바이스에서 사용하도록 설정되어 있다고 가정해서는 안 되며 디스플레이를 초기화해야 합니다.

DxgkDdiSetPowerState 함수를 페이징 가능으로 만들어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista부터 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 dispmprt.h
IRQL PASSIVE_LEVEL

추가 정보

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryChildRelations