Fungsi SetDisplayConfig (winuser.h)
Fungsi SetDisplayConfig memodifikasi mode topologi tampilan, sumber, dan target dengan mengaktifkan jalur yang ditentukan secara eksklusif dalam sesi saat ini.
Sintaks
LONG SetDisplayConfig(
[in] UINT32 numPathArrayElements,
[in, optional] DISPLAYCONFIG_PATH_INFO *pathArray,
[in] UINT32 numModeInfoArrayElements,
[in, optional] DISPLAYCONFIG_MODE_INFO *modeInfoArray,
[in] UINT32 flags
);
Parameter
[in] numPathArrayElements
Jumlah elemen dalam pathArray.
[in, optional] pathArray
Array dari semua jalur tampilan yang akan diatur. Hanya jalur dalam array ini yang memiliki bendera DISPLAYCONFIG_PATH_ACTIVE yang diatur dalam anggota benderaDISPLAYCONFIG_PATH_INFO yang diatur. Parameter ini bisa NULL. Urutan di mana jalur aktif muncul dalam array ini menentukan prioritas jalur. Untuk informasi selengkapnya tentang urutan prioritas jalur, lihat Urutan Prioritas Jalur.
[in] numModeInfoArrayElements
Jumlah elemen dalam modeInfoArray.
[in, optional] modeInfoArray
Array informasi mode sumber tampilan dan target (DISPLAYCONFIG_MODE_INFO) yang direferensikan oleh anggota modeInfoIdx dari DISPLAYCONFIG_PATH_SOURCE_INFO dan elemen DISPLAYCONFIG_PATH_TARGET_INFO informasi jalur dari pathArray. Parameter ini bisa NULL.
[in] flags
Bitwise ATAU nilai bendera yang menunjukkan perilaku fungsi ini. Parameter ini bisa menjadi salah satu nilai berikut, atau kombinasi nilai berikut; 0 tidak valid. Lihat di bawah ini untuk deskripsi kombinasi bendera yang valid.
Daftar berikut berisi kombinasi nilai yang valid untuk parameter Bendera :
- Baik SDC_APPLY atau SDC_VALIDATE harus diatur, tetapi tidak keduanya.
- Baik SDC_USE_SUPPLIED_DISPLAY_CONFIG atau kombinasi SDC_TOPOLOGY_XXX harus diatur. SDC_USE_SUPPLIED_DISPLAY_CONFIG tidak dapat diatur dengan bendera SDC_TOPOLOGY_XXX apa pun.
- SDC_NO_OPTIMIZATION hanya dapat diatur dengan SDC_APPLY.
- SDC_ALLOW_CHANGES diperbolehkan dengan kombinasi lain yang valid.
- SDC_SAVE_TO_DATABASE hanya dapat diatur dengan SDC_USE_SUPPLIED_DISPLAY_CONFIG.
- SDC_PATH_PERSIST_IF_REQUIRED tidak dapat digunakan dengan SDC_USE_SUPPLIED_DISPLAY_CONFIG atau SDC_TOPOLOGY_SUPPLIED.
- SDC_FORCE_MODE_ENUMERATION hanya valid saat SDC_APPLY dan SDC_USE_SUPPLIED_DISPLAY_CONFIG ditentukan.
- SDC_ALLOW_PATH_ORDER_CHANGES hanya diperbolehkan saat SDC_TOPOLOGY_SUPPLIED ditentukan.
- SDC_TOPOLOGY_SUPPLIED tidak dapat digunakan dengan bendera SDC_TOPOLOGY_XXX lainnya. Karena masalah validasi, jika penelepon melanggar aturan ini, SetDisplayConfig tidak gagal. Namun, SetDisplayConfig mengabaikan bendera SDC_TOPOLOGY_SUPPLIED.
Nilai kembali
Fungsi mengembalikan salah satu kode pengembalian berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Fungsi berhasil. |
|
Kombinasi parameter dan bendera yang ditentukan tidak valid. |
|
Sistem tidak menjalankan pengandar grafis yang ditulis sesuai dengan Windows Display Driver Model (WDDM). Fungsi ini hanya didukung pada sistem dengan driver WDDM berjalan. |
|
Pemanggil tidak memiliki akses ke sesi konsol. Kesalahan ini terjadi jika proses panggilan tidak memiliki akses ke desktop saat ini atau sedang berjalan pada sesi jarak jauh. |
|
Terjadi kesalahan yang tidak ditentukan. |
|
Fungsi tidak dapat menemukan solusi yang dapat dikerjakan untuk mode sumber dan target yang tidak ditentukan pemanggil. |
Keterangan
Fungsi SetDisplayConfig mengambil jalur tampilan aktif dengan informasi mode sumber dan target yang ditentukan dan menggunakan logika mode terbaik untuk menghasilkan informasi mode sumber dan target yang hilang. Fungsi ini kemudian mengatur jalur tampilan lengkap.
Anggota ModeInfoIdx dalam struktur DISPLAYCONFIG_PATH_SOURCE_INFO dan DISPLAYCONFIG_PATH_TARGET_INFO digunakan untuk menunjukkan apakah mode sumber dan target disediakan untuk jalur aktif tertentu. Jika nilai indeks DISPLAYCONFIG_PATH_MODE_IDX_INVALID untuk keduanya, ini menunjukkan informasi mode tidak ditentukan. Ini berlaku untuk jalur ditambah mode sumber atau jalur ditambah informasi mode sumber dan target yang akan ditentukan untuk jalur tertentu. Namun, tidak valid untuk jalur ditambah mode target yang akan ditentukan tanpa mode sumber.
Mode sumber dan target untuk setiap pengidentifikasi sumber dan target hanya dapat muncul di array modeInfoArray sekali. Misalnya, mode sumber untuk pengidentifikasi sumber S1 hanya dapat muncul dalam tabel sekali; jika beberapa jalur mereferensikan sumber yang sama, mereka harus menggunakan ModeInfoIdx yang sama.
Harapannya adalah bahwa sebagian besar penelepon menggunakan QueryDisplayConfig untuk mendapatkan konfigurasi saat ini bersama dengan kemungkinan valid lainnya dan kemudian menggunakan SetDisplayConfig untuk menguji dan mengatur konfigurasi.
Urutan di mana jalur aktif muncul di array PathArray menentukan prioritas jalur.
Secara default, SetDisplayConfig tidak pernah mengubah jalur yang disediakan, mode sumber, atau informasi mode target. Jika logika mode terbaik tidak dapat menemukan solusi tanpa mengubah informasi jalur tampilan yang ditentukan, SetDisplayConfig gagal dengan ERROR_BAD_CONFIGURATION. Dalam hal ini, penelepon harus menentukan bendera SDC_ALLOW_CHANGES untuk memungkinkan fungsi mengubah beberapa detail sumber dan mode yang ditentukan untuk memungkinkan perubahan jalur tampilan berhasil.
Jika mode sumber dan target yang ditentukan atau dihitung memiliki dimensi yang sama, SetDisplayConfig secara otomatis mengatur penskalakan jalur ke DISPLAYCONFIG_PPR_IDENTITY sebelum mengatur jalur tampilan dan menyimpannya di database. Untuk informasi tentang cara SetDisplayConfig menangani penskalaan, lihat Menskalakan Gambar Desktop.
Ketika pemanggil menentukan bendera SDC_USE_SUPPLIED_DISPLAY_CONFIG untuk mengatur jalur kloning dan jika ada indeks mode sumber yang tidak valid dalam array jalur, SetDisplayConfig menentukan bahwa semua indeks mode sumber dari sumber tersebut tidak valid. SetDisplayConfig menggunakan logika mode terbaik untuk menentukan informasi mode sumber.
Kecuali untuk bendera SDC_TOPOLOGY_SUPPLIED (untuk informasi selengkapnya tentang SDC_TOPOLOGY_SUPPLIED, lihat paragraf berikut), bendera SDC_TOPOLOGY_XXX mengatur pengaturan jalur tampilan terakhir, termasuk informasi mode sumber dan target untuk jenis topologi tersebut. Untuk informasi tentang kombinasi bendera SDC_TOPOLOGY_XXX yang valid, lihat deskripsi parameter Bendera . Parameter pathArray dan modeInfoArray harus NULL, dan ukuran terkaitnya harus nol. Misalnya, jika SDC_TOPOLOGY_CLONE dan SDC_TOPOLOGY_EXTEND diatur, fungsi ini menggunakan kloning terbaru atau memperluas konfigurasi jalur tampilan. Jika satu jenis topologi diminta, konfigurasi terakhir dari jenis tersebut digunakan. Jika topologi tersebut belum pernah diatur sebelumnya, SetDisplayConfig menggunakan logika topologi terbaik untuk menemukan topologi terbaik, lalu logika mode terbaik untuk menemukan mode sumber dan target terbaik untuk digunakan. Jika kombinasi bendera topologi telah ditetapkan dan tidak ada yang memiliki entri database, prioritas berikut digunakan. Untuk laptop: kloning, perluas, internal, dan kemudian eksternal; untuk desktop, prioritas diperluas lalu kloning.
Pemanggil dapat menentukan bendera SDC_TOPOLOGY_SUPPLIED untuk menunjukkan bahwa ia hanya mengatur informasi jalur (topologi) dan permintaan yang diperoleh SetDisplayConfig lalu menggunakan informasi mode sumber dan target dari database persistensi. Jika jalur aktif yang disediakan pemanggil tidak memiliki entri dalam database persistensi, SetDisplayConfig gagal. Dalam hal ini, jika pemanggil memanggil SetDisplayConfig lagi dengan data jalur yang sama tetapi dengan set bendera SDC_USE_SUPPLIED_DISPLAY_CONFIG, SetDisplayConfig menggunakan logika mode terbaik untuk membuat informasi mode sumber dan target. Ketika pemanggil menentukan SDC_TOPOLOGY_SUPPLIED, pemanggil harus mengatur parameter numModeInfoArrayElements ke nol dan parameter modeInfoArray ke NULL; namun, pemanggil harus mengatur parameter pathArray dan numPathArrayElements untuk informasi jalur yang diperlukan pemanggil. Pemanggil harus menandai semua indeks mode sumber dan target sebagai tidak valid (DISPLAYCONFIG_PATH_MODE_IDX_INVALID) dalam data jalur ini.
Tabel berikut ini menyediakan beberapa skenario umum di mana SetDisplayConfig dipanggil bersama dengan kombinasi bendera yang diteruskan pemanggil ke parameter Bendera untuk mencapai skenario.
Skenario | Kombinasi bendera |
---|---|
Menguji apakah konfigurasi tampilan yang ditentukan didukung pada komputer | SDC_VALIDATE | SDC_USE_SUPPLIED_DISPLAY_CONFIG |
Mengatur konfigurasi tampilan yang ditentukan dan menyimpan ke database | SDC_APPLY | SDC_USE_SUPPLIED_DISPLAY_CONFIG | SDC_SAVE_TO_DATABASE |
Mengatur konfigurasi tampilan sementara (yaitu, konfigurasi tampilan tidak akan disimpan) | SDC_APPLY | SDC_USE_SUPPLIED_DISPLAY_CONFIG |
Menguji apakah kloning didukung di komputer | SDC_VALIDATE | SDC_TOPOLOGY_CLONE |
Mengatur topologi kloning | SDC_APPLY | SDC_TOPOLOGY_CLONE |
Atur topologi kloning dan izinkan persistensi jalur diaktifkan jika diperlukan untuk memenuhi permintaan | SDC_APPLY | SDC_TOPOLOGY_CLONE | SDC_PATH_PERSIST_IF_REQUIRED |
Kembali dari mode sementara ke konfigurasi tampilan terakhir yang disimpan | SDC_APPLY| SDC_USE_DATABASE_CURRENT |
Hanya diberikan informasi jalur, atur konfigurasi tampilan dengan informasi sumber dan target dari database untuk jalur dan abaikan urutan jalur | SDC_APPLY | SDC_TOPOLOGY_SUPPLIED | SDC_ALLOW_PATH_ORDER_CHANGES |
Virtualisasi DPI
API ini tidak berpartisipasi dalam virtualisasi DPI. Semua ukuran dalam struktur DEVMODE berada dalam hal piksel fisik, dan tidak terkait dengan konteks panggilan.Persyaratan
Klien minimum yang didukung | Tersedia di Windows 7 dan versi yang lebih baru dari sistem operasi Windows. |
Target Platform | Universal |
Header | winuser.h (sertakan Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-sysparams-ext-l1-1-1 (diperkenalkan dalam Windows 10, versi 10.0.14393) |
Lihat juga
DISPLAYCONFIG_PATH_SOURCE_INFO