/* * PROJECT: ReactOS Win32k subsystem * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) * PURPOSE: Security infrastructure of NTUSER component of Win32k * COPYRIGHT: Copyright 2022 George Bișoc */ #pragma once // // USER objects security rights // /* Desktop access rights */ #define DESKTOP_READ (STANDARD_RIGHTS_READ | \ DESKTOP_ENUMERATE | \ DESKTOP_READOBJECTS) #define DESKTOP_WRITE (STANDARD_RIGHTS_WRITE | \ DESKTOP_CREATEMENU | \ DESKTOP_CREATEWINDOW | \ DESKTOP_HOOKCONTROL | \ DESKTOP_JOURNALPLAYBACK | \ DESKTOP_JOURNALRECORD | \ DESKTOP_WRITEOBJECTS) #define DESKTOP_EXECUTE (STANDARD_RIGHTS_EXECUTE | \ DESKTOP_SWITCHDESKTOP) #define DESKTOP_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ DESKTOP_CREATEMENU | \ DESKTOP_CREATEWINDOW | \ DESKTOP_ENUMERATE | \ DESKTOP_HOOKCONTROL | \ DESKTOP_JOURNALPLAYBACK | \ DESKTOP_JOURNALRECORD | \ DESKTOP_READOBJECTS | \ DESKTOP_SWITCHDESKTOP | \ DESKTOP_WRITEOBJECTS) /* Window Station access rights */ #define WINSTA_READ (STANDARD_RIGHTS_READ | \ WINSTA_ENUMDESKTOPS | \ WINSTA_ENUMERATE | \ WINSTA_READATTRIBUTES | \ WINSTA_READSCREEN) #define WINSTA_WRITE (STANDARD_RIGHTS_WRITE | \ WINSTA_ACCESSCLIPBOARD | \ WINSTA_CREATEDESKTOP | \ WINSTA_WRITEATTRIBUTES) #define WINSTA_EXECUTE (STANDARD_RIGHTS_EXECUTE | \ WINSTA_ACCESSGLOBALATOMS | \ WINSTA_EXITWINDOWS) #define WINSTA_ACCESS_ALL (STANDARD_RIGHTS_REQUIRED | \ WINSTA_ACCESSCLIPBOARD | \ WINSTA_ACCESSGLOBALATOMS | \ WINSTA_CREATEDESKTOP | \ WINSTA_ENUMDESKTOPS | \ WINSTA_ENUMERATE | \ WINSTA_EXITWINDOWS | \ WINSTA_READATTRIBUTES | \ WINSTA_READSCREEN | \ WINSTA_WRITEATTRIBUTES) // // Function prototypes // HANDLE IntCaptureCurrentAccessToken(VOID); PVOID IntAllocateSecurityBuffer( _In_ SIZE_T Length); VOID IntFreeSecurityBuffer( _In_ PVOID Buffer); NTSTATUS IntQueryUserSecurityIdentification( _Out_ PTOKEN_USER *User); NTSTATUS NTAPI IntAssignDesktopSecurityOnParse( _In_ PWINSTATION_OBJECT WinSta, _In_ PDESKTOP Desktop, _In_ PACCESS_STATE AccessState); NTSTATUS NTAPI IntCreateServiceSecurity( _Out_ PSECURITY_DESCRIPTOR *ServiceSd); /* EOF */