1 #ifndef __WIN32K_MSGQUEUE_H
2 #define __WIN32K_MSGQUEUE_H
6 typedef struct _USER_MESSAGE
10 } USER_MESSAGE
, *PUSER_MESSAGE
;
12 struct _USER_MESSAGE_QUEUE
;
14 typedef struct _USER_SENT_MESSAGE
18 PKEVENT CompletionEvent
;
20 struct _USER_MESSAGE_QUEUE
* CompletionQueue
;
21 SENDASYNCPROC CompletionCallback
;
22 ULONG_PTR CompletionCallbackContext
;
23 } USER_SENT_MESSAGE
, *PUSER_SENT_MESSAGE
;
25 typedef struct _USER_SENT_MESSAGE_NOTIFY
27 SENDASYNCPROC CompletionCallback
;
28 ULONG_PTR CompletionCallbackContext
;
33 } USER_SENT_MESSAGE_NOTIFY
, *PUSER_SENT_MESSAGE_NOTIFY
;
35 typedef struct _USER_MESSAGE_QUEUE
37 LIST_ENTRY SentMessagesListHead
;
38 LIST_ENTRY PostedMessagesListHead
;
39 LIST_ENTRY HardwareMessagesListHead
;
40 LIST_ENTRY NotifyMessagesListHead
;
47 } USER_MESSAGE_QUEUE
, *PUSER_MESSAGE_QUEUE
;
50 MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue
,
51 PUSER_SENT_MESSAGE Message
);
53 MsqInitializeMessage(PUSER_MESSAGE Message
,
56 MsqCreateMessage(LPMSG Msg
);
58 MsqDestroyMessage(PUSER_MESSAGE Message
);
60 MsqPostMessage(PUSER_MESSAGE_QUEUE MessageQueue
,
61 PUSER_MESSAGE Message
,
64 MsqFindMessage(IN PUSER_MESSAGE_QUEUE MessageQueue
,
69 IN UINT MsgFilterHigh
,
70 OUT PUSER_MESSAGE
* Message
);
72 MsqInitializeMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue
);
74 MsqFreeMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue
);
76 MsqCreateMessageQueue(VOID
);
78 MsqDestroyMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue
);
80 MsqGetHardwareMessageQueue(VOID
);
82 MsqWaitForNewMessage(PUSER_MESSAGE_QUEUE MessageQueue
);
84 MsqInitializeImpl(VOID
);
86 #define MAKE_LONG(x, y) ((((y) & 0xFFFF) << 16) | ((x) & 0xFFFF))
88 #endif /* __WIN32K_MSGQUEUE_H */