15 #define PM_BADMSGFLAGS ~((QS_RAWINPUT << 16)|PM_QS_SENDMESSAGE|PM_QS_PAINT|PM_QS_POSTMESSAGE|PM_QS_INPUT|PM_NOYIELD|PM_REMOVE) 35 #define SET(msg) (1 << ((msg) & 31)) 48 SET(WM_STYLECHANGING) |
SET(WM_STYLECHANGED),
107 #define MMS_SIZE_WPARAM -1 108 #define MMS_SIZE_WPARAMWCHAR -2 109 #define MMS_SIZE_LPARAMSZ -3 110 #define MMS_SIZE_SPECIAL -4 111 #define MMS_FLAG_READ 0x01 112 #define MMS_FLAG_WRITE 0x02 113 #define MMS_FLAG_READWRITE (MMS_FLAG_READ | MMS_FLAG_WRITE) 158 return MsgMemoryEntry;
188 TRACE(
"lParam is NULL!\n");
196 switch(MsgMemoryEntry->
Message)
258 if(MsgMemoryEntry ==
NULL)
return 0;
277 if (NonPagedPoolNeeded)
290 if (
NULL == PackedNcCalcsize)
292 ERR(
"Not enough memory to pack lParam\n");
298 *lParamPacked = (
LPARAM) PackedNcCalcsize;
315 if (
NULL == PackedCs)
317 ERR(
"Not enough memory to pack lParam\n");
321 CsData = (
PCHAR) (PackedCs + 1);
324 CsData += WindowName->
Length;
325 *((
WCHAR *) CsData) =
L'\0';
326 CsData +=
sizeof(
WCHAR);
330 *((
WCHAR *) CsData) =
L'A';
331 CsData +=
sizeof(
WCHAR);
333 CsData +=
sizeof(
ATOM);
338 *((
WCHAR *) CsData) =
L'S';
339 CsData +=
sizeof(
WCHAR);
341 CsData += ClassName->
Length;
342 *((
WCHAR *) CsData) =
L'\0';
343 CsData +=
sizeof(
WCHAR);
346 *lParamPacked = (
LPARAM) PackedCs;
364 ERR(
"No size for lParamPacked\n");
368 if (PackedData ==
NULL)
370 ERR(
"Not enough memory to pack lParam\n");
374 *lParamPacked = (
LPARAM)PackedData;
387 if (lParamPacked ==
lParam)
396 UnpackedWindowPos = UnpackedParams->
lppos;
398 UnpackedParams->
lppos = UnpackedWindowPos;
410 else if (NonPagedPoolUsed)
437 *KernelModeMsg = *UserModeMsg;
440 if (
NULL == MsgMemoryEntry)
453 if (
NULL == KernelMem)
455 ERR(
"Not enough memory to copy message to kernel mem\n");
458 KernelModeMsg->lParam = (
LPARAM) KernelMem;
463 TRACE(
"Copy Message %u from usermode buffer\n", KernelModeMsg->message);
467 ERR(
"Failed to copy message to kernel: invalid usermode lParam buffer\n");
480 KernelModeMsg->lParam = 0;
495 if (
NULL == MsgMemoryEntry)
512 ERR(
"Failed to copy message from kernel: invalid usermode lParam buffer\n");
548 TRACE(
"IdlePing ppi %p\n", ppi);
549 if ( ppi && ppi->InputIdleEvent )
551 TRACE(
"InputIdleEvent\n");
561 TRACE(
"IdlePong ppi %p\n", ppi);
562 if ( ppi && ppi->InputIdleEvent )
570 return msg < WM_USER || msg >= 0xc000;
627 ERR(
"UserHeapAlloc() failed!\n");
641 ERR(
"UserHeapAlloc() failed!\n");
648 *ppszClass = pszClass;
674 ERR(
"UserHeapAlloc() failed!\n");
688 ERR(
"UserHeapAlloc() failed!\n");
765 CWPR.
lResult = uResult ? (*uResult) : 0;
781 TRACE(
"Internal Event Msg 0x%x hWnd 0x%p\n",
msg, pWnd->
head.h);
790 if (!winpos)
return 0;
803 TRACE(
"WM_ASYNC_DESTROYWINDOW\n");
885 if (pTimer && pTimer->
pfn)
900 TRACE(
"Dispatch: Server Side Window Procedure\n");
981 ProcessMask =
HIWORD(RemoveMsg);
1006 if (Hit)
return FALSE;
1012 if (MsgFilterMin == 0 && MsgFilterMax == 0)
1096 if (Hit)
return FALSE;
1163 ERR(
"Exit co_IntWaitMessage on error!\n");
1209 if (MsgFilterMax < MsgFilterMin)
1217 RemoveMsg |= ((
GetWakeMask( MsgFilterMin, MsgFilterMax ))<< 16);
1244 TRACE(
"DDE Get return ERROR\n");
1264 if ( bGMSG || pMsg->message ==
WM_PAINT)
break;
1296 while( bGMSG && !Present );
1337 Window->head.pti == ptiCur )
1385 if (!pwnd)
continue;
1411 ERR(
"UserPostMessage: Invalid handle 0x%p Msg 0x%x!\n", Wnd,
Msg);
1419 ERR(
"Attempted to post message to window %p when the thread is in cleanup!\n", Wnd);
1425 ERR(
"Attempted to post message to window %p that is being destroyed!\n", Wnd);
1434 TRACE(
"Posting Exit DDE 0x%x\n",
Msg);
1472 INT lParamBufferSize;
1482 TRACE(
"SendMessageTimeoutSingle: Invalid handle 0x%p!\n",
hWnd);
1496 ERR(
"Sending Exit DDE 0x%x\n",
Msg);
1509 if (
Msg & 0x80000000)
1511 TRACE(
"SMTS: Internal Message!\n");
1513 if (uResult) *uResult =
Result;
1522 TRACE(
"SMT: Server Side Window Procedure\n");
1524 if (IoGetRemainingStackSize() <
PAGE_SIZE)
1526 ERR(
"Server Callback Exceeded Stack!\n");
1544 if (uResult) *uResult =
Result;
1550 if (
NULL == MsgMemoryEntry)
1552 lParamBufferSize = -1;
1558 if (!lParamBufferSize) lParamBufferSize = -1;
1563 ERR(
"Failed to pack message parameters\n");
1581 ERR(
"Failed to unpack message parameters\n");
1594 ERR(
"Attempted to send message to window %p that is being destroyed!\n",
hWnd);
1602 ERR(
"Window %p (%p) (pti %p) is hung!\n",
hWnd,
Window, ptiSendTo);
1619 (
uFlags & SMTO_NOTIMEOUTIFNOTHUNG) &&
1626 TRACE(
"Let's go Ghost!\n");
1687 if (
NULL == Children)
1695 if (!pwnd)
continue;
1743 INT lParamBufferSize;
1753 TRACE(
"SendMessageWithCallBack: Invalid handle 0x%p!\n",
hWnd);
1762 ERR(
"Attempted to send message to window %p that is being destroyed!\n",
hWnd);
1768 if (Win32Thread ==
NULL ||
1776 if (
Msg & 0x80000000 &&
1781 TRACE(
"SMWCB: Internal Message!\n");
1783 if (uResult) *uResult =
Result;
1789 if (
NULL == MsgMemoryEntry)
1791 lParamBufferSize = -1;
1796 if (!lParamBufferSize) lParamBufferSize = -1;
1801 ERR(
"Failed to pack message parameters\n");
1819 TRACE(
"SMWCB: Server Side Window Procedure\n");
1854 CompletionCallbackContext,
1863 ERR(
"Failed to unpack message parameters\n");
1870 ERR(
"MsqSendMessage(): Not enough memory to allocate a message\n");
1877 Message->Msg.lParam = lParamPacked;
1881 Message->ptiReceiver = ptiSendTo;
1883 Message->ptiCallBackSender = Win32Thread;
1885 Message->CompletionCallbackContext = CompletionCallbackContext;
1887 Message->HasPackedLParam = (lParamBufferSize > 0);
1891 if (
Msg & 0x80000000)
1927 TRACE(
"PostOrSendMessage: Invalid handle 0x%p!\n",
hWnd);
1960 MSG UserModeMsg, KernelModeMsg;
1976 ERR(
"co_IntDoSendMessage Window Exiting!\n");
1983 if (!
Window || ptiSendTo )
1985 UserModeMsg.hwnd =
hWnd;
1986 UserModeMsg.message =
Msg;
1987 UserModeMsg.wParam =
wParam;
1988 UserModeMsg.lParam =
lParam;
1994 return (dsm ? 0 : -1);
1999 KernelModeMsg.hwnd =
hWnd;
2000 KernelModeMsg.message =
Msg;
2001 KernelModeMsg.wParam =
wParam;
2002 KernelModeMsg.lParam =
lParam;
2008 KernelModeMsg.message,
2009 KernelModeMsg.wParam,
2010 KernelModeMsg.lParam );
2015 KernelModeMsg.message,
2016 KernelModeMsg.wParam,
2017 KernelModeMsg.lParam,
2023 if (!
Window || ptiSendTo )
2029 return(dsm ? 0 : -1);
2066 if (!pwnd)
continue;
2101 pti->
pcti->fsChangeBits &= ~Changes;
2113 pti->
pcti->dwcPumpHook++;
2126 if (pti->
pcti->dwcPumpHook <= 0)
2130 pti->
pcti->dwcPumpHook--;
2162 ULONG wDragWidth, wDragHeight;
2165 TRACE(
"Enter NtUserDragDetect(%p)\n",
hWnd);
2171 rect.left =
pt.x - wDragWidth;
2172 rect.right =
pt.x + wDragWidth;
2174 rect.top =
pt.y - wDragHeight;
2175 rect.bottom =
pt.y + wDragHeight;
2219 TRACE(
"Leave NtUserDragDetect, ret=%i\n",_ret_);
2284 TRACE(
"NtUserWaitMessage Enter\n");
2286 TRACE(
"NtUserWaitMessage Leave\n");
2301 if ( (MsgFilterMin|MsgFilterMax) & ~
WM_MAXIMUM )
2475 TRACE(
"No Window for Translate. hwnd 0x%p Msg %u\n", SafeMsg.hwnd, SafeMsg.message);
2585 PWND pwnd, pwndDesk;
2591 DesktopEntry = DesktopEntry->
Flink)
2607 fuFlags = SMTO_NOTIMEOUTIFNOTHUNG;
2624 if (!pwnd)
continue;
2650 hwndDenied =
List[
i];
2659 retparam->
hDesk = hDesk;
2660 retparam->
hWnd = hwndDenied;
2679 if (!pwnd)
continue;
2705 if (!pwnd)
continue;
2728 PWND pwnd, pwndDesk;
2745 fuFlags = SMTO_NOTIMEOUTIFNOTHUNG;
2762 if (!pwnd)
continue;
2788 hwndDenied =
List[
i];
2797 retparam->
hDesk = hDesk;
2798 retparam->
hWnd = hwndDenied;
2816 if (!pwnd)
continue;
2842 if (!pwnd)
continue;
2887 ERR(
"Callback failure!\n");
2954 PHOOK NextObj, Hook;
2985 TRACE(
"WH_CALLWNDPROC: Hook %p NextHook %p\n", Hook, NextObj);
3051 #define INFINITE 0xFFFFFFFF 3052 #define WAIT_FAILED ((DWORD)0xFFFFFFFF) 3090 pti->
ppi == W32Process)
3099 Handles[1] = W32Process->InputIdleEvent;
3123 TRACE(
"WFII: ppi %p\n", W32Process);
3124 TRACE(
"WFII: waiting for %p\n", Handles[1] );
3161 ERR(
"WFII: WAIT 2\n");
3166 ERR(
"WFII: timeout\n");
3171 ERR(
"WFII: finished\n");
LRESULT FASTCALL IntDefWindowProc(PWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL Ansi)
#define BSM_ALLCOMPONENTS
#define ERROR_INVALID_PARAMETER
static LRESULT FASTCALL co_IntSendMessageTimeoutSingle(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT uFlags, UINT uTimeout, ULONG_PTR *uResult)
static LRESULT handle_internal_events(PTHREADINFO pti, PWND pWnd, DWORD dwQEvent, LONG_PTR ExtraInfo, PMSG pMsg)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
DBG_DEFAULT_CHANNEL(UserMsg)
VOID FASTCALL MsqWakeQueue(PTHREADINFO pti, DWORD MessageBits, BOOL KeyEvent)
#define HOOKID_TO_FLAG(HookId)
ENGAPI ULONG APIENTRY EngGetLastError(VOID)
static PMSGMEMORY FASTCALL FindMsgMemory(UINT Msg)
LRESULT co_UserFreeWindow(PWND Window, PPROCESSINFO ProcessData, PTHREADINFO ThreadData, BOOLEAN SendMessages)
DWORD APIENTRY NtUserWaitForInputIdle(IN HANDLE hProcess, IN DWORD dwMilliseconds, IN BOOL bSharedWow)
struct tagMDINEXTMENU MDINEXTMENU
#define LB_FINDSTRINGEXACT
BOOL FASTCALL MsqIsHung(PTHREADINFO pti, DWORD TimeOut)
BOOL FASTCALL IntGetPaintMessage(PWND Window, UINT MsgFilterMin, UINT MsgFilterMax, PTHREADINFO Thread, MSG *Message, BOOL Remove)
#define ERROR_INTERNAL_ERROR
static LRESULT handle_internal_message(PWND pWnd, UINT msg, WPARAM wparam, LPARAM lparam)
#define BSF_IGNORECURRENTTASK
LRESULT FASTCALL IntDispatchMessage(PMSG pMsg)
#define PROCESS_QUERY_INFORMATION
#define BROADCAST_QUERY_DENY
#define UserIsDesktopWindow(pWnd)
BOOL APIENTRY NtUserTranslateMessage(LPMSG lpMsg, UINT flags)
PHOOK FASTCALL IntGetNextHook(PHOOK Hook)
#define QS_ALLPOSTMESSAGE
#define STATUS_INVALID_PARAMETER
static BOOL is_message_broadcastable(UINT msg)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
#define EngGetTickCount32()
VOID FASTCALL IdlePing(VOID)
#define WM_ASKCBFORMATNAME
BOOL FASTCALL IntTranslateKbdMessage(LPMSG lpMsg, UINT flags)
BOOLEAN FASTCALL co_MsqDispatchOneSentMessage(_In_ PTHREADINFO pti)
NTSTATUS NTAPI PsLookupThreadByThreadId(IN HANDLE ThreadId, OUT PETHREAD *Thread)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
PWINSTATION_OBJECT InputWindowStation
struct tagMSGMEMORY * PMSGMEMORY
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
BOOLEAN FASTCALL co_WinPosSetWindowPos(PWND Window, HWND WndInsertAfter, INT x, INT y, INT cx, INT cy, UINT flags)
BOOL FASTCALL UserSendNotifyMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
UINT FASTCALL GetWakeMask(UINT first, UINT last)
BOOL APIENTRY NtUserWaitMessage(VOID)
#define BSF_NOTIMEOUTIFNOTHUNG
struct _PROCESSINFO * PPROCESSINFO
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
#define FNID_DEFWINDOWPROC
static __inline BOOL UserHeapFree(PVOID lpMem)
IN PVOID IN PVOID IN USHORT IN USHORT Size
_In_ BOOL _In_ HANDLE hProcess
BOOL APIENTRY NtUserPostThreadMessage(DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY IntDdePostMessageHook(IN PWND pWnd, IN UINT Msg, IN WPARAM wParam, IN OUT LPARAM *lParam, IN OUT LONG_PTR *ExtraInfo)
NTSTATUS FASTCALL co_MsqWaitForNewMessages(PTHREADINFO pti, PWND WndFilter, UINT MsgFilterMin, UINT MsgFilterMax)
#define MmCopyToCaller(x, y, z)
LIST_ENTRY DesktopListHead
BOOL FASTCALL IntCallMsgFilter(LPMSG lpmsg, INT code)
#define TIF_WAITFORINPUTIDLE
BOOL FASTCALL DesktopWindowProc(PWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *lResult)
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_opt_ PCUNICODE_STRING UnicodeString
LRESULT APIENTRY co_IntCallWindowProc(WNDPROC Proc, BOOLEAN IsAnsiProc, HWND Wnd, UINT Message, WPARAM wParam, LPARAM lParam, INT lParamBufferSize)
#define InsertTailList(ListHead, Entry)
static __inline PVOID UserHeapAlloc(SIZE_T Bytes)
LRESULT FASTCALL co_IntPostOrSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
LRESULT APIENTRY co_EVENT_CallEvents(DWORD event, HWND hwnd, UINT_PTR idObject, LONG_PTR idChild)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define WM_QUERYDROPOBJECT
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSTATUS FASTCALL IntInitMessageImpl(VOID)
struct _THREADINFO * GetW32ThreadInfo(VOID)
BOOL APIENTRY IntUninitMessagePumpHook(VOID)
#define WH_FOREGROUNDIDLE
BOOL FASTCALL co_IntWaitMessage(PWND Window, UINT MsgFilterMin, UINT MsgFilterMax)
#define WNDS_PAINTNOTPROCESSED
PTHREADINFO gptiForeground
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
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)
static NTSTATUS PackParam(LPARAM *lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL NonPagedPoolNeeded)
struct _WINDOWPOS WINDOWPOS
struct _BROADCASTPARM * PBROADCASTPARM
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
BOOL FASTCALL UserPostThreadMessage(PTHREADINFO pti, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOLEAN co_UserDestroyWindow(PVOID Object)
static __inline VOID UserDerefObjectCo(PVOID obj)
LIST_ENTRY SentMessagesListHead
PTHREADINFO FASTCALL IntSendTo(PWND Window, PTHREADINFO ptiCur, UINT Msg)
static UINT WPARAM LPARAM lparam
static NTSTATUS FASTCALL CopyMsgToUserMem(MSG *UserModeMsg, MSG *KernelModeMsg)
BOOL FASTCALL ValidateTimerCallback(PTHREADINFO pti, LPARAM lParam)
#define EXCEPTION_EXECUTE_HANDLER
NTSYSAPI NTSTATUS NTAPI ZwYieldExecution(VOID)
DWORD APIENTRY IntGetQueueStatus(DWORD Changes)
static NTSTATUS UnpackParam(LPARAM lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL NonPagedPoolUsed)
BOOL APIENTRY co_IntPeekMessage(PMSG Msg, PWND Window, UINT MsgFilterMin, UINT MsgFilterMax, UINT RemoveMsg, LONG_PTR *ExtraInfo, BOOL bGMSG)
static LRESULT FASTCALL co_IntDoSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, PDOSENDMESSAGE dsm)
#define IntReferenceProcessInfo(ppi)
#define W32PF_WAITFORINPUTIDLE
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
static NTSTATUS FASTCALL CopyMsgToKernelMem(MSG *KernelModeMsg, MSG *UserModeMsg, PMSGMEMORY MsgMemoryEntry)
struct tagCREATESTRUCTW CREATESTRUCTW
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define WH_CALLWNDPROCRET
VOID FASTCALL IntActivateWindow(PWND Wnd, PTHREADINFO pti, HANDLE tid, DWORD Type)
BOOL APIENTRY NtUserGetMessage(PMSG pMsg, HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax)
struct _CLIENTTHREADINFO * pcti
PWND FASTCALL UserGetWindowObject(HWND hWnd)
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)
struct _WINDOWPOS * PWINDOWPOS
LONG NTAPI UserGetSystemMetrics(ULONG Index)
BOOLEAN FASTCALL co_WinPosShowWindow(PWND Wnd, INT Cmd)
VOID FASTCALL UserEnterExclusive(VOID)
#define UserHMGetHandle(obj)
#define FNID_CALLWNDPROCRET
LRESULT APIENTRY co_IntCallHookProc(INT HookId, INT Code, WPARAM wParam, LPARAM lParam, HOOKPROC Proc, INT Mod, ULONG_PTR offPfn, BOOLEAN Ansi, PUNICODE_STRING ModuleName)
struct tagDRAWITEMSTRUCT DRAWITEMSTRUCT
struct _LIST_ENTRY * Flink
BOOL APIENTRY NtUserMessageCall(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR ResultInfo, DWORD dwType, BOOL Ansi)
struct tagHELPINFO HELPINFO
PTIMER FASTCALL FindSystemTimer(PMSG pMsg)
#define FNID_SENDMESSAGEFF
#define ERROR_INVALID_WINDOW_HANDLE
HWND FASTCALL co_UserSetCapture(HWND hWnd)
struct _THREADINFO * PTHREADINFO
VOID FASTCALL ClearMsgBitsMask(PTHREADINFO pti, UINT MessageBits)
#define CB_GETDROPPEDCONTROLRECT
static VOID FASTCALL IntCallWndProc(PWND Window, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
#define _SEH2_YIELD(STMT_)
UNICODE_STRING ModuleName
NTSYSAPI ULONG NTAPI RtlEqualMemory(CONST VOID *Source1, CONST VOID *Source2, ULONG Length)
Implementation of the Explorer desktop window.
#define NT_SUCCESS(StatCode)
#define UlongToHandle(ul)
#define WM_WINDOWPOSCHANGING
PKEVENT pEventQueueServer
#define ISITHOOKED(HookId)
void(CALLBACK * SENDASYNCPROC)(HWND, UINT, ULONG_PTR, LRESULT)
LRESULT FASTCALL co_IntSendMessageTimeout(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT uFlags, UINT uTimeout, ULONG_PTR *uResult)
#define ObDereferenceObject
BOOL APIENTRY NtUserDragDetect(HWND hWnd, POINT pt)
BOOL APIENTRY IntDdeGetMessageHook(PMSG pMsg, LONG_PTR ExtraInfo)
BOOL APIENTRY NtUserCallMsgFilter(LPMSG lpmsg, INT code)
#define DECLARE_RETURN(type)
VOID FASTCALL MsqPostMessage(PTHREADINFO pti, MSG *Msg, BOOLEAN HardwareMessage, DWORD MessageBits, DWORD dwQEvent, LONG_PTR ExtraInfo)
#define FNID_SENDMESSAGECALLBACK
#define MMS_SIZE_LPARAMSZ
#define UserIsMessageWindow(pWnd)
BOOLEAN APIENTRY MsqPeekMessage(IN PTHREADINFO pti, IN BOOLEAN Remove, IN PWND Window, IN UINT MsgFilterLow, IN UINT MsgFilterHigh, IN UINT QSflags, OUT LONG_PTR *ExtraInfo, OUT DWORD *dwQEvent, OUT PMSG Message)
NTSTATUS NTAPI KeWaitForMultipleObjects(IN ULONG Count, IN PVOID Object[], IN WAIT_TYPE WaitType, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL, OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL)
BOOL FASTCALL IntMsgCreateStructW(PWND Window, CREATESTRUCTW *pCsw, CREATESTRUCTW *Cs, PVOID *ppszClass, PVOID *ppszName)
struct _CLIENTINFO * pClientInfo
VOID APIENTRY co_IntCallSentMessageCallback(SENDASYNCPROC CompletionCallback, HWND hWnd, UINT Msg, ULONG_PTR CompletionCallbackContext, LRESULT Result)
BOOL FASTCALL PostTimerMessages(PWND Window)
BOOLEAN NTAPI PsGetProcessExitProcessCalled(PEPROCESS Process)
VOID FASTCALL IntCoalesceMouseMove(PTHREADINFO pti)
BOOL FASTCALL UserMessageWindowProc(PWND pwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *lResult)
#define ExAllocatePoolWithTag(hernya, size, tag)
LRESULT APIENTRY co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
FORCEINLINE BOOL RECTL_bPointInRect(_In_ const RECTL *prcl, _In_ INT x, _In_ INT y)
PWND FASTCALL UserGetDesktopWindow(VOID)
#define FNID_SENDNOTIFYMESSAGE
PUSER_SENT_MESSAGE FASTCALL AllocateUserMessage(BOOL KEvent)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
struct tagMINMAXINFO MINMAXINFO
#define WNDS2_WMPAINTSENT
LRESULT FASTCALL co_IntSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
static MSGMEMORY g_MsgMemory[]
_Must_inspect_result_ _In_ WDFCMRESLIST List
BOOL APIENTRY IntInitMessagePumpHook(VOID)
HWND *FASTCALL IntWinListChildren(PWND Window)
struct tagHOOK * sphkCurrent
UINT lParamMemorySize(UINT Msg, WPARAM wParam, LPARAM lParam)
static __inline PVOID UserHeapAddressToUser(PVOID lpMem)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
LRESULT APIENTRY NtUserDispatchMessage(PMSG UnsafeMsgInfo)
#define WM_COPYGLOBALDATA
struct tagDOSENDMESSAGE * PDOSENDMESSAGE
#define TIF_MSGPOSCHANGED
BOOL FASTCALL IntMakeHungWindowGhosted(HWND hwndHung)
NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING *)
LRESULT APIENTRY ScrollBarWndProc(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
struct _USER_MESSAGE_QUEUE * MessageQueue
BOOL FASTCALL IntDdeSendMessageHook(PWND pWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
VOID FASTCALL UserLeave(VOID)
#define FNID_BROADCASTSYSTEMMESSAGE
BOOL APIENTRY co_IntGetPeekMessage(PMSG pMsg, HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, UINT RemoveMsg, BOOL bGMSG)
VOID FASTCALL IdlePong(VOID)
NTSTATUS FASTCALL IntCleanupMessageImpl(VOID)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct tagNCCALCSIZE_PARAMS NCCALCSIZE_PARAMS
#define MMS_SIZE_WPARAMWCHAR
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
#define ERROR_MESSAGE_SYNC_ONLY
_Out_ PKAPC_STATE ApcState
struct tagMEASUREITEMSTRUCT MEASUREITEMSTRUCT
LRESULT FASTCALL co_IntSendMessageNoWait(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
struct tagSTYLESTRUCT STYLESTRUCT
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
VOID FASTCALL IntPaintWindow(PWND Window)
#define WNDS_INTERNALPAINT
static UINT FASTCALL MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY co_MsqPeekHardwareMessage(IN PTHREADINFO pti, IN BOOL Remove, IN PWND Window, IN UINT MsgFilterLow, IN UINT MsgFilterHigh, IN UINT QSflags, OUT MSG *pMsg)
#define WM_WINDOWPOSCHANGED
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
static VOID FASTCALL IntCallWndProcRet(PWND Window, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *uResult)
struct tagCOPYDATASTRUCT COPYDATASTRUCT
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
BOOL FASTCALL IntDeactivateWindow(PTHREADINFO pti, HANDLE tid)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
struct tagMSGMEMORY MSGMEMORY
static const unsigned int message_pointer_flags[]
NTSTATUS FASTCALL co_MsqSendMessage(PTHREADINFO ptirec, HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT uTimeout, BOOL Block, INT HookMessage, ULONG_PTR *uResult)
#define _SEH2_EXCEPT(...)
#define ExFreePoolWithTag(_P, _T)
struct _LARGE_STRING * PLARGE_STRING
#define _SEH2_GetExceptionCode()
const TCHAR * CompletionCallback(unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pszContext, const TCHAR *pszBegin)
PWND FASTCALL VerifyWnd(PWND pWnd)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
struct _DESKTOPINFO * pDeskInfo
static int is_pointer_message(UINT message, WPARAM wparam)
#define IntDereferenceProcessInfo(ppi)
#define WNDS_SERVERSIDEWINDOWPROC
BOOL APIENTRY NtUserPeekMessage(PMSG pMsg, HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, UINT RemoveMsg)
#define MMS_FLAG_READWRITE
POBJECT_TYPE PsProcessType
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define ERROR_INVALID_FLAGS
static PLARGE_INTEGER Time
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
#define FNID_SENDMESSAGEWTOOPTION
static UINT WPARAM wparam
LRESULT FASTCALL co_IntSendMessageWithCallBack(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, SENDASYNCPROC CompletionCallback, ULONG_PTR CompletionCallbackContext, ULONG_PTR *uResult)
BOOL APIENTRY NtUserPostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
#define CB_FINDSTRINGEXACT