Good example how client thread info structure works. Only one flag was seen being set and cleared when multi-thread messages are sent. Researched back in 2001.

svn path=/trunk/; revision=32893
This commit is contained in:
James Tabor 2008-04-08 05:08:25 +00:00
parent 9da1cd7532
commit 4f409ee040
2 changed files with 12 additions and 7 deletions

View file

@ -1081,12 +1081,11 @@ BOOL
STDCALL
InSendMessage(VOID)
{
static DWORD ShowNotImplemented = TRUE;
if (ShowNotImplemented)
{
DbgPrint("InSendMessage is unimplemented\n");
ShowNotImplemented = FALSE;
}
PCLIENTTHREADINFO pcti = ((PW32CLIENTINFO)GetWin32ClientInfo())->pClientThreadInfo;
if ( pcti )
return (pcti->CTI_flags & CTI_INSENDMESSAGE);
else
/* return(NtUserGetThreadState(THREADSTATE_INSENDMESSAGE) != ISMEX_NOSEND); */
return FALSE;
}
@ -1100,8 +1099,11 @@ STDCALL
InSendMessageEx(
LPVOID lpReserved)
{
PCLIENTTHREADINFO pcti = ((PW32CLIENTINFO)GetWin32ClientInfo())->pClientThreadInfo;
if (pcti && !(pcti->CTI_flags & CTI_INSENDMESSAGE)) return ISMEX_NOSEND;
else
/* return NtUserGetThreadState(THREADSTATE_INSENDMESSAGE); */
UNIMPLEMENTED;
return 0;
}

View file

@ -181,8 +181,11 @@ typedef struct _W32PROCESSINFO
} W32PROCESSINFO, *PW32PROCESSINFO;
#define CTI_INSENDMESSAGE 0x0002
typedef struct _CLIENTTHREADINFO
{
DWORD CTI_flags;
DWORD dwcPumpHook;
} CLIENTTHREADINFO, *PCLIENTTHREADINFO;