Merge trunk HEAD (r46369)
[reactos.git] / reactos / subsystems / win32 / win32k / include / winsta.h
1 #ifndef _WIN32K_WINSTA_H
2 #define _WIN32K_WINSTA_H
3
4 #include "window.h"
5 #include "clipboard.h"
6
7 #define WINSTA_ROOT_NAME L"\\Windows\\WindowStations"
8 #define WINSTA_ROOT_NAME_LENGTH 23
9
10 /* Window Station Status Flags */
11 #define WSS_LOCKED (1)
12 #define WSS_NOINTERACTIVE (2)
13
14 typedef enum
15 {
16 wmCenter = 0,
17 wmTile,
18 wmStretch
19 } WALLPAPER_MODE;
20
21 typedef struct _WINSTATION_OBJECT
22 {
23 PVOID SharedHeap; /* points to kmode memory! */
24
25 CSHORT Type;
26 CSHORT Size;
27 KSPIN_LOCK Lock;
28 UNICODE_STRING Name;
29 LIST_ENTRY DesktopListHead;
30 PRTL_ATOM_TABLE AtomTable;
31 HANDLE SystemMenuTemplate;
32 UINT CaretBlinkRate;
33 HANDLE ShellWindow;
34 HANDLE ShellListView;
35
36 /* Effects */
37 BOOL FontSmoothing; /* enable */
38 UINT FontSmoothingType; /* 1:Standard,2:ClearType */
39 /* FIXME: Big Icons (SPI_GETICONMETRICS?) */
40 BOOL DropShadow;
41 BOOL DragFullWindows;
42 BOOL FlatMenu;
43
44 /* ScreenSaver */
45 BOOL ScreenSaverRunning;
46 UINT ScreenSaverTimeOut;
47 /* Should this be on each desktop ? */
48 BOOL ScreenSaverActive;
49
50 /* Wallpaper */
51 HANDLE hbmWallpaper;
52 ULONG cxWallpaper, cyWallpaper;
53 WALLPAPER_MODE WallpaperMode;
54
55 ULONG Flags;
56 struct _DESKTOP* ActiveDesktop;
57
58 PCLIPBOARDSYSTEM Clipboard;
59 DWORD ClipboardSequenceNumber;
60
61 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
62
63 extern WINSTATION_OBJECT *InputWindowStation;
64 extern PPROCESSINFO LogonProcess;
65
66 NTSTATUS FASTCALL
67 InitWindowStationImpl(VOID);
68
69 NTSTATUS FASTCALL
70 CleanupWindowStationImpl(VOID);
71
72 NTSTATUS
73 APIENTRY
74 IntWinStaObjectOpen(PWIN32_OPENMETHOD_PARAMETERS Parameters);
75
76 VOID APIENTRY
77 IntWinStaObjectDelete(PWIN32_DELETEMETHOD_PARAMETERS Parameters);
78
79 NTSTATUS
80 APIENTRY
81 IntWinStaObjectParse(PWIN32_PARSEMETHOD_PARAMETERS Parameters);
82
83 NTSTATUS FASTCALL
84 IntValidateWindowStationHandle(
85 HWINSTA WindowStation,
86 KPROCESSOR_MODE AccessMode,
87 ACCESS_MASK DesiredAccess,
88 PWINSTATION_OBJECT *Object);
89
90 BOOL FASTCALL
91 IntGetWindowStationObject(PWINSTATION_OBJECT Object);
92
93 BOOL FASTCALL
94 co_IntInitializeDesktopGraphics(VOID);
95
96 VOID FASTCALL
97 IntEndDesktopGraphics(VOID);
98
99 BOOL FASTCALL
100 IntGetFullWindowStationName(
101 OUT PUNICODE_STRING FullName,
102 IN PUNICODE_STRING WinStaName,
103 IN OPTIONAL PUNICODE_STRING DesktopName);
104
105 PWINSTATION_OBJECT FASTCALL IntGetWinStaObj(VOID);
106
107 #endif /* _WIN32K_WINSTA_H */
108
109 /* EOF */