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;
1510 TRACE(
"Got mouse message for %p, hittest: 0x%x\n",
msg->hwnd, hittest);
1513 if (pwndMsg ==
NULL || pwndMsg->
head.pti->MessageQueue != MessageQueue)
1518 *RemoveMessages =
TRUE;
1523 if ( pwndMsg->
head.pti != pti &&
1528 *RemoveMessages =
FALSE;
1538 WARN(
"Not the same cursor!\n");
1552 msg->wParam = hittest;
1572 (
msg->message == WM_XBUTTONDOWN))
1574 BOOL update = *RemoveMessages;
1584 if ((
msg->message == clk_msg.message) &&
1585 (
msg->hwnd == clk_msg.hwnd) &&
1587 (
msg->message != WM_XBUTTONDOWN || GET_XBUTTON_WPARAM(
msg->wParam) == GET_XBUTTON_WPARAM(clk_msg.wParam)) &&
1603 TRACE(
"Message out of range!!!\n");
1614 TRACE(
"Message out of range!!!\n");
1651 *RemoveMessages =
TRUE;
1652 TRACE(
"Remove and ignore the message\n");
1665 event.message =
msg->message;
1666 event.time =
msg->time;
1667 event.hwnd =
msg->hwnd;
1668 event.paramL =
msg->pt.x;
1669 event.paramH =
msg->pt.y;
1674 hook.wHitTestCode = hittest;
1675 hook.dwExtraInfo = ExtraInfo;
1681 hook.wHitTestCode = hittest;
1682 hook.dwExtraInfo = ExtraInfo;
1685 ERR(
"WH_MOUSE dropped mouse message!\n");
1688 *RemoveMessages =
TRUE;
1697 *RemoveMessages =
TRUE;
1711 (
msg->message == WM_XBUTTONDOWN))
1723 PWND pwndTop = pwndMsg;
1726 TRACE(
"Mouse pti %p pwndMsg pti %p pwndTop pti %p\n",MessageQueue->
ptiMouse,pwndMsg->
head.pti,pwndTop->
head.pti);
1728 if (pwndTop && pwndTop != pwndDesktop)
1749 ERR(
"unknown WM_MOUSEACTIVATE code %d\n",
ret );
1774 const UINT uMsg =
Msg->message;
1776 if (uMsg == VK_PACKET)
1782 switch (
Msg->wParam)
1799 Event.message = uMsg;
1803 Event.paramH =
Msg->lParam & 0x7FFF;
1807 if (*RemoveMessages)
1817 else if (
Msg->wParam >= VK_BROWSER_BACK &&
1818 Msg->wParam <= VK_LAUNCH_APP2)
1842 TRACE(
"Send WM_SYSCOMMAND Alt-Tab/ESC Alt-Shift-Tab/ESC\n");
1864 ERR(
"KeyboardMessage WH_KEYBOARD Call Hook return!\n");
1866 *RemoveMessages =
TRUE;
1941 BOOL AcceptMessage, NotForUs;
1966 ERR(
"Thread Q is locked to ptiSysLock 0x%p pti 0x%p\n",MessageQueue->
ptiSysLock,pti);
1973 ListHead = ListHead->
Flink;
1977 TRACE(
"Skip this message due to it is in play!\n");
1990 ( CurrentMessage->QS_Flags & QSflags ) )
1995 msg = CurrentMessage->Msg;
1996 ExtraInfo = CurrentMessage->ExtraInfo;
1997 QS_Flags = CurrentMessage->QS_Flags;
2005 if (!NotForUs && (MsgFilterLow != 0 || MsgFilterHigh != 0))
2008 if (
msg.message < MsgFilterLow ||
msg.message > MsgFilterHigh)
2041 pti->timeLast =
msg.time;
2042 pti->ptLast =
msg.pt;
2051 pti->pcti->CTI_flags &= ~CTI_THREADSYSLOCK;
2071 ListHead = pti->PostedMessagesListHead.
Flink;
2075 while(ListHead != &pti->PostedMessagesListHead)
2078 ListHead = ListHead->
Flink;
2088 ( ( ( MsgFilterLow == 0 && MsgFilterHigh == 0 ) && CurrentMessage->
QS_Flags & QSflags ) ||
2089 ( MsgFilterLow <= CurrentMessage->
Msg.message && MsgFilterHigh >= CurrentMessage->
Msg.message ) ) )
2093 QS_Flags = CurrentMessage->
QS_Flags;
2094 if (dwQEvent) *dwQEvent = CurrentMessage->
dwQEvent;
2098 if (CurrentMessage->
pti !=
NULL)
2114 UINT MsgFilterMin,
UINT MsgFilterMax)
2136 TRACE(
"MWFNW User APC\n");
2146 if (dwTimeStamp - pti->
pcti->timeLastRead > TimeOut &&
2151 TRACE(
"\nMsqIsHung(pti %p, TimeOut %lu)\n"
2152 "pEThread %p, ThreadsProcess %p, ImageFileName '%s'\n"
2153 "dwTimeStamp = %lu\n"
2154 "pti->pcti->timeLastRead = %lu\n"
2155 "pti->timeLast = %lu\n"
2156 "PsGetThreadFreezeCount(pti->pEThread) = %lu\n",
2159 pti->pEThread ? pti->pEThread->ThreadsProcess :
NULL,
2160 (pti->pEThread && pti->pEThread->ThreadsProcess)
2161 ? pti->pEThread->ThreadsProcess->ImageFileName :
"(None)",
2163 pti->
pcti->timeLastRead,
2190 TRACE(
"HungAppSysTimerProc\n");
2221 TRACE(
"MsqCleanupThreadMsgs %p\n",pti);
2226 pti->
pcti->fsWakeBits = 0;
2227 pti->
pcti->fsChangeBits = 0;
2243 ERR(
"Thread Cleanup Post Messages %p\n",CurrentMessage);
2260 ERR(
"Thread Cleanup Sent Messages %p\n",CurrentSentMessage);
2270 if (CurrentSentMessage->
Msg.lParam)
2282 while (CurrentEntry != &
usmList)
2285 CurrentEntry = CurrentEntry->
Flink;
2287 TRACE(
"Found troubled messages %p on the list\n",CurrentSentMessage);
2293 if (CurrentSentMessage->
Msg.lParam)
2300 else if ( pti == CurrentSentMessage->
ptiSender ||
2314 if (CurrentSentMessage->
Msg.lParam)
2348 ERR(
"MQ Cleanup Post Messages %p\n",CurrentMessage);
2371 TRACE(
"DereferenceObject pCursor\n");
2395 sizeof(*MessageQueue),
2413 return MessageQueue;
2587 for (
i = 0;
i < 256; ++
i)
2625 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 EXCEPTION_EXECUTE_HANDLER
#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 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