mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
- Update W32PROCESS and related code.
svn path=/trunk/; revision=40293
This commit is contained in:
parent
4ff599ba79
commit
ea204363b7
6 changed files with 38 additions and 36 deletions
|
@ -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;
|
||||
|
|
|
@ -129,7 +129,7 @@ Win32kProcessCallback(struct _EPROCESS *Process,
|
|||
}
|
||||
|
||||
/* setup process flags */
|
||||
Win32Process->Flags = 0;
|
||||
Win32Process->W32PF_flags = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue