- Move W32CLTINFO_TEB structure out of NDK, since it's module-internal structure.

- Add a define for easier accessing this field.

svn path=/trunk/; revision=29069
This commit is contained in:
Aleksey Bragin 2007-09-16 17:37:41 +00:00
parent 0a844e24f0
commit ab5811a512
3 changed files with 23 additions and 24 deletions

View file

@ -674,21 +674,6 @@ typedef struct _GDI_TEB_BATCH
ULONG Buffer[0x136]; ULONG Buffer[0x136];
} GDI_TEB_BATCH, *PGDI_TEB_BATCH; } 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 // Initial TEB
// //
@ -748,7 +733,7 @@ typedef struct _TEB
ULONG GdiClientPID; ULONG GdiClientPID;
ULONG GdiClientTID; ULONG GdiClientTID;
PVOID GdiThreadLocalInfo; PVOID GdiThreadLocalInfo;
W32CLTINFO_TEB Win32ClientInfo; ULONG Win32ClientInfo[62];
PVOID glDispatchTable[0xE9]; PVOID glDispatchTable[0xE9];
ULONG glReserved1[0x1D]; ULONG glReserved1[0x1D];
PVOID glReserved2; PVOID glReserved2;

View file

@ -8,5 +8,19 @@
ULONG FASTCALL IntSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni); 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 */ #endif /* __WIN32K_MISC_H */

View file

@ -116,22 +116,22 @@ IntSetTebWndCallback (HWND * hWnd, PVOID * pWnd)
{ {
HWND hWndS = *hWnd; HWND hWndS = *hWnd;
PWINDOW_OBJECT Window = UserGetWindowObject(*hWnd); PWINDOW_OBJECT Window = UserGetWindowObject(*hWnd);
PTEB Teb = NtCurrentTeb(); PW32CLTINFO_TEB ClientInfo = GetWin32ClientInfo();
*hWnd = Teb->Win32ClientInfo.hWND; *hWnd = ClientInfo->hWND;
*pWnd = Teb->Win32ClientInfo.pvWND; *pWnd = ClientInfo->pvWND;
Teb->Win32ClientInfo.hWND = hWndS; ClientInfo->hWND = hWndS;
Teb->Win32ClientInfo.pvWND = (PVOID) Window; ClientInfo->pvWND = (PVOID) Window;
} }
static VOID static VOID
IntRestoreTebWndCallback (HWND hWnd, PVOID pWnd) IntRestoreTebWndCallback (HWND hWnd, PVOID pWnd)
{ {
PTEB Teb = NtCurrentTeb(); PW32CLTINFO_TEB ClientInfo = GetWin32ClientInfo();
Teb->Win32ClientInfo.hWND = hWnd; ClientInfo->hWND = hWnd;
Teb->Win32ClientInfo.pvWND = pWnd; ClientInfo->pvWND = pWnd;
} }
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/