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_SETFOREGROUNDALLOWED 0x00008000
21 #define W32PF_WAKEWOWEXEC 0x00010000
22 #define W32PF_WAITFORINPUTIDLE 0x00020000
23 #define W32PF_IOWINSTA 0x00040000
24 #define W32PF_CONSOLEFOREGROUND 0x00080000
25 #define W32PF_OLELOADED 0x00100000
26 #define W32PF_SCREENSAVER 0x00200000
27 #define W32PF_IDLESCREENSAVER 0x00400000
28 #define W32PF_ICONTITLEREGISTERED 0x10000000
29 #define W32PF_DPIAWARE 0x20000000
31 #define W32PF_NOWINDOWGHOSTING (0x01000000)
32 #define W32PF_MANUALGUICHECK (0x02000000)
33 #define W32PF_CREATEDWINORDC (0x04000000)
34 #define W32PF_APIHOOKLOADED (0x08000000)
38 typedef enum _QS_ROS_TYPES
46 }QS_ROS_TYPES,*PQS_ROS_TYPES;
48 extern BOOL ClientPfnInit
;
49 extern HINSTANCE hModClient
;
50 extern HANDLE hModuleWin
; // This Win32k Instance.
51 extern PCLS SystemClassList
;
52 extern BOOL RegisteredSysClasses
;
54 typedef struct _WIN32HEAP WIN32HEAP
, *PWIN32HEAP
;
57 // FIXME: Move to ntuser.h
65 typedef struct _W32THREAD
74 DWORD dwEngAcquireCount
;
77 } W32THREAD
, *PW32THREAD
;
79 typedef struct _THREADINFO
84 struct _USER_MESSAGE_QUEUE
* MessageQueue
;
85 struct tagKL
* KeyboardLayout
;
86 PCLIENTTHREADINFO pcti
;
87 struct _DESKTOP
* rpdesk
;
88 PDESKTOPINFO pDeskInfo
;
89 PCLIENTINFO pClientInfo
;
91 PUNICODE_STRING pstrAppName
;
92 LIST_ENTRY psmsSent
; // DispatchingMessagesHead
93 struct _USER_SENT_MESSAGE
*pusmCurrent
;
94 LIST_ENTRY psmsReceiveList
; // SentMessagesListHead
98 INT exitCode
; // QuitExitCode
100 UINT cPaintsReady
; /* Count of paints pending. */
101 UINT cTimersReady
; /* Count of timers pending. */
104 DWORD dwCompatFlags2
;
105 struct _USER_MESSAGE_QUEUE
* pqAttach
;
106 PTHREADINFO ptiSibling
;
109 LPARAM lParamHkCurrent
;
110 WPARAM wParamHkCurrent
;
111 struct tagSBTRACK
* pSBTrack
;
112 HANDLE hEventQueueClient
; // NewMessagesHandle
113 PKEVENT pEventQueueServer
; // NewMessages
118 LIST_ENTRY mlPost
; // PostedMessagesListHead
120 LIST_ENTRY aphkStart
[NB_HOOKS
];
121 CLIENTTHREADINFO cti
; // Used only when no Desktop or pcti NULL.
125 /* Queue state tracking */
126 // Send list QS_SENDMESSAGE
127 // Post list QS_POSTMESSAGE|QS_HOTKEY|QS_PAINT|QS_TIMER|QS_KEY
128 // Hard list QS_MOUSE|QS_KEY only
129 // Accounting of queue bit sets, the rest are flags. QS_TIMER QS_PAINT counts are handled in thread information.
130 //DWORD nCntsQBits[QSIDCOUNTS]; // QS_KEY QS_MOUSEMOVE QS_MOUSEBUTTON QS_POSTMESSAGE QS_SENDMESSAGE QS_HOTKEY
132 LIST_ENTRY LocalDispatchingMessagesHead
;
133 LIST_ENTRY WindowListHead
;
134 LIST_ENTRY W32CallbackListHead
;
135 SINGLE_LIST_ENTRY ReferencesList
;
136 ULONG cExclusiveLocks
;
138 USHORT acExclusiveLockCount
[GDIObjTypeTotal
+ 1];
145 typedef struct _W32HEAP_USER_MAPPING
147 struct _W32HEAP_USER_MAPPING
*Next
;
152 } W32HEAP_USER_MAPPING
, *PW32HEAP_USER_MAPPING
;
156 Information from STARTUPINFOW, psdk/winbase.h.
157 Set from PsGetCurrentProcess()->Peb->ProcessParameters.
159 typedef struct tagUSERSTARTUPINFO
162 DWORD dwX
; // STARTF_USEPOSITION StartupInfo->dwX/Y
164 DWORD dwXSize
; // STARTF_USESIZE StartupInfo->dwX/YSize
166 DWORD dwFlags
; // STARTF_ StartupInfo->dwFlags
167 WORD wShowWindow
; // StartupInfo->wShowWindow
169 } USERSTARTUPINFO
, *PUSERSTARTUPINFO
;
171 typedef struct _W32PROCESS
176 PKEVENT InputIdleEvent
;
177 DWORD StartCursorHideTime
;
178 struct _W32PROCESS
* NextStart
;
180 PVOID pBrushAttrList
;
183 LONG UserHandleCount
;
184 PEX_PUSH_LOCK GDIPushLock
; /* Locking Process during access to structure. */
185 RTL_AVL_TABLE GDIEngUserMemAllocTable
; /* Process AVL Table. */
186 LIST_ENTRY GDIDcAttrFreeList
;
187 LIST_ENTRY GDIBrushAttrFreeList
;
188 } W32PROCESS
, *PW32PROCESS
;
192 typedef struct _PROCESSINFO
196 PTHREADINFO ptiMainThread
;
197 struct _DESKTOP
* rpdeskStartup
;
198 PCLS pclsPrivateList
;
202 DWORD dwhmodLibLoadedMask
;
203 HANDLE ahmodLibLoaded
[CLIBS
];
204 struct _WINSTATION_OBJECT
*prpwinsta
;
206 ACCESS_MASK amwinsta
;
212 DWORD dwRegisteredClasses
;
214 LIST_ENTRY MenuListHead
;
215 FAST_MUTEX PrivateFontListLock
;
216 LIST_ENTRY PrivateFontListHead
;
217 FAST_MUTEX DriverObjListLock
;
218 LIST_ENTRY DriverObjListHead
;
219 struct tagKL
* KeyboardLayout
; // THREADINFO only
220 W32HEAP_USER_MAPPING HeapMappings
;
221 struct _GDI_POOL
*pPoolDcAttr
;
222 struct _GDI_POOL
*pPoolBrushAttr
;
223 struct _GDI_POOL
*pPoolRgnAttr
;
226 BYTE DbgChannelLevel
[DbgChCount
];
231 void NTAPI
UserDbgPreServiceHook(ULONG ulSyscallId
, PULONG_PTR pulArguments
);
232 ULONG_PTR NTAPI
UserDbgPostServiceHook(ULONG ulSyscallId
, ULONG_PTR ulResult
);