Condividi tramite


Funzione CreateDesktopA (winuser.h)

Crea un nuovo desktop, lo associa alla stazione di finestra corrente del processo chiamante e lo 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 dei desktop sono senza distinzione tra maiuscole e minuscole e potrebbero non contenere caratteri barra rovesciata (\).

lpszDevice

Riservati; deve essere NULL.

pDevmode

Riservati; deve essere NULL.

[in] dwFlags

Questo parametro può essere zero o il valore seguente.

Valore Significato
DF_ALLOWOTHERACCOUNTHOOK
0x0001
Consente ai processi in esecuzione in altri account sul desktop di impostare gli hook in questo processo.

[in] dwDesiredAccess

Accesso al desktop. Per un elenco di valori, vedere Sicurezza desktop e diritti di accesso.

Questo parametro deve includere il diritto di accesso DESKTOP_CREATEWINDOW , perché createDesktop usa internamente l'handle per creare una finestra.

[in, optional] lpsa

Puntatore a una struttura SECURITY_ATTRIBUTES che determina se l'handle restituito può essere ereditato dai processi figlio. Se lpsa è NULL, l'handle non può essere ereditato.

Il membro lpSecurityDescriptor 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 riesce 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 informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Se il parametro dwDesiredAccessspecifica i diritti di accesso READ_CONTROL, WRITE_DAC o WRITE_OWNER diritti di accesso standard, è necessario richiedere anche i diritti di accesso DESKTOP_READOBJECTS e DESKTOP_WRITEOBJECTS .

Il numero di desktop che possono essere creati è 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 possono essere creati 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=Off MaxRequestThreads=16"

I valori per la sottostringa "SharedSection" sono descritti di seguito:

  • 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 necessaria per ogni desktop creato nella stazione della finestra interattiva, WinSta0, in kilobyte.
  • Il terzo valore "SharedSection" è la dimensione dell'heap desktop necessaria per ogni desktop creato in una stazione finestra noninterattiva, 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 di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-windowstation-l1-1-0 (introdotta in Windows 8)

Vedi anche

CloseDesktop

CreateDesktopEx

Desktop

SECURITY_ATTRIBUTES

SetProcessWindowStation

SwitchDesktop

Funzioni di Window Station e Desktop