69 sizeof(wstrWindowStationsDir),
105 TRACE(
"Deleting window station 0x%p\n", WinSta);
111 ERR(
"WARNING: Deleting the interactive window station '%wZ'!\n",
245 HWINSTA WindowStation,
253 if (WindowStation ==
NULL)
255 ERR(
"Invalid window station handle\n");
284 ERR(
"Failed to initialize graphics, switching to base video\n");
293 ERR(
"PDEVOBJ_lChangeDisplaySettings() failed.\n");
334 gpsi->PUSIFlags &= ~PUSIF_PALETTEDISPLAY;
338 gpsi->tmSysFont = tmw;
407 ERR(
"Requires Interactive Window Station\n");
413 ERR(
"Access Denied\n");
426 HWINSTA hWinSta = ppi->
hwinsta;
460 L"\\Sessions\\%lu\\BaseNamedObjects",
478 ERR(
"Failed to open '%wZ', Status 0x%08lx\n", &
Name,
Status);
492 ERR(
"Failed to initialize absolute SD, Status 0x%08lx\n",
Status);
503 ERR(
"Failed to allocate memory for service DACL!\n");
512 ERR(
"Failed to create service DACL, Status 0x%08lx\n",
Status);
522 ERR(
"Failed to set up window station ACE for authenticated user, Status 0x%08lx\n",
Status);
531 ERR(
"Failed to set up DACL for absolute SD, Status 0x%08lx\n",
Status);
580 ERR(
"Event '%wZ' creation failed, Status 0x%08lx\n", &
Name,
Status);
616 ERR(
"Failed to reference the event object, Status 0x%08lx\n",
Status);
666 OUT HWINSTA* phWinSta,
681 TRACE(
"IntCreateWindowStation called\n");
695 TRACE(
"IntCreateWindowStation opened window station '%wZ'\n",
714 (
PVOID*)&WindowStation);
717 ERR(
"ObCreateObject failed for window station '%wZ', Status 0x%08lx\n",
732 ERR(
"RtlCreateAtomTable failed for window station '%wZ', Status 0x%08lx\n",
741 ERR(
"Initializing input window station\n");
747 WindowStation->
Flags &= ~WSS_NOIO;
775 ERR(
"ObInsertObject failed for window station, Status 0x%08lx\n",
Status);
785 ERR(
"Initializing input window station\n");
802 TRACE(
"IntCreateWindowStation created window station '%wZ' object 0x%p handle 0x%p\n",
820 if (UserModeObjectAttributes && LocalObjectAttributes)
825 *UserModeObjectAttributes = *LocalObjectAttributes;
835 if (WindowStationName && (WindowStationName != TebStaticUnicodeString))
838 (
PVOID*)&WindowStationName,
858 *WindowStationName =
NULL;
859 *TebStaticUnicodeString =
NULL;
865 ERR(
"Failed to retrieve the caller LUID, Status 0x%08lx\n",
Status);
877 ERR(
"Window station name length is too long.\n");
880 StrSize = (
USHORT)MemSize;
896 *WindowStationName = *TebStaticUnicodeString;
897 (*WindowStationName)->
Length = 0;
906 (
PVOID*)WindowStationName,
913 ERR(
"ZwAllocateVirtualMemory() failed, Status 0x%08lx\n",
Status);
917 RtlInitEmptyUnicodeString(*WindowStationName,
925 (*WindowStationName)->MaximumLength,
926 L"%wZ\\Service-0x%x-%x$",
932 ERR(
"Impossible to build a valid window station name, Status 0x%08lx\n",
Status);
935 (*WindowStationName)->Length = (
USHORT)(
wcslen((*WindowStationName)->Buffer) *
sizeof(
WCHAR));
941 *LocalObjectAttributes = *UserModeObjectAttributes;
943 UserModeObjectAttributes->ObjectName = *WindowStationName;
944 UserModeObjectAttributes->RootDirectory =
NULL;
959 *TebStaticUnicodeString,
978 HWINSTA hWinSta =
NULL;
984 TRACE(
"NtUserCreateWindowStation called\n");
993 ERR(
"Invalid ObjectAttributes length!\n");
1017 &LocalObjectAttributes,
1019 &TebStaticUnicodeString);
1022 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
1031 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
1058 TRACE(
"NtUserCreateWindowStation created window station '%wZ' with handle 0x%p\n",
1064 ERR(
"NtUserCreateWindowStation failed to create window station '%wZ', Status 0x%08lx\n",
1070 TebStaticUnicodeString,
1072 &LocalObjectAttributes);
1113 HWINSTA hWinSta =
NULL;
1119 TRACE(
"NtUserOpenWindowStation called\n");
1128 ERR(
"Invalid ObjectAttributes length!\n");
1153 sizeof(
L"Service-0x00000000-00000000$") -
sizeof(
UNICODE_NULL) &&
1155 L"Service-0x00000000-00000000$",
1173 &LocalObjectAttributes,
1175 &TebStaticUnicodeString);
1178 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
1187 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
1207 TRACE(
"NtUserOpenWindowStation opened window station '%wZ' with handle 0x%p\n",
1213 ERR(
"NtUserOpenWindowStation failed to open window station '%wZ', Status 0x%08lx\n",
1219 TebStaticUnicodeString,
1221 &LocalObjectAttributes);
1260 TRACE(
"NtUserCloseWindowStation called (%p)\n", hWinSta);
1264 ERR(
"Attempted to close process window station\n");
1275 ERR(
"Validation of window station handle (%p) failed\n", hWinSta);
1281 TRACE(
"Closing window station handle (%p)\n", hWinSta);
1336 PVOID pvInformation,
1365 TRACE(
"Trying to open window station 0x%p\n", hObject);
1370 (
PVOID*)&WinStaObject,
1376 TRACE(
"Trying to open desktop %p\n", hObject);
1377 WinStaObject =
NULL;
1390 TRACE(
"WinSta or Desktop opened!\n");
1401 if (WinStaObject !=
NULL)
1406 else if (DesktopObject !=
NULL)
1408 FIXME(
"Setting DF_ALLOWOTHERACCOUNTHOOK is unimplemented.\n");
1412 ERR(
"No associated WinStaObject nor DesktopObject!\n");
1416 nDataSize =
sizeof(ObjectFlags);
1423 if (WinStaObject !=
NULL)
1431 pStrNameU = &NameInfo->
Name;
1443 else if (DesktopObject !=
NULL)
1458 if (WinStaObject !=
NULL)
1461 pStrNameU = &ObjectHeader->
Type->
Name;
1465 else if (DesktopObject !=
NULL)
1468 pStrNameU = &ObjectHeader->
Type->
Name;
1481 ERR(
"UOI_USER_SID unimplemented!\n");
1496 *nLengthNeeded = nDataSize;
1501 TRACE(
"Trying to copy data to caller (len = %lu, len needed = %lu)\n",
nLength, nDataSize);
1527 if (DesktopObject !=
NULL)
1529 if (WinStaObject !=
NULL)
1575 PVOID pvInformation,
1620 HWINSTA hCacheWinSta;
1625 if (hWindowStation !=
NULL)
1634 TRACE(
"Validation of window station handle 0x%p failed\n", hWindowStation);
1644 if (OldWinSta !=
NULL)
1654 if (hCacheWinSta !=
NULL)
1665 ERR(
"Failed to reference the inherited window station, Status 0x%08lx\n",
Status);
1667 hCacheWinSta =
NULL;
1676 if (NewWinSta != OldWinSta)
1679 hCacheWinSta =
NULL;
1689 if ((hCacheWinSta ==
NULL) && (hWindowStation !=
NULL))
1700 ERR(
"UserSetProcessWindowStation: Failed to duplicate the window station handle, Status 0x%08lx\n",
Status);
1709 ppi->
hwinsta = hWindowStation;
1719 ppi->W32PF_flags &= ~W32PF_READSCREENACCESSGRANTED;
1728 ppi->W32PF_flags &= ~W32PF_IOWINSTA;
1776 TRACE(
"About to set process window station with handle (%p)\n",
1781 ERR(
"Unauthorized process attempted to lock the window station!\n");
1793 TRACE(
"Validation of window station handle (%p) failed\n",
1820 TRACE(
"About to set process window station with handle (%p)\n",
1825 ERR(
"Unauthorized process attempted to unlock the window station!\n");
1837 TRACE(
"Validation of window station handle (%p) failed\n",
1844 Object->Flags &= ~WSS_LOCKED;
1859 char InitialBuffer[256], *
Buffer;
1896 sizeof(InitialBuffer),
1918 ERR(
"ZwQueryDirectoryObject failed\n");
1961 if (
NULL != pRequiredSize)
1966 if (
Buffer != InitialBuffer)
1979 if (
Buffer != InitialBuffer)
1992 if (
Buffer != InitialBuffer)
2008 if (
Buffer != InitialBuffer)
2018 if (
Buffer != InitialBuffer)
2030 if (
Buffer != InitialBuffer)
2040 HWINSTA hWindowStation,
2071 DesktopEntry = DesktopEntry->
Flink)
2079 if (
NULL != pRequiredSize)
2112 DesktopEntry = DesktopEntry->
Flink)
2166 HWINSTA hWindowStation,
2230 IN HWINSTA hWindowStation,
2313 WindowStation->
luidUser = luidUser;
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG ReturnLength
static HANDLE DirectoryHandle
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
#define OBJ_NAME_PATH_SEPARATOR
#define DBG_DEFAULT_CHANNEL(ch)
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD IN DWORD Unknown6
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
BOOL UserCreateSystemThread(DWORD Type)
#define STATUS_INVALID_HANDLE
#define STATUS_NOT_IMPLEMENTED
#define STATUS_OBJECT_TYPE_MISMATCH
BOOL NTAPI GreSetDCOwner(HDC hdc, ULONG ulOwner)
HDC FASTCALL IntGdiCreateDC(PUNICODE_STRING Driver, PUNICODE_STRING pustrDevice, PVOID pUMdhpdev, CONST PDEVMODEW pdmInit, BOOL CreateAsIC)
#define NT_SUCCESS(StatCode)
#define RTL_CONSTANT_STRING(s)
#define ERROR_ACCESS_DENIED
_ACRTIMP int __cdecl _scwprintf(const wchar_t *,...)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeSetEvent(pEvt, foo, foo2)
#define InitializeListHead(ListHead)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
struct _PROCESSINFO * GetW32ProcessInfo(VOID)
#define PUSIF_PALETTEDISPLAY
#define EXCEPTION_EXECUTE_HANDLER
#define MmCopyToCaller(x, y, z)
#define ExFreePoolWithTag(_P, _T)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwOpenDirectoryObject(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject(_Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
#define OBJECT_HEADER_TO_NAME_INFO(h)
#define OBJECT_TO_OBJECT_HEADER(o)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL Dacl
NTSYSAPI NTSTATUS NTAPI RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable)
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
NTSYSAPI NTSTATUS NTAPI RtlCreateAtomTable(_In_ ULONG TableSize, _Inout_ PRTL_ATOM_TABLE *AtomTable)
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Revision)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG DaclSize
NTSYSAPI BOOLEAN NTAPI RtlAreAllAccessesGranted(ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess)
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
#define DIRECTORY_CREATE_OBJECT
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define GDI_OBJ_HMGR_POWNED
#define GDI_OBJ_HMGR_PUBLIC
NTSYSAPI NTSTATUS NTAPI RtlSetGroupSecurityDescriptor(IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN PSID Group, IN BOOLEAN GroupDefaulted)
NTSYSAPI NTSTATUS NTAPI RtlSetSaclSecurityDescriptor(IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN BOOLEAN SaclPresent, IN PACL Sacl, IN BOOLEAN SaclDefaulted)
POBJECT_TYPE ExEventObjectType
_Out_ PKAPC_STATE ApcState
VOID NTAPI PsSetProcessWindowStation(PEPROCESS Process, PVOID WindowStation)
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
HANDLE NTAPI PsGetCurrentProcessId(VOID)
PVOID NTAPI PsGetProcessWin32WindowStation(PEPROCESS Process)
ULONG NTAPI PsGetCurrentProcessSessionId(VOID)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
#define STATUS_INTERNAL_ERROR
#define STATUS_NO_MORE_ENTRIES
#define STATUS_OBJECT_PATH_INVALID
#define STATUS_NAME_TOO_LONG
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
NTSTATUS NTAPI IntWinStaObjectDelete(_In_ PVOID Parameters)
BOOL APIENTRY NtUserLockWorkStation(VOID)
PWINSTATION_OBJECT InputWindowStation
VOID FASTCALL IntEndDesktopGraphics(VOID)
static VOID FreeUserModeWindowStationName(IN OUT PUNICODE_STRING WindowStationName, IN PUNICODE_STRING TebStaticUnicodeString, IN OUT POBJECT_ATTRIBUTES UserModeObjectAttributes OPTIONAL, IN POBJECT_ATTRIBUTES LocalObjectAttributes OPTIONAL)
NTSTATUS NTAPI IntWinStaOkToClose(_In_ PVOID Parameters)
UNICODE_STRING gustrWindowStationsDir
BOOL APIENTRY NtUserSetProcessWindowStation(HWINSTA hWindowStation)
NTSTATUS APIENTRY NtUserBuildNameList(HWINSTA hWindowStation, ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
NTSTATUS NTAPI InitWindowStationImpl(VOID)
BOOL FASTCALL CheckWinstaAttributeAccess(ACCESS_MASK DesiredAccess)
PWINSTATION_OBJECT FASTCALL IntGetProcessWindowStation(HWINSTA *phWinSta OPTIONAL)
BOOL APIENTRY NtUserSetLogonNotifyWindow(HWND hWnd)
static NTSTATUS FASTCALL BuildWindowStationNameList(ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
BOOL APIENTRY NtUserCloseWindowStation(HWINSTA hWinSta)
HWINSTA APIENTRY NtUserCreateWindowStation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK dwDesiredAccess, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5, DWORD Unknown6)
BOOL APIENTRY NtUserSetObjectInformation(HANDLE hObject, DWORD nIndex, PVOID pvInformation, DWORD nLength)
BOOL NTAPI NtUserSetWindowStationUser(IN HWINSTA hWindowStation, IN PLUID pluid, IN PSID psid OPTIONAL, IN DWORD size)
BOOL APIENTRY NtUserLockWindowStation(HWINSTA hWindowStation)
static NTSTATUS FASTCALL BuildDesktopNameList(HWINSTA hWindowStation, ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
static NTSTATUS BuildUserModeWindowStationName(IN OUT POBJECT_ATTRIBUTES UserModeObjectAttributes, IN OUT POBJECT_ATTRIBUTES LocalObjectAttributes, OUT PUNICODE_STRING *WindowStationName, OUT PUNICODE_STRING *TebStaticUnicodeString)
BOOL APIENTRY NtUserUnlockWindowStation(HWINSTA hWindowStation)
HWINSTA APIENTRY NtUserOpenWindowStation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK dwDesiredAccess)
HWINSTA FASTCALL UserGetProcessWindowStation(VOID)
HWINSTA APIENTRY NtUserGetProcessWindowStation(VOID)
NTSTATUS FASTCALL IntCreateWindowStation(OUT HWINSTA *phWinSta, IN POBJECT_ATTRIBUTES ObjectAttributes, IN KPROCESSOR_MODE AccessMode, IN KPROCESSOR_MODE OwnerMode, IN ACCESS_MASK dwDesiredAccess, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5, DWORD Unknown6)
BOOL FASTCALL co_IntInitializeDesktopGraphics(VOID)
NTSTATUS FASTCALL IntValidateWindowStationHandle(HWINSTA WindowStation, KPROCESSOR_MODE AccessMode, ACCESS_MASK DesiredAccess, PWINSTATION_OBJECT *Object, POBJECT_HANDLE_INFORMATION pObjectHandleInfo)
HDC FASTCALL IntGetScreenDC(VOID)
BOOL APIENTRY NtUserGetObjectInformation(HANDLE hObject, DWORD nIndex, PVOID pvInformation, DWORD nLength, PDWORD nLengthNeeded)
static NTSTATUS IntCreateDesktopSwitchEvent(VOID)
Creates the global per-session \BaseNamedObjects\WinSta0_DesktopSwitch event.
NTSTATUS NTAPI UserCreateWinstaDirectory(VOID)
NTSTATUS NTAPI IntWinStaObjectParse(_In_ PVOID Parameters)
BOOL FASTCALL UserSetProcessWindowStation(HWINSTA hWindowStation)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
NTSTATUS NTAPI ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN PACCESS_STATE PassedAccessState, IN ACCESS_MASK DesiredAccess, IN OUT PVOID ParseContext, OUT PHANDLE Handle)
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
LONG PDEVOBJ_lChangeDisplaySettings(_In_opt_ PUNICODE_STRING pustrDeviceName, _In_opt_ PDEVMODEW RequestedMode, _In_opt_ PMDEVOBJ pmdevOld, _Out_ PMDEVOBJ *ppmdevNew, _In_ BOOL bSearchClosestMode)
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
__kernel_entry W32KAPI HDC APIENTRY NtGdiCreateCompatibleDC(_In_opt_ HDC hdc)
__kernel_entry W32KAPI INT APIENTRY NtGdiGetDeviceCaps(_In_ HDC hdc, _In_ INT i)
__kernel_entry W32KAPI HANDLE APIENTRY NtGdiGetStockObject(_In_ INT iObject)
__kernel_entry W32KAPI HFONT APIENTRY NtGdiSelectFont(_In_ HDC hdc, _In_ HFONT hf)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define STATUS_BUFFER_TOO_SMALL
PULONG MinorVersion OPTIONAL
WCHAR szWinDeviceName[CCHDEVICENAME/2]
struct _LIST_ENTRY * Flink
PUNICODE_STRING ObjectName
GENERIC_MAPPING GenericMapping
ULONG DefaultNonPagedPoolCharge
OBJECT_TYPE_INITIALIZER TypeInfo
struct _WINSTATION_OBJECT * prpwinsta
WCHAR StaticUnicodeBuffer[261]
UNICODE_STRING StaticUnicodeString
PACCESS_STATE AccessState
PUNICODE_STRING RemainingName
_Out_ PUNICODE_STRING CompleteName
PSECURITY_QUALITY_OF_SERVICE SecurityQos
KPROCESSOR_MODE AccessMode
PRTL_ATOM_TABLE AtomTable
LIST_ENTRY DesktopListHead
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_INSUFFICIENT_RESOURCES
#define ALIGN_UP(size, type)
#define LN_LOCK_WORKSTATION
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
#define W32PF_READSCREENACCESSGRANTED
POBJECT_TYPE ExDesktopObjectType
POBJECT_TYPE ExWindowStationObjectType
PGRAPHICS_DEVICE NTAPI EngpFindGraphicsDevice(_In_opt_ PUNICODE_STRING pustrDevice, _In_ ULONG iDevNum)
NTSTATUS EngpUpdateGraphicsDeviceList(VOID)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
BOOL FASTCALL IntCreatePrimarySurface(VOID)
VOID FASTCALL IntDestroyPrimarySurface(VOID)
DWORD FASTCALL IntGetCharDimensions(_In_ HDC hdc, _Out_opt_ PTEXTMETRICW ptm, _Out_opt_ PDWORD height)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
BOOL APIENTRY co_IntLoadDefaultCursors(VOID)
BOOL FASTCALL co_IntSetWndIcons(VOID)
VOID NTAPI UserEmptyClipboardData(PWINSTATION_OBJECT pWinSta)
#define ST_DESKTOP_THREAD
BOOL InitCursorImpl(VOID)
PDESKTOP FASTCALL IntGetActiveDesktop(VOID)
PKEVENT gpDesktopSwitchEvent
WinSta0_DesktopSwitch legacy (NT 3.5+) event.
PKEVENT gpDesktopThreadStartedEvent
NTSTATUS FASTCALL IntHideDesktop(PDESKTOP Desktop)
NTSTATUS FASTCALL co_IntShowDesktop(PDESKTOP Desktop, ULONG Width, ULONG Height, BOOL bRedraw)
NTSTATUS FASTCALL IntValidateDesktopHandle(HDESK Desktop, KPROCESSOR_MODE AccessMode, ACCESS_MASK DesiredAccess, PDESKTOP *Object)
NTSTATUS APIENTRY IntDesktopObjectParse(IN PVOID ParseObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING CompleteName, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *Object)
BOOL FASTCALL IntPaintDesktop(HDC hDC)
HANDLE ghDesktopSwitchEvent
WinSta0_DesktopSwitch handle in the CSRSS process.
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL NTAPI InitMetrics(VOID)
NTSTATUS GetProcessLuid(IN PETHREAD Thread OPTIONAL, IN PEPROCESS Process OPTIONAL, OUT PLUID Luid)
NTSTATUS NTAPI UserAttachMonitor(IN HDEV hDev)
NTSTATUS NTAPI UserUpdateMonitorSize(IN HDEV hDev)
PVOID FASTCALL UserAssignmentUnlock(PVOID *ppvObj)
#define WINSTA_ACCESS_ALL
BOOL FASTCALL IntIsWindow(HWND hWnd)
struct _WINSTATION_OBJECT WINSTATION_OBJECT
struct _WINSTATION_OBJECT * PWINSTATION_OBJECT
WINBASEAPI _In_ DWORD nLength
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR, PSID, BOOLEAN)
NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR, BOOLEAN, PACL, BOOLEAN)
#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
#define DISP_CHANGE_SUCCESSFUL
#define WINSTA_READSCREEN
_Out_ PHANDLE EventHandle
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
#define ObDereferenceObject
#define ObReferenceObject
#define DUPLICATE_SAME_ACCESS
#define SECURITY_DESCRIPTOR_REVISION
#define ZwCurrentProcess()