1 #ifndef _WIN32K_DESKTOP_H
2 #define _WIN32K_DESKTOP_H
7 typedef struct _DESKTOP_OBJECT
9 PVOID DesktopHeap
; /* points to kmode memory! */
16 /* Pointer to the associated window station. */
17 struct _WINSTATION_OBJECT
*WindowStation
;
18 /* Pointer to the active queue. */
19 PVOID ActiveMessageQueue
;
20 /* Rectangle of the work area */
22 /* Handle of the desktop window. */
24 HANDLE PrevActiveWindow
;
25 /* Thread blocking input */
26 PVOID BlockInputThread
;
28 LIST_ENTRY ShellHookWindows
;
29 } DESKTOP_OBJECT
, *PDESKTOP_OBJECT
;
31 extern PDESKTOP_OBJECT InputDesktop
;
32 extern HDESK InputDesktopHandle
;
33 extern PWNDCLASS_OBJECT DesktopWindowClass
;
34 extern HDC ScreenDeviceContext
;
35 extern BOOL g_PaintDesktopVersion
;
37 typedef struct _SHELL_HOOK_WINDOW
41 } SHELL_HOOK_WINDOW
, *PSHELL_HOOK_WINDOW
;
44 InitDesktopImpl(VOID
);
47 CleanupDesktopImpl(VOID
);
50 IntDesktopObjectCreate(PVOID ObjectBody
,
53 struct _OBJECT_ATTRIBUTES
* ObjectAttributes
);
56 IntDesktopObjectDelete(PVOID DeletedObject
);
59 IntGetDesktopWorkArea(PDESKTOP_OBJECT Desktop
, PRECT Rect
);
62 IntDesktopWindowProc(HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
);
68 IntGetDesktopWindow (VOID
);
70 PWINDOW_OBJECT FASTCALL
71 UserGetDesktopWindow(VOID
);
74 IntGetCurrentThreadDesktopWindow(VOID
);
76 PUSER_MESSAGE_QUEUE FASTCALL
77 IntGetFocusMessageQueue(VOID
);
80 IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue
);
82 PDESKTOP_OBJECT FASTCALL
83 IntGetActiveDesktop(VOID
);
86 co_IntShowDesktop(PDESKTOP_OBJECT Desktop
, ULONG Width
, ULONG Height
);
89 IntHideDesktop(PDESKTOP_OBJECT Desktop
);
92 IntGetDesktopObjectHandle(PDESKTOP_OBJECT DesktopObject
);
95 IntValidateDesktopHandle(
97 KPROCESSOR_MODE AccessMode
,
98 ACCESS_MASK DesiredAccess
,
99 PDESKTOP_OBJECT
*Object
);
102 IntParseDesktopPath(PEPROCESS Process
,
103 PUNICODE_STRING DesktopPath
,
108 IntDesktopUpdatePerUserSettings(BOOL bEnable
);
110 BOOL
IntRegisterShellHookWindow(HWND hWnd
);
111 BOOL
IntDeRegisterShellHookWindow(HWND hWnd
);
113 VOID
co_IntShellHookNotify(WPARAM Message
, LPARAM lParam
);
115 #define IntIsActiveDesktop(Desktop) \
116 ((Desktop)->WindowStation->ActiveDesktop == (Desktop))
118 #endif /* _WIN32K_DESKTOP_H */