- [Win32k] More Class work. Moved to use thread and process information structures.

- Tested wine, Firefox 1.15.xx and AbiWord 2.6.8.

svn path=/trunk/; revision=42234
This commit is contained in:
James Tabor 2009-07-26 16:17:50 +00:00
parent c43cc84996
commit e0b7b058c3
25 changed files with 104 additions and 99 deletions

View file

@ -38,7 +38,7 @@ APIENTRY
EngAcquireSemaphore ( IN HSEMAPHORE hsem )
{
// www.osr.com/ddk/graphics/gdifncs_14br.htm
PW32THREAD W32Thread;
PTHREADINFO W32Thread;
ASSERT(hsem);
IntGdiAcquireSemaphore ( hsem );
W32Thread = PsGetThreadWin32Thread(PsGetCurrentThread());
@ -62,7 +62,7 @@ APIENTRY
EngReleaseSemaphore ( IN HSEMAPHORE hsem )
{
// www.osr.com/ddk/graphics/gdifncs_5u3r.htm
PW32THREAD W32Thread;
PTHREADINFO W32Thread;
ASSERT(hsem);
W32Thread = PsGetThreadWin32Thread(PsGetCurrentThread());
if (W32Thread) --W32Thread->dwEngAcquireCount;

View file

@ -42,7 +42,7 @@ UserGetCallProcInfo(IN HANDLE hCallProc,
OUT PWNDPROC_INFO wpInfo);
void FASTCALL
DestroyProcessClasses(PW32PROCESS Process );
DestroyProcessClasses(PPROCESSINFO Process );
PCLS
IntReferenceClass(IN OUT PCLS BaseClass,
@ -59,6 +59,7 @@ UserRegisterClass(IN CONST WNDCLASSEXW* lpwcx,
IN PUNICODE_STRING ClassName,
IN PUNICODE_STRING MenuName,
IN WNDPROC wpExtra,
IN DWORD fnID,
IN DWORD dwFlags);
BOOL
@ -83,6 +84,7 @@ IntCreateClass(IN CONST WNDCLASSEXW* lpwcx,
IN PUNICODE_STRING ClassName,
IN PUNICODE_STRING MenuName,
IN WNDPROC wpExtra,
IN DWORD fnID,
IN DWORD dwFlags,
IN PDESKTOP Desktop,
IN PPROCESSINFO pi);

View file

@ -22,8 +22,8 @@ typedef struct _ClipboardElement
typedef struct _CLIPBOARDSYSTEM
{
PW32THREAD ClipboardThread;
PW32THREAD ClipboardOwnerThread;
PTHREADINFO ClipboardThread;
PTHREADINFO ClipboardOwnerThread;
PWINDOW_OBJECT ClipboardWindow;
PWINDOW_OBJECT ClipboardViewerWindow;
PWINDOW_OBJECT ClipboardOwnerWindow;

View file

@ -6,7 +6,7 @@
typedef struct tagCURICON_PROCESS
{
LIST_ENTRY ListEntry;
PW32PROCESS Process;
PPROCESSINFO Process;
} CURICON_PROCESS, *PCURICON_PROCESS;
typedef struct _CURICON_OBJECT
@ -69,7 +69,7 @@ typedef struct _SYSTEM_CURSORINFO
HCURSOR FASTCALL IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor, BOOL ForceChange);
BOOL FASTCALL IntSetupCurIconHandles(PWINSTATION_OBJECT WinStaObject);
PCURICON_OBJECT FASTCALL IntCreateCurIconHandle(PWINSTATION_OBJECT WinStaObject);
VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PW32PROCESS Win32Process);
VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
BOOL FASTCALL IntGetCursorLocation(PWINSTATION_OBJECT WinStaObject, POINT *loc);

View file

@ -198,7 +198,7 @@ DesktopHeapGetUserDelta(VOID)
{
PW32HEAP_USER_MAPPING Mapping;
PTHREADINFO pti;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
PWIN32HEAP pheapDesktop;
ULONG_PTR Delta = 0;
@ -228,7 +228,7 @@ static __inline PVOID
DesktopHeapAddressToUser(PVOID lpMem)
{
PW32HEAP_USER_MAPPING Mapping;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
W32Process = PsGetCurrentProcessWin32Process();
Mapping = W32Process->HeapMappings.Next;

View file

@ -44,7 +44,7 @@ typedef struct _BASEOBJECT
ULONG ulShareCount;
USHORT cExclusiveLock;
USHORT BaseFlags;
PW32THREAD Tid;
PTHREADINFO Tid;
} BASEOBJECT, *POBJ;
typedef struct _CLIENTOBJ

View file

@ -97,7 +97,7 @@ IntSetMenuItemRect(PMENU_OBJECT MenuObject, UINT Item, BOOL fByPos, RECTL *rcRec
DWORD APIENTRY UserInsertMenuItem(HMENU hMenu, UINT uItem, BOOL fByPosition, LPCMENUITEMINFOW lpmii);
BOOL FASTCALL
IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process);
IntCleanupMenus(struct _EPROCESS *Process, PPROCESSINFO Win32Process);
BOOL FASTCALL
IntInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, BOOL fByPosition,

View file

@ -34,7 +34,7 @@ typedef struct _W32THREAD
typedef struct _THREADINFO
{
W32THREAD W32Thread;
W32THREAD;
PTL ptl;
PVOID ppi; // FIXME: use PPROCESSINFO
struct _USER_MESSAGE_QUEUE* MessageQueue;
@ -53,7 +53,7 @@ typedef struct _THREADINFO
LIST_ENTRY PtiLink;
CLIENTTHREADINFO cti; // Used only when no Desktop or pcti NULL.
/* ReactOS */
LIST_ENTRY WindowListHead;
LIST_ENTRY W32CallbackListHead;
BOOLEAN IsExiting;
@ -89,7 +89,15 @@ typedef struct _W32PROCESS
RTL_AVL_TABLE GDIEngUserMemAllocTable; /* Process AVL Table. */
LIST_ENTRY GDIDcAttrFreeList;
LIST_ENTRY GDIBrushAttrFreeList;
/* ReactOS, will move to PROCESSINFO */
} W32PROCESS, *PW32PROCESS;
typedef struct _PROCESSINFO
{
W32PROCESS;
PCLS pclsPrivateList;
PCLS pclsPublicList;
/* ReactOS */
LIST_ENTRY ClassList;
LIST_ENTRY MenuListHead;
FAST_MUTEX PrivateFontListLock;
@ -98,16 +106,6 @@ typedef struct _W32PROCESS
LIST_ENTRY DriverObjListHead;
struct _KBL* KeyboardLayout;
W32HEAP_USER_MAPPING HeapMappings;
} W32PROCESS, *PW32PROCESS;
typedef struct _PROCESSINFO
{
W32PROCESS XzyxW32Process; /* Place holder. */
PCLS pclsPrivateList;
PCLS pclsPublicList;
/* ReactOS */
} PROCESSINFO;
#endif /* __INCLUDE_NAPI_WIN32_H */

View file

@ -62,7 +62,7 @@ typedef struct _WINSTATION_OBJECT
} WINSTATION_OBJECT, *PWINSTATION_OBJECT;
extern WINSTATION_OBJECT *InputWindowStation;
extern PW32PROCESS LogonProcess;
extern PPROCESSINFO LogonProcess;
NTSTATUS FASTCALL
InitWindowStationImpl(VOID);

View file

@ -55,7 +55,7 @@ APIENTRY
Win32kProcessCallback(struct _EPROCESS *Process,
BOOLEAN Create)
{
PW32PROCESS Win32Process;
PPROCESSINFO Win32Process;
DECLARE_RETURN(NTSTATUS);
DPRINT("Enter Win32kProcessCallback\n");

View file

@ -28,7 +28,7 @@ IntUserHeapCommitRoutine(IN PVOID Base,
IN OUT PVOID *CommitAddress,
IN OUT PSIZE_T CommitSize)
{
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
PW32HEAP_USER_MAPPING Mapping;
PVOID UserBase = NULL;
NTSTATUS Status;

View file

@ -26,17 +26,17 @@ static struct
int ClsId;
} FnidToiCls[] =
{
{ FNID_BUTTON, ICLS_BUTTON},
{ FNID_EDIT, ICLS_EDIT},
{ FNID_STATIC, ICLS_STATIC},
{ FNID_LISTBOX, ICLS_LISTBOX},
{ FNID_SCROLLBAR, ICLS_SCROLLBAR},
{ FNID_COMBOBOX, ICLS_COMBOBOX},
{ FNID_MDICLIENT, ICLS_MDICLIENT},
{ FNID_COMBOLBOX, ICLS_COMBOLBOX},
{ FNID_DIALOG, ICLS_DIALOG},
{ FNID_MENU, ICLS_MENU},
{ FNID_ICONTITLE, ICLS_ICONTITLE}
{ FNID_BUTTON, ICLS_BUTTON},
{ FNID_EDIT, ICLS_EDIT},
{ FNID_STATIC, ICLS_STATIC},
{ FNID_LISTBOX, ICLS_LISTBOX},
{ FNID_SCROLLBAR, ICLS_SCROLLBAR},
{ FNID_COMBOBOX, ICLS_COMBOBOX},
{ FNID_MDICLIENT, ICLS_MDICLIENT},
{ FNID_COMBOLBOX, ICLS_COMBOLBOX},
{ FNID_DIALOG, ICLS_DIALOG},
{ FNID_MENU, ICLS_MENU},
{ FNID_ICONTITLE, ICLS_ICONTITLE}
};
static
@ -118,7 +118,7 @@ IntDestroyClass(IN OUT PCLS Class)
/* clean all process classes. all process windows must cleaned first!! */
void FASTCALL DestroyProcessClasses(PW32PROCESS Process )
void FASTCALL DestroyProcessClasses(PPROCESSINFO Process )
{
PCLS Class;
PPROCESSINFO pi = (PPROCESSINFO)Process;
@ -815,6 +815,7 @@ IntCreateClass(IN CONST WNDCLASSEXW* lpwcx,
IN PUNICODE_STRING ClassName,
IN PUNICODE_STRING MenuName,
IN WNDPROC wpExtra,
IN DWORD fnID,
IN DWORD dwFlags,
IN PDESKTOP Desktop,
IN PPROCESSINFO pi)
@ -865,14 +866,21 @@ IntCreateClass(IN CONST WNDCLASSEXW* lpwcx,
Class->rpdeskParent = Desktop;
Class->pclsBase = Class;
Class->atomClassName = Atom;
Class->fnid = fnID;
Class->CSF_flags = dwFlags;
if (dwFlags & CSF_SYSTEMCLASS)
{
int iCls;
dwFlags &= ~CSF_ANSIPROC;
Class->WndProcExtra = wpExtra;
Class->System = TRUE;
/* Now set the Atom table, notice only non ntuser.c atoms can go in.*/
if (LockupFnIdToiCls(Class->fnid, &iCls))
{
gpsi->atomSysClass[iCls] = Class->atomClassName;
}
}
_SEH2_TRY
@ -1159,6 +1167,7 @@ UserRegisterClass(IN CONST WNDCLASSEXW* lpwcx,
IN PUNICODE_STRING ClassName,
IN PUNICODE_STRING MenuName,
IN WNDPROC wpExtra,
IN DWORD fnID,
IN DWORD dwFlags)
{
PTHREADINFO pti;
@ -1211,6 +1220,7 @@ UserRegisterClass(IN CONST WNDCLASSEXW* lpwcx,
ClassName,
MenuName,
wpExtra,
fnID,
dwFlags,
pti->Desktop,
pi);
@ -1894,19 +1904,12 @@ UserRegisterSystemClasses(IN ULONG Count,
&ClassName,
&MenuName,
SystemClasses[i].ProcA,
SystemClasses[i].ClassId,
CSF_SYSTEMCLASS,
NULL,
pi);
if (Class != NULL)
{
int iCls;
Class->fnid = SystemClasses[i].ClassId;
if (LockupFnIdToiCls(Class->fnid, &iCls))
{
gpsi->atomSysClass[iCls] = Class->atomClassName;
}
ASSERT(Class->System);
Class->pclsNext = SystemClassList;
(void)InterlockedExchangePointer((PVOID*)&SystemClassList,
@ -2028,6 +2031,7 @@ InvalidParameter:
&CapturedName,
&CapturedMenuName,
wpExtra,
fnID,
Flags);
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)

View file

@ -290,7 +290,7 @@ IntSetupCurIconHandles(PWINSTATION_OBJECT WinSta)
static BOOLEAN FASTCALL
ReferenceCurIconByProcess(PCURICON_OBJECT CurIcon)
{
PW32PROCESS Win32Process;
PPROCESSINFO Win32Process;
PCURICON_PROCESS Current;
Win32Process = PsGetCurrentProcessWin32Process();
@ -387,7 +387,7 @@ IntDestroyCurIconObject(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT CurIcon, BOOL
HBITMAP bmpMask, bmpColor;
BOOLEAN Ret;
PCURICON_PROCESS Current = NULL;
PW32PROCESS W32Process = PsGetCurrentProcessWin32Process();
PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process();
/* Private objects can only be destroyed by their own process */
if (NULL == CurIcon->hModule)
@ -464,7 +464,7 @@ IntDestroyCurIconObject(PWINSTATION_OBJECT WinSta, PCURICON_OBJECT CurIcon, BOOL
}
VOID FASTCALL
IntCleanupCurIcons(struct _EPROCESS *Process, PW32PROCESS Win32Process)
IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process)
{
PWINSTATION_OBJECT WinSta;
PCURICON_OBJECT CurIcon, tmp;

View file

@ -1134,6 +1134,7 @@ NtUserCreateDesktop(
&ClassName,
&MenuName,
NULL,
FNID_MESSAGEWND,
CSF_SYSTEMCLASS,
NULL,
pi);
@ -1846,7 +1847,7 @@ static NTSTATUS
IntUnmapDesktopView(IN PDESKTOP DesktopObject)
{
PW32THREADINFO ti;
PW32PROCESS CurrentWin32Process;
PPROCESSINFO CurrentWin32Process;
PW32HEAP_USER_MAPPING HeapMapping, *PrevLink;
NTSTATUS Status = STATUS_SUCCESS;
@ -1897,7 +1898,7 @@ static NTSTATUS
IntMapDesktopView(IN PDESKTOP DesktopObject)
{
PW32THREADINFO ti;
PW32PROCESS CurrentWin32Process;
PPROCESSINFO CurrentWin32Process;
PW32HEAP_USER_MAPPING HeapMapping, *PrevLink;
PVOID UserBase = NULL;
SIZE_T ViewSize = 0;

View file

@ -45,7 +45,7 @@ static LONG NrGuiAppsRunning = 0;
/* FUNCTIONS *****************************************************************/
static BOOL FASTCALL
co_AddGuiApp(PW32PROCESS W32Data)
co_AddGuiApp(PPROCESSINFO W32Data)
{
W32Data->W32PF_flags |= W32PF_CREATEDWINORDC;
if (InterlockedIncrement(&NrGuiAppsRunning) == 1)
@ -65,7 +65,7 @@ co_AddGuiApp(PW32PROCESS W32Data)
}
static void FASTCALL
RemoveGuiApp(PW32PROCESS W32Data)
RemoveGuiApp(PPROCESSINFO W32Data)
{
W32Data->W32PF_flags &= ~W32PF_CREATEDWINORDC;
if (InterlockedDecrement(&NrGuiAppsRunning) == 0)
@ -77,7 +77,7 @@ RemoveGuiApp(PW32PROCESS W32Data)
BOOL FASTCALL
co_IntGraphicsCheck(BOOL Create)
{
PW32PROCESS W32Data;
PPROCESSINFO W32Data;
W32Data = PsGetCurrentProcessWin32Process();
if (Create)
@ -102,7 +102,7 @@ VOID
FASTCALL
IntUserManualGuiCheck(LONG Check)
{
PW32PROCESS W32Data;
PPROCESSINFO W32Data;
DPRINT("Enter IntUserManualGuiCheck\n");

View file

@ -313,7 +313,7 @@ PMENU_OBJECT FASTCALL
IntCreateMenu(PHANDLE Handle, BOOL IsMenuBar)
{
PMENU_OBJECT Menu;
PW32PROCESS CurrentWin32Process;
PPROCESSINFO CurrentWin32Process;
Menu = (PMENU_OBJECT)UserCreateObject(
gHandleTable, Handle,
@ -418,7 +418,7 @@ IntCloneMenuItems(PMENU_OBJECT Destination, PMENU_OBJECT Source)
PMENU_OBJECT FASTCALL
IntCloneMenu(PMENU_OBJECT Source)
{
PW32PROCESS CurrentWin32Process;
PPROCESSINFO CurrentWin32Process;
HANDLE hMenu;
PMENU_OBJECT Menu;
@ -1284,7 +1284,7 @@ IntSetMenuItemRect(PMENU_OBJECT Menu, UINT Item, BOOL fByPos, RECTL *rcRect)
* Internal function. Called when the process is destroyed to free the remaining menu handles.
*/
BOOL FASTCALL
IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process)
IntCleanupMenus(struct _EPROCESS *Process, PPROCESSINFO Win32Process)
{
PEPROCESS CurrentProcess;
PLIST_ENTRY LastHead = NULL;

View file

@ -2224,7 +2224,7 @@ NtUserWaitForInputIdle(
IN BOOL Unknown2)
{
PEPROCESS Process;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
NTSTATUS Status;
HANDLE Handles[2];
LARGE_INTEGER Timeout;
@ -2246,7 +2246,7 @@ NtUserWaitForInputIdle(
return WAIT_FAILED;
}
W32Process = (PW32PROCESS)Process->Win32Process;
W32Process = (PPROCESSINFO)Process->Win32Process;
if (!W32Process)
{
ObDereferenceObject(Process);

View file

@ -260,7 +260,7 @@ NtUserGetGuiResources(
DWORD uiFlags)
{
PEPROCESS Process;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
NTSTATUS Status;
DWORD Ret = 0;
DECLARE_RETURN(DWORD);
@ -281,7 +281,7 @@ NtUserGetGuiResources(
RETURN( 0);
}
W32Process = (PW32PROCESS)Process->Win32Process;
W32Process = (PPROCESSINFO)Process->Win32Process;
if(!W32Process)
{
ObDereferenceObject(Process);

View file

@ -71,7 +71,7 @@ IdlePing(VOID)
{
HWND hWnd;
PWINDOW_OBJECT Window;
PW32PROCESS W32d = PsGetCurrentProcessWin32Process();
PPROCESSINFO W32d = PsGetCurrentProcessWin32Process();
hWnd = UserGetForegroundWindow();

View file

@ -874,7 +874,7 @@ NtUserProcessConnect(
{
UserEnterShared();
GetW32ThreadInfo();
PW32PROCESS W32Process = PsGetCurrentProcessWin32Process();
PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process();
_SEH2_TRY
{
pUserConnect->siClient.psi = gpsi;

View file

@ -15,7 +15,7 @@
/* registered Logon process */
PW32PROCESS LogonProcess = NULL;
PPROCESSINFO LogonProcess = NULL;
BOOL FASTCALL
co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
@ -41,12 +41,12 @@ co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
return FALSE;
}
LogonProcess = (PW32PROCESS)Process->Win32Process;
LogonProcess = (PPROCESSINFO)Process->Win32Process;
}
else
{
/* Deregister the logon process */
if (LogonProcess != (PW32PROCESS)Process->Win32Process)
if (LogonProcess != (PPROCESSINFO)Process->Win32Process)
{
ObDereferenceObject(Process);
return FALSE;
@ -314,7 +314,7 @@ NtUserCallOneParam(
case ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING:
{
BOOL Enable;
PW32PROCESS Process = PsGetCurrentProcessWin32Process();
PPROCESSINFO Process = PsGetCurrentProcessWin32Process();
if(Process != NULL)
{

View file

@ -348,7 +348,7 @@ UserFreeWindowInfo(PW32THREADINFO ti, PWINDOW_OBJECT WindowObject)
*/
static LRESULT co_UserFreeWindow(PWINDOW_OBJECT Window,
PW32PROCESS ProcessData,
PPROCESSINFO ProcessData,
PTHREADINFO ThreadData,
BOOLEAN SendMessages)
{

View file

@ -421,7 +421,7 @@ IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristics)
if (Characteristics & FR_PRIVATE)
{
PW32PROCESS Win32Process = PsGetCurrentProcessWin32Process();
PPROCESSINFO Win32Process = PsGetCurrentProcessWin32Process();
IntLockProcessPrivateFonts(Win32Process);
InsertTailList(&Win32Process->PrivateFontListHead, &Entry->ListEntry);
IntUnLockProcessPrivateFonts(Win32Process);
@ -940,7 +940,7 @@ FindFaceNameInList(PUNICODE_STRING FaceName, PLIST_ENTRY Head)
static PFONTGDI FASTCALL
FindFaceNameInLists(PUNICODE_STRING FaceName)
{
PW32PROCESS Win32Process;
PPROCESSINFO Win32Process;
PFONTGDI Font;
/* Search the process local list */
@ -2690,7 +2690,7 @@ TextIntRealizeFont(HFONT FontHandle, PTEXTOBJ pTextObj)
NTSTATUS Status = STATUS_SUCCESS;
PTEXTOBJ TextObj;
UNICODE_STRING FaceName;
PW32PROCESS Win32Process;
PPROCESSINFO Win32Process;
UINT MatchScore;
if (!pTextObj)
@ -3003,7 +3003,7 @@ NtGdiGetFontFamilyInfo(HDC Dc,
LOGFONTW LogFont;
PFONTFAMILYINFO Info;
DWORD Count;
PW32PROCESS Win32Process;
PPROCESSINFO Win32Process;
/* Make a safe copy */
Status = MmCopyFromCaller(&LogFont, UnsafeLogFont, sizeof(LOGFONTW));

View file

@ -345,7 +345,7 @@ GDIOBJ_AllocObj(UCHAR BaseType)
POBJ INTERNAL_CALL
GDIOBJ_AllocObjWithHandle(ULONG ObjectType)
{
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
POBJ newObject = NULL;
HANDLE CurrentProcessId, LockedProcessId;
UCHAR TypeIndex;
@ -398,7 +398,7 @@ LockHandle:
PrevProcId = InterlockedCompareExchangePointer((PVOID*)&Entry->ProcessId, LockedProcessId, 0);
if (PrevProcId == NULL)
{
PW32THREAD Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
PTHREADINFO Thread = (PTHREADINFO)PsGetCurrentThreadWin32Thread();
HGDIOBJ Handle;
Entry->KernelData = newObject;
@ -540,11 +540,11 @@ LockHandle:
Object = Entry->KernelData;
if ((Object->cExclusiveLock == 0 ||
Object->Tid == (PW32THREAD)PsGetCurrentThreadWin32Thread()) &&
Object->Tid == (PTHREADINFO)PsGetCurrentThreadWin32Thread()) &&
Object->ulShareCount == 0)
{
BOOL Ret;
PW32PROCESS W32Process = PsGetCurrentProcessWin32Process();
PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process();
/* Clear the basetype field so when unlocking the handle it gets finally deleted and increment reuse counter */
Entry->Type = (Entry->Type + GDI_ENTRY_REUSE_INC) & ~GDI_ENTRY_BASETYPE_MASK;
@ -684,9 +684,9 @@ IntDeleteHandlesForProcess(struct _EPROCESS *Process, ULONG ObjectType)
PGDI_TABLE_ENTRY Entry, End;
ULONG Index = RESERVE_ENTRIES_COUNT;
HANDLE ProcId;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
W32Process = (PW32PROCESS)Process->Win32Process;
W32Process = (PPROCESSINFO)Process->Win32Process;
ASSERT(W32Process);
if (W32Process->GDIHandleCount > 0)
@ -740,7 +740,7 @@ BOOL INTERNAL_CALL
GDI_CleanupForProcess(struct _EPROCESS *Process)
{
PEPROCESS CurrentProcess;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
DPRINT("Starting CleanupForProcess prochandle %x Pid %d\n", Process, Process->UniqueProcessId);
CurrentProcess = PsGetCurrentProcess();
@ -749,7 +749,7 @@ GDI_CleanupForProcess(struct _EPROCESS *Process)
KeAttachProcess(&Process->Pcb);
}
W32Process = (PW32PROCESS)CurrentProcess->Win32Process;
W32Process = (PPROCESSINFO)CurrentProcess->Win32Process;
/* Delete objects. Begin with types that are not referenced by other types */
IntDeleteHandlesForProcess(Process, GDILoObjType_LO_DC_TYPE);
@ -862,7 +862,7 @@ GDIOBJ_LockObj(HGDIOBJ hObj, DWORD ExpectedType)
if ( (Entry->KernelData != NULL) &&
((Entry->Type << GDI_ENTRY_UPPER_SHIFT) == HandleUpper) )
{
PW32THREAD Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
PTHREADINFO Thread = (PTHREADINFO)PsGetCurrentThreadWin32Thread();
Object = Entry->KernelData;
if (Object->cExclusiveLock == 0)
@ -1071,7 +1071,7 @@ GDIOBJ_ConvertToStockObj(HGDIOBJ *phObj)
*/
PGDI_TABLE_ENTRY Entry;
HANDLE ProcessId, LockedProcessId, PrevProcId;
PW32THREAD Thread;
PTHREADINFO Thread;
HGDIOBJ hObj;
GDIDBG_INITLOOPTRACE();
@ -1081,7 +1081,7 @@ GDIOBJ_ConvertToStockObj(HGDIOBJ *phObj)
DPRINT("GDIOBJ_ConvertToStockObj: hObj: 0x%08x\n", hObj);
Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
Thread = (PTHREADINFO)PsGetCurrentThreadWin32Thread();
if (!GDI_HANDLE_IS_STOCKOBJ(hObj))
{
@ -1115,7 +1115,7 @@ LockHandle:
PrevType = InterlockedCompareExchange(&Entry->Type, NewType, OldType);
if (PrevType == OldType && Entry->KernelData != NULL)
{
PW32THREAD PrevThread;
PTHREADINFO PrevThread;
POBJ Object;
/* We successfully set the stock object flag.
@ -1131,14 +1131,14 @@ LockHandle:
if (PrevProcId != GDI_GLOBAL_PROCESS)
{
PEPROCESS OldProcess;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
NTSTATUS Status;
/* FIXME */
Status = PsLookupProcessByProcessId((HANDLE)((ULONG_PTR)PrevProcId & ~0x1), &OldProcess);
if (NT_SUCCESS(Status))
{
W32Process = (PW32PROCESS)OldProcess->Win32Process;
W32Process = (PPROCESSINFO)OldProcess->Win32Process;
if (W32Process != NULL)
{
InterlockedDecrement(&W32Process->GDIHandleCount);
@ -1200,14 +1200,14 @@ GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS NewOwner)
{
PGDI_TABLE_ENTRY Entry;
HANDLE ProcessId, LockedProcessId, PrevProcId;
PW32THREAD Thread;
PTHREADINFO Thread;
BOOL Ret = TRUE;
GDIDBG_INITLOOPTRACE();
DPRINT("GDIOBJ_SetOwnership: hObj: 0x%x, NewProcess: 0x%x\n", ObjectHandle, (NewOwner ? PsGetProcessId(NewOwner) : 0));
Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
Thread = (PTHREADINFO)PsGetCurrentThreadWin32Thread();
if (!GDI_HANDLE_IS_STOCKOBJ(ObjectHandle))
{
@ -1221,7 +1221,7 @@ LockHandle:
PrevProcId = InterlockedCompareExchangePointer((PVOID*)&Entry->ProcessId, ProcessId, LockedProcessId);
if (PrevProcId == ProcessId)
{
PW32THREAD PrevThread;
PTHREADINFO PrevThread;
if ((Entry->Type & GDI_ENTRY_BASETYPE_MASK) != 0)
{
@ -1231,7 +1231,7 @@ LockHandle:
if (Object->cExclusiveLock == 0 || PrevThread == Thread)
{
PEPROCESS OldProcess;
PW32PROCESS W32Process;
PPROCESSINFO W32Process;
NTSTATUS Status;
/* dereference the process' object counter */
@ -1241,7 +1241,7 @@ LockHandle:
Status = PsLookupProcessByProcessId((HANDLE)((ULONG_PTR)PrevProcId & ~0x1), &OldProcess);
if (NT_SUCCESS(Status))
{
W32Process = (PW32PROCESS)OldProcess->Win32Process;
W32Process = (PPROCESSINFO)OldProcess->Win32Process;
if (W32Process != NULL)
{
InterlockedDecrement(&W32Process->GDIHandleCount);
@ -1255,7 +1255,7 @@ LockHandle:
ProcessId = PsGetProcessId(NewOwner);
/* Increase the new process' object counter */
W32Process = (PW32PROCESS)NewOwner->Win32Process;
W32Process = (PPROCESSINFO)NewOwner->Win32Process;
if (W32Process != NULL)
{
InterlockedIncrement(&W32Process->GDIHandleCount);
@ -1328,7 +1328,7 @@ BOOL INTERNAL_CALL
GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo)
{
PGDI_TABLE_ENTRY FromEntry;
PW32THREAD Thread;
PTHREADINFO Thread;
HANDLE FromProcessId, FromLockedProcessId, FromPrevProcId;
BOOL Ret = TRUE;
@ -1336,7 +1336,7 @@ GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo)
DPRINT("GDIOBJ_CopyOwnership: from: 0x%x, to: 0x%x\n", CopyFrom, CopyTo);
Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
Thread = (PTHREADINFO)PsGetCurrentThreadWin32Thread();
if (!GDI_HANDLE_IS_STOCKOBJ(CopyFrom) && !GDI_HANDLE_IS_STOCKOBJ(CopyTo))
{
@ -1350,7 +1350,7 @@ LockHandleFrom:
FromPrevProcId = InterlockedCompareExchangePointer((PVOID*)&FromEntry->ProcessId, FromProcessId, FromLockedProcessId);
if (FromPrevProcId == FromProcessId)
{
PW32THREAD PrevThread;
PTHREADINFO PrevThread;
POBJ Object;
if ((FromEntry->Type & GDI_ENTRY_BASETYPE_MASK) != 0)

View file

@ -138,7 +138,7 @@ UserHeapReAlloc(PVOID lpMem,
static __inline PVOID
UserHeapAddressToUser(PVOID lpMem)
{
PW32PROCESS W32Process = PsGetCurrentProcessWin32Process();
PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process();
return (PVOID)(((ULONG_PTR)lpMem - (ULONG_PTR)GlobalUserHeap) +
(ULONG_PTR)W32Process->HeapMappings.UserMapping);
}