71 sizeof(wstrWindowStationsDir),
112 TRACE(
"Deleting window station 0x%p\n", WinSta);
116 ERR(
"WARNING: Deleting the interactive window station '%wZ'!\n",
231 HWINSTA WindowStation,
239 if (WindowStation ==
NULL)
241 ERR(
"Invalid window station handle\n");
307 gpsi->tmSysFont = tmw;
360 ERR(
"Requires Interactive Window Station\n");
366 ERR(
"Access Denied\n");
412 OUT HWINSTA* phWinSta,
427 TRACE(
"IntCreateWindowStation called\n");
441 TRACE(
"IntCreateWindowStation opened window station '%wZ'\n",
460 (
PVOID*)&WindowStation);
463 ERR(
"ObCreateObject failed for window station '%wZ', Status 0x%08lx\n",
477 ERR(
"RtlCreateAtomTable failed for window station '%wZ', Status 0x%08lx\n",
492 ERR(
"ObInsertObject failed for window station, Status 0x%08lx\n",
Status);
501 ERR(
"Initializing input window station\n");
528 TRACE(
"IntCreateWindowStation created window station '%wZ' object 0x%p handle 0x%p\n",
547 if (UserModeObjectAttributes && LocalObjectAttributes)
552 *UserModeObjectAttributes = *LocalObjectAttributes;
562 if (WindowStationName && (WindowStationName != TebStaticUnicodeString))
565 (
PVOID*)&WindowStationName,
585 *WindowStationName =
NULL;
586 *TebStaticUnicodeString =
NULL;
592 ERR(
"Failed to retrieve the caller LUID, Status 0x%08lx\n",
Status);
604 ERR(
"Window station name length is too long.\n");
607 StrSize = (
USHORT)MemSize;
623 *WindowStationName = *TebStaticUnicodeString;
624 (*WindowStationName)->
Length = 0;
633 (
PVOID*)WindowStationName,
640 ERR(
"ZwAllocateVirtualMemory() failed, Status 0x%08lx\n",
Status);
644 RtlInitEmptyUnicodeString(*WindowStationName,
652 (*WindowStationName)->MaximumLength,
653 L"%wZ\\Service-0x%x-%x$",
659 ERR(
"Impossible to build a valid window station name, Status 0x%08lx\n",
Status);
662 (*WindowStationName)->Length = (
USHORT)(
wcslen((*WindowStationName)->Buffer) *
sizeof(
WCHAR));
668 *LocalObjectAttributes = *UserModeObjectAttributes;
670 UserModeObjectAttributes->ObjectName = *WindowStationName;
671 UserModeObjectAttributes->RootDirectory =
NULL;
686 *TebStaticUnicodeString,
705 HWINSTA hWinSta =
NULL;
711 TRACE(
"NtUserCreateWindowStation called\n");
720 ERR(
"Invalid ObjectAttributes length!\n");
744 &LocalObjectAttributes,
746 &TebStaticUnicodeString);
749 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
758 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
785 TRACE(
"NtUserCreateWindowStation created window station '%wZ' with handle 0x%p\n",
791 ERR(
"NtUserCreateWindowStation failed to create window station '%wZ', Status 0x%08lx\n",
797 TebStaticUnicodeString,
799 &LocalObjectAttributes);
841 HWINSTA hWinSta =
NULL;
847 TRACE(
"NtUserOpenWindowStation called\n");
856 ERR(
"Invalid ObjectAttributes length!\n");
881 sizeof(
L"Service-0x00000000-00000000$") -
sizeof(
UNICODE_NULL) &&
883 L"Service-0x00000000-00000000$",
901 &LocalObjectAttributes,
903 &TebStaticUnicodeString);
906 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
915 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
935 TRACE(
"NtUserOpenWindowStation opened window station '%wZ' with handle 0x%p\n",
941 ERR(
"NtUserOpenWindowStation failed to open window station '%wZ', Status 0x%08lx\n",
947 TebStaticUnicodeString,
949 &LocalObjectAttributes);
989 TRACE(
"NtUserCloseWindowStation called (%p)\n", hWinSta);
993 ERR(
"Attempted to close process window station\n");
1004 ERR(
"Validation of window station handle (%p) failed\n", hWinSta);
1010 TRACE(
"Closing window station handle (%p)\n", hWinSta);
1066 PVOID pvInformation,
1095 TRACE(
"Trying to open window station 0x%p\n", hObject);
1100 (
PVOID*)&WinStaObject,
1106 TRACE(
"Trying to open desktop %p\n", hObject);
1107 WinStaObject =
NULL;
1120 TRACE(
"WinSta or Desktop opened!\n");
1131 if (WinStaObject !=
NULL)
1133 if (!(WinStaObject->Flags &
WSS_NOIO))
1136 else if (DesktopObject !=
NULL)
1138 FIXME(
"Setting DF_ALLOWOTHERACCOUNTHOOK is unimplemented.\n");
1142 ERR(
"No associated WinStaObject nor DesktopObject!\n");
1146 nDataSize =
sizeof(ObjectFlags);
1153 if (WinStaObject !=
NULL)
1161 pStrNameU = &NameInfo->
Name;
1173 else if (DesktopObject !=
NULL)
1188 if (WinStaObject !=
NULL)
1191 pStrNameU = &ObjectHeader->
Type->
Name;
1195 else if (DesktopObject !=
NULL)
1198 pStrNameU = &ObjectHeader->
Type->
Name;
1211 ERR(
"UOI_USER_SID unimplemented!\n");
1226 *nLengthNeeded = nDataSize;
1231 TRACE(
"Trying to copy data to caller (len = %lu, len needed = %lu)\n",
nLength, nDataSize);
1257 if (DesktopObject !=
NULL)
1259 if (WinStaObject !=
NULL)
1306 PVOID pvInformation,
1352 HWINSTA hCacheWinSta;
1357 if (hWindowStation !=
NULL)
1366 TRACE(
"Validation of window station handle 0x%p failed\n", hWindowStation);
1376 if (OldWinSta !=
NULL)
1386 if (hCacheWinSta !=
NULL)
1397 ERR(
"Failed to reference the inherited window station, Status 0x%08lx\n",
Status);
1399 hCacheWinSta =
NULL;
1408 if (NewWinSta != OldWinSta)
1411 hCacheWinSta =
NULL;
1421 if ((hCacheWinSta ==
NULL) && (hWindowStation !=
NULL))
1432 ERR(
"UserSetProcessWindowStation: Failed to duplicate the window station handle, Status 0x%08lx\n",
Status);
1441 ppi->
hwinsta = hWindowStation;
1510 TRACE(
"About to set process window station with handle (%p)\n",
1515 ERR(
"Unauthorized process attempted to lock the window station!\n");
1527 TRACE(
"Validation of window station handle (%p) failed\n",
1555 TRACE(
"About to set process window station with handle (%p)\n",
1560 ERR(
"Unauthorized process attempted to unlock the window station!\n");
1572 TRACE(
"Validation of window station handle (%p) failed\n",
1594 char InitialBuffer[256], *
Buffer;
1631 sizeof(InitialBuffer),
1653 ERR(
"ZwQueryDirectoryObject failed\n");
1696 if (
NULL != pRequiredSize)
1701 if (
Buffer != InitialBuffer)
1714 if (
Buffer != InitialBuffer)
1727 if (
Buffer != InitialBuffer)
1743 if (
Buffer != InitialBuffer)
1753 if (
Buffer != InitialBuffer)
1765 if (
Buffer != InitialBuffer)
1775 HWINSTA hWindowStation,
1806 DesktopEntry = DesktopEntry->
Flink)
1814 if (
NULL != pRequiredSize)
1847 DesktopEntry = DesktopEntry->
Flink)
1902 HWINSTA hWindowStation,
1960 IN HWINSTA hWindowStation,
2043 WindowStation->
luidUser = luidUser;
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)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
BOOL APIENTRY NtUserLockWindowStation(HWINSTA hWindowStation)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
WCHAR StaticUnicodeBuffer[261]
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
HWINSTA FASTCALL UserGetProcessWindowStation(VOID)
NTSTATUS APIENTRY NtUserBuildNameList(HWINSTA hWindowStation, ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
#define STATUS_INSUFFICIENT_RESOURCES
BOOL UserCreateSystemThread(DWORD Type)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
POBJECT_TYPE ExWindowStationObjectType
BOOL FASTCALL co_IntInitializeDesktopGraphics(VOID)
#define STATUS_NO_MORE_ENTRIES
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
#define ALIGN_UP(size, type)
NTSTATUS NTAPI UserUpdateMonitorSize(IN HDEV hDev)
#define OBJ_CASE_INSENSITIVE
BOOL APIENTRY NtUserLockWorkStation(VOID)
VOID NTAPI UserEmptyClipboardData(PWINSTATION_OBJECT pWinSta)
IN BOOLEAN OUT PSTR Buffer
#define STATUS_INVALID_PARAMETER
#define ZwCurrentProcess()
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
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)
#define DIRECTORY_CREATE_OBJECT
PACCESS_STATE AccessState
UNICODE_STRING gustrWindowStationsDir
PWINSTATION_OBJECT InputWindowStation
__kernel_entry W32KAPI HANDLE APIENTRY NtGdiGetStockObject(_In_ INT iObject)
HWINSTA APIENTRY NtUserCreateWindowStation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK dwDesiredAccess, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5, DWORD Unknown6)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
#define ERROR_INVALID_HANDLE
_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)
HWINSTA APIENTRY NtUserOpenWindowStation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK dwDesiredAccess)
static HANDLE DirectoryHandle
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD IN DWORD Unknown6
NTSYSAPI NTSTATUS NTAPI ZwOpenDirectoryObject(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
#define OBJECT_HEADER_TO_NAME_INFO(h)
POBJECT_TYPE ExDesktopObjectType
BOOL APIENTRY NtUserSetLogonNotifyWindow(HWND hWnd)
#define MmCopyToCaller(x, y, z)
KPROCESSOR_MODE AccessMode
LIST_ENTRY DesktopListHead
NTSYSAPI NTSTATUS NTAPI RtlCreateAtomTable(_In_ ULONG TableSize, _Inout_ PRTL_ATOM_TABLE *AtomTable)
#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
struct _WINSTATION_OBJECT * prpwinsta
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
#define OBJ_KERNEL_HANDLE
DBG_DEFAULT_CHANNEL(UserWinsta)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define STATUS_INVALID_HANDLE
NTSTATUS NTAPI UserAttachMonitor(IN HDEV hDev)
#define STATUS_BUFFER_TOO_SMALL
#define OBJECT_TO_OBJECT_HEADER(o)
#define STATUS_INTERNAL_ERROR
NTSTATUS NTAPI IntWinStaObjectParse(_In_ PVOID Parameters)
UNICODE_STRING StaticUnicodeString
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)
return STATUS_NOT_IMPLEMENTED
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)
#define DUPLICATE_SAME_ACCESS
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define ERROR_ACCESS_DENIED
BOOL FASTCALL co_IntSetWndIcons(VOID)
#define OBJ_NAME_PATH_SEPARATOR
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
NTSTATUS NTAPI UserCreateWinstaDirectory(VOID)
BOOL InitCursorImpl(VOID)
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
DWORD FASTCALL IntGetCharDimensions(HDC hdc, PTEXTMETRICW ptm, PDWORD height)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
NTSTATUS NTAPI IntWinStaObjectDelete(_In_ PVOID Parameters)
#define EXCEPTION_EXECUTE_HANDLER
BOOL APIENTRY NtUserSetObjectInformation(HANDLE hObject, DWORD nIndex, PVOID pvInformation, DWORD nLength)
NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject(_Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
_In_ ULONG _In_opt_ PVOID pvData
HDC FASTCALL IntGetScreenDC(VOID)
static NTSTATUS FASTCALL BuildDesktopNameList(HWINSTA hWindowStation, ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
NTSTATUS FASTCALL IntValidateWindowStationHandle(HWINSTA WindowStation, KPROCESSOR_MODE AccessMode, ACCESS_MASK DesiredAccess, PWINSTATION_OBJECT *Object, POBJECT_HANDLE_INFORMATION pObjectHandleInfo)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define STATUS_NAME_TOO_LONG
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)
#define LN_LOCK_WORKSTATION
VOID FASTCALL UserEnterExclusive(VOID)
__kernel_entry W32KAPI HFONT APIENTRY NtGdiSelectFont(_In_ HDC hdc, _In_ HFONT hf)
struct _LIST_ENTRY * Flink
#define STATUS_OBJECT_TYPE_MISMATCH
BOOL APIENTRY NtUserUnlockWindowStation(HWINSTA hWindowStation)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
#define _SEH2_YIELD(STMT_)
BOOL FASTCALL CheckWinstaAttributeAccess(ACCESS_MASK DesiredAccess)
#define NT_SUCCESS(StatCode)
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
BOOL APIENTRY NtUserCloseWindowStation(HWINSTA hWinSta)
PKEVENT gpDesktopThreadStartedEvent
BOOL NTAPI InitMetrics(VOID)
#define ObDereferenceObject
VOID NTAPI PsSetProcessWindowStation(PEPROCESS Process, PVOID WindowStation)
BOOL APIENTRY co_IntLoadDefaultCursors(VOID)
#define STATUS_ACCESS_DENIED
struct _WINSTATION_OBJECT * PWINSTATION_OBJECT
BOOL FASTCALL IntIsWindow(HWND hWnd)
BOOL FASTCALL IntCreatePrimarySurface(VOID)
struct _WINSTATION_OBJECT WINSTATION_OBJECT
#define STATUS_UNSUCCESSFUL
NTSTATUS NTAPI InitWindowStationImpl(VOID)
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID FASTCALL IntEndDesktopGraphics(VOID)
NTSTATUS NTAPI ObCloseHandle(IN HANDLE Handle, IN KPROCESSOR_MODE AccessMode)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
BOOL FASTCALL UserSetProcessWindowStation(HWINSTA hWindowStation)
PSECURITY_QUALITY_OF_SERVICE SecurityQos
BOOL NTAPI NtUserSetWindowStationUser(IN HWINSTA hWindowStation, IN PLUID pluid, IN PSID psid OPTIONAL, IN DWORD size)
NTSTATUS NTAPI IntWinStaOkToClose(_In_ PVOID Parameters)
static NTSTATUS FASTCALL BuildWindowStationNameList(ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
#define GDI_OBJ_HMGR_POWNED
NTSTATUS FASTCALL co_IntShowDesktop(PDESKTOP Desktop, ULONG Width, ULONG Height, BOOL bRedraw)
PVOID NTAPI PsGetProcessWin32WindowStation(PEPROCESS Process)
OBJECT_TYPE_INITIALIZER TypeInfo
VOID FASTCALL SetLastNtError(NTSTATUS Status)
__kernel_entry W32KAPI HDC APIENTRY NtGdiCreateCompatibleDC(_In_opt_ HDC hdc)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
VOID FASTCALL UserLeave(VOID)
PRTL_ATOM_TABLE AtomTable
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)
GENERIC_MAPPING GenericMapping
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
#define WINSTA_ACCESS_ALL
NTSTATUS GetProcessLuid(IN PETHREAD Thread OPTIONAL, IN PEPROCESS Process OPTIONAL, OUT PLUID Luid)
#define InitializeListHead(ListHead)
HDC FASTCALL IntGdiCreateDC(PUNICODE_STRING Driver, PUNICODE_STRING pustrDevice, PVOID pUMdhpdev, CONST PDEVMODEW pdmInit, BOOL CreateAsIC)
#define W32PF_READSCREENACCESSGRANTED
BOOL NTAPI GreSetDCOwner(HDC hdc, ULONG ulOwner)
#define GDI_OBJ_HMGR_PUBLIC
NTSTATUS FASTCALL IntValidateDesktopHandle(HDESK Desktop, KPROCESSOR_MODE AccessMode, ACCESS_MASK DesiredAccess, PDESKTOP *Object)
static NTSTATUS BuildUserModeWindowStationName(IN OUT POBJECT_ATTRIBUTES UserModeObjectAttributes, IN OUT POBJECT_ATTRIBUTES LocalObjectAttributes, OUT PUNICODE_STRING *WindowStationName, OUT PUNICODE_STRING *TebStaticUnicodeString)
#define STATUS_OBJECT_PATH_INVALID
HANDLE NTAPI PsGetCurrentProcessId(VOID)
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
NTSYSAPI BOOLEAN NTAPI RtlAreAllAccessesGranted(ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess)
BOOL APIENTRY NtUserSetProcessWindowStation(HWINSTA hWindowStation)
HWINSTA APIENTRY NtUserGetProcessWindowStation(VOID)
BOOL APIENTRY NtUserGetObjectInformation(HANDLE hObject, DWORD nIndex, PVOID pvInformation, DWORD nLength, PDWORD nLengthNeeded)
static VOID FreeUserModeWindowStationName(IN OUT PUNICODE_STRING WindowStationName, IN PUNICODE_STRING TebStaticUnicodeString, IN OUT POBJECT_ATTRIBUTES UserModeObjectAttributes OPTIONAL, IN POBJECT_ATTRIBUTES LocalObjectAttributes OPTIONAL)
#define PUSIF_PALETTEDISPLAY
struct tagContext Context
#define ObReferenceObject
#define ST_DESKTOP_THREAD
PUNICODE_STRING ObjectName
NTSYSAPI NTSTATUS NTAPI RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
#define RtlCopyMemory(Destination, Source, Length)
_Check_return_ _CRTIMP int __cdecl _scwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format,...)
#define _SEH2_EXCEPT(...)
PDESKTOP FASTCALL IntGetActiveDesktop(VOID)
PUNICODE_STRING RemainingName
#define ExFreePoolWithTag(_P, _T)
__kernel_entry W32KAPI INT APIENTRY NtGdiGetDeviceCaps(_In_ HDC hdc, _In_ INT i)
#define _SEH2_GetExceptionCode()
VOID FASTCALL IntDestroyPrimarySurface(VOID)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
_Out_ PUNICODE_STRING CompleteName
#define WINSTA_READSCREEN
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
ULONG DefaultNonPagedPoolCharge
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
NTSTATUS FASTCALL IntHideDesktop(PDESKTOP Desktop)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL