- Updated headers for the next round of changes.
svn path=/trunk/; revision=45068
FASTCALL
GetThreadDesktopWnd(VOID)
{
- PWND Wnd = GetThreadDesktopInfo()->Wnd;
+ PWND Wnd = GetThreadDesktopInfo()->spwnd;
if (Wnd != NULL)
Wnd = DesktopPtrToUser(Wnd);
return Wnd;
{
PVOID pvDesktopBase;
PVOID pvDesktopLimit;
+ struct _WND *spwnd;
+ DWORD fsHooks;
+ struct tagHOOK * aphkStart[16];
- HANDLE hKernelHeap;
- ULONG_PTR HeapLimit;
HWND hTaskManWindow;
HWND hProgmanWindow;
HWND hShellWindow;
- struct _WND *Wnd;
union
{
typedef struct _DESKTOP
{
- CSHORT Type;
- CSHORT Size;
+ PDESKTOPINFO pDeskInfo;
LIST_ENTRY ListEntry;
-
+ PWND spwndForeground;
+ PWND spwndTray;
+ PWND spwndMessage;
+ PWND spwndTooltip;
+ PSECTION_OBJECT hsectionDesktop;
+ PWIN32HEAP pheapDesktop;
+ ULONG_PTR ulHeapSize;
LIST_ENTRY PtiList;
+ /* use for tracking mouse moves. */
+ PWND spwndTrack;
+ DWORD htEx;
+ RECT rcMouseHover;
+ DWORD dwMouseHoverTime;
+ /* ReactOS */
+ CSHORT Type;
+ CSHORT Size;
+ /* Rectangle of the work area */
+ RECTL WorkArea;
/* Pointer to the associated window station. */
struct _WINSTATION_OBJECT *WindowStation;
/* Pointer to the active queue. */
PVOID ActiveMessageQueue;
- /* Rectangle of the work area */
- RECTL WorkArea;
/* Handle of the desktop window. */
HANDLE DesktopWindow;
/* Thread blocking input */
PVOID BlockInputThread;
-
LIST_ENTRY ShellHookWindows;
-
- PWIN32HEAP pheapDesktop;
- PSECTION_OBJECT DesktopHeapSection;
- PDESKTOPINFO pDeskInfo;
- PWND spwndMessage;
} DESKTOP, *PDESKTOP;
extern PDESKTOP InputDesktop;
static VOID
IntFreeDesktopHeap(IN OUT PDESKTOP Desktop)
{
- if (Desktop->DesktopHeapSection != NULL)
+ if (Desktop->hsectionDesktop != NULL)
{
- ObDereferenceObject(Desktop->DesktopHeapSection);
- Desktop->DesktopHeapSection = NULL;
+ ObDereferenceObject(Desktop->hsectionDesktop);
+ Desktop->hsectionDesktop = NULL;
}
}
/* SYSCALLS *******************************************************************/
NULL);
if (!NT_SUCCESS(Status)) RETURN(NULL);
- DesktopObject->DesktopHeapSection = NULL;
- DesktopObject->pheapDesktop = UserCreateHeap(&DesktopObject->DesktopHeapSection,
+ DesktopObject->hsectionDesktop = NULL;
+ DesktopObject->pheapDesktop = UserCreateHeap(&DesktopObject->hsectionDesktop,
&DesktopHeapSystemBase,
HeapSize);
if (DesktopObject->pheapDesktop == NULL)
/* we're the first, map the heap */
DPRINT("Noone mapped the desktop heap %p yet, so - map it!\n", DesktopObject->pheapDesktop);
Offset.QuadPart = 0;
- Status = MmMapViewOfSection(DesktopObject->DesktopHeapSection,
+ Status = MmMapViewOfSection(DesktopObject->hsectionDesktop,
PsGetCurrentProcess(),
&UserBase,
0,
if (W32Thread->pClientInfo)
W32Thread->pClientInfo->fsHooks = W32Thread->fsHooks;
+ if (W32Thread->pDeskInfo) // Do this for now.
+ W32Thread->pDeskInfo->fsHooks= W32Thread->fsHooks;
+
Hook->head.pti = W32Thread;
Hook->head.rpdesk = W32Thread->Desktop;
}
GetWin32ClientInfo()->fsHooks = W32Thread->fsHooks;
+ if (W32Thread->pDeskInfo) // Do this for now.
+ W32Thread->pDeskInfo->fsHooks= W32Thread->fsHooks;
+
if (0 != Table->Counts[HOOKID_TO_INDEX(Hook->HookId)])
{
Hook->Proc = NULL; /* chain is in use, just mark it and return */
{
/* If there is no desktop window yet, we must be creating it */
pti->Desktop->DesktopWindow = hWnd;
- pti->Desktop->pDeskInfo->Wnd = Wnd;
+ pti->Desktop->pDeskInfo->spwnd = Wnd;
}
/*