KEVENT NewMessages;
/* FIXME: Unknown. */
ULONG QueueStatus;
- /* Current window with focus for this queue. */
+ /* Current window with focus (ie. receives keyboard input) for this queue. */
HWND FocusWindow;
/* True if a window needs painting. */
BOOLEAN PaintPosted;
HWND ActiveWindow;
/* Current capture window for this queue. */
HWND CaptureWindow;
+
+ /* queue state tracking */
+ WORD WakeBits;
+ WORD WakeMask;
+ WORD ChangedBits;
+ WORD ChangedMask;
+
} USER_MESSAGE_QUEUE, *PUSER_MESSAGE_QUEUE;
-VOID
+VOID FASTCALL
MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
PUSER_SENT_MESSAGE Message);
-VOID
+VOID FASTCALL
MsqInitializeMessage(PUSER_MESSAGE Message,
LPMSG Msg);
-PUSER_MESSAGE
+PUSER_MESSAGE FASTCALL
MsqCreateMessage(LPMSG Msg);
-VOID
+VOID FASTCALL
MsqDestroyMessage(PUSER_MESSAGE Message);
-VOID
+VOID FASTCALL
MsqPostMessage(PUSER_MESSAGE_QUEUE MessageQueue,
PUSER_MESSAGE Message);
-BOOLEAN
+VOID FASTCALL
+MsqPostQuitMessage(PUSER_MESSAGE_QUEUE MessageQueue, ULONG ExitCode);
+BOOLEAN STDCALL
MsqFindMessage(IN PUSER_MESSAGE_QUEUE MessageQueue,
IN BOOLEAN Hardware,
IN BOOLEAN Remove,
IN UINT MsgFilterLow,
IN UINT MsgFilterHigh,
OUT PUSER_MESSAGE* Message);
-VOID
+VOID FASTCALL
MsqInitializeMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue);
-VOID
+VOID FASTCALL
MsqFreeMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue);
-PUSER_MESSAGE_QUEUE
+PUSER_MESSAGE_QUEUE FASTCALL
MsqCreateMessageQueue(VOID);
-VOID
+VOID FASTCALL
MsqDestroyMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue);
-PUSER_MESSAGE_QUEUE
+PUSER_MESSAGE_QUEUE FASTCALL
MsqGetHardwareMessageQueue(VOID);
-NTSTATUS
+NTSTATUS FASTCALL
MsqWaitForNewMessage(PUSER_MESSAGE_QUEUE MessageQueue);
-NTSTATUS
+NTSTATUS FASTCALL
MsqInitializeImpl(VOID);
-BOOLEAN
+BOOLEAN FASTCALL
MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue);
-NTSTATUS
+NTSTATUS FASTCALL
MsqWaitForNewMessages(PUSER_MESSAGE_QUEUE MessageQueue);
-VOID
+VOID FASTCALL
MsqSendNotifyMessage(PUSER_MESSAGE_QUEUE MessageQueue,
PUSER_SENT_MESSAGE_NOTIFY NotifyMessage);
-VOID
+VOID FASTCALL
MsqIncPaintCountQueue(PUSER_MESSAGE_QUEUE Queue);
-VOID
+VOID FASTCALL
MsqDecPaintCountQueue(PUSER_MESSAGE_QUEUE Queue);
LRESULT STDCALL
-W32kSendMessage(HWND hWnd,
+IntSendMessage(HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam,
BOOL KernelMessage);
-VOID
+VOID STDCALL
MsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
-VOID
-MsqInsertSystemMessage(MSG* Msg);
+VOID FASTCALL
+MsqInsertSystemMessage(MSG* Msg, BOOL RemMouseMoveMsg);
+
+inline BOOL MsqIsSignaled( PUSER_MESSAGE_QUEUE queue );
+inline VOID MsqSetQueueBits( PUSER_MESSAGE_QUEUE queue, WORD bits );
+inline VOID MsqClearQueueBits( PUSER_MESSAGE_QUEUE queue, WORD bits );
#define MAKE_LONG(x, y) ((((y) & 0xFFFF) << 16) | ((x) & 0xFFFF))