[WIN32K]
[reactos.git] / subsystems / win32 / win32k / include / win32.h
1 #pragma once
2
3 /* W32PROCESS flags */
4 #define W32PF_CONSOLEAPPLICATION 0x00000001
5 #define W32PF_FORCEOFFFEEDBACK 0x00000002
6 #define W32PF_STARTGLASS 0x00000004
7 #define W32PF_WOW 0x00000008
8 #define W32PF_READSCREENACCESSGRANTED 0x00000010
9 #define W32PF_INITIALIZED 0x00000020
10 #define W32PF_APPSTARTING 0x00000040
11 #define W32PF_WOW64 0x00000080
12 #define W32PF_ALLOWFOREGROUNDACTIVATE 0x00000100
13 #define W32PF_OWNDCCLEANUP 0x00000200
14 #define W32PF_SHOWSTARTGLASSCALLED 0x00000400
15 #define W32PF_FORCEBACKGROUNDPRIORITY 0x00000800
16 #define W32PF_TERMINATED 0x00001000
17 #define W32PF_CLASSESREGISTERED 0x00002000
18 #define W32PF_THREADCONNECTED 0x00004000
19 #define W32PF_PROCESSCONNECTED 0x00008000
20 #define W32PF_WAKEWOWEXEC 0x00010000
21 #define W32PF_WAITFORINPUTIDLE 0x00020000
22 #define W32PF_IOWINSTA 0x00040000
23 #define W32PF_CONSOLEFOREGROUND 0x00080000
24 #define W32PF_OLELOADED 0x00100000
25 #define W32PF_SCREENSAVER 0x00200000
26 #define W32PF_IDLESCREENSAVER 0x00400000
27 #define W32PF_ICONTITLEREGISTERED 0x10000000
28 // ReactOS
29 #define W32PF_NOWINDOWGHOSTING (0x01000000)
30 #define W32PF_MANUALGUICHECK (0x02000000)
31 #define W32PF_CREATEDWINORDC (0x04000000)
32
33 extern BOOL ClientPfnInit;
34 extern HINSTANCE hModClient;
35 extern HANDLE hModuleWin; // This Win32k Instance.
36 extern PCLS SystemClassList;
37 extern BOOL RegisteredSysClasses;
38
39 typedef struct _WIN32HEAP WIN32HEAP, *PWIN32HEAP;
40
41 #include <pshpack1.h>
42 // FIXME! Move to ntuser.h
43 typedef struct _TL
44 {
45 struct _TL* next;
46 PVOID pobj;
47 PVOID pfnFree;
48 } TL, *PTL;
49
50 typedef struct _W32THREAD
51 {
52 PETHREAD pEThread;
53 ULONG RefCount;
54 PTL ptlW32;
55 PVOID pgdiDcattr;
56 PVOID pgdiBrushAttr;
57 PVOID pUMPDObjs;
58 PVOID pUMPDHeap;
59 DWORD dwEngAcquireCount;
60 PVOID pSemTable;
61 PVOID pUMPDObj;
62 } W32THREAD, *PW32THREAD;
63
64 typedef struct _THREADINFO
65 {
66 W32THREAD;
67 PTL ptl;
68 PPROCESSINFO ppi;
69 struct _USER_MESSAGE_QUEUE* MessageQueue;
70 struct _KBL* KeyboardLayout;
71 PCLIENTTHREADINFO pcti;
72 struct _DESKTOP* rpdesk;
73 PDESKTOPINFO pDeskInfo;
74 PCLIENTINFO pClientInfo;
75 FLONG TIF_flags;
76 PUNICODE_STRING pstrAppName;
77 LONG timeLast;
78 ULONG_PTR idLast;
79 INT exitCode;
80 HDESK hdesk;
81 UINT cPaintsReady; /* Count of paints pending. */
82 UINT cTimersReady; /* Count of timers pending. */
83 DWORD dwExpWinVer;
84 DWORD dwCompatFlags;
85 DWORD dwCompatFlags2;
86 struct _USER_MESSAGE_QUEUE* pqAttach;
87 PTHREADINFO ptiSibling;
88 ULONG fsHooks;
89 PHOOK sphkCurrent;
90 LPARAM lParamHkCurrent;
91 WPARAM wParamHkCurrent;
92 struct tagSBTRACK* pSBTrack;
93 HANDLE hEventQueueClient;
94 PKEVENT pEventQueueServer;
95 LIST_ENTRY PtiLink;
96
97 CLIENTTHREADINFO cti; // Used only when no Desktop or pcti NULL.
98 /* ReactOS */
99 LIST_ENTRY WindowListHead;
100 LIST_ENTRY W32CallbackListHead;
101 SINGLE_LIST_ENTRY ReferencesList;
102 } THREADINFO;
103
104 #include <poppack.h>
105
106 typedef struct _W32HEAP_USER_MAPPING
107 {
108 struct _W32HEAP_USER_MAPPING *Next;
109 PVOID KernelMapping;
110 PVOID UserMapping;
111 ULONG_PTR Limit;
112 ULONG Count;
113 } W32HEAP_USER_MAPPING, *PW32HEAP_USER_MAPPING;
114
115
116 /*
117 Information from STARTUPINFOW, psdk/winbase.h.
118 Set from PsGetCurrentProcess()->Peb->ProcessParameters.
119 */
120 typedef struct tagUSERSTARTUPINFO
121 {
122 ULONG cb;
123 DWORD dwX; // STARTF_USEPOSITION StartupInfo->dwX/Y
124 DWORD dwY;
125 DWORD dwXSize; // STARTF_USESIZE StartupInfo->dwX/YSize
126 DWORD dwYSize;
127 DWORD dwFlags; // STARTF_ StartupInfo->dwFlags
128 WORD wShowWindow; // StartupInfo->wShowWindow
129 USHORT cbReserved2;
130 } USERSTARTUPINFO, *PUSERSTARTUPINFO;
131
132 typedef struct _W32PROCESS
133 {
134 PEPROCESS peProcess;
135 DWORD RefCount;
136 ULONG W32PF_flags;
137 PKEVENT InputIdleEvent;
138 DWORD StartCursorHideTime;
139 struct _W32PROCESS * NextStart;
140 PVOID pDCAttrList;
141 PVOID pBrushAttrList;
142 DWORD W32Pid;
143 LONG GDIHandleCount;
144 LONG UserHandleCount;
145 PEX_PUSH_LOCK GDIPushLock; /* Locking Process during access to structure. */
146 RTL_AVL_TABLE GDIEngUserMemAllocTable; /* Process AVL Table. */
147 LIST_ENTRY GDIDcAttrFreeList;
148 LIST_ENTRY GDIBrushAttrFreeList;
149 } W32PROCESS, *PW32PROCESS;
150
151 typedef struct _PROCESSINFO
152 {
153 W32PROCESS;
154 PTHREADINFO ptiList;
155 PTHREADINFO ptiMainThread;
156 struct _DESKTOP* rpdeskStartup;
157 PCLS pclsPrivateList;
158 PCLS pclsPublicList;
159
160 HMONITOR hMonitor;
161
162 USERSTARTUPINFO usi;
163 ULONG Flags;
164 DWORD dwLayout;
165 DWORD dwRegisteredClasses;
166 /* ReactOS */
167 LIST_ENTRY ClassList;
168 LIST_ENTRY MenuListHead;
169 FAST_MUTEX PrivateFontListLock;
170 LIST_ENTRY PrivateFontListHead;
171 FAST_MUTEX DriverObjListLock;
172 LIST_ENTRY DriverObjListHead;
173 struct _KBL* KeyboardLayout; // THREADINFO only
174 W32HEAP_USER_MAPPING HeapMappings;
175 } PROCESSINFO;