Funzione CreateDesktopA (winuser.h)
Crea un nuovo desktop, lo associa alla stazione finestra corrente del processo chiamante e la assegna al thread chiamante. Il processo chiamante deve avere una stazione finestra associata, assegnata dal sistema in fase di creazione del processo o impostata dalla funzione SetProcessWindowStation.
Per specificare le dimensioni dell'heap per il desktop, usare la funzione CreateDesktopEx
Sintassi
HDESK CreateDesktopA(
[in] LPCSTR lpszDesktop,
LPCSTR lpszDevice,
DEVMODEA *pDevmode,
[in] DWORD dwFlags,
[in] ACCESS_MASK dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpsa
);
Parametri
[in] lpszDesktop
Nome del desktop da creare. I nomi desktop non fanno distinzione tra maiuscole e minuscole e potrebbero non contenere caratteri barra rovesciata (\).
lpszDevice
Riservato; deve essere null.
pDevmode
Riservato; deve essere null.
[in] dwFlags
Questo parametro può essere zero o il valore seguente.
Valore | Significato |
---|---|
|
Consente ai processi in esecuzione in altri account sul desktop di impostare hook in questo processo. |
[in] dwDesiredAccess
Accesso al desktop. Per un elenco di valori, vedere Desktop Security and Access Rights.
Questo parametro deve includere il diritto di accesso DESKTOP_CREATEWINDOW, perché internamente CreateDesktop usa l'handle per creare una finestra.
[in, optional] lpsa
Puntatore a una struttura di SECURITY_ATTRIBUTES che determina se l'handle restituito può essere ereditato dai processi figlio. Se lpsa è NULL, l'handle non può essere ereditato.
Il lpSecurityDescriptor membro della struttura specifica un descrittore di sicurezza per il nuovo desktop. Se questo parametro è NULL, il desktop eredita il descrittore di sicurezza dalla stazione finestra padre.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è un handle per il desktop appena creato. Se il desktop specificato esiste già, la funzione ha esito positivo e restituisce un handle al desktop esistente. Al termine dell'uso dell'handle, chiamare la funzione CloseDesktop per chiuderla.
Se la funzione ha esito negativo, il valore restituito è NULL. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
Se il parametro dwDesiredAccess
Il numero di desktop che è possibile creare è limitato dalle dimensioni dell'heap desktop di sistema, ovvero 48 MB. Gli oggetti desktop usano l'heap per archiviare le risorse. È possibile aumentare il numero di desktop che è possibile creare riducendo l'heap predefinito riservato per ogni desktop nella stazione finestra interattiva. Questo valore viene specificato nella sottostringa "SharedSection" del valore del Registro di sistema seguente: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows. I dati predefiniti per questo valore del Registro di sistema sono i seguenti:
"%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=OffRequestThreads=16"
I valori per la sottostringa "SharedSection" sono descritti come segue:
- Il primo valore "SharedSection" è la dimensione dell'heap condiviso comune a tutti i desktop, in kilobyte.
- Il secondo valore "SharedSection" è la dimensione dell'heap desktop necessario per ogni desktop creato nella stazione interattiva della finestra, WinSta0, in kilobyte.
- Il terzo valore "SharedSection" è la dimensione dell'heap desktop necessario per ogni desktop creato in una stazione finestra non interattiva, in kilobyte.
Nota
L'intestazione winuser.h definisce CreateDesktop come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 Professional [solo app desktop] |
server minimo supportato | Windows 2000 Server [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
winuser.h (include Windows.h) |
libreria |
User32.lib |
dll | User32.dll |
set di API | ext-ms-win-ntuser-windowstation-l1-1-0 (introdotto in Windows 8) |
Vedere anche
desktop