DXGKDDI_GETDISPLAYSTATEINTRUSIVE fungsi panggilan balik (dispmprt.h)
Sistem operasi (OS) memanggil rutinitas DxgkDdiGetDisplayStateNonIntrusive driver miniport tampilan untuk mengumpulkan informasi status tampilan dari driver.
Sintaks
DXGKDDI_GETDISPLAYSTATEINTRUSIVE DxgkddiGetdisplaystateintrusive;
NTSTATUS DxgkddiGetdisplaystateintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATEINTRUSIVE pArgs
)
{...}
Parameter
[in] Context
Penunjuk ke konteks privat yang dikembalikan oleh DxgkDdiQueryInterface.
[in/out] pArgs
Penunjuk ke struktur DXGKARG_GETDISPLAYSTATEINTRUSIVE .
Nilai kembali
DxgkDdiGetDisplayStateIntrusive mengembalikan STATUS_SUCCESS jika berhasil. Jika tidak, ia mengembalikan kode kesalahan seperti salah satu dari berikut ini.
Kode Kesalahan | Makna |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | Terjadi kesalahan perangkat lunak generik di dalam driver. |
STATUS_ACCESS_DENIED | Perangkat keras saat ini sedang digunakan oleh utas lain dan DDI ini tidak bisa mendapatkan akses ke dalamnya. |
STATUS_DEVICE_HARDWARE_ERROR | Terjadi kesalahan HW generik. |
STATUS_DEVICE_POWERED_OFF | Perangkat dimatikan. |
Keterangan
OS memanggil DxgkDdiGetDisplayStateIntrusive untuk mengumpulkan informasi status tampilan dari driver ketika pengguna sudah dalam keadaan buruk. Tidak seperti DxgkDdiGetDisplayStateNonIntrusive, rutinitas DxgkDdiGetDisplayStateIntrusive driver dapat melakukan operasi yang lebih mengganggu yang memiliki efek samping yang terlihat kepada pengguna . Operasi yang mengganggu didefinisikan sebagai berikut (operasi yang tidak mengganggu tidak memiliki salah satu properti ini):
Ini menyebabkan efek samping (gangguan) yang terlihat oleh pengguna (seperti menghentikan pemindaian sementara dan pemeriksaan konektivitas monitor yang merusak).
Ini lambat, dan memengaruhi performa sistem atau tampilan jika sering dipanggil (beberapa kali dalam detik).
Ini mengubah status subsistem tampilan (atau subsistem lainnya) secara langsung atau tidak langsung.
Driver tidak boleh mengubah status sistem dengan sengaja saat mengumpulkan data.
OS akan menyebut rutinitas ini jauh lebih jarang relatif terhadap panggilan ke DxgkDdiGetDisplayStateNonIntrusive. Dalam sebagian besar skenario kesalahan, OS pertama-tama akan memanggil DxgkDdiGetDisplayStateNonIntrusive dan kemudian memanggil DxgkDdiGetDisplayStateIntrusive untuk memastikan bahwa efek yang tidak disengaja dari panggilan intrusif tidak memengaruhi pengumpulan data yang tidak mengganggu.
DXGKRNL akan memanggil rutinitas ini dengan NumOfTargets diatur ke jumlah target tempat OS melaporkan bahwa ada monitor yang terhubung dengan VidPnTargetId yang sesuai yang diisi. Ketika driver percaya tidak ada monitor yang terhubung pada target tertentu maka harus menetapkan ReturnSubStatus agar target tersebut DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED.
Catatan
Jika driver mengalami kegagalan pada vidpntarget tertentu saat mengumpulkan informasi, driver harus menggunakan ReturnSubStatus untuk mengatur status kesalahan dan melanjutkan ke vidpntarget berikutnya dan tidak gagal dalam panggilan keseluruhan kecuali semua jalur mengalami kegagalan. Driver idealnya harus merekam kesalahan yang terjadi selama panggilan ini dalam beberapa log kesalahan internal sehingga ketika OS memanggil DxgkDdiCollectDiagnosticInfo untuk mengumpulkan informasi kotak hitam, kesalahan ini ditangkap sebagai bagian dari pengumpulan log internal untuk membantu IHV debug.
OS akan memiliki batas waktu yang cukup (sekitar 5 detik) untuk menyelesaikan DxgkDdiGetDisplayStateIntrusive , memberikan driver lebih banyak waktu untuk mengumpulkan semua status yang relevan. Setelah waktu habis, OS mungkin melakukan bugcheck pada mesin dan mengumpulkan cadangan jika driver macet dalam panggilan ini, sehingga miniport harus mencoba untuk selalu menyelesaikan panggilan ini dalam jangka waktu.
Tingkat sinkronisasi untuk DDI ini adalah sinkronisasi tingkat nol.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10, version 2004 |
Header | dispmprt.h |
Lihat juga
DXGKARG_GETDISPLAYSTATEINTRUSIVE