[WIN32SS] Implement NtGdiAddFontMemResourceEx and NtGdiRemoveFontMemResourceEx. CORE...
[reactos.git] / reactos / win32ss / user / ntuser / win32.h
index 25215ce..cd9d796 100644 (file)
@@ -49,11 +49,9 @@ typedef enum _QS_ROS_TYPES
 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
@@ -77,21 +75,25 @@ typedef struct _W32THREAD
     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
@@ -105,14 +107,14 @@ typedef struct _THREADINFO
     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;
@@ -124,12 +126,14 @@ typedef struct _THREADINFO
     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.
 
@@ -142,8 +146,6 @@ typedef struct _THREADINFO
     // 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;
@@ -151,7 +153,7 @@ typedef struct _THREADINFO
 #if DBG
     USHORT acExclusiveLockCount[GDIObjTypeTotal + 1];
 #endif
-
+#endif // __cplusplus
 } THREADINFO;
 
 #include <poppack.h>
@@ -175,7 +177,7 @@ do { \
 #define IntReferenceProcessInfo(ppi) \
     InterlockedIncrement((volatile LONG*)(&(ppi)->RefCount))
 
-VOID UserDeleteW32Process(PPROCESSINFO);
+VOID UserDeleteW32Process(_Pre_notnull_ __drv_freesMem(Mem) PPROCESSINFO);
 
 #define IntDereferenceProcessInfo(ppi) \
 do { \
@@ -234,14 +236,19 @@ typedef struct _W32PROCESS
 
 #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;
@@ -252,19 +259,25 @@ typedef struct _PROCESSINFO
     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;
@@ -272,8 +285,10 @@ typedef struct _PROCESSINFO
 
 #if DBG
     BYTE DbgChannelLevel[DbgChCount];
+#ifndef __cplusplus
     DWORD DbgHandleCount[TYPE_CTYPES];
-#endif
+#endif // __cplusplus
+#endif // DBG
 } PROCESSINFO;
 
 #if DBG