f21e5c6377d3b65450da10f346fab8df6d44875a
[reactos.git] / reactos / subsys / win32k / include / winsta.h
1 #ifndef _WIN32K_WINSTA_H
2 #define _WIN32K_WINSTA_H
3
4 #include "msgqueue.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 PVOID SystemCursor;
32 UINT CaretBlinkRate;
33 HANDLE ShellWindow;
34 HANDLE ShellListView;
35
36 /* Wallpaper */
37 HANDLE hbmWallpaper;
38 ULONG cxWallpaper, cyWallpaper;
39 WALLPAPER_MODE WallpaperMode;
40
41 ULONG Flags;
42 struct _DESKTOP_OBJECT* ActiveDesktop;
43 /* FIXME: Clipboard */
44 LIST_ENTRY HotKeyListHead;
45 FAST_MUTEX HotKeyListLock;
46 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
47
48 extern WINSTATION_OBJECT *InputWindowStation;
49 extern PW32PROCESS LogonProcess;
50
51 NTSTATUS FASTCALL
52 InitWindowStationImpl(VOID);
53
54 NTSTATUS FASTCALL
55 CleanupWindowStationImpl(VOID);
56
57 NTSTATUS
58 STDCALL
59 IntWinStaObjectOpen(OB_OPEN_REASON Reason,
60 PVOID ObjectBody,
61 PEPROCESS Process,
62 ULONG HandleCount,
63 ACCESS_MASK GrantedAccess);
64
65 VOID STDCALL
66 IntWinStaObjectDelete(PVOID DeletedObject);
67
68 PVOID STDCALL
69 IntWinStaObjectFind(PVOID Object,
70 PWSTR Name,
71 ULONG Attributes);
72
73 NTSTATUS
74 STDCALL
75 IntWinStaObjectParse(PVOID Object,
76 PVOID *NextObject,
77 PUNICODE_STRING FullPath,
78 PWSTR *Path,
79 ULONG Attributes);
80
81 NTSTATUS FASTCALL
82 IntValidateWindowStationHandle(
83 HWINSTA WindowStation,
84 KPROCESSOR_MODE AccessMode,
85 ACCESS_MASK DesiredAccess,
86 PWINSTATION_OBJECT *Object);
87
88 BOOL FASTCALL
89 IntGetWindowStationObject(PWINSTATION_OBJECT Object);
90
91 BOOL FASTCALL
92 co_IntInitializeDesktopGraphics(VOID);
93
94 VOID FASTCALL
95 IntEndDesktopGraphics(VOID);
96
97 BOOL FASTCALL
98 IntGetFullWindowStationName(
99 OUT PUNICODE_STRING FullName,
100 IN PUNICODE_STRING WinStaName,
101 IN OPTIONAL PUNICODE_STRING DesktopName);
102
103 PWINSTATION_OBJECT FASTCALL IntGetWinStaObj(VOID);
104
105 #endif /* _WIN32K_WINSTA_H */
106
107 /* EOF */