Función CreateDesktopA (winuser.h)
Crea un nuevo escritorio, 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 .
Para especificar el tamaño del montón para el escritorio, use la función CreateDesktopEx .
Sintaxis
HDESK CreateDesktopA(
[in] LPCSTR lpszDesktop,
LPCSTR lpszDevice,
DEVMODEA *pDevmode,
[in] DWORD dwFlags,
[in] ACCESS_MASK dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpsa
);
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
Reservados; debe ser NULL.
pDevmode
Reservados; 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
Acceso 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.
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, que es de 48 MB. Los objetos de escritorio usan el montón para almacenar recursos. Puede aumentar el número de escritorios que se pueden crear 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.
Nota
El encabezado winuser.h define CreateDesktop 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 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluir Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Conjunto de API | ext-ms-win-ntuser-windowstation-l1-1-0 (introducido en Windows 8) |