Función CreateDesktopExA (winuser.h)
Crea un nuevo escritorio con el montón especificado, lo asocia a la estación de ventana actual del proceso de llamada y lo asigna al subproceso que realiza la llamada. El proceso de llamada debe tener una estación de ventana asociada, ya sea asignada por el sistema en el momento de la creación del proceso o establecida por la función SetProcessWindowStation .
Sintaxis
HDESK CreateDesktopExA(
[in] LPCSTR lpszDesktop,
LPCSTR lpszDevice,
DEVMODEA *pDevmode,
[in] DWORD dwFlags,
[in] ACCESS_MASK dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpsa,
[in] ULONG ulHeapSize,
PVOID pvoid
);
Parámetros
[in] lpszDesktop
Nombre del escritorio que se va a crear. Los nombres de escritorio no distinguen mayúsculas de minúsculas y pueden no contener caracteres de barra diagonal inversa (\).
lpszDevice
Este parámetro está reservado y debe ser NULL.
pDevmode
Este parámetro está reservado y debe ser NULL.
[in] dwFlags
Este parámetro puede ser cero o el valor siguiente.
Valor | Significado |
---|---|
|
Permite que los procesos que se ejecutan en otras cuentas del escritorio establezcan enlaces en este proceso. |
[in] dwDesiredAccess
El acceso solicitado al escritorio. Para obtener una lista de valores, consulte Derechos de acceso y seguridad de escritorio.
Este parámetro debe incluir el derecho de acceso DESKTOP_CREATEWINDOW, ya que CreateDesktop usa internamente el identificador para crear una ventana.
[in, optional] lpsa
Puntero a una estructura de SECURITY_ATTRIBUTES que determina si los procesos secundarios pueden heredar el identificador devuelto. Si lpsa es NULL, no se puede heredar el identificador.
El miembro lpSecurityDescriptor de la estructura especifica un descriptor de seguridad para el nuevo escritorio. Si este parámetro es NULL, el escritorio hereda su descriptor de seguridad de la estación de ventana principal.
[in] ulHeapSize
Tamaño del montón de escritorio, en kilobytes.
pvoid
Este parámetro está reservado y debe ser NULL.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador para el escritorio recién creado. Si el escritorio especificado ya existe, la función se realiza correctamente y devuelve un identificador al escritorio existente. Cuando haya terminado de usar el identificador, llame a la función CloseDesktop para cerrarla.
Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Si el parámetro dwDesiredAccess especifica el READ_CONTROL, WRITE_DAC o WRITE_OWNER derechos de acceso estándar, también debe solicitar los derechos de acceso DESKTOP_READOBJECTS y DESKTOP_WRITEOBJECTS.
El número de escritorios que se pueden crear está limitado por el tamaño del montón de escritorio del sistema. Los objetos de escritorio usan el montón para almacenar recursos. Puede aumentar el número de escritorios que se pueden crear aumentando el tamaño del montón de escritorio o reduciendo el montón predeterminado reservado para cada escritorio de la estación de ventana interactiva. Este valor se especifica en la subcadena SharedSection del siguiente valor del Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows. Los datos predeterminados de este valor del Registro son los siguientes:
%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
Los valores de la subcadena SharedSection se describen de la siguiente manera:
- El primer valor sharedSection es el tamaño del montón compartido común a todos los escritorios, en kilobytes.
- El segundo valor sharedSection es el tamaño del montón de escritorio necesario para cada escritorio que se crea en la estación de ventana interactiva, WinSta0, en kilobytes.
- El tercer valor sharedSection es el tamaño del montón de escritorio necesario para cada escritorio que se crea en una estación de ventana no interactiva, en kilobytes.
El tamaño predeterminado del montón de escritorio depende de factores como la arquitectura de hardware. Para recuperar el tamaño del montón de escritorio, llame a la función GetUserObjectInformation con UOI_HEAPSIZE.
Nota
El encabezado winuser.h define CreateDesktopEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluir Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |