-include/ndk/rtltypes.h: add MAX_ATOM_LEN define
[reactos.git] / reactos / subsys / win32k / include / desktop.h
1 #ifndef _WIN32K_DESKTOP_H
2 #define _WIN32K_DESKTOP_H
3
4 #include "msgqueue.h"
5 #include "window.h"
6
7 typedef struct _DESKTOP_OBJECT
8 {
9 PVOID DesktopHeap; /* points to kmode memory! */
10
11 CSHORT Type;
12 CSHORT Size;
13 LIST_ENTRY ListEntry;
14
15 UNICODE_STRING Name;
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 */
21 RECT WorkArea;
22 /* Handle of the desktop window. */
23 HANDLE DesktopWindow;
24 HANDLE PrevActiveWindow;
25 /* Thread blocking input */
26 PVOID BlockInputThread;
27
28 LIST_ENTRY ShellHookWindows;
29 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
30
31 extern PDESKTOP_OBJECT InputDesktop;
32 extern HDESK InputDesktopHandle;
33 extern PWNDCLASS_OBJECT DesktopWindowClass;
34 extern HDC ScreenDeviceContext;
35 extern BOOL g_PaintDesktopVersion;
36
37 typedef struct _SHELL_HOOK_WINDOW
38 {
39 LIST_ENTRY ListEntry;
40 HWND hWnd;
41 } SHELL_HOOK_WINDOW, *PSHELL_HOOK_WINDOW;
42
43 NTSTATUS FASTCALL
44 InitDesktopImpl(VOID);
45
46 NTSTATUS FASTCALL
47 CleanupDesktopImpl(VOID);
48
49 NTSTATUS STDCALL
50 IntDesktopObjectCreate(PVOID ObjectBody,
51 PVOID Parent,
52 PWSTR RemainingPath,
53 struct _OBJECT_ATTRIBUTES* ObjectAttributes);
54
55 VOID STDCALL
56 IntDesktopObjectDelete(PVOID DeletedObject);
57
58 VOID FASTCALL
59 IntGetDesktopWorkArea(PDESKTOP_OBJECT Desktop, PRECT Rect);
60
61 LRESULT CALLBACK
62 IntDesktopWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
63
64 HDC FASTCALL
65 IntGetScreenDC(VOID);
66
67 HWND FASTCALL
68 IntGetDesktopWindow (VOID);
69
70 PWINDOW_OBJECT FASTCALL
71 UserGetDesktopWindow(VOID);
72
73 HWND FASTCALL
74 IntGetCurrentThreadDesktopWindow(VOID);
75
76 PUSER_MESSAGE_QUEUE FASTCALL
77 IntGetFocusMessageQueue(VOID);
78
79 VOID FASTCALL
80 IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue);
81
82 PDESKTOP_OBJECT FASTCALL
83 IntGetActiveDesktop(VOID);
84
85 NTSTATUS FASTCALL
86 co_IntShowDesktop(PDESKTOP_OBJECT Desktop, ULONG Width, ULONG Height);
87
88 NTSTATUS FASTCALL
89 IntHideDesktop(PDESKTOP_OBJECT Desktop);
90
91 HDESK FASTCALL
92 IntGetDesktopObjectHandle(PDESKTOP_OBJECT DesktopObject);
93
94 NTSTATUS FASTCALL
95 IntValidateDesktopHandle(
96 HDESK Desktop,
97 KPROCESSOR_MODE AccessMode,
98 ACCESS_MASK DesiredAccess,
99 PDESKTOP_OBJECT *Object);
100
101 NTSTATUS FASTCALL
102 IntParseDesktopPath(PEPROCESS Process,
103 PUNICODE_STRING DesktopPath,
104 HWINSTA *hWinSta,
105 HDESK *hDesktop);
106
107 BOOL FASTCALL
108 IntDesktopUpdatePerUserSettings(BOOL bEnable);
109
110 BOOL IntRegisterShellHookWindow(HWND hWnd);
111 BOOL IntDeRegisterShellHookWindow(HWND hWnd);
112
113 VOID co_IntShellHookNotify(WPARAM Message, LPARAM lParam);
114
115 #define IntIsActiveDesktop(Desktop) \
116 ((Desktop)->WindowStation->ActiveDesktop == (Desktop))
117
118 #endif /* _WIN32K_DESKTOP_H */
119
120 /* EOF */