Bagikan melalui


EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN fungsi panggilan balik (iddcx.h)

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN dipanggil oleh OS untuk menginformasikan driver tampilan tidak langsung (IDD) dari perubahan mode untuk monitor pada adaptor.

Sintaks

EVT_IDD_CX_MONITOR_ASSIGN_SWAPCHAIN EvtIddCxMonitorAssignSwapchain;

NTSTATUS EvtIddCxMonitorAssignSwapchain(
  [in] IDDCX_MONITOR MonitorObject,
  [in] const IDARG_IN_SETSWAPCHAIN *pInArgs
)
{...}

Parameter

[in] MonitorObject

Handel IDDCX_MONITOR yang dibuat driver buram yang digunakan oleh OS untuk mengidentifikasi monitor yang telah terpengaruh oleh perubahan mode.

[in] pInArgs

Arahkan ke struktur IDARG_IN_SETSWAPCHAIN yang berisi informasi untuk digunakan driver untuk mengatur swapchain tidak langsung.

Menampilkan nilai

(NTSTATUS) Jika operasi berhasil, fungsi panggilan balik harus mengembalikan STATUS_SUCCESS, atau nilai status lain yang NT_SUCCESS(status) sama dengan TRUE. Jika terjadi kesalahan, IDD harus mengembalikan STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN jika ada kemungkinan kesalahan tidak akan terjadi lagi. Jika tidak, itu harus mengembalikan kode kesalahan NTSTATUS yang sesuai. Lihat Keterangan.

Keterangan

OS memanggil EvtIddCxMonitorAssignSwapChain sehingga IDD dapat mengatur mekanisme pemrosesan bingkainya. Misalnya, IDD mungkin membuat utas baru untuk menginisialisasi perangkat D3D lalu mengulang bingkai pemrosesan (lihat sampel driver ID).

Jika EvtIddCxMonitorAssignSwapChain mengembalikan keberhasilan, IDD kemudian memiliki objek IDARG_IN_SETSWAPCHAIN.hSwapChain dan bertanggung jawab untuk memanggil WdfObjectDelete untuk merilis objek swapchain ketika berhenti memproses bingkai. Pemrosesan swapchain dapat menghentikan pemrosesan bingkai ketika EvtIddCxMonitorUnassignSwapChain dipanggil atau ketika kesalahan terjadi dalam perulangan pemrosesan bingkai setelah keberhasilan dikembalikan ke EvtIddCxMonitorAssignSwapChain. Ini berlaku untuk adaptor konsol dan ID jarak jauh dan semua versi IddCx.

Dimulai dengan Windows 10, versi 1903, untuk mengurangi dampak pengguna (misalnya, waktu yang dihabiskan untuk menunggu IddCx memeriksa driver), IddCx akan segera memeriksa driver jika EvtIddCxMonitorAssignSwapChain melaporkan kode kesalahan selain STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN.

Jika driver mengembalikan STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN, IddCx akan menginformasikan komposit desktop. Swapchain baru perlu dibuat, sehingga OS akan kembali memanggil EvtIddCxMonitorAssignSwapChain. Driver ID harus menggunakan kode pengembalian ini hanya jika ada kemungkinan kesalahan yang baru saja terjadi tidak akan terjadi lagi. Artinya, driver ID tidak boleh meninggalkan pengguna dengan desktop yang tidak dapat digunakan karena mengembalikan kode kesalahan namun tidak melakukan apa pun untuk memastikan kegagalan yang sama tidak akan terjadi lagi. Misalnya, jika driver mengalami kesalahan saat membuat perangkat D3D pada adaptor render, driver dapat memanggil IddCxAdapterSetRenderAdapter untuk mengubah ke adaptor lain (mungkin GPU atau WARP lain) lalu mengembalikan STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN. OS akan membuat swapchain baru pada adaptor render baru dan mudah-mudahan menghindari kesalahan. Meskipun kode kesalahan ini didefinisikan dimulai dengan Windows 10 versi 1903, driver ID dapat mengembalikan kode kesalahan ini pada rilis OS sebelumnya sehingga tidak berpengaruh.

Resolusi permukaan dalam swapchain akan selalu menjadi resolusi yang sama dengan set mode target.

Format permukaan akan menjadi salah satu format yang didukung oleh driver, tetapi format setiap buffer yang diperoleh dapat berubah antara format yang didukung dari bingkai ke bingkai. Driver harus memeriksa format setiap buffer yang diperoleh.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10
Server minimum yang didukung Server Windows 2016
Target Platform Windows
Header iddcx.h
IRQL requires_same

Lihat juga

EvtIddCxMonitorUnassignSwapChain

IDARG_IN_SETSWAPCHAIN