- Add a define for easier accessing this field.
svn path=/trunk/; revision=29069
ULONG Buffer[0x136];
} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
-//
-// Window Client Information structure
-//
-typedef struct _W32CLTINFO_TEB
-{
- ULONG Win32ClientInfo0[2];
- ULONG ulWindowsVersion;
- ULONG ulAppCompatFlags;
- ULONG ulAppCompatFlags2;
- ULONG Win32ClientInfo1[5];
- HWND hWND;
- PVOID pvWND;
- ULONG Win32ClientInfo2[50];
-} W32CLTINFO_TEB, *PW32CLTINFO_TEB;
-
//
// Initial TEB
//
ULONG GdiClientPID;
ULONG GdiClientTID;
PVOID GdiThreadLocalInfo;
- W32CLTINFO_TEB Win32ClientInfo;
+ ULONG Win32ClientInfo[62];
PVOID glDispatchTable[0xE9];
ULONG glReserved1[0x1D];
PVOID glReserved2;
ULONG FASTCALL IntSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni);
+/* Window Client Information structure */
+typedef struct _W32CLTINFO_TEB
+{
+ ULONG Win32ClientInfo0[2];
+ ULONG ulWindowsVersion;
+ ULONG ulAppCompatFlags;
+ ULONG ulAppCompatFlags2;
+ ULONG Win32ClientInfo1[5];
+ HWND hWND;
+ PVOID pvWND;
+ ULONG Win32ClientInfo2[50];
+} W32CLTINFO_TEB, *PW32CLTINFO_TEB;
+
+#define GetWin32ClientInfo() (PW32CLTINFO_TEB)(NtCurrentTeb()->Win32ClientInfo)
#endif /* __WIN32K_MISC_H */
{
HWND hWndS = *hWnd;
PWINDOW_OBJECT Window = UserGetWindowObject(*hWnd);
- PTEB Teb = NtCurrentTeb();
+ PW32CLTINFO_TEB ClientInfo = GetWin32ClientInfo();
- *hWnd = Teb->Win32ClientInfo.hWND;
- *pWnd = Teb->Win32ClientInfo.pvWND;
+ *hWnd = ClientInfo->hWND;
+ *pWnd = ClientInfo->pvWND;
- Teb->Win32ClientInfo.hWND = hWndS;
- Teb->Win32ClientInfo.pvWND = (PVOID) Window;
+ ClientInfo->hWND = hWndS;
+ ClientInfo->pvWND = (PVOID) Window;
}
static VOID
IntRestoreTebWndCallback (HWND hWnd, PVOID pWnd)
{
- PTEB Teb = NtCurrentTeb();
+ PW32CLTINFO_TEB ClientInfo = GetWin32ClientInfo();
- Teb->Win32ClientInfo.hWND = hWnd;
- Teb->Win32ClientInfo.pvWND = pWnd;
+ ClientInfo->hWND = hWnd;
+ ClientInfo->pvWND = pWnd;
}
/* FUNCTIONS *****************************************************************/