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 |
---|---|
|
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
SetProcessWindowStation