IN UINT MsgFilterHigh,
IN UINT QSflags,
OUT LONG_PTR *ExtraInfo,
+ OUT DWORD *dwQEvent,
OUT PMSG Message)
{
PUSER_MESSAGE CurrentMessage;
*Message = CurrentMessage->Msg;
*ExtraInfo = CurrentMessage->ExtraInfo;
QS_Flags = CurrentMessage->QS_Flags;
+ if (dwQEvent) *dwQEvent = CurrentMessage->dwQEvent;
if (Remove)
{
if (pti->pEThread)
{
BOOL Ret = TRUE;
- ObReferenceObject(pti->pEThread);
if (!(pti->pEThread->Tcb.SuspendCount) && !PsGetThreadFreezeCount(pti->pEThread)) Ret = FALSE;
- ObDereferenceObject(pti->pEThread);
return Ret;
}
return FALSE;
{
CurrentSentMessage->flags |= SMF_RECEIVERFREE;
}
-
+
if (!(CurrentSentMessage->flags & SMF_RECEIVERFREE))
{
/* cleanup posted messages */
while (!IsListEmpty(&MessageQueue->HardwareMessagesListHead))
{
- CurrentEntry = MessageQueue->HardwareMessagesListHead.Flink;
+ CurrentEntry = MessageQueue->HardwareMessagesListHead.Flink;
CurrentMessage = CONTAINING_RECORD(CurrentEntry, USER_MESSAGE, ListEntry);
ERR("MQ Cleanup Post Messages %p\n",CurrentMessage);
MsqDestroyMessage(CurrentMessage);