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