Функция CreateDesktopExA (winuser.h)
Создает рабочий стол с указанной кучей, связывает его с текущей станцией окна вызывающего процесса и назначает его вызывающему потоку. Вызывающий процесс должен иметь связанную станцию окон, назначенную системой во время создания процесса или заданную функцией SetProcessWindowStation.
Синтаксис
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
);
Параметры
[in] lpszDesktop
Имя создаваемого рабочего стола. Имена рабочих столов не учитывает регистр и могут не содержать символы обратной косой черты (\).
lpszDevice
Этот параметр зарезервирован и должен иметь значение NULL.
pDevmode
Этот параметр зарезервирован и должен иметь значение NULL.
[in] dwFlags
Этот параметр может быть равен нулю или следующему значению.
Ценность | Значение |
---|---|
|
Позволяет процессам, выполняемым в других учетных записях на рабочем столе, задавать перехватчики в этом процессе. |
[in] dwDesiredAccess
Запрошенный доступ к рабочему столу. Список значений см. в "Безопасность и доступ к рабочим столам".
Этот параметр должен содержать право доступа DESKTOP_CREATEWINDOW, так как CreateDesktop использует дескриптор для создания окна.
[in, optional] lpsa
Указатель на структуру SECURITY_ATTRIBUTES, которая определяет, может ли возвращаемый дескриптор наследоваться дочерними процессами. Если lpsa имеет значение NULL, дескриптор не может быть унаследован.
Элемент lpSecurityDescriptor структуры указывает дескриптор безопасности для нового рабочего стола. Если этот параметр имеет значение NULL, рабочий стол наследует дескриптор безопасности от родительской станции окон.
[in] ulHeapSize
Размер кучи рабочего стола в килобайтах.
pvoid
Этот параметр зарезервирован и должен иметь значение NULL.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение является дескриптором созданного рабочего стола. Если указанный рабочий стол уже существует, функция завершается успешно и возвращает дескриптор существующему рабочему столу. По завершении работы с дескриптором вызовите функцию CloseDesktop, чтобы закрыть ее.
Если функция завершается ошибкой, возвращаемое значение равно NULL. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Если параметр dwDesiredAccess указывает READ_CONTROL, WRITE_DAC или WRITE_OWNER стандартные права доступа, необходимо также запросить DESKTOP_READOBJECTS и DESKTOP_WRITEOBJECTS права доступа.
Количество рабочих столов, которые можно создать, ограничено размером кучи системного рабочего стола. Классические объекты используют кучу для хранения ресурсов. Вы можете увеличить количество рабочих столов, которые можно создать, увеличив размер кучи рабочего стола или уменьшая количество кучи по умолчанию, зарезервированные для каждого рабочего стола на интерактивной станции окон. Это значение указывается в подстроке SharedSection следующего значения реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows. Данные по умолчанию для этого значения реестра приведены следующим образом:
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=baserv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16
Значения подстроки SharedSection описаны следующим образом:
- Первое значение SharedSection — это размер общей кучи, общий для всех рабочих столов в килобайтах.
- Второе значение SharedSection — это размер кучи рабочего стола, необходимой для каждого рабочего стола, созданного в интерактивной станции окон, WinSta0, в килобайтах.
- Третье значение SharedSection — это размер кучи рабочего стола, необходимой для каждого рабочего стола, созданного в неинтерактивной станции окна, в килобайтах.
Размер кучи по умолчанию зависит от таких факторов, как архитектура оборудования. Чтобы получить размер кучи настольных компьютеров, вызовите функцию GetUserObjectInformation с UOI_HEAPSIZE.
Заметка
Заголовок winuser.h определяет CreateDesktopEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winuser.h (включая Windows.h) |
библиотеки |
User32.lib |
DLL | User32.dll |
См. также
настольных компьютеров
станции окон