63 PWND pWnd, pwndDesktop;
77 TRACE(
"The Window is in DESTROY!\n");
109 if (OldCursor == NewCursor)
127 if (pWnd && pWnd->
head.pti->MessageQueue == MessageQueue)
141 FIXME(
"Should animate the cursor, using only the first frame now.\n");
142 CursorFrame = ((
PACON)NewCursor)->aspcur[0];
157 TRACE(
"Removing pointer!\n");
198 if (pWnd && pWnd->
head.pti->MessageQueue == MessageQueue)
204 TRACE(
"Showing pointer!\n");
210 TRACE(
"Removing pointer!\n");
248 TRACE(
"UpdateKeyState wVk: %u, bIsDown: %d\n", wVk, bIsDown);
270 TRACE(
"UpdateKeyStateFromMsg message:%u\n",
msg->message);
272 switch (
msg->message)
296 if (
msg->wParam == XBUTTON1)
298 else if (
msg->wParam == XBUTTON2)
365 HANDLE MessageEventHandle;
375 if (Win32Thread->
pcti)
377 if ( (Win32Thread->
pcti->fsChangeBits &
LOWORD(WakeMask)) ||
380 ERR(
"Chg 0x%x Wake 0x%x Mask 0x%x\n",Win32Thread->
pcti->fsChangeBits, Win32Thread->
pcti->fsWakeBits, WakeMask);
382 return MessageEventHandle;
388 return MessageEventHandle;
400 Win32Thread->
pcti->fsWakeBits = 0;
420 ERR(
"This Message Queue is in Destroy!\n");
422 pti->
pcti->fsWakeBits |= MessageBits;
423 pti->
pcti->fsChangeBits |= MessageBits;
496 pti->
pcti->fsWakeBits &= ~ClrMask;
497 pti->
pcti->fsChangeBits &= ~ClrMask;
584 PWND pwnd, pwndDesktop;
594 switch (
Msg->message)
601 case WM_XBUTTONDBLCLK:
602 case WM_NCXBUTTONDOWN:
604 case WM_NCXBUTTONDBLCLK:
613 MouseHookData.
time =
Msg->time;
625 if (!pwndDesktop)
return;
646 pti = pwnd->
head.pti;
651 ERR(
"Mouse is over a Window with a Dead Message Queue!\n");
656 if ( pti != MessageQueue->
ptiMouse &&
753 ERR(
"Double Free Message\n");
769 ERR(
"AllocateUserMessage(): Not enough memory to allocate a message\n");
812 while (CurrentEntry != ListHead)
829 CurrentEntry = CurrentEntry->
Flink;
836 while (CurrentEntry != ListHead)
842 ERR(
"Remove Window Messages %p From Sent Queue\n",SentMessage);
854 if (SentMessage->
Msg.lParam)
863 CurrentEntry = CurrentEntry->
Flink;
867 CurrentEntry = CurrentEntry->
Flink;
895 SaveMsg = pti->pusmCurrent;
900 (
Message->ptiCallBackSender && pti !=
Message->ptiCallBackSender ))
923 else if ((
Message->CompletionCallback) &&
924 (
Message->ptiCallBackSender == pti))
931 Message->CompletionCallbackContext,
943 ERR(
"Callback Message not processed yet. Requeuing the message\n");
957 if (
Message->CompletionCallback)
959 if (
Message->ptiCallBackSender)
989 Message->flags &= ~SMF_RECEIVERBUSY;
1007 if (!SaveMsg) pti->pcti->CTI_flags &= ~CTI_INSENDMESSAGE;
1008 pti->pusmCurrent = SaveMsg;
1021 BOOL HasPackedLParam,
1029 ERR(
"MsqSendMessageAsync(): Not enough memory to allocate a message\n");
1040 Message->ptiReceiver = ptiReceiver;
1041 Message->ptiCallBackSender = ptiSender;
1043 Message->CompletionCallbackContext = CompletionCallbackContext;
1044 Message->HookMessage = HookMessage;
1045 Message->HasPackedLParam = HasPackedLParam;
1086 TRACE(
"Send message from dying thread %u\n",
Msg);
1089 if (uResult) *uResult = -1;
1096 ERR(
"Sending to Suspended Thread Msg %lx\n",
Msg);
1097 if (uResult) *uResult = -1;
1107 if ( pti->
ppi != ptirec->
ppi && pWnd )
1119 if (uResult) *uResult = -1;
1120 ERR(
"Running across the border without a passport!\n");
1126 if (uResult) *uResult = -1;
1127 ERR(
"Running across the border without a passport!\n");
1135 if (uResult) *uResult = -1;
1136 ERR(
"Can not tell the other State we have Create!\n");
1143 ERR(
"MsqSendMessage(): Not enough memory to allocate a message\n");
1144 if (uResult) *uResult = -1;
1155 Message->ptiReceiver = ptirec;
1157 Message->HookMessage = HookMessage;
1177 PVOID WaitObjects[2];
1179 WaitObjects[0] =
Message->pkCompletionEvent;
1180 WaitObjects[1] = ptirec->pEThread;
1213 ERR(
"MsqSendMessage (blocked) timed out 1 Status %lx\n", WaitStatus);
1218 ERR(
"Bk Receiving Thread woken up dead!\n");
1227 PVOID WaitObjects[3];
1229 WaitObjects[0] =
Message->pkCompletionEvent;
1231 WaitObjects[2] = ptirec->pEThread;
1266 WARN(
"MsqSendMessage timed out 2 Status %lx\n", WaitStatus);
1272 ERR(
"NB Receiving Thread woken up dead!\n");
1294 TRACE(
"User APC\n");
1300 ERR(
"User APC Returned\n");
1351 ERR(
"Post Msg; Thread or Q is Dead!\n");
1363 Message->ExtraInfo = ExtraInfo;
1364 Message->QS_Flags = MessageBits;
1367 if (!HardwareMessage)
1409 if (pwndParent == pwndDesktop)
break;
1428 pDesk->
htEx != hittest)
1430 TRACE(
"ITMM: Track Mouse Move!\n");
1436 TRACE(
"ITMM: Another Wnd %d or Across Border %d\n",
1452 pDesk->
htEx = hittest;
1460 TRACE(
"ITMM: Reset Hover points!\n");
1482 PWND pwndMsg, pwndDesktop;
1490 if (pwndDesktop ==
NULL)
1492 ERR(
"No desktop window!\n");
1516 TRACE(
"Got mouse message for %p, hittest: 0x%x\n",
msg->hwnd, hittest);
1519 if (pwndMsg ==
NULL || pwndMsg->
head.pti->MessageQueue != MessageQueue)
1524 *RemoveMessages =
TRUE;
1529 if ( pwndMsg->
head.pti != pti &&
1534 *RemoveMessages =
FALSE;
1544 WARN(
"Not the same cursor!\n");
1558 msg->wParam = hittest;
1578 (
msg->message == WM_XBUTTONDOWN))
1580 BOOL update = *RemoveMessages;
1590 if ((
msg->message == clk_msg.message) &&
1591 (
msg->hwnd == clk_msg.hwnd) &&
1593 (
msg->message != WM_XBUTTONDOWN || GET_XBUTTON_WPARAM(
msg->wParam) == GET_XBUTTON_WPARAM(clk_msg.wParam)) &&
1609 TRACE(
"Message out of range!!!\n");
1620 TRACE(
"Message out of range!!!\n");
1657 *RemoveMessages =
TRUE;
1658 TRACE(
"Remove and ignore the message\n");
1671 event.message =
msg->message;
1672 event.time =
msg->time;
1673 event.hwnd =
msg->hwnd;
1674 event.paramL =
msg->pt.x;
1675 event.paramH =
msg->pt.y;
1680 hook.wHitTestCode = hittest;
1681 hook.dwExtraInfo = ExtraInfo;
1687 hook.wHitTestCode = hittest;
1688 hook.dwExtraInfo = ExtraInfo;
1691 ERR(
"WH_MOUSE dropped mouse message!\n");
1694 *RemoveMessages =
TRUE;
1703 *RemoveMessages =
TRUE;
1717 (
msg->message == WM_XBUTTONDOWN))
1729 PWND pwndTop = pwndMsg;
1732 TRACE(
"Mouse pti %p pwndMsg pti %p pwndTop pti %p\n",MessageQueue->
ptiMouse,pwndMsg->
head.pti,pwndTop->
head.pti);
1734 if (pwndTop && pwndTop != pwndDesktop)
1755 ERR(
"unknown WM_MOUSEACTIVATE code %d\n",
ret );
1780 const UINT uMsg =
Msg->message;
1782 if (uMsg == VK_PACKET)
1788 switch (
Msg->wParam)
1805 Event.message = uMsg;
1809 Event.paramH =
Msg->lParam & 0x7FFF;
1813 if (*RemoveMessages)
1823 else if (
Msg->wParam >= VK_BROWSER_BACK &&
1824 Msg->wParam <= VK_LAUNCH_APP2)
1848 TRACE(
"Send WM_SYSCOMMAND Alt-Tab/ESC Alt-Shift-Tab/ESC\n");
1870 ERR(
"KeyboardMessage WH_KEYBOARD Call Hook return!\n");
1872 *RemoveMessages =
TRUE;
1947 BOOL AcceptMessage, NotForUs;
1972 ERR(
"Thread Q is locked to ptiSysLock 0x%p pti 0x%p\n",MessageQueue->
ptiSysLock,pti);
1979 ListHead = ListHead->
Flink;
1983 TRACE(
"Skip this message due to it is in play!\n");
1996 ( CurrentMessage->QS_Flags & QSflags ) )
2001 msg = CurrentMessage->Msg;
2002 ExtraInfo = CurrentMessage->ExtraInfo;
2003 QS_Flags = CurrentMessage->QS_Flags;
2011 if (!NotForUs && (MsgFilterLow != 0 || MsgFilterHigh != 0))
2014 if (
msg.message < MsgFilterLow ||
msg.message > MsgFilterHigh)
2047 pti->timeLast =
msg.time;
2048 pti->ptLast =
msg.pt;
2057 pti->pcti->CTI_flags &= ~CTI_THREADSYSLOCK;
2077 ListHead = pti->PostedMessagesListHead.
Flink;
2081 while(ListHead != &pti->PostedMessagesListHead)
2084 ListHead = ListHead->
Flink;
2094 ( ( ( MsgFilterLow == 0 && MsgFilterHigh == 0 ) && CurrentMessage->
QS_Flags & QSflags ) ||
2095 ( MsgFilterLow <= CurrentMessage->
Msg.message && MsgFilterHigh >= CurrentMessage->
Msg.message ) ) )
2099 QS_Flags = CurrentMessage->
QS_Flags;
2100 if (dwQEvent) *dwQEvent = CurrentMessage->
dwQEvent;
2104 if (CurrentMessage->
pti !=
NULL)
2120 UINT MsgFilterMin,
UINT MsgFilterMax)
2142 TRACE(
"MWFNW User APC\n");
2152 if (dwTimeStamp - pti->
pcti->timeLastRead > TimeOut &&
2157 TRACE(
"\nMsqIsHung(pti %p, TimeOut %lu)\n"
2158 "pEThread %p, ThreadsProcess %p, ImageFileName '%s'\n"
2159 "dwTimeStamp = %lu\n"
2160 "pti->pcti->timeLastRead = %lu\n"
2161 "pti->timeLast = %lu\n"
2162 "PsGetThreadFreezeCount(pti->pEThread) = %lu\n",
2165 pti->pEThread ? pti->pEThread->ThreadsProcess :
NULL,
2166 (pti->pEThread && pti->pEThread->ThreadsProcess)
2167 ? pti->pEThread->ThreadsProcess->ImageFileName :
"(None)",
2169 pti->
pcti->timeLastRead,
2196 TRACE(
"HungAppSysTimerProc\n");
2227 TRACE(
"MsqCleanupThreadMsgs %p\n",pti);
2232 pti->
pcti->fsWakeBits = 0;
2233 pti->
pcti->fsChangeBits = 0;
2249 ERR(
"Thread Cleanup Post Messages %p\n",CurrentMessage);
2266 ERR(
"Thread Cleanup Sent Messages %p\n",CurrentSentMessage);
2276 if (CurrentSentMessage->
Msg.lParam)
2288 while (CurrentEntry != &
usmList)
2291 CurrentEntry = CurrentEntry->
Flink;
2293 TRACE(
"Found troubled messages %p on the list\n",CurrentSentMessage);
2299 if (CurrentSentMessage->
Msg.lParam)
2306 else if ( pti == CurrentSentMessage->
ptiSender ||
2320 if (CurrentSentMessage->
Msg.lParam)
2354 ERR(
"MQ Cleanup Post Messages %p\n",CurrentMessage);
2377 TRACE(
"DereferenceObject pCursor\n");
2401 sizeof(*MessageQueue),
2419 return MessageQueue;
2593 for (
i = 0;
i < 256; ++
i)
2631 for (
i = 0;
i < 256; ++
i)
const TCHAR * CompletionCallback(unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pszContext, const TCHAR *pszBegin)
#define DBG_DEFAULT_CHANNEL(ch)
#define ERROR_INVALID_PARAMETER
#define ERROR_ACCESS_DENIED
#define ValidateHwndNoErr(hwnd)
static const WCHAR Message[]
#define InterlockedExchangePointer(Target, Value)
#define EngGetTickCount32()
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeSetEvent(pEvt, foo, foo2)
#define RemoveHeadList(ListHead)
#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)
BOOL FASTCALL co_IntMouseActivateWindow(PWND Wnd)
HWND FASTCALL IntGetCaptureWindow(VOID)
PUSER_MESSAGE_QUEUE gpqForeground
PUSER_MESSAGE_QUEUE gpqForegroundPrev
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
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 UserHMGetHandle(obj)
#define MSQ_STATE_MOVESIZE
#define MSQ_STATE_CAPTURE
#define MSQ_STATE_MENUOWNER
#define CTI_THREADSYSLOCK
#define CTI_INSENDMESSAGE
#define TIF_MSGPOSCHANGED
#define EXCEPTION_EXECUTE_HANDLER
#define RtlEqualMemory(dst, src, len)
VOID NTAPI ExInitializePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
#define ExFreePoolWithTag(_P, _T)
VOID FASTCALL ClearMsgBitsMask(PTHREADINFO pti, UINT MessageBits)
VOID APIENTRY MsqRemoveWindowMessagesFromQueue(PWND Window)
VOID FASTCALL MsqPostQuitMessage(PTHREADINFO pti, ULONG ExitCode)
VOID FASTCALL MsqDestroyMessage(PUSER_MESSAGE Message)
BOOL APIENTRY NtUserSetKeyboardState(LPBYTE pKeyState)
BOOLEAN FASTCALL co_MsqDispatchOneSentMessage(_In_ PTHREADINFO pti)
VOID FASTCALL MsqDecPaintCountQueue(PTHREADINFO pti)
VOID FASTCALL MsqIncPaintCountQueue(PTHREADINFO pti)
BOOLEAN FASTCALL MsqInitializeMessageQueue(PTHREADINFO pti, PUSER_MESSAGE_QUEUE MessageQueue)
VOID FASTCALL MsqReleaseModifierKeys(PUSER_MESSAGE_QUEUE MessageQueue)
static BOOL is_mouse_message(UINT message)
VOID FASTCALL MsqPostMouseMove(PTHREADINFO pti, MSG *Msg, LONG_PTR ExtraInfo)
HWND FASTCALL MsqSetStateWindow(PTHREADINFO pti, ULONG Type, HWND hWnd)
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)
int UserShowCursor(BOOL bShow)
DWORD FASTCALL UserGetKeyState(DWORD dwKey)
VOID FASTCALL IntCoalesceMouseMove(PTHREADINFO pti)
BOOL co_IntProcessKeyboardMessage(MSG *Msg, BOOL *RemoveMessages)
VOID FASTCALL co_MsqInsertMouseMessage(MSG *Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
static PPAGED_LOOKASIDE_LIST pgSendMsgLookasideList
PCURICON_OBJECT FASTCALL UserSetCursor(PCURICON_OBJECT NewCursor, BOOL ForceChange)
static VOID UpdateKeyStateFromMsg(PUSER_MESSAGE_QUEUE MessageQueue, MSG *msg)
static PPAGED_LOOKASIDE_LIST pgMessageLookasideList
WPARAM FASTCALL MsqGetDownKeyState(PUSER_MESSAGE_QUEUE MessageQueue)
BOOL co_IntProcessMouseMessage(MSG *msg, BOOL *RemoveMessages, BOOL *NotForUs, LONG_PTR ExtraInfo, UINT first, UINT last)
DWORD APIENTRY NtUserGetKeyboardState(LPBYTE lpKeyState)
VOID FASTCALL MsqDestroyMessageQueue(_In_ 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 MsqCleanupMessageQueue(PTHREADINFO pti)
static void MsqSendParentNotify(PWND pwnd, WORD event, WORD idChild, POINT pt)
static VOID UpdateKeyState(PUSER_MESSAGE_QUEUE MessageQueue, WORD wVk, BOOL bIsDown)
BOOL FASTCALL IntMsqClearWakeMask(VOID)
VOID FASTCALL MsqPostMessage(PTHREADINFO pti, MSG *Msg, BOOLEAN HardwareMessage, DWORD MessageBits, DWORD dwQEvent, LONG_PTR ExtraInfo)
SHORT APIENTRY NtUserGetKeyState(INT key)
VOID CALLBACK HungAppSysTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
BOOL FASTCALL IsThreadSuspended(PTHREADINFO pti)
static INT FASTCALL filter_contains_hw_range(UINT first, UINT last)
PWND FASTCALL IntTopLevelWindowFromPoint(INT x, INT y)
ULONG_PTR gdwMouseMoveExtraInfo
VOID FASTCALL MsqCleanupThreadMsgs(PTHREADINFO pti)
NTSTATUS NTAPI MsqInitializeImpl(VOID)
VOID FASTCALL FreeUserMessage(PUSER_SENT_MESSAGE Message)
PUSER_MESSAGE_QUEUE gpqCursor
LPARAM FASTCALL MsqSetMessageExtraInfo(LPARAM lParam)
BOOL FASTCALL co_MsqSendMessageAsync(PTHREADINFO ptiReceiver, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, SENDASYNCPROC CompletionCallback, ULONG_PTR CompletionCallbackContext, BOOL HasPackedLParam, INT HookMessage)
BOOL FASTCALL MsqIsHung(PTHREADINFO pti, DWORD TimeOut)
BOOL co_IntProcessHardwareMessage(MSG *Msg, BOOL *RemoveMessages, BOOL *NotForUs, LONG_PTR ExtraInfo, UINT first, UINT last)
BOOL FASTCALL co_MsqReplyMessage(LRESULT lResult)
PUSER_MESSAGE_QUEUE FASTCALL MsqCreateMessageQueue(PTHREADINFO pti)
HANDLE FASTCALL IntMsqSetWakeMask(DWORD WakeMask)
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 IntTrackMouseMove(PWND pwndTrack, PDESKTOP pDesk, PMSG msg, USHORT hittest)
LPARAM FASTCALL MsqGetMessageExtraInfo(VOID)
VOID FASTCALL MsqWakeQueue(PTHREADINFO pti, DWORD MessageBits, BOOL KeyEvent)
PUSER_SENT_MESSAGE FASTCALL AllocateUserMessage(BOOL KEvent)
DWORD gdwMouseMoveTimeStamp
PUSER_MESSAGE FASTCALL MsqCreateMessage(LPMSG Msg)
#define IS_KBD_MESSAGE(message)
#define SMF_RECEIVEDMESSAGE
#define IntReferenceMessageQueue(MsgQueue)
#define IntDereferenceMessageQueue(MsgQueue)
#define IS_MOUSE_MESSAGE(message)
unsigned __int3264 UINT_PTR
NTSYSAPI NTSTATUS NTAPI ZwYieldExecution(VOID)
#define Int32x32To64(a, b)
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)
ULONG NTAPI PsGetThreadFreezeCount(IN PETHREAD Thread)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
LRESULT APIENTRY co_CallHook(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
LRESULT APIENTRY co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
BOOL IntLoadHookModule(int iHookID, HHOOK hHook, BOOL Unload)
PWND APIENTRY co_WinPosWindowFromPoint(IN PWND ScopeWin, IN POINT *WinPoint, IN OUT USHORT *HitTest, IN BOOL Ignore)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterShared(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
static __inline VOID UserDerefObjectCo(PVOID obj)
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
#define WS_EX_NOPARENTNOTIFY
#define WS_EX_TRANSPARENT
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
base of all file and directory entries
struct _USER_MESSAGE_QUEUE * ActiveMessageQueue
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
DWORD dwMouseClickLockTime
PCURICON_OBJECT CurrentCursorObject
struct _USER_SENT_MESSAGE * pusmCurrent
LIST_ENTRY PostedMessagesListHead
DWORD nCntsQBits[QSIDCOUNTS]
struct _USER_SENT_MESSAGE * pusmSent
PKEVENT pEventQueueServer
struct _CLIENTTHREADINFO * pcti
LIST_ENTRY SentMessagesListHead
struct _USER_MESSAGE_QUEUE * MessageQueue
BYTE afKeyState[256 *2/8]
LIST_ENTRY HardwareMessagesListHead
struct _DESKTOP * Desktop
PCURICON_OBJECT CursorObject
BYTE afKeyRecentDown[256/8]
PTHREADINFO ptiCallBackSender
PKEVENT pkCompletionEvent
#define _PRAGMA_WARNING_SUPPRESS(x)
#define __WARNING_USING_UNINIT_VAR
BOOLEAN NTAPI KeSetKernelStackSwapEnable(IN BOOLEAN Enable)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
#define IPHK_PROCESSBYIME
PWND FASTCALL UserGetWindowObject(HWND hWnd)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
#define W32PF_APPSTARTING
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
ULONG NTAPI GreSetPointerShape(_In_ HDC hdc, _In_opt_ HBITMAP hbmMask, _In_opt_ HBITMAP hbmColor, _In_ LONG xHot, _In_ LONG yHot, _In_ LONG x, _In_ LONG y, _In_ FLONG fl)
VOID NTAPI GreMovePointer(_In_ HDC hdc, _In_ LONG x, _In_ LONG y)
FORCEINLINE VOID RECTL_vSetRect(_Out_ RECTL *prcl, _In_ LONG left, _In_ LONG top, _In_ LONG right, _In_ LONG bottom)
FORCEINLINE BOOL RECTL_bPointInRect(_In_ const RECTL *prcl, _In_ INT x, _In_ INT y)
VOID APIENTRY co_IntCallSentMessageCallback(SENDASYNCPROC CompletionCallback, HWND hWnd, UINT Msg, ULONG_PTR CompletionCallbackContext, LRESULT Result)
VOID FASTCALL co_IntDeliverUserAPC(VOID)
PCURICON_OBJECT IntSystemSetCursor(PCURICON_OBJECT pcurNew)
PSYSTEM_CURSORINFO IntGetSysCursorInfo(VOID)
PWND FASTCALL UserGetDesktopWindow(VOID)
VOID FASTCALL IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue)
HWND FASTCALL IntGetDesktopWindow(VOID)
HDC FASTCALL IntGetScreenDC(VOID)
VOID FASTCALL IntNotifyWinEvent(DWORD Event, PWND pWnd, LONG idObject, LONG idChild, DWORD flags)
UINT FASTCALL IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID FASTCALL IdlePing(VOID)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
VOID FASTCALL IdlePong(VOID)
LRESULT FASTCALL co_IntSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
LONG NTAPI UserGetSystemMetrics(ULONG Index)
BOOL FASTCALL UserDereferenceObject(PVOID Object)
VOID FASTCALL UserReferenceObject(PVOID obj)
VOID CALLBACK SystemTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
BOOL FASTCALL IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer)
UINT_PTR FASTCALL IntSetTimer(PWND Window, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, INT Type)
#define ID_EVENT_SYSTIMER_MOUSEHOVER
PWND FASTCALL IntGetParent(PWND Wnd)
PWND FASTCALL IntGetNonChildAncestor(PWND pWnd)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
FORCEINLINE BOOL IntPtInWindow(PWND pwnd, INT x, INT y)
void(CALLBACK * SENDASYNCPROC)(HWND, UINT, ULONG_PTR, LRESULT)
#define EM_SETPASSWORDCHAR
#define QS_ALLPOSTMESSAGE
#define MWMO_INPUTAVAILABLE
#define HCBT_CLICKSKIPPED
#define MA_NOACTIVATEANDEAT
#define MA_ACTIVATEANDEAT
_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
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST * PPAGED_LOOKASIDE_LIST