14#define PM_BADMSGFLAGS ~((QS_RAWINPUT << 16)|PM_QS_SENDMESSAGE|PM_QS_PAINT|PM_QS_POSTMESSAGE|PM_QS_INPUT|PM_NOYIELD|PM_REMOVE)
34#define SET(msg) (1 << ((msg) & 31))
47 SET(WM_STYLECHANGING) |
SET(WM_STYLECHANGED),
106#define MMS_SIZE_WPARAM -1
107#define MMS_SIZE_WPARAMWCHAR -2
108#define MMS_SIZE_LPARAMSZ -3
109#define MMS_SIZE_SPECIAL -4
110#define MMS_FLAG_READ 0x01
111#define MMS_FLAG_WRITE 0x02
112#define MMS_FLAG_READWRITE (MMS_FLAG_READ | MMS_FLAG_WRITE)
157 return MsgMemoryEntry;
187 TRACE(
"lParam is NULL!\n");
195 switch(MsgMemoryEntry->
Message)
257 if(MsgMemoryEntry ==
NULL)
return 0;
276 if (NonPagedPoolNeeded)
289 if (
NULL == PackedNcCalcsize)
291 ERR(
"Not enough memory to pack lParam\n");
297 *lParamPacked = (
LPARAM) PackedNcCalcsize;
314 if (
NULL == PackedCs)
316 ERR(
"Not enough memory to pack lParam\n");
320 CsData = (
PCHAR) (PackedCs + 1);
323 CsData += WindowName->
Length;
324 *((
WCHAR *) CsData) =
L'\0';
325 CsData +=
sizeof(
WCHAR);
329 *((
WCHAR *) CsData) =
L'A';
330 CsData +=
sizeof(
WCHAR);
332 CsData +=
sizeof(
ATOM);
337 *((
WCHAR *) CsData) =
L'S';
338 CsData +=
sizeof(
WCHAR);
340 CsData += ClassName->
Length;
341 *((
WCHAR *) CsData) =
L'\0';
342 CsData +=
sizeof(
WCHAR);
345 *lParamPacked = (
LPARAM) PackedCs;
363 ERR(
"No size for lParamPacked\n");
367 if (PackedData ==
NULL)
369 ERR(
"Not enough memory to pack lParam\n");
373 *lParamPacked = (
LPARAM)PackedData;
386 if (lParamPacked ==
lParam)
395 UnpackedWindowPos = UnpackedParams->
lppos;
397 UnpackedParams->
lppos = UnpackedWindowPos;
409 else if (NonPagedPoolUsed)
436 *KernelModeMsg = *UserModeMsg;
439 if (
NULL == MsgMemoryEntry)
452 if (
NULL == KernelMem)
454 ERR(
"Not enough memory to copy message to kernel mem\n");
457 KernelModeMsg->lParam = (
LPARAM) KernelMem;
462 TRACE(
"Copy Message %u from usermode buffer\n", KernelModeMsg->message);
466 ERR(
"Failed to copy message to kernel: invalid usermode lParam buffer\n");
479 KernelModeMsg->lParam = 0;
494 if (
NULL == MsgMemoryEntry)
511 ERR(
"Failed to copy message from kernel: invalid usermode lParam buffer\n");
547 TRACE(
"IdlePing ppi %p\n", ppi);
548 if ( ppi && ppi->InputIdleEvent )
550 TRACE(
"InputIdleEvent\n");
560 TRACE(
"IdlePong ppi %p\n", ppi);
561 if ( ppi && ppi->InputIdleEvent )
569 return msg < WM_USER || msg >= 0xc000;
626 ERR(
"UserHeapAlloc() failed!\n");
640 ERR(
"UserHeapAlloc() failed!\n");
647 *ppszClass = pszClass;
673 ERR(
"UserHeapAlloc() failed!\n");
687 ERR(
"UserHeapAlloc() failed!\n");
764 CWPR.
lResult = uResult ? (*uResult) : 0;
780 TRACE(
"Internal Event Msg 0x%x hWnd 0x%p\n",
msg, pWnd->
head.h);
789 if (!winpos)
return 0;
802 TRACE(
"WM_ASYNC_DESTROYWINDOW\n");
884 if (pTimer && pTimer->
pfn)
899 TRACE(
"Dispatch: Server Side Window Procedure\n");
943 Window->state2 &= ~WNDS2_WMPAINTSENT;
980 ProcessMask =
HIWORD(RemoveMsg);
1005 if (Hit)
return FALSE;
1011 if (MsgFilterMin == 0 && MsgFilterMax == 0)
1013 pti->
pcti->fsChangeBits &= ~QS_ALLPOSTMESSAGE;
1019 pti->
pcti->fsChangeBits &= ~QS_INPUT;
1051 pti->
pcti->fsWakeBits &= ~QS_ALLPOSTMESSAGE;
1052 pti->
pcti->fsChangeBits &= ~QS_ALLPOSTMESSAGE;
1095 if (Hit)
return FALSE;
1162 ERR(
"Exit co_IntWaitMessage on error!\n");
1208 if (MsgFilterMax < MsgFilterMin)
1216 RemoveMsg |= ((
GetWakeMask( MsgFilterMin, MsgFilterMax ))<< 16);
1243 TRACE(
"DDE Get return ERROR\n");
1263 if ( bGMSG || pMsg->message ==
WM_PAINT)
break;
1295 while( bGMSG && !Present );
1336 Window->head.pti == ptiCur )
1384 if (!pwnd)
continue;
1410 ERR(
"UserPostMessage: Invalid handle 0x%p Msg 0x%x!\n", Wnd,
Msg);
1418 ERR(
"Attempted to post message to window %p when the thread is in cleanup!\n", Wnd);
1424 ERR(
"Attempted to post message to window %p that is being destroyed!\n", Wnd);
1433 TRACE(
"Posting Exit DDE 0x%x\n",
Msg);
1471 INT lParamBufferSize;
1481 TRACE(
"SendMessageTimeoutSingle: Invalid handle 0x%p!\n",
hWnd);
1495 ERR(
"Sending Exit DDE 0x%x\n",
Msg);
1508 if (
Msg & 0x80000000)
1510 TRACE(
"SMTS: Internal Message!\n");
1512 if (uResult) *uResult =
Result;
1521 TRACE(
"SMT: Server Side Window Procedure\n");
1523 if (IoGetRemainingStackSize() <
PAGE_SIZE)
1525 ERR(
"Server Callback Exceeded Stack!\n");
1543 if (uResult) *uResult =
Result;
1549 if (
NULL == MsgMemoryEntry)
1551 lParamBufferSize = -1;
1557 if (!lParamBufferSize) lParamBufferSize = -1;
1562 ERR(
"Failed to pack message parameters\n");
1580 ERR(
"Failed to unpack message parameters\n");
1593 ERR(
"Attempted to send message to window %p that is being destroyed!\n",
hWnd);
1601 ERR(
"Window %p (%p) (pti %p) is hung!\n",
hWnd,
Window, ptiSendTo);
1618 (
uFlags & SMTO_NOTIMEOUTIFNOTHUNG) &&
1625 TRACE(
"Let's go Ghost!\n");
1686 if (
NULL == Children)
1694 if (!pwnd)
continue;
1742 INT lParamBufferSize;
1752 TRACE(
"SendMessageWithCallBack: Invalid handle 0x%p\n",
hWnd);
1761 ERR(
"Attempted to send message to window %p that is being destroyed\n",
hWnd);
1772 if (
Msg & 0x80000000 &&
1777 TRACE(
"SMWCB: Internal Message\n");
1779 if (uResult) *uResult =
Result;
1785 if (
NULL == MsgMemoryEntry)
1787 lParamBufferSize = -1;
1792 if (!lParamBufferSize) lParamBufferSize = -1;
1797 ERR(
"Failed to pack message parameters\n");
1815 TRACE(
"SMWCB: Server Side Window Procedure\n");
1850 CompletionCallbackContext,
1859 ERR(
"Failed to unpack message parameters\n");
1866 ERR(
"Failed to allocate message\n");
1873 Message->Msg.lParam = lParamPacked;
1877 Message->ptiReceiver = ptiSendTo;
1879 Message->ptiCallBackSender = Win32Thread;
1881 Message->CompletionCallbackContext = CompletionCallbackContext;
1883 Message->HasPackedLParam = (lParamBufferSize > 0);
1887 if (
Msg & 0x80000000)
1923 TRACE(
"PostOrSendMessage: Invalid handle 0x%p!\n",
hWnd);
1956 MSG UserModeMsg, KernelModeMsg;
1972 ERR(
"co_IntDoSendMessage Window Exiting!\n");
1979 if (!
Window || ptiSendTo )
1981 UserModeMsg.hwnd =
hWnd;
1982 UserModeMsg.message =
Msg;
1983 UserModeMsg.wParam =
wParam;
1984 UserModeMsg.lParam =
lParam;
1990 return (dsm ? 0 : -1);
1995 KernelModeMsg.hwnd =
hWnd;
1996 KernelModeMsg.message =
Msg;
1997 KernelModeMsg.wParam =
wParam;
1998 KernelModeMsg.lParam =
lParam;
2004 KernelModeMsg.message,
2005 KernelModeMsg.wParam,
2006 KernelModeMsg.lParam );
2011 KernelModeMsg.message,
2012 KernelModeMsg.wParam,
2013 KernelModeMsg.lParam,
2019 if (!
Window || ptiSendTo )
2025 return(dsm ? 0 : -1);
2062 if (!pwnd)
continue;
2097 pti->
pcti->fsChangeBits &= ~Changes;
2109 pti->
pcti->dwcPumpHook++;
2122 if (pti->
pcti->dwcPumpHook <= 0)
2126 pti->
pcti->dwcPumpHook--;
2158 ULONG wDragWidth, wDragHeight;
2161 TRACE(
"Enter NtUserDragDetect(%p)\n",
hWnd);
2167 rect.left =
pt.x - wDragWidth;
2168 rect.right =
pt.x + wDragWidth;
2170 rect.top =
pt.y - wDragHeight;
2171 rect.bottom =
pt.y + wDragHeight;
2215 TRACE(
"Leave NtUserDragDetect, ret=%i\n",_ret_);
2280 TRACE(
"NtUserWaitMessage Enter\n");
2282 TRACE(
"NtUserWaitMessage Leave\n");
2297 if ( (MsgFilterMin|MsgFilterMax) & ~
WM_MAXIMUM )
2471 TRACE(
"No Window for Translate. hwnd 0x%p Msg %u\n", SafeMsg.hwnd, SafeMsg.message);
2581 PWND pwnd, pwndDesk;
2587 DesktopEntry = DesktopEntry->
Flink)
2603 fuFlags = SMTO_NOTIMEOUTIFNOTHUNG;
2620 if (!pwnd)
continue;
2646 hwndDenied =
List[
i];
2655 retparam->
hDesk = hDesk;
2656 retparam->
hWnd = hwndDenied;
2675 if (!pwnd)
continue;
2701 if (!pwnd)
continue;
2724 PWND pwnd, pwndDesk;
2741 fuFlags = SMTO_NOTIMEOUTIFNOTHUNG;
2758 if (!pwnd)
continue;
2784 hwndDenied =
List[
i];
2793 retparam->
hDesk = hDesk;
2794 retparam->
hWnd = hwndDenied;
2812 if (!pwnd)
continue;
2838 if (!pwnd)
continue;
2883 ERR(
"Callback failure!\n");
2950 PHOOK NextObj, Hook;
2981 TRACE(
"WH_CALLWNDPROC: Hook %p NextHook %p\n", Hook, NextObj);
3047#define INFINITE 0xFFFFFFFF
3048#define WAIT_FAILED ((DWORD)0xFFFFFFFF)
3086 pti->
ppi == W32Process)
3095 Handles[1] = W32Process->InputIdleEvent;
3117 TRACE(
"WFII: ppi %p\n", W32Process);
3118 TRACE(
"WFII: waiting for %p\n", Handles[1] );
3155 ERR(
"WFII: WAIT 2\n");
3160 ERR(
"WFII: timeout\n");
3165 ERR(
"WFII: finished\n");
3176 pti->
TIF_flags &= ~TIF_WAITFORINPUTIDLE;
3179 W32Process->W32PF_flags &= ~W32PF_WAITFORINPUTIDLE;
const TCHAR * CompletionCallback(unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pszContext, const TCHAR *pszBegin)
#define UlongToHandle(ul)
#define DBG_DEFAULT_CHANNEL(ch)
#define BSF_NOTIMEOUTIFNOTHUNG
#define BSF_IGNORECURRENTTASK
#define BSM_ALLCOMPONENTS
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
static const WCHAR Message[]
#define EngGetTickCount32()
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeSetEvent(pEvt, foo, foo2)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
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)
BOOL FASTCALL IntDeactivateWindow(PTHREADINFO pti, HANDLE tid)
VOID FASTCALL IntActivateWindow(PWND Wnd, PTHREADINFO pti, HANDLE tid, DWORD Type)
HWND FASTCALL co_UserSetCapture(HWND hWnd)
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
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
#define ISITHOOKED(HookId)
#define HOOKID_TO_FLAG(HookId)
#define EXCEPTION_EXECUTE_HANDLER
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define PROCESS_QUERY_INFORMATION
#define FNID_SENDMESSAGEFF
#define FNID_DEFWINDOWPROC
#define TIF_WAITFORINPUTIDLE
#define WNDS_SERVERSIDEWINDOWPROC
#define UserHMGetHandle(obj)
#define WNDS_INTERNALPAINT
#define FNID_SENDMESSAGECALLBACK
struct _THREADINFO * GetW32ThreadInfo(VOID)
#define FNID_SENDMESSAGEWTOOPTION
#define FNID_CALLWNDPROCRET
struct tagDOSENDMESSAGE * PDOSENDMESSAGE
struct _LARGE_STRING * PLARGE_STRING
struct _BROADCASTPARM * PBROADCASTPARM
#define FNID_BROADCASTSYSTEMMESSAGE
#define TIF_MSGPOSCHANGED
#define WNDS_PAINTNOTPROCESSED
#define FNID_SENDNOTIFYMESSAGE
#define RtlEqualMemory(a, b, c)
_In_ BOOL _In_ HANDLE hProcess
#define MmCopyToCaller(x, y, z)
#define ExFreePoolWithTag(_P, _T)
static PLARGE_INTEGER Time
VOID FASTCALL ClearMsgBitsMask(PTHREADINFO pti, UINT MessageBits)
BOOLEAN FASTCALL co_MsqDispatchOneSentMessage(_In_ PTHREADINFO pti)
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)
VOID FASTCALL IntCoalesceMouseMove(PTHREADINFO pti)
NTSTATUS FASTCALL co_MsqSendMessage(PTHREADINFO ptirec, HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT uTimeout, BOOL Block, INT HookMessage, ULONG_PTR *uResult)
VOID FASTCALL MsqPostMessage(PTHREADINFO pti, MSG *Msg, BOOLEAN HardwareMessage, DWORD MessageBits, DWORD dwQEvent, LONG_PTR ExtraInfo)
BOOL FASTCALL MsqIsHung(PTHREADINFO pti, DWORD TimeOut)
NTSTATUS FASTCALL co_MsqWaitForNewMessages(PTHREADINFO pti, PWND WndFilter, UINT MsgFilterMin, UINT MsgFilterMax)
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)
VOID FASTCALL MsqWakeQueue(PTHREADINFO pti, DWORD MessageBits, BOOL KeyEvent)
PUSER_SENT_MESSAGE FASTCALL AllocateUserMessage(BOOL KEvent)
LRESULT FASTCALL co_IntPostOrSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
NTSYSAPI NTSTATUS NTAPI ZwYieldExecution(VOID)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
_Out_ PKAPC_STATE ApcState
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)
BOOLEAN NTAPI PsGetProcessExitProcessCalled(PEPROCESS Process)
POBJECT_TYPE PsProcessType
PVOID NTAPI PsGetCurrentProcessWin32Process(VOID)
NTSTATUS NTAPI PsLookupThreadByThreadId(IN HANDLE ThreadId, OUT PETHREAD *Thread)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
LRESULT FASTCALL IntDefWindowProc(PWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL Ansi)
BOOL FASTCALL IntMakeHungWindowGhosted(HWND hwndHung)
PHOOK FASTCALL IntGetNextHook(PHOOK Hook)
LRESULT APIENTRY co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
BOOLEAN FASTCALL co_WinPosSetWindowPos(PWND Window, HWND WndInsertAfter, INT x, INT y, INT cx, INT cy, UINT flags)
BOOLEAN FASTCALL co_WinPosShowWindow(PWND Wnd, INT Cmd)
PWINSTATION_OBJECT InputWindowStation
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
struct _THREADINFO * PTHREADINFO
struct _PROCESSINFO * PPROCESSINFO
static __inline VOID UserDerefObjectCo(PVOID obj)
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
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)
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
Implementation of the Explorer desktop window.
struct _LIST_ENTRY * Flink
struct _DESKTOPINFO * pDeskInfo
struct tagHOOK * sphkCurrent
struct _CLIENTINFO * pClientInfo
PKEVENT pEventQueueServer
struct _CLIENTTHREADINFO * pcti
LIST_ENTRY SentMessagesListHead
struct _USER_MESSAGE_QUEUE * MessageQueue
LIST_ENTRY DesktopListHead
UNICODE_STRING ModuleName
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define WM_COPYGLOBALDATA
#define WM_QUERYDROPOBJECT
#define DECLARE_RETURN(type)
VOID FASTCALL IntPaintWindow(PWND Window)
BOOL FASTCALL IntGetPaintMessage(PWND Window, UINT MsgFilterMin, UINT MsgFilterMax, PTHREADINFO Thread, MSG *Message, BOOL Remove)
PWND FASTCALL UserGetWindowObject(HWND hWnd)
BOOLEAN co_UserDestroyWindow(PVOID Object)
static __inline PVOID UserHeapAlloc(SIZE_T Bytes)
static __inline PVOID UserHeapAddressToUser(PVOID lpMem)
static __inline BOOL UserHeapFree(PVOID lpMem)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define IntReferenceProcessInfo(ppi)
#define W32PF_WAITFORINPUTIDLE
#define IntDereferenceProcessInfo(ppi)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
FORCEINLINE BOOL RECTL_bPointInRect(_In_ const RECTL *prcl, _In_ INT x, _In_ INT y)
LRESULT APIENTRY co_IntCallHookProc(INT HookId, INT Code, WPARAM wParam, LPARAM lParam, HOOKPROC Proc, INT Mod, ULONG_PTR offPfn, BOOLEAN Ansi, PUNICODE_STRING ModuleName)
VOID APIENTRY co_IntCallSentMessageCallback(SENDASYNCPROC CompletionCallback, HWND hWnd, UINT Msg, ULONG_PTR CompletionCallbackContext, LRESULT Result)
LRESULT APIENTRY co_IntCallWindowProc(WNDPROC Proc, BOOLEAN IsAnsiProc, HWND Wnd, UINT Message, WPARAM wParam, LPARAM lParam, INT lParamBufferSize)
BOOL APIENTRY IntDdePostMessageHook(IN PWND pWnd, IN UINT Msg, IN WPARAM wParam, IN OUT LPARAM *lParam, IN OUT LONG_PTR *ExtraInfo)
BOOL APIENTRY IntDdeGetMessageHook(PMSG pMsg, LONG_PTR ExtraInfo)
BOOL FASTCALL IntDdeSendMessageHook(PWND pWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
PWND FASTCALL UserGetDesktopWindow(VOID)
BOOL FASTCALL DesktopWindowProc(PWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *lResult)
BOOL FASTCALL UserMessageWindowProc(PWND pwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *lResult)
PTHREADINFO gptiForeground
#define UserIsMessageWindow(pWnd)
#define UserIsDesktopWindow(pWnd)
LRESULT APIENTRY co_EVENT_CallEvents(DWORD event, HWND hwnd, UINT_PTR idObject, LONG_PTR idChild)
BOOL FASTCALL IntTranslateKbdMessage(LPMSG lpMsg, UINT flags)
struct tagMSGMEMORY * PMSGMEMORY
static MSGMEMORY g_MsgMemory[]
UINT FASTCALL GetWakeMask(UINT first, UINT last)
BOOL FASTCALL IntCallMsgFilter(LPMSG lpmsg, INT code)
#define MMS_SIZE_LPARAMSZ
BOOL APIENTRY NtUserDragDetect(HWND hWnd, POINT pt)
static LRESULT FASTCALL co_IntSendMessageTimeoutSingle(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT uFlags, UINT uTimeout, ULONG_PTR *uResult)
#define MMS_SIZE_WPARAMWCHAR
static int is_pointer_message(UINT message, WPARAM wparam)
VOID FASTCALL IdlePing(VOID)
static VOID FASTCALL IntCallWndProcRet(PWND Window, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *uResult)
DWORD APIENTRY IntGetQueueStatus(DWORD Changes)
BOOL APIENTRY NtUserCallMsgFilter(LPMSG lpmsg, INT code)
LRESULT FASTCALL IntDispatchMessage(PMSG pMsg)
static UINT FASTCALL MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam, LPARAM lParam)
DWORD APIENTRY NtUserWaitForInputIdle(IN HANDLE hProcess, IN DWORD dwMilliseconds, IN BOOL bSharedWow)
static LRESULT FASTCALL co_IntDoSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, PDOSENDMESSAGE dsm)
BOOL FASTCALL IntMsgCreateStructW(PWND Window, CREATESTRUCTW *pCsw, CREATESTRUCTW *Cs, PVOID *ppszClass, PVOID *ppszName)
BOOL APIENTRY NtUserPeekMessage(PMSG pMsg, HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, UINT RemoveMsg)
BOOL APIENTRY NtUserMessageCall(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR ResultInfo, DWORD dwType, BOOL Ansi)
LRESULT FASTCALL co_IntSendMessageWithCallBack(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, SENDASYNCPROC CompletionCallback, ULONG_PTR CompletionCallbackContext, ULONG_PTR *uResult)
static const unsigned int message_pointer_flags[]
BOOL APIENTRY NtUserWaitMessage(VOID)
BOOL APIENTRY IntInitMessagePumpHook(VOID)
struct tagMSGMEMORY MSGMEMORY
LRESULT FASTCALL co_IntSendMessageNoWait(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY NtUserPostThreadMessage(DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL FASTCALL UserSendNotifyMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
NTSTATUS FASTCALL IntInitMessageImpl(VOID)
BOOL APIENTRY NtUserTranslateMessage(LPMSG lpMsg, UINT flags)
static BOOL is_message_broadcastable(UINT msg)
static NTSTATUS FASTCALL CopyMsgToKernelMem(MSG *KernelModeMsg, MSG *UserModeMsg, PMSGMEMORY MsgMemoryEntry)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL APIENTRY NtUserPostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
BOOL FASTCALL co_IntWaitMessage(PWND Window, UINT MsgFilterMin, UINT MsgFilterMax)
PTHREADINFO FASTCALL IntSendTo(PWND Window, PTHREADINFO ptiCur, UINT Msg)
LRESULT FASTCALL co_IntSendMessageTimeout(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT uFlags, UINT uTimeout, ULONG_PTR *uResult)
BOOL APIENTRY co_IntGetPeekMessage(PMSG pMsg, HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, UINT RemoveMsg, BOOL bGMSG)
static NTSTATUS PackParam(LPARAM *lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL NonPagedPoolNeeded)
#define MMS_FLAG_READWRITE
VOID FASTCALL IdlePong(VOID)
BOOL APIENTRY co_IntPeekMessage(PMSG Msg, PWND Window, UINT MsgFilterMin, UINT MsgFilterMax, UINT RemoveMsg, LONG_PTR *ExtraInfo, BOOL bGMSG)
LRESULT APIENTRY NtUserDispatchMessage(PMSG UnsafeMsgInfo)
BOOL APIENTRY IntUninitMessagePumpHook(VOID)
static VOID FASTCALL IntCallWndProc(PWND Window, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
static PMSGMEMORY FASTCALL FindMsgMemory(UINT Msg)
BOOL FASTCALL UserPostThreadMessage(PTHREADINFO pti, UINT Msg, WPARAM wParam, LPARAM lParam)
LRESULT APIENTRY ScrollBarWndProc(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
static NTSTATUS FASTCALL CopyMsgToUserMem(MSG *UserModeMsg, MSG *KernelModeMsg)
LRESULT FASTCALL co_IntSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
static LRESULT handle_internal_message(PWND pWnd, UINT msg, WPARAM wparam, LPARAM lparam)
static NTSTATUS UnpackParam(LPARAM lParamPacked, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL NonPagedPoolUsed)
NTSTATUS FASTCALL IntCleanupMessageImpl(VOID)
UINT lParamMemorySize(UINT Msg, WPARAM wParam, LPARAM lParam)
static LRESULT handle_internal_events(PTHREADINFO pti, PWND pWnd, DWORD dwQEvent, LONG_PTR ExtraInfo, PMSG pMsg)
BOOL APIENTRY NtUserGetMessage(PMSG pMsg, HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax)
LONG NTAPI UserGetSystemMetrics(ULONG Index)
BOOL FASTCALL ValidateTimerCallback(PTHREADINFO pti, LPARAM lParam)
BOOL FASTCALL PostTimerMessages(PWND Window)
PTIMER FASTCALL FindSystemTimer(PMSG pMsg)
HWND *FASTCALL IntWinListChildren(PWND Window)
LRESULT co_UserFreeWindow(PWND Window, PPROCESSINFO ProcessData, PTHREADINFO ThreadData, BOOLEAN SendMessages)
PWND FASTCALL VerifyWnd(PWND pWnd)
ENGAPI ULONG APIENTRY EngGetLastError(VOID)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
#define ERROR_MESSAGE_SYNC_ONLY
#define ERROR_INVALID_WINDOW_HANDLE
#define ERROR_INVALID_FLAGS
#define ERROR_INTERNAL_ERROR
struct tagMDINEXTMENU MDINEXTMENU
#define LB_FINDSTRINGEXACT
void(CALLBACK * SENDASYNCPROC)(HWND, UINT, ULONG_PTR, LRESULT)
#define WH_CALLWNDPROCRET
#define WM_WINDOWPOSCHANGING
struct tagNCCALCSIZE_PARAMS NCCALCSIZE_PARAMS
#define QS_ALLPOSTMESSAGE
struct tagCREATESTRUCTW CREATESTRUCTW
struct tagMEASUREITEMSTRUCT MEASUREITEMSTRUCT
struct _WINDOWPOS WINDOWPOS
#define CB_FINDSTRINGEXACT
struct tagDRAWITEMSTRUCT DRAWITEMSTRUCT
#define WM_ASKCBFORMATNAME
struct tagMINMAXINFO MINMAXINFO
#define CB_GETDROPPEDCONTROLRECT
struct tagCOPYDATASTRUCT COPYDATASTRUCT
struct tagSTYLESTRUCT STYLESTRUCT
struct tagHELPINFO HELPINFO
#define BROADCAST_QUERY_DENY
struct _WINDOWPOS * PWINDOWPOS
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
#define WH_FOREGROUNDIDLE
#define WM_WINDOWPOSCHANGED
_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
#define ObDereferenceObject
#define RtlUnicodeStringToAnsiSize(String)