mirror of
https://github.com/reactos/reactos.git
synced 2024-06-28 17:01:28 +00:00
- [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:
parent
c43cc84996
commit
e0b7b058c3
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -44,7 +44,7 @@ typedef struct _BASEOBJECT
|
|||
ULONG ulShareCount;
|
||||
USHORT cExclusiveLock;
|
||||
USHORT BaseFlags;
|
||||
PW32THREAD Tid;
|
||||
PTHREADINFO Tid;
|
||||
} BASEOBJECT, *POBJ;
|
||||
|
||||
typedef struct _CLIENTOBJ
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -55,7 +55,7 @@ APIENTRY
|
|||
Win32kProcessCallback(struct _EPROCESS *Process,
|
||||
BOOLEAN Create)
|
||||
{
|
||||
PW32PROCESS Win32Process;
|
||||
PPROCESSINFO Win32Process;
|
||||
DECLARE_RETURN(NTSTATUS);
|
||||
|
||||
DPRINT("Enter Win32kProcessCallback\n");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -71,7 +71,7 @@ IdlePing(VOID)
|
|||
{
|
||||
HWND hWnd;
|
||||
PWINDOW_OBJECT Window;
|
||||
PW32PROCESS W32d = PsGetCurrentProcessWin32Process();
|
||||
PPROCESSINFO W32d = PsGetCurrentProcessWin32Process();
|
||||
|
||||
hWnd = UserGetForegroundWindow();
|
||||
|
||||
|
|
|
@ -874,7 +874,7 @@ NtUserProcessConnect(
|
|||
{
|
||||
UserEnterShared();
|
||||
GetW32ThreadInfo();
|
||||
PW32PROCESS W32Process = PsGetCurrentProcessWin32Process();
|
||||
PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process();
|
||||
_SEH2_TRY
|
||||
{
|
||||
pUserConnect->siClient.psi = gpsi;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue