Fungsi CreateDesktopA (winuser.h)

Membuat desktop baru, mengaitkannya dengan stasiun jendela saat ini dari proses panggilan, dan menetapkannya ke utas panggilan. Proses panggilan harus memiliki stasiun jendela terkait, baik yang ditetapkan oleh sistem pada waktu pembuatan proses atau diatur oleh fungsi SetProcessWindowStation .

Untuk menentukan ukuran timbunan untuk desktop, gunakan fungsi CreateDesktopEx .

Sintaks

HDESK CreateDesktopA(
  [in]           LPCSTR                lpszDesktop,
                 LPCSTR                lpszDevice,
                 DEVMODEA              *pDevmode,
  [in]           DWORD                 dwFlags,
  [in]           ACCESS_MASK           dwDesiredAccess,
  [in, optional] LPSECURITY_ATTRIBUTES lpsa
);

Parameter

[in] lpszDesktop

Nama desktop yang akan dibuat. Nama desktop tidak peka huruf besar/kecil dan mungkin tidak berisi karakter garis miring terbelakang (\).

lpszDevice

Dipesan; harus NULL.

pDevmode

Dipesan; harus NULL.

[in] dwFlags

Parameter ini bisa nol atau nilai berikut.

Nilai Makna
DF_ALLOWOTHERACCOUNTHOOK
0x0001
Memungkinkan proses yang berjalan di akun lain di desktop untuk mengatur hook dalam proses ini.

[in] dwDesiredAccess

Akses ke desktop. Untuk daftar nilai, lihat Keamanan Desktop dan Hak Akses.

Parameter ini harus menyertakan hak akses DESKTOP_CREATEWINDOW , karena secara internal CreateDesktop menggunakan handel untuk membuat jendela.

[in, optional] lpsa

Penunjuk ke struktur SECURITY_ATTRIBUTES yang menentukan apakah handel yang dikembalikan dapat diwariskan oleh proses anak. Jika lpsa NULL, handel tidak dapat diwariskan.

Anggota lpSecurityDescriptor dari struktur menentukan deskriptor keamanan untuk desktop baru. Jika parameter ini NULL, desktop mewarisi deskriptor keamanannya dari stasiun jendela induk.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah handel ke desktop yang baru dibuat. Jika desktop yang ditentukan sudah ada, fungsi berhasil dan mengembalikan handel ke desktop yang ada. Setelah selesai menggunakan handel, panggil fungsi CloseDesktop untuk menutupnya.

Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Jika parameter dwDesiredAccess menentukan hak akses standar READ_CONTROL, WRITE_DAC, atau WRITE_OWNER , Anda juga harus meminta hak akses DESKTOP_READOBJECTS dan DESKTOP_WRITEOBJECTS .

Jumlah desktop yang dapat dibuat dibatasi oleh ukuran timbunan desktop sistem, yaitu 48 MB. Objek desktop menggunakan timbunan untuk menyimpan sumber daya. Anda dapat meningkatkan jumlah desktop yang dapat dibuat dengan mengurangi tumpukan default yang disediakan untuk setiap desktop di stasiun jendela interaktif. Nilai ini ditentukan dalam substring "SharedSection" dari nilai registri berikut: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows. Data default untuk nilai registri ini adalah sebagai berikut:

"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"

Nilai untuk substring "SharedSection" dijelaskan sebagai berikut:

  • Nilai "SharedSection" pertama adalah ukuran timbunan bersama yang umum untuk semua desktop, dalam kilobyte.
  • Nilai "SharedSection" kedua adalah ukuran timbunan desktop yang diperlukan untuk setiap desktop yang dibuat di stasiun jendela interaktif, WinSta0, dalam kilobyte.
  • Nilai "SharedSection" ketiga adalah ukuran timbunan desktop yang diperlukan untuk setiap desktop yang dibuat di stasiun jendela noninteraktif, dalam kilobyte.

Catatan

Header winuser.h mendefinisikan CreateDesktop sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-windowstation-l1-1-0 (diperkenalkan dalam Windows 8)

Lihat juga

CloseDesktop

CreateDesktopEx

Desktop

SECURITY_ATTRIBUTES

SetProcessWindowStation

SwitchDesktop

Stasiun Jendela dan Fungsi Desktop