Compartilhar via


Função CreateDesktopA (winuser.h)

Cria uma nova área de trabalho, associa-a à estação de janela atual do processo de chamada e atribui-a ao thread de chamada. O processo de chamada deve ter uma estação de janela associada, atribuída pelo sistema no momento da criação do processo ou definida pela função SetProcessWindowStation.

Para especificar o tamanho do heap para a área de trabalho, use a função CreateDesktopEx.

Sintaxe

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

O nome da área de trabalho a ser criada. Os nomes da área de trabalho não diferenciam maiúsculas de minúsculas e podem não conter caracteres de barra invertida (\).

lpszDevice

Reservado; deve ser NULL.

pDevmode

Reservado; deve ser NULL.

[in] dwFlags

Esse parâmetro pode ser zero ou o valor a seguir.

Valor Significado
DF_ALLOWOTHERACCOUNTHOOK
0x0001
Permite que processos em execução em outras contas na área de trabalho defina ganchos nesse processo.

[in] dwDesiredAccess

O acesso à área de trabalho. Para obter uma lista de valores, consulte Segurança da Área de Trabalho e Direitos de Acesso.

Esse parâmetro deve incluir o DESKTOP_CREATEWINDOW direito de acesso, pois internamente CreateDesktop usa o identificador para criar uma janela.

[in, optional] lpsa

Um ponteiro para uma estrutura de SECURITY_ATTRIBUTES que determina se o identificador retornado pode ser herdado por processos filho. Se lpsa for NULL, o identificador não poderá ser herdado.

O lpSecurityDescriptor membro da estrutura especifica um descritor de segurança para a nova área de trabalho. Se esse parâmetro for NULL, a área de trabalho herdará seu descritor de segurança da estação de janela pai.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será um identificador para a área de trabalho recém-criada. Se a área de trabalho especificada já existir, a função terá êxito e retornará um identificador para a área de trabalho existente. Quando terminar de usar o identificador, chame a função CloseDesktop para fechá-la.

Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.

Observações

Se o parâmetro dwDesiredAccess especificar os direitos de acesso padrão READ_CONTROL, WRITE_DACou WRITE_OWNER, você também deverá solicitar os direitos de acesso DESKTOP_READOBJECTS e DESKTOP_WRITEOBJECTS.

O número de áreas de trabalho que podem ser criadas é limitado pelo tamanho do heap da área de trabalho do sistema, que é de 48 MB. Os objetos da área de trabalho usam o heap para armazenar recursos. Você pode aumentar o número de áreas de trabalho que podem ser criadas reduzindo o heap padrão reservado para cada área de trabalho na estação de janela interativa. Esse valor é especificado na subcadeia de caracteres "SharedSection" do seguinte valor do Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows. Os dados padrão para esse valor do Registro são os seguintes:

"%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"

Os valores da subcadeia de caracteres "SharedSection" são descritos da seguinte maneira:

  • O primeiro valor "SharedSection" é o tamanho do heap compartilhado comum a todas as áreas de trabalho, em quilobytes.
  • O segundo valor "SharedSection" é o tamanho do heap da área de trabalho necessário para cada área de trabalho que é criada na estação de janela interativa, WinSta0, em quilobytes.
  • O terceiro valor "SharedSection" é o tamanho do heap da área de trabalho necessário para cada área de trabalho que é criada em uma estação de janela não interinterativa, em quilobytes.

Nota

O cabeçalho winuser.h define CreateDesktop como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winuser.h (inclua Windows.h)
biblioteca User32.lib
de DLL User32.dll
conjunto de API ext-ms-win-ntuser-windowstation-l1-1-0 (introduzido no Windows 8)

Consulte também

CloseDesktop

CreateDesktopEx

Desktops

SECURITY_ATTRIBUTES

SetProcessWindowStation

SwitchDesktop

estação de janela e funções da área de trabalho