Bagikan melalui


DXGKDDI_SYSTEM_DISPLAY_ENABLE fungsi panggilan balik (dispmprt.h)

Dipanggil oleh sistem operasi untuk meminta driver miniport tampilan untuk mengatur ulang perangkat tampilan saat ini ke status yang ditentukan.

Dimulai dengan Windows 8, sistem operasi memanggil fungsi ini selama operasi pemeriksaan bug setelah kesalahan penghentian sistem.

Sintaks

DXGKDDI_SYSTEM_DISPLAY_ENABLE DxgkddiSystemDisplayEnable;

NTSTATUS DxgkddiSystemDisplayEnable(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [in]  PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
  [out] UINT *Width,
  [out] UINT *Height,
  [out] D3DDDIFORMAT *ColorFormat
)
{...}

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 Microsoft DirectX.

[in] TargetId

Nilai D3DDDI_VIDEO_PRESENT_TARGET_ID yang menentukan pengidentifikasi target video yang ada pada adaptor tampilan yang tersambung dengan perangkat tampilan. Pengidentifikasi ini bisa untuk target yang tersisa dalam status jaringan saji video saat ini (VidPn) selama panggilan sebelumnya ke DxgkDdiCommitVidPn.

Untuk detail selengkapnya tentang penggunaan parameter TargetId , lihat bagian "Video present target initialization" berikut ini.

[in] Flags

Penunjuk ke nilai yang berisi bitwise OR dari bendera. Anggota ini dicadangkan oleh sistem operasi.

[out] Width

Nilai UINT yang menentukan lebar mode tampilan perangkat yang ditentukan dalam satuan piksel.

[out] Height

Nilai UINT yang menentukan tinggi mode tampilan perangkat yang ditentukan dalam satuan piksel.

[out] ColorFormat

Penunjuk ke nilai D3DDDIFORMAT yang menentukan format warna perangkat tampilan.

Mengembalikan nilai

DxgkDdiSystemDisplayEnable mengembalikan STATUS_SUCCESS jika berhasil. Jika target yang ditentukan oleh parameter TargetId tidak tersambung ke perangkat tampilan, fungsi akan mengembalikan STATUS_NOT_SUPPORTED. Jika tidak, ia mengembalikan salah satu kode kesalahan yang ditentukan dalam Ntstatus.h.

Keterangan

Langkah-langkah yang diperlukan dengan menampilkan driver miniport

Driver miniport tampilan harus mengikuti langkah-langkah ini ketika fungsi DxgkDdiSystemDisplayEnable dipanggil:
  1. Driver harus membatalkan semua operasi unit pemrosesan grafis (GPU) atau mengatur ulang GPU ke status diam.
  2. Sistem operasi menunjukkan video menyajikan target melalui parameter TargetId . Driver harus menjaga tampilan yang terkait dengan target ini menyala dan terlihat. Jika driver tidak dapat menyalakan tampilan, maka harus gagal dalam panggilan ke fungsi ini. Dalam kasus kegagalan seperti itu, sistem operasi mungkin memanggil fungsi DxgkDdiResetDevice dan menyebabkan pemeriksaan bug sistem terjadi.
  3. Driver harus memeriksa konektivitas tampilan yang terkait dengan target ini. Jika target tidak memiliki tampilan yang tersambung, driver harus menyelesaikan panggilan ke fungsi ini dan mengembalikan kode kesalahan STATUS_NOT_SUPPORTED .
  4. Pengandar harus menonaktifkan sinyal ke semua tampilan lain yang tersambung ke adaptor tampilan. Jika ini tidak memungkinkan, driver harus mencoba menempatkan gambar kosong pada semua tampilan lainnya. Jika ini tidak memungkinkan, driver harus membiarkan gambar terakhir di layar tidak berubah.
  5. Driver harus menyimpan mode tampilan saat ini pada target yang ditunjukkan dan menyediakan mode ini kembali ke sistem operasi sebagai bagian dari panggilan fungsi ini.
  6. Jika driver tidak dapat mempertahankan mode tampilan saat ini, atau jika target bukan bagian dari topologi aktif, driver harus mencoba mengatur buffer bingkai pada target lain yang mampu menampilkan resolusi minimal 640 x 480 piksel dalam format 24 bit per piksel. Jika itu tidak memungkinkan, driver dapat gagal dalam panggilan fungsi ini, yang akan mengakibatkan pemeriksaan bug sistem dan tampilan layar hitam.

    Tidak diharuskan driver menggunakan mode buffer bingkai linier. Namun, driver harus mendukung operasi tulis ke buffer bingkai ini dari sumber yang memiliki format D3DDDIFMT_A8R8G8B8 enumerasi D3DDDIFORMAT .

Pembatasan gambar sumber

Setelah driver memberikan kontrol sistem operasi atas fungsionalitas tampilan, sistem operasi dapat memanggil fungsi DxgkDdiSystemDisplayWrite untuk memperbarui gambar layar dan menulis blok gambar dari sumber tertentu ke layar yang direset oleh fungsi DxgkDdiSystemDisplayEnable .

DxgkDdiSystemDisplayWrite memberi driver alamat awal gambar sumber serta langkah, lebar, dan tinggi. Format warna gambar sumber selalu D3DDDIFMT_X8R8G8B8. Sistem operasi menjamin bahwa gambar sumber berada dalam memori non-halaman.

Driver harus menulis gambar sumber ini ke layar saat ini mulai dari posisi yang ditentukan oleh parameter PositionX dan PositionY dari fungsi DxgkDdiSystemDisplayWrite .

Disarankan agar driver menggunakan CPU untuk menulis gambar dari sumber ke buffer bingkai karena pemeriksaan bug sistem mungkin disebabkan oleh instans Deteksi dan Pemulihan Batas Waktu (TDR) berulang yang mengakibatkan GPU berada dalam kondisi yang tidak diketahui.

Gunakan memori non-halaman

Fungsi mode kernel Windows mungkin tidak tersedia saat fungsi ini sedang dipanggil.

DxgkDdiSystemDisplayEnable dapat dipanggil di IRQL apa pun, sehingga harus dalam memori yang tidak dapat dibajak. DxgkDdiSystemDisplayEnable tidak boleh memanggil kode apa pun yang berada dalam memori yang dapat dipaginasi dan tidak boleh memanipulasi data apa pun yang berada dalam memori yang dapat dipaginasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Server minimum yang didukung Windows Server 2012
Target Platform Desktop
Header dispmprt.h
IRQL Tingkat apa pun (lihat bagian Keterangan)

Lihat juga

D3DDDIFORMAT

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiResetDevice

DxgkDdiStopDeviceAndReleasePostDisplayOwnership

DxgkDdiSystemDisplayWrite