71 sizeof(wstrWindowStationsDir),
112 TRACE(
"Deleting window station 0x%p\n", WinSta);
116 ERR(
"WARNING: Deleting the interactive window station '%wZ'!\n",
233 HWINSTA WindowStation,
241 if (WindowStation ==
NULL)
243 ERR(
"Invalid window station handle\n");
270 ERR(
"PDEVOBJ_lChangeDisplaySettings() failed.\n");
311 gpsi->PUSIFlags &= ~PUSIF_PALETTEDISPLAY;
315 gpsi->tmSysFont = tmw;
384 ERR(
"Requires Interactive Window Station\n");
390 ERR(
"Access Denied\n");
404 HWINSTA hWinSta = ppi->
hwinsta;
448 OUT HWINSTA* phWinSta,
463 TRACE(
"IntCreateWindowStation called\n");
477 TRACE(
"IntCreateWindowStation opened window station '%wZ'\n",
496 (
PVOID*)&WindowStation);
499 ERR(
"ObCreateObject failed for window station '%wZ', Status 0x%08lx\n",
513 ERR(
"RtlCreateAtomTable failed for window station '%wZ', Status 0x%08lx\n",
528 ERR(
"ObInsertObject failed for window station, Status 0x%08lx\n",
Status);
537 ERR(
"Initializing input window station\n");
543 WindowStation->
Flags &= ~WSS_NOIO;
564 TRACE(
"IntCreateWindowStation created window station '%wZ' object 0x%p handle 0x%p\n",
583 if (UserModeObjectAttributes && LocalObjectAttributes)
588 *UserModeObjectAttributes = *LocalObjectAttributes;
598 if (WindowStationName && (WindowStationName != TebStaticUnicodeString))
601 (
PVOID*)&WindowStationName,
621 *WindowStationName =
NULL;
622 *TebStaticUnicodeString =
NULL;
628 ERR(
"Failed to retrieve the caller LUID, Status 0x%08lx\n",
Status);
640 ERR(
"Window station name length is too long.\n");
643 StrSize = (
USHORT)MemSize;
659 *WindowStationName = *TebStaticUnicodeString;
660 (*WindowStationName)->
Length = 0;
669 (
PVOID*)WindowStationName,
676 ERR(
"ZwAllocateVirtualMemory() failed, Status 0x%08lx\n",
Status);
680 RtlInitEmptyUnicodeString(*WindowStationName,
688 (*WindowStationName)->MaximumLength,
689 L"%wZ\\Service-0x%x-%x$",
695 ERR(
"Impossible to build a valid window station name, Status 0x%08lx\n",
Status);
698 (*WindowStationName)->Length = (
USHORT)(
wcslen((*WindowStationName)->Buffer) *
sizeof(
WCHAR));
704 *LocalObjectAttributes = *UserModeObjectAttributes;
706 UserModeObjectAttributes->ObjectName = *WindowStationName;
707 UserModeObjectAttributes->RootDirectory =
NULL;
722 *TebStaticUnicodeString,
741 HWINSTA hWinSta =
NULL;
747 TRACE(
"NtUserCreateWindowStation called\n");
756 ERR(
"Invalid ObjectAttributes length!\n");
780 &LocalObjectAttributes,
782 &TebStaticUnicodeString);
785 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
794 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
821 TRACE(
"NtUserCreateWindowStation created window station '%wZ' with handle 0x%p\n",
827 ERR(
"NtUserCreateWindowStation failed to create window station '%wZ', Status 0x%08lx\n",
833 TebStaticUnicodeString,
835 &LocalObjectAttributes);
877 HWINSTA hWinSta =
NULL;
883 TRACE(
"NtUserOpenWindowStation called\n");
892 ERR(
"Invalid ObjectAttributes length!\n");
917 sizeof(
L"Service-0x00000000-00000000$") -
sizeof(
UNICODE_NULL) &&
919 L"Service-0x00000000-00000000$",
937 &LocalObjectAttributes,
939 &TebStaticUnicodeString);
942 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
951 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
971 TRACE(
"NtUserOpenWindowStation opened window station '%wZ' with handle 0x%p\n",
977 ERR(
"NtUserOpenWindowStation failed to open window station '%wZ', Status 0x%08lx\n",
983 TebStaticUnicodeString,
985 &LocalObjectAttributes);
1025 TRACE(
"NtUserCloseWindowStation called (%p)\n", hWinSta);
1029 ERR(
"Attempted to close process window station\n");
1040 ERR(
"Validation of window station handle (%p) failed\n", hWinSta);
1046 TRACE(
"Closing window station handle (%p)\n", hWinSta);
1102 PVOID pvInformation,
1131 TRACE(
"Trying to open window station 0x%p\n", hObject);
1136 (
PVOID*)&WinStaObject,
1142 TRACE(
"Trying to open desktop %p\n", hObject);
1143 WinStaObject =
NULL;
1156 TRACE(
"WinSta or Desktop opened!\n");
1167 if (WinStaObject !=
NULL)
1172 else if (DesktopObject !=
NULL)
1174 FIXME(
"Setting DF_ALLOWOTHERACCOUNTHOOK is unimplemented.\n");
1178 ERR(
"No associated WinStaObject nor DesktopObject!\n");
1182 nDataSize =
sizeof(ObjectFlags);
1189 if (WinStaObject !=
NULL)
1197 pStrNameU = &NameInfo->
Name;
1209 else if (DesktopObject !=
NULL)
1224 if (WinStaObject !=
NULL)
1227 pStrNameU = &ObjectHeader->
Type->
Name;
1231 else if (DesktopObject !=
NULL)
1234 pStrNameU = &ObjectHeader->
Type->
Name;
1247 ERR(
"UOI_USER_SID unimplemented!\n");
1262 *nLengthNeeded = nDataSize;
1267 TRACE(
"Trying to copy data to caller (len = %lu, len needed = %lu)\n",
nLength, nDataSize);
1293 if (DesktopObject !=
NULL)
1295 if (WinStaObject !=
NULL)
1342 PVOID pvInformation,
1388 HWINSTA hCacheWinSta;
1393 if (hWindowStation !=
NULL)
1402 TRACE(
"Validation of window station handle 0x%p failed\n", hWindowStation);
1412 if (OldWinSta !=
NULL)
1422 if (hCacheWinSta !=
NULL)
1433 ERR(
"Failed to reference the inherited window station, Status 0x%08lx\n",
Status);
1435 hCacheWinSta =
NULL;
1444 if (NewWinSta != OldWinSta)
1447 hCacheWinSta =
NULL;
1457 if ((hCacheWinSta ==
NULL) && (hWindowStation !=
NULL))
1468 ERR(
"UserSetProcessWindowStation: Failed to duplicate the window station handle, Status 0x%08lx\n",
Status);
1477 ppi->
hwinsta = hWindowStation;
1487 ppi->W32PF_flags &= ~W32PF_READSCREENACCESSGRANTED;
1496 ppi->W32PF_flags &= ~W32PF_IOWINSTA;
1546 TRACE(
"About to set process window station with handle (%p)\n",
1551 ERR(
"Unauthorized process attempted to lock the window station!\n");
1563 TRACE(
"Validation of window station handle (%p) failed\n",
1591 TRACE(
"About to set process window station with handle (%p)\n",
1596 ERR(
"Unauthorized process attempted to unlock the window station!\n");
1608 TRACE(
"Validation of window station handle (%p) failed\n",
1615 Object->Flags &= ~WSS_LOCKED;
1630 char InitialBuffer[256], *
Buffer;
1667 sizeof(InitialBuffer),
1689 ERR(
"ZwQueryDirectoryObject failed\n");
1732 if (
NULL != pRequiredSize)
1737 if (
Buffer != InitialBuffer)
1750 if (
Buffer != InitialBuffer)
1763 if (
Buffer != InitialBuffer)
1779 if (
Buffer != InitialBuffer)
1789 if (
Buffer != InitialBuffer)
1801 if (
Buffer != InitialBuffer)
1811 HWINSTA hWindowStation,
1842 DesktopEntry = DesktopEntry->
Flink)
1850 if (
NULL != pRequiredSize)
1883 DesktopEntry = DesktopEntry->
Flink)
1938 HWINSTA hWindowStation,
1996 IN HWINSTA hWindowStation,
2079 WindowStation->
luidUser = luidUser;
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)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
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 ERROR_INVALID_HANDLE
#define ERROR_ACCESS_DENIED
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#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)
#define EXCEPTION_EXECUTE_HANDLER
_Check_return_ _CRTIMP int __cdecl _scwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format,...)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
struct _PROCESSINFO * GetW32ProcessInfo(VOID)
#define PUSIF_PALETTEDISPLAY
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#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)
NTSYSAPI NTSTATUS NTAPI RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable)
NTSYSAPI NTSTATUS NTAPI RtlCreateAtomTable(_In_ ULONG TableSize, _Inout_ PRTL_ATOM_TABLE *AtomTable)
NTSYSAPI BOOLEAN NTAPI RtlAreAllAccessesGranted(ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess)
#define DIRECTORY_CREATE_OBJECT
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
__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 GDI_OBJ_HMGR_POWNED
#define GDI_OBJ_HMGR_PUBLIC
VOID NTAPI PsSetProcessWindowStation(PEPROCESS Process, PVOID WindowStation)
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
HANDLE NTAPI PsGetCurrentProcessId(VOID)
PVOID NTAPI PsGetProcessWin32WindowStation(PEPROCESS Process)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
#define STATUS_INTERNAL_ERROR
#define STATUS_INVALID_HANDLE
#define STATUS_NO_MORE_ENTRIES
#define STATUS_NOT_IMPLEMENTED
#define STATUS_OBJECT_PATH_INVALID
#define STATUS_NAME_TOO_LONG
#define STATUS_OBJECT_TYPE_MISMATCH
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)
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)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#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 RTL_CONSTANT_STRING(s)
#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_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)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
BOOL FASTCALL IntCreatePrimarySurface(VOID)
VOID FASTCALL IntDestroyPrimarySurface(VOID)
DWORD FASTCALL IntGetCharDimensions(HDC hdc, PTEXTMETRICW ptm, 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 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)
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
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
_In_ ULONG _In_opt_ PVOID pvData
#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
#define DISP_CHANGE_SUCCESSFUL
#define WINSTA_READSCREEN
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
#define ObDereferenceObject
#define ObReferenceObject
#define DUPLICATE_SAME_ACCESS
#define ZwCurrentProcess()