Partager via


CreateDesktopExW, fonction (winuser.h)

Crée un bureau avec le tas spécifié, l’associe à la station de fenêtre actuelle du processus appelant et l’affecte au thread appelant. Le processus appelant doit avoir une station de fenêtre associée, affectée par le système au moment de la création du processus ou définie par la fonction SetProcessWindowStation.

Syntaxe

HDESK CreateDesktopExW(
  [in]           LPCWSTR               lpszDesktop,
                 LPCWSTR               lpszDevice,
                 DEVMODEW              *pDevmode,
  [in]           DWORD                 dwFlags,
  [in]           ACCESS_MASK           dwDesiredAccess,
  [in, optional] LPSECURITY_ATTRIBUTES lpsa,
  [in]           ULONG                 ulHeapSize,
                 PVOID                 pvoid
);

Paramètres

[in] lpszDesktop

Nom du bureau à créer. Les noms de bureau ne respectent pas la casse et peuvent ne pas contenir de caractères de barre oblique inverse (\).

lpszDevice

Ce paramètre est réservé et doit être NULL.

pDevmode

Ce paramètre est réservé et doit être NULL.

[in] dwFlags

Ce paramètre peut être égal à zéro ou à la valeur suivante.

Valeur Signification
DF_ALLOWOTHERACCOUNTHOOK
0x0001
Permet aux processus s’exécutant dans d’autres comptes sur le bureau de définir des hooks dans ce processus.

[in] dwDesiredAccess

Accès demandé au bureau. Pour obtenir la liste des valeurs, consultez Desktop Security and Access Rights.

Ce paramètre doit inclure le droit d’accès DESKTOP_CREATEWINDOW, car en interne CreateDesktop utilise le handle pour créer une fenêtre.

[in, optional] lpsa

Pointeur vers une structure SECURITY_ATTRIBUTES qui détermine si le handle retourné peut être hérité par les processus enfants. Si lpsa a la valeur NULL, le handle ne peut pas être hérité.

Le lpSecurityDescriptor membre de la structure spécifie un descripteur de sécurité pour le nouveau bureau. Si ce paramètre est NULL, le bureau hérite de son descripteur de sécurité de la station de fenêtre parente.

[in] ulHeapSize

Taille du tas de bureau, en kilo-octets.

pvoid

Ce paramètre est réservé et doit être NULL.

Valeur de retour

Si la fonction réussit, la valeur de retour est un handle du bureau nouvellement créé. Si le bureau spécifié existe déjà, la fonction réussit et retourne un handle au bureau existant. Lorsque vous avez terminé d’utiliser le handle, appelez la fonction CloseDesktop pour la fermer.

Si la fonction échoue, la valeur de retour est NULL. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Si le paramètre dwDesiredAccess spécifie les droits d’accès READ_CONTROL, WRITE_DAC ou WRITE_OWNER standard, vous devez également demander les droits d’accès DESKTOP_READOBJECTS et DESKTOP_WRITEOBJECTS.

Le nombre de bureaux pouvant être créés est limité par la taille du tas de bureau système. Les objets de bureau utilisent le tas pour stocker des ressources. Vous pouvez augmenter le nombre de bureaux qui peuvent être créés en augmentant la taille du tas de bureau ou en réduisant le tas par défaut réservé à chaque bureau dans la station de fenêtre interactive. Cette valeur est spécifiée dans la sous-chaîne SharedSection de la valeur de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows. Les données par défaut pour cette valeur de Registre sont les suivantes :

%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

Les valeurs de la sous-chaîne SharedSection sont décrites comme suit :

  • La première valeur SharedSection est la taille du tas partagé commun à tous les bureaux, en kilo-octets.
  • La deuxième valeur SharedSection est la taille du tas de bureau nécessaire pour chaque bureau créé dans la station de fenêtre interactive, WinSta0, en kilo-octets.
  • La troisième valeur SharedSection est la taille du tas de bureau nécessaire pour chaque bureau créé dans une station de fenêtre noninteractive, en kilo-octets.

La taille par défaut du tas de bureau dépend de facteurs tels que l’architecture matérielle. Pour récupérer la taille du tas de bureau, appelez la fonction GetUserObjectInformation avec UOI_HEAPSIZE.

Note

L’en-tête winuser.h définit CreateDesktopEx comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2008 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winuser.h (include Windows.h)
bibliothèque User32.lib
DLL User32.dll

Voir aussi

closeDesktop

Desktops

SECURITY_ATTRIBUTES

SetProcessWindowStation

SwitchDesktop

station de fenêtre et fonctions de bureau