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");
944 Window->state2 &= ~WNDS2_WMPAINTSENT;
981 ProcessMask =
HIWORD(RemoveMsg);
1006 if (Hit)
return FALSE;
1012 if (MsgFilterMin == 0 && MsgFilterMax == 0)
1014 pti->
pcti->fsChangeBits &= ~QS_ALLPOSTMESSAGE;
1020 pti->
pcti->fsChangeBits &= ~QS_INPUT;
1052 pti->
pcti->fsWakeBits &= ~QS_ALLPOSTMESSAGE;
1053 pti->
pcti->fsChangeBits &= ~QS_ALLPOSTMESSAGE;
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");
3181 pti->
TIF_flags &= ~TIF_WAITFORINPUTIDLE;
3184 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 UINT WPARAM wparam
static UINT WPARAM LPARAM lparam
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)