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");
268 ERR(
"PDEVOBJ_lChangeDisplaySettings() failed.\n");
313 gpsi->tmSysFont = tmw;
382 ERR(
"Requires Interactive Window Station\n");
388 ERR(
"Access Denied\n");
434 OUT HWINSTA* phWinSta,
449 TRACE(
"IntCreateWindowStation called\n");
463 TRACE(
"IntCreateWindowStation opened window station '%wZ'\n",
482 (
PVOID*)&WindowStation);
485 ERR(
"ObCreateObject failed for window station '%wZ', Status 0x%08lx\n",
499 ERR(
"RtlCreateAtomTable failed for window station '%wZ', Status 0x%08lx\n",
514 ERR(
"ObInsertObject failed for window station, Status 0x%08lx\n",
Status);
523 ERR(
"Initializing input window station\n");
550 TRACE(
"IntCreateWindowStation created window station '%wZ' object 0x%p handle 0x%p\n",
569 if (UserModeObjectAttributes && LocalObjectAttributes)
574 *UserModeObjectAttributes = *LocalObjectAttributes;
584 if (WindowStationName && (WindowStationName != TebStaticUnicodeString))
587 (
PVOID*)&WindowStationName,
607 *WindowStationName =
NULL;
608 *TebStaticUnicodeString =
NULL;
614 ERR(
"Failed to retrieve the caller LUID, Status 0x%08lx\n",
Status);
626 ERR(
"Window station name length is too long.\n");
629 StrSize = (
USHORT)MemSize;
645 *WindowStationName = *TebStaticUnicodeString;
646 (*WindowStationName)->
Length = 0;
655 (
PVOID*)WindowStationName,
662 ERR(
"ZwAllocateVirtualMemory() failed, Status 0x%08lx\n",
Status);
666 RtlInitEmptyUnicodeString(*WindowStationName,
674 (*WindowStationName)->MaximumLength,
675 L"%wZ\\Service-0x%x-%x$",
681 ERR(
"Impossible to build a valid window station name, Status 0x%08lx\n",
Status);
684 (*WindowStationName)->Length = (
USHORT)(
wcslen((*WindowStationName)->Buffer) *
sizeof(
WCHAR));
690 *LocalObjectAttributes = *UserModeObjectAttributes;
692 UserModeObjectAttributes->ObjectName = *WindowStationName;
693 UserModeObjectAttributes->RootDirectory =
NULL;
708 *TebStaticUnicodeString,
727 HWINSTA hWinSta =
NULL;
733 TRACE(
"NtUserCreateWindowStation called\n");
742 ERR(
"Invalid ObjectAttributes length!\n");
766 &LocalObjectAttributes,
768 &TebStaticUnicodeString);
771 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
780 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
807 TRACE(
"NtUserCreateWindowStation created window station '%wZ' with handle 0x%p\n",
813 ERR(
"NtUserCreateWindowStation failed to create window station '%wZ', Status 0x%08lx\n",
819 TebStaticUnicodeString,
821 &LocalObjectAttributes);
863 HWINSTA hWinSta =
NULL;
869 TRACE(
"NtUserOpenWindowStation called\n");
878 ERR(
"Invalid ObjectAttributes length!\n");
903 sizeof(
L"Service-0x00000000-00000000$") -
sizeof(
UNICODE_NULL) &&
905 L"Service-0x00000000-00000000$",
923 &LocalObjectAttributes,
925 &TebStaticUnicodeString);
928 ERR(
"BuildUserModeWindowStationName() failed, Status 0x%08lx\n",
Status);
937 ERR(
"ObjectAttributes capture failed, Status 0x%08lx\n",
Status);
957 TRACE(
"NtUserOpenWindowStation opened window station '%wZ' with handle 0x%p\n",
963 ERR(
"NtUserOpenWindowStation failed to open window station '%wZ', Status 0x%08lx\n",
969 TebStaticUnicodeString,
971 &LocalObjectAttributes);
1011 TRACE(
"NtUserCloseWindowStation called (%p)\n", hWinSta);
1015 ERR(
"Attempted to close process window station\n");
1026 ERR(
"Validation of window station handle (%p) failed\n", hWinSta);
1032 TRACE(
"Closing window station handle (%p)\n", hWinSta);
1088 PVOID pvInformation,
1117 TRACE(
"Trying to open window station 0x%p\n", hObject);
1122 (
PVOID*)&WinStaObject,
1128 TRACE(
"Trying to open desktop %p\n", hObject);
1129 WinStaObject =
NULL;
1142 TRACE(
"WinSta or Desktop opened!\n");
1153 if (WinStaObject !=
NULL)
1155 if (!(WinStaObject->Flags &
WSS_NOIO))
1158 else if (DesktopObject !=
NULL)
1160 FIXME(
"Setting DF_ALLOWOTHERACCOUNTHOOK is unimplemented.\n");
1164 ERR(
"No associated WinStaObject nor DesktopObject!\n");
1168 nDataSize =
sizeof(ObjectFlags);
1175 if (WinStaObject !=
NULL)
1183 pStrNameU = &NameInfo->
Name;
1195 else if (DesktopObject !=
NULL)
1210 if (WinStaObject !=
NULL)
1213 pStrNameU = &ObjectHeader->
Type->
Name;
1217 else if (DesktopObject !=
NULL)
1220 pStrNameU = &ObjectHeader->
Type->
Name;
1233 ERR(
"UOI_USER_SID unimplemented!\n");
1248 *nLengthNeeded = nDataSize;
1253 TRACE(
"Trying to copy data to caller (len = %lu, len needed = %lu)\n",
nLength, nDataSize);
1279 if (DesktopObject !=
NULL)
1281 if (WinStaObject !=
NULL)
1328 PVOID pvInformation,
1374 HWINSTA hCacheWinSta;
1379 if (hWindowStation !=
NULL)
1388 TRACE(
"Validation of window station handle 0x%p failed\n", hWindowStation);
1398 if (OldWinSta !=
NULL)
1408 if (hCacheWinSta !=
NULL)
1419 ERR(
"Failed to reference the inherited window station, Status 0x%08lx\n",
Status);
1421 hCacheWinSta =
NULL;
1430 if (NewWinSta != OldWinSta)
1433 hCacheWinSta =
NULL;
1443 if ((hCacheWinSta ==
NULL) && (hWindowStation !=
NULL))
1454 ERR(
"UserSetProcessWindowStation: Failed to duplicate the window station handle, Status 0x%08lx\n",
Status);
1463 ppi->
hwinsta = hWindowStation;
1532 TRACE(
"About to set process window station with handle (%p)\n",
1537 ERR(
"Unauthorized process attempted to lock the window station!\n");
1549 TRACE(
"Validation of window station handle (%p) failed\n",
1577 TRACE(
"About to set process window station with handle (%p)\n",
1582 ERR(
"Unauthorized process attempted to unlock the window station!\n");
1594 TRACE(
"Validation of window station handle (%p) failed\n",
1616 char InitialBuffer[256], *
Buffer;
1653 sizeof(InitialBuffer),
1675 ERR(
"ZwQueryDirectoryObject failed\n");
1718 if (
NULL != pRequiredSize)
1723 if (
Buffer != InitialBuffer)
1736 if (
Buffer != InitialBuffer)
1749 if (
Buffer != InitialBuffer)
1765 if (
Buffer != InitialBuffer)
1775 if (
Buffer != InitialBuffer)
1787 if (
Buffer != InitialBuffer)
1797 HWINSTA hWindowStation,
1828 DesktopEntry = DesktopEntry->
Flink)
1836 if (
NULL != pRequiredSize)
1869 DesktopEntry = DesktopEntry->
Flink)
1924 HWINSTA hWindowStation,
1982 IN HWINSTA hWindowStation,
2065 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
WCHAR szWinDeviceName[CCHDEVICENAME/2]
#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)
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)
BOOL FASTCALL IntPaintDesktop(HDC hDC)
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)
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,...)
#define EXCEPTION_EXECUTE_HANDLER
BOOL APIENTRY NtUserCloseWindowStation(HWINSTA hWinSta)
PKEVENT gpDesktopThreadStartedEvent
BOOL NTAPI InitMetrics(VOID)
#define ObDereferenceObject
#define DISP_CHANGE_SUCCESSFUL
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
PGRAPHICS_DEVICE NTAPI EngpFindGraphicsDevice(_In_opt_ PUNICODE_STRING pustrDevice, _In_ ULONG iDevNum)
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)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
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
__kernel_entry W32KAPI INT APIENTRY NtGdiGetDeviceCaps(_In_ HDC hdc, _In_ INT i)
#define _SEH2_GetExceptionCode()
#define _SEH2_YIELD(__stmt)
VOID FASTCALL IntDestroyPrimarySurface(VOID)
LONG PDEVOBJ_lChangeDisplaySettings(_In_opt_ PUNICODE_STRING pustrDeviceName, _In_opt_ PDEVMODEW RequestedMode, _In_opt_ PMDEVOBJ pmdevOld, _Out_ PMDEVOBJ *ppmdevNew, _In_ BOOL bSearchClosestMode)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
_Out_ PUNICODE_STRING CompleteName
#define ExFreePoolWithTag(_P, _T)
#define WINSTA_READSCREEN
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