CreateDesktopA, fonction (winuser.h)
Crée un bureau, 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, soit affectée par le système au moment de la création du processus, soit définie par la fonction SetProcessWindowStation .
Pour spécifier la taille du tas pour le bureau, utilisez la fonction CreateDesktopEx .
Syntaxe
HDESK CreateDesktopA(
[in] LPCSTR lpszDesktop,
LPCSTR lpszDevice,
DEVMODEA *pDevmode,
[in] DWORD dwFlags,
[in] ACCESS_MASK dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpsa
);
Paramètres
[in] lpszDesktop
Nom du bureau à créer. Les noms de bureau ne respectent pas la casse et ne peuvent pas contenir de barres obliques inverses (\).
lpszDevice
Réservés au; doit avoir la valeur NULL.
pDevmode
Réservés au; doit avoir la valeur NULL.
[in] dwFlags
Ce paramètre peut être égal à zéro ou à la valeur suivante.
Valeur | Signification |
---|---|
|
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 au bureau. Pour obtenir la liste des valeurs, consultez Sécurité du bureau et droits d’accès.
Ce paramètre doit inclure le droit d’accès DESKTOP_CREATEWINDOW , car CreateDesktop utilise en interne le handle pour créer une fenêtre.
[in, optional] lpsa
Pointeur vers une structure de SECURITY_ATTRIBUTES qui détermine si le handle retourné peut être hérité par des processus enfants. Si lpsa a la valeur NULL, le handle ne peut pas être hérité.
Le membre lpSecurityDescriptor de la structure spécifie un descripteur de sécurité pour le nouveau bureau. Si ce paramètre a la valeur NULL, le bureau hérite de son descripteur de sécurité de la station de fenêtre parente.
Valeur retournée
Si la fonction réussit, la valeur de retour est un handle pour le 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étaillées sur l’erreur, 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, qui est de 48 Mo. Les objets de bureau utilisent le tas pour stocker des ressources. Vous pouvez augmenter le nombre de bureaux qui peuvent être créés en réduisant le tas par défaut réservé pour 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 de 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 » correspond à la taille du tas partagé commun à tous les ordinateurs de bureau, en kilo-octets.
- La deuxième valeur « SharedSection » correspond à 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 » correspond à la taille du tas de bureau nécessaire pour chaque bureau créé dans une station de fenêtre non interactive, en kilo-octets.
Notes
L’en-tête winuser.h définit CreateDesktop comme un 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Ensemble d’API | ext-ms-win-ntuser-windowstation-l1-1-0 (introduit dans Windows 8) |