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
DF_ALLOWOTHERACCOUNTHOOK
0x0001
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)

Consulte también

CloseDesktop

CreateDesktopEx

Escritorios

SECURITY_ATTRIBUTES

SetProcessWindowStation

SwitchDesktop

Funciones de escritorio y estación de ventanas