- Update W32PROCESS and related code.

svn path=/trunk/; revision=40293
This commit is contained in:
James Tabor 2009-03-30 03:56:53 +00:00
parent 4ff599ba79
commit ea204363b7
6 changed files with 38 additions and 36 deletions

View file

@ -64,19 +64,21 @@ typedef struct _W32HEAP_USER_MAPPING
typedef struct _W32PROCESS
{
PEPROCESS peProcess;
DWORD RefCount;
ULONG Flags; /* W32PF_flags; */
PKEVENT InputIdleEvent;
DWORD StartCursorHideTime;
DWORD NextStart;
PVOID pDCAttrList;
PVOID pBrushAttrList;
DWORD W32Pid;
LONG GDIObjects;
LONG UserObjects;
DWORD cSimpleLock; /* Locking Process during access to structure. */
RTL_AVL_TABLE rtlAvlTable; /* Process AVL Table. */
PEPROCESS peProcess;
DWORD RefCount;
ULONG W32PF_flags;
PKEVENT InputIdleEvent;
DWORD StartCursorHideTime;
DWORD NextStart;
PVOID pDCAttrList;
PVOID pBrushAttrList;
DWORD W32Pid;
LONG GDIHandleCount;
LONG UserHandleCount;
DWORD cSimpleLock; /* Locking Process during access to structure. */
RTL_AVL_TABLE rtlAvlTable; /* Process AVL Table. */
LIST_ENTRY leDCAttrList;
LIST_ENTRY leObjAttrList;
/* ReactOS */
LIST_ENTRY ClassList;
LIST_ENTRY MenuListHead;

View file

@ -129,7 +129,7 @@ Win32kProcessCallback(struct _EPROCESS *Process,
}
/* setup process flags */
Win32Process->Flags = 0;
Win32Process->W32PF_flags = 0;
}
else
{

View file

@ -47,7 +47,7 @@ static LONG NrGuiAppsRunning = 0;
static BOOL FASTCALL
co_AddGuiApp(PW32PROCESS W32Data)
{
W32Data->Flags |= W32PF_CREATEDWINORDC;
W32Data->W32PF_flags |= W32PF_CREATEDWINORDC;
if (InterlockedIncrement(&NrGuiAppsRunning) == 1)
{
BOOL Initialized;
@ -56,7 +56,7 @@ co_AddGuiApp(PW32PROCESS W32Data)
if (!Initialized)
{
W32Data->Flags &= ~W32PF_CREATEDWINORDC;
W32Data->W32PF_flags &= ~W32PF_CREATEDWINORDC;
InterlockedDecrement(&NrGuiAppsRunning);
return FALSE;
}
@ -67,7 +67,7 @@ co_AddGuiApp(PW32PROCESS W32Data)
static void FASTCALL
RemoveGuiApp(PW32PROCESS W32Data)
{
W32Data->Flags &= ~W32PF_CREATEDWINORDC;
W32Data->W32PF_flags &= ~W32PF_CREATEDWINORDC;
if (InterlockedDecrement(&NrGuiAppsRunning) == 0)
{
IntEndDesktopGraphics();
@ -82,14 +82,14 @@ co_IntGraphicsCheck(BOOL Create)
W32Data = PsGetCurrentProcessWin32Process();
if (Create)
{
if (! (W32Data->Flags & W32PF_CREATEDWINORDC) && ! (W32Data->Flags & W32PF_MANUALGUICHECK))
if (! (W32Data->W32PF_flags & W32PF_CREATEDWINORDC) && ! (W32Data->W32PF_flags & W32PF_MANUALGUICHECK))
{
return co_AddGuiApp(W32Data);
}
}
else
{
if ((W32Data->Flags & W32PF_CREATEDWINORDC) && ! (W32Data->Flags & W32PF_MANUALGUICHECK))
if ((W32Data->W32PF_flags & W32PF_CREATEDWINORDC) && ! (W32Data->W32PF_flags & W32PF_MANUALGUICHECK))
{
RemoveGuiApp(W32Data);
}
@ -109,18 +109,18 @@ IntUserManualGuiCheck(LONG Check)
W32Data = PsGetCurrentProcessWin32Process();
if (0 == Check)
{
W32Data->Flags |= W32PF_MANUALGUICHECK;
W32Data->W32PF_flags |= W32PF_MANUALGUICHECK;
}
else if (0 < Check)
{
if (! (W32Data->Flags & W32PF_CREATEDWINORDC))
if (! (W32Data->W32PF_flags & W32PF_CREATEDWINORDC))
{
co_AddGuiApp(W32Data);
}
}
else
{
if (W32Data->Flags & W32PF_CREATEDWINORDC)
if (W32Data->W32PF_flags & W32PF_CREATEDWINORDC)
{
RemoveGuiApp(W32Data);
}

View file

@ -283,12 +283,12 @@ NtUserGetGuiResources(
{
case GR_GDIOBJECTS:
{
Ret = (DWORD)W32Process->GDIObjects;
Ret = (DWORD)W32Process->GDIHandleCount;
break;
}
case GR_USEROBJECTS:
{
Ret = (DWORD)W32Process->UserObjects;
Ret = (DWORD)W32Process->UserHandleCount;
break;
}
default:

View file

@ -342,11 +342,11 @@ NtUserCallOneParam(
if(Enable)
{
Process->Flags &= ~W32PF_NOWINDOWGHOSTING;
Process->W32PF_flags &= ~W32PF_NOWINDOWGHOSTING;
}
else
{
Process->Flags |= W32PF_NOWINDOWGHOSTING;
Process->W32PF_flags |= W32PF_NOWINDOWGHOSTING;
}
RETURN( TRUE);

View file

@ -355,7 +355,7 @@ GDIOBJ_AllocObjWithHandle(ULONG ObjectType)
W32Process = PsGetCurrentProcessWin32Process();
/* HACK HACK HACK: simplest-possible quota implementation - don't allow a process
to take too many GDI objects, itself. */
if (W32Process && W32Process->GDIObjects >= 0x2710)
if (W32Process && W32Process->GDIHandleCount >= 0x2710)
{
DPRINT1("Too many objects for process!!!\n");
GDIDBG_DUMPHANDLETABLE();
@ -426,7 +426,7 @@ LockHandle:
if (W32Process != NULL)
{
InterlockedIncrement(&W32Process->GDIObjects);
InterlockedIncrement(&W32Process->GDIHandleCount);
}
DPRINT("GDIOBJ_AllocObj: 0x%x ob: 0x%x\n", Handle, newObject);
@ -559,7 +559,7 @@ LockHandle:
if (W32Process != NULL)
{
InterlockedDecrement(&W32Process->GDIObjects);
InterlockedDecrement(&W32Process->GDIHandleCount);
}
/* call the cleanup routine. */
@ -688,7 +688,7 @@ IntDeleteHandlesForProcess(struct _EPROCESS *Process, ULONG ObjectType)
W32Process = (PW32PROCESS)Process->Win32Process;
ASSERT(W32Process);
if (W32Process->GDIObjects > 0)
if (W32Process->GDIHandleCount > 0)
{
ProcId = Process->UniqueProcessId;
@ -719,7 +719,7 @@ IntDeleteHandlesForProcess(struct _EPROCESS *Process, ULONG ObjectType)
DPRINT1("Failed to delete object %p!\n", ObjectHandle);
}
if (W32Process->GDIObjects == 0)
if (W32Process->GDIHandleCount == 0)
{
/* there are no more gdi handles for this process, bail */
break;
@ -768,9 +768,9 @@ GDI_CleanupForProcess(struct _EPROCESS *Process)
#endif
DPRINT("Completed cleanup for process %d\n", Process->UniqueProcessId);
if (W32Process->GDIObjects > 0)
if (W32Process->GDIHandleCount > 0)
{
DPRINT1("Leaking %d handles!\n", W32Process->GDIObjects);
DPRINT1("Leaking %d handles!\n", W32Process->GDIHandleCount);
}
return TRUE;
@ -1140,7 +1140,7 @@ LockHandle:
W32Process = (PW32PROCESS)OldProcess->Win32Process;
if (W32Process != NULL)
{
InterlockedDecrement(&W32Process->GDIObjects);
InterlockedDecrement(&W32Process->GDIHandleCount);
}
ObDereferenceObject(OldProcess);
}
@ -1243,7 +1243,7 @@ LockHandle:
W32Process = (PW32PROCESS)OldProcess->Win32Process;
if (W32Process != NULL)
{
InterlockedDecrement(&W32Process->GDIObjects);
InterlockedDecrement(&W32Process->GDIHandleCount);
}
ObDereferenceObject(OldProcess);
}
@ -1257,7 +1257,7 @@ LockHandle:
W32Process = (PW32PROCESS)NewOwner->Win32Process;
if (W32Process != NULL)
{
InterlockedIncrement(&W32Process->GDIObjects);
InterlockedIncrement(&W32Process->GDIHandleCount);
}
}
else