Bagikan melalui


DXGKDDI_SET_POWER_STATE fungsi panggilan balik (dispmprt.h)

Fungsi DxgkDdiSetPowerState mengatur status daya adaptor tampilan atau perangkat anak adaptor tampilan.

Sintaks

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
)
{...}

Parameter

[in] MiniportDeviceContext

Handel ke blok konteks yang terkait dengan adaptor tampilan. Fungsi DxgkDdiAddDevice driver miniport tampilan sebelumnya menyediakan handel ini ke subsistem kernel grafis DirectX.

[in] DeviceUid

Bilangan bulat positif yang mengidentifikasi perangkat yang status dayanya akan diatur. Jika DeviceUid sama dengan DISPLAY_ADAPTER_HW_ID (ditentukan dalam Video.h), perangkat adalah adaptor tampilan itu sendiri. Jika tidak, DeviceUid adalah pengidentifikasi perangkat anak dari adaptor tampilan. Pengidentifikasi perangkat anak sebelumnya ditetapkan oleh fungsi DxgkDdiQueryChildRelations .

[in] DevicePowerState

Nilai enumerasi DEVICE_POWER_STATE yang memasok status daya (PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3) tempat perangkat harus diatur.

[in] ActionType

Nilai enumerasi POWER_ACTION yang memasok alasan (PowerActionSleep, PowerActionHibernate, PowerActionShutdown) untuk perubahan status daya.

Nilai kembali

DxgkDdiSetPowerState mengembalikan STATUS_SUCCESS jika berhasil. DxgkDdiSetPowerState tidak boleh gagal; namun, ini dapat mengembalikan nilai yang ditik NTSTATUS apa pun yang didefinisikan dalam Ntstatus.h dan yang melewati makro NT_SUCCESS(Status).

Keterangan

Jika status yang diminta sama dengan PowerDeviceD1, PowerDeviceD2, atau PowerDeviceD3, DxgkDdiSetPowerState menyimpan konteks apa pun yang nantinya diperlukan untuk membawa perangkat kembali ke PowerDeviceD0 lalu menempatkan perangkat dalam status yang diminta. Jika status yang diminta adalah PowerDeviceD0 (sepenuhnya aktif), DxgkDdiSetPowerState memulihkan konteks perangkat dan menempatkan perangkat di PowerDeviceD0.

Jika DxgkDdiSetPowerState dipanggil dengan permintaan untuk menempatkan adaptor tampilan berkemampuan VGA ke dalam hibernasi, adaptor tampilan tidak boleh dimatikan. Sebaliknya, ini harus menyimpan konteks dan membiarkan driver bus mematikan adaptor tampilan. Dengan begitu, manajer daya dapat menampilkan kemajuan hibernasi setelah driver miniport tampilan telah diberi tahu tentang perubahan status daya.

Sistem operasi mungkin memanggil DxgkDdiSetPowerState pada perangkat anak adaptor tampilan yang tidak lagi terhubung (misalnya, monitor yang baru-baru ini dicabut). Anomali ini terjadi karena latensi yang melekat ada antara waktu sistem operasi memanggil DxgkDdiSetPowerState driver dan waktu sistem operasi memproses pemutusan sambungan. Driver harus menangani situasi seperti itu tanpa gagal.

Jika DevicePowerState sama dengan PowerDeviceD0, jangan mengandalkan nilai ActionType.

Dimulai dengan Windows Display Driver Model (WDDM) 1.2, jika parameter DevicePowerState diatur ke PowerDeviceD0, driver miniport tampilan harus memanggil DxgkCbAcquirePostDisplayOwnership untuk meminta informasi tentang mode tampilan. Mode tampilan ini mungkin telah diatur sebelumnya oleh firmware dan pemuat sistem. Jika DxgkCbAcquirePostDisplayOwnership kembali dengan STATUS_SUCCESS, driver harus menentukan apakah harus menginisialisasi ulang tampilan berdasarkan informasi mode tampilan yang dikembalikan melalui parameter DisplayInfo . Jika tidak, driver tidak boleh berasumsi bahwa mode tampilan tertentu saat ini diaktifkan pada perangkat, dan harus menginisialisasi tampilan.

Fungsi DxgkDdiSetPowerState harus dibuat dapat dipaginasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows Vista.
Target Platform Desktop
Header dispmprt.h
IRQL PASSIVE_LEVEL

Lihat juga

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryChildRelations