Функция CreateDesktopW (winuser.h)
Создает новый рабочий стол, связывает его с текущей станцией окна вызывающего процесса и назначает его вызывающему потоку. Вызывающий процесс должен иметь связанную оконную станцию, назначенную системой во время создания процесса или заданную функцией SetProcessWindowStation .
Чтобы указать размер кучи для рабочего стола, используйте функцию CreateDesktopEx .
Синтаксис
HDESK CreateDesktopW(
[in] LPCWSTR lpszDesktop,
LPCWSTR lpszDevice,
DEVMODEW *pDevmode,
[in] DWORD dwFlags,
[in] ACCESS_MASK dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpsa
);
Параметры
[in] lpszDesktop
Имя создаваемого рабочего стола. Имена рабочих столов не учитывают регистр и могут не содержать символы обратной косой черты (\).
lpszDevice
Защищены; значение должно иметь значение NULL.
pDevmode
Защищены; значение должно иметь значение NULL.
[in] dwFlags
Этот параметр может быть равен нулю или следующему значению.
Значение | Значение |
---|---|
|
Позволяет процессам, выполняемым в других учетных записях на рабочем столе, задавать обработчики в этом процессе. |
[in] dwDesiredAccess
Доступ к рабочему столу. Список значений см. в разделе Безопасность и права доступа к рабочему столу.
Этот параметр должен включать право доступа DESKTOP_CREATEWINDOW , так как для создания окна внутри CreateDesktop использует дескриптор.
[in, optional] lpsa
Указатель на структуру SECURITY_ATTRIBUTES , которая определяет, может ли возвращенный дескриптор наследоваться дочерними процессами. Если lpsa имеет значение NULL, дескриптор не может быть унаследован.
Элемент lpSecurityDescriptor структуры задает дескриптор безопасности для нового рабочего стола. Если этот параметр имеет значение NULL, рабочий стол наследует дескриптор безопасности от родительской станции окна.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет дескриптором только что созданного рабочего стола. Если указанный рабочий стол уже существует, функция выполняется успешно и возвращает дескриптор существующему рабочему столу. Завершив использование дескриптора, вызовите функцию CloseDesktop , чтобы закрыть ее.
Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если параметр dwDesiredAccess указывает READ_CONTROL, WRITE_DAC или WRITE_OWNER стандартные права доступа, необходимо также запросить права доступа DESKTOP_READOBJECTS и DESKTOP_WRITEOBJECTS .
Количество рабочих столов, которые можно создать, ограничено размером системной кучи рабочего стола, которая составляет 48 МБ. Объекты рабочего стола используют кучу для хранения ресурсов. Вы можете увеличить количество рабочих столов, которые можно создать, уменьшив кучи по умолчанию, зарезервированную для каждого рабочего стола в интерактивной оконной станции. Это значение указывается в подстроке 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=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
Значения подстроки SharedSection описаны следующим образом:
- Первое значение SharedSection — это размер общей кучи, общей для всех рабочих столов, в килобайтах.
- Второе значение SharedSection — это размер кучи рабочего стола, необходимой для каждого рабочего стола, созданного в интерактивной оконной станции WinSta0, в килобайтах.
- Третье значение SharedSection — это размер кучи рабочего стола, необходимой для каждого рабочего стола, созданного в неинтерактивной оконной станции, в килобайтах.
Примечание
Заголовок winuser.h определяет CreateDesktop как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-windowstation-l1-1-0 (представлено в Windows 8) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по