added very basic support for desktop wallpapers
[reactos.git] / reactos / ntoskrnl / include / internal / ex.h
1 /*
2 * internal executive prototypes
3 */
4
5 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
6 #define __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
7
8 #define NTOS_MODE_KERNEL
9 #include <ntos.h>
10
11 typedef enum
12 {
13 wmCenter = 0,
14 wmTile,
15 wmStretch
16 } WALLPAPER_MODE;
17
18 typedef struct _WINSTATION_OBJECT
19 {
20 CSHORT Type;
21 CSHORT Size;
22 KSPIN_LOCK Lock;
23 UNICODE_STRING Name;
24 LIST_ENTRY DesktopListHead;
25 PRTL_ATOM_TABLE AtomTable;
26 PVOID HandleTable;
27 HANDLE SystemMenuTemplate;
28 PVOID SystemCursor;
29 UINT CaretBlinkRate;
30 HANDLE ShellWindow;
31 HANDLE ShellListView;
32
33 /* Wallpaper */
34 HANDLE hbmWallpaper;
35 ULONG cxWallpaper, cyWallpaper;
36 WALLPAPER_MODE WallpaperMode;
37
38 ULONG Flags;
39 struct _DESKTOP_OBJECT* ActiveDesktop;
40 /* FIXME: Clipboard */
41 LIST_ENTRY HotKeyListHead;
42 FAST_MUTEX HotKeyListLock;
43 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
44
45 typedef struct _DESKTOP_OBJECT
46 {
47 CSHORT Type;
48 CSHORT Size;
49 LIST_ENTRY ListEntry;
50 KSPIN_LOCK Lock;
51 UNICODE_STRING Name;
52 /* Pointer to the associated window station. */
53 struct _WINSTATION_OBJECT *WindowStation;
54 /* Pointer to the active queue. */
55 PVOID ActiveMessageQueue;
56 /* Rectangle of the work area */
57 #ifdef __WIN32K__
58 RECT WorkArea;
59 #else
60 LONG WorkArea[4];
61 #endif
62 /* Handle of the desktop window. */
63 HANDLE DesktopWindow;
64 HANDLE PrevActiveWindow;
65 /* Thread blocking input */
66 PVOID BlockInputThread;
67 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
68
69
70 typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE)(
71 POOL_TYPE PoolType,
72 ULONG Size,
73 PUSHORT MinimumDepth,
74 PUSHORT MaximumDepth);
75
76 /* GLOBAL VARIABLES *********************************************************/
77
78 TIME_ZONE_INFORMATION _SystemTimeZoneInfo;
79 extern POBJECT_TYPE ExEventPairObjectType;
80
81
82 /* INITIALIZATION FUNCTIONS *************************************************/
83
84 VOID
85 ExpWin32kInit(VOID);
86
87 VOID
88 ExInit2 (VOID);
89 VOID
90 ExInit3 (VOID);
91 VOID
92 ExInitTimeZoneInfo (VOID);
93 VOID
94 ExInitializeWorkerThreads(VOID);
95 VOID
96 ExpInitLookasideLists(VOID);
97 VOID
98 ExpInitializeCallbacks(VOID);
99
100 /* OTHER FUNCTIONS **********************************************************/
101
102 VOID
103 ExpSwapThreadEventPair(
104 IN struct _ETHREAD* Thread,
105 IN struct _KEVENT_PAIR* EventPair
106 );
107
108
109 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */