Funzione CreateDesktopW (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 CreateDesktopW(
  [in]           LPCWSTR               lpszDesktop,
                 LPCWSTR               lpszDevice,
                 DEVMODEW              *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 non fanno 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 hook in questo processo.

[in] dwDesiredAccess

Accesso al desktop. Per un elenco dei valori, vedere Desktop Security and Access Rights.For a list of values, see 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 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 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 informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Se il parametro dwDesiredAccess specifica il 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 è possibile creare è limitato dalle dimensioni dell'heap del 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=Off MaxRequestThreads=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 necessaria 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

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 (introdotto in Windows 8)

Vedi anche

CloseDesktop

CreateDesktopEx

Desktop

SECURITY_ATTRIBUTES

SetProcessWindowStation

SwitchDesktop

Funzioni di windows e desktop