Author: jimtabor
Date: Tue Apr 8 00:08:25 2008
New Revision: 32893
URL:
http://svn.reactos.org/svn/reactos?rev=32893&view=rev
Log:
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.
Modified:
trunk/reactos/dll/win32/user32/windows/message.c
trunk/reactos/include/reactos/win32k/ntuser.h
Modified: trunk/reactos/dll/win32/user32/windows/message.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/m…
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/message.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/message.c [iso-8859-1] Tue Apr 8 00:08:25
2008
@@ -1081,12 +1081,11 @@
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 @@
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;
}
Modified: trunk/reactos/include/reactos/win32k/ntuser.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntu…
==============================================================================
--- trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] Tue Apr 8 00:08:25 2008
@@ -181,8 +181,11 @@
} W32PROCESSINFO, *PW32PROCESSINFO;
+#define CTI_INSENDMESSAGE 0x0002
+
typedef struct _CLIENTTHREADINFO
{
+ DWORD CTI_flags;
DWORD dwcPumpHook;
} CLIENTTHREADINFO, *PCLIENTTHREADINFO;