extern BOOL ClientPfnInit;
extern HINSTANCE hModClient;
extern HANDLE hModuleWin; // This Win32k Instance.
-extern PCLS SystemClassList;
+extern struct _CLS *SystemClassList;
extern BOOL RegisteredSysClasses;
-typedef struct tagMENUSTATE MENUSTATE, *PMENUSTATE;
-
#include <pshpack1.h>
// FIXME: Move to ntuser.h
typedef struct _TL
PVOID pUMPDObj;
} W32THREAD, *PW32THREAD;
+#ifdef __cplusplus
+typedef struct _THREADINFO : _W32THREAD
+{
+#else
typedef struct _THREADINFO
{
W32THREAD;
+#endif
PTL ptl;
PPROCESSINFO ppi;
struct _USER_MESSAGE_QUEUE* MessageQueue;
struct tagKL* KeyboardLayout;
- PCLIENTTHREADINFO pcti;
+ struct _CLIENTTHREADINFO * pcti;
struct _DESKTOP* rpdesk;
- PDESKTOPINFO pDeskInfo;
- PCLIENTINFO pClientInfo;
+ struct _DESKTOPINFO * pDeskInfo;
+ struct _CLIENTINFO * pClientInfo;
FLONG TIF_flags;
PUNICODE_STRING pstrAppName;
- /* Messages that are currently dispatched to other threads */
- LIST_ENTRY DispatchingMessagesHead; // psmsSent
+ struct _USER_SENT_MESSAGE *pusmSent;
struct _USER_SENT_MESSAGE *pusmCurrent;
/* Queue of messages sent to the queue. */
LIST_ENTRY SentMessagesListHead; // psmsReceiveList
HDESK hdesk;
UINT cPaintsReady; /* Count of paints pending. */
UINT cTimersReady; /* Count of timers pending. */
- PMENUSTATE pMenuState;
+ struct tagMENUSTATE* pMenuState;
DWORD dwExpWinVer;
DWORD dwCompatFlags;
DWORD dwCompatFlags2;
struct _USER_MESSAGE_QUEUE* pqAttach;
PTHREADINFO ptiSibling;
ULONG fsHooks;
- PHOOK sphkCurrent;
+ struct tagHOOK * sphkCurrent;
LPARAM lParamHkCurrent;
WPARAM wParamHkCurrent;
struct tagSBTRACK* pSBTrack;
INT iCursorLevel;
POINT ptLast;
+ INT cEnterCount;
/* Queue of messages posted to the queue. */
LIST_ENTRY PostedMessagesListHead; // mlPost
WORD fsChangeBitsRemoved;
WCHAR wchInjected;
UINT cWindows;
UINT cVisWindows;
+#ifndef __cplusplus /// FIXME!
LIST_ENTRY aphkStart[NB_HOOKS];
CLIENTTHREADINFO cti; // Used only when no Desktop or pcti NULL.
// Accounting of queue bit sets, the rest are flags. QS_TIMER QS_PAINT counts are handled in thread information.
DWORD nCntsQBits[QSIDCOUNTS]; // QS_KEY QS_MOUSEMOVE QS_MOUSEBUTTON QS_POSTMESSAGE QS_SENDMESSAGE QS_HOTKEY
- /* Messages that are currently dispatched by this message queue, required for cleanup */
- LIST_ENTRY LocalDispatchingMessagesHead;
LIST_ENTRY WindowListHead;
LIST_ENTRY W32CallbackListHead;
SINGLE_LIST_ENTRY ReferencesList;
#if DBG
USHORT acExclusiveLockCount[GDIObjTypeTotal + 1];
#endif
-
+#endif // __cplusplus
} THREADINFO;
#include <poppack.h>
#define IntReferenceProcessInfo(ppi) \
InterlockedIncrement((volatile LONG*)(&(ppi)->RefCount))
-VOID UserDeleteW32Process(PPROCESSINFO);
+VOID UserDeleteW32Process(_Pre_notnull_ __drv_freesMem(Mem) PPROCESSINFO);
#define IntDereferenceProcessInfo(ppi) \
do { \
#define CLIBS 32
+#ifdef __cplusplus
+typedef struct _PROCESSINFO : _W32PROCESS
+{
+#else
typedef struct _PROCESSINFO
{
W32PROCESS;
+#endif
PTHREADINFO ptiList;
PTHREADINFO ptiMainThread;
struct _DESKTOP* rpdeskStartup;
- PCLS pclsPrivateList;
- PCLS pclsPublicList;
+ struct _CLS *pclsPrivateList;
+ struct _CLS *pclsPublicList;
PPROCESSINFO ppiNext;
INT cThreads;
HDESK hdeskStartup;
ACCESS_MASK amwinsta;
DWORD dwHotkey;
HMONITOR hMonitor;
+ UINT iClipSerialNumber;
struct _CURICON_OBJECT* pCursorCache;
+ PVOID pClientBase;
+ DWORD dwLpkEntryPoints;
+ PVOID pW32Job;
+ DWORD dwImeCompatFlags;
LUID luidSession;
USERSTARTUPINFO usi;
- PVOID pW32Job;
DWORD dwLayout;
DWORD dwRegisteredClasses;
/* ReactOS */
FAST_MUTEX PrivateFontListLock;
LIST_ENTRY PrivateFontListHead;
+ LIST_ENTRY PrivateMemFontListHead;
+ UINT PrivateMemFontHandleCount;
+
FAST_MUTEX DriverObjListLock;
LIST_ENTRY DriverObjListHead;
- struct tagKL* KeyboardLayout; // THREADINFO only
W32HEAP_USER_MAPPING HeapMappings;
struct _GDI_POOL* pPoolDcAttr;
struct _GDI_POOL* pPoolBrushAttr;
#if DBG
BYTE DbgChannelLevel[DbgChCount];
+#ifndef __cplusplus
DWORD DbgHandleCount[TYPE_CTYPES];
-#endif
+#endif // __cplusplus
+#endif // DBG
} PROCESSINFO;
#if DBG