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