- NDK 0.98, now with versionned headers. Too many changes to list, see the TinyKRNL...
[reactos.git] / reactos / subsystems / win32 / 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 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
45
46 extern WINSTATION_OBJECT *InputWindowStation;
47 extern PW32PROCESS LogonProcess;
48
49 NTSTATUS FASTCALL
50 InitWindowStationImpl(VOID);
51
52 NTSTATUS FASTCALL
53 CleanupWindowStationImpl(VOID);
54
55 NTSTATUS
56 STDCALL
57 IntWinStaObjectOpen(IN OB_OPEN_REASON Reason,
58 IN PEPROCESS Process OPTIONAL,
59 IN PVOID ObjectBody,
60 IN ACCESS_MASK GrantedAccess,
61 IN ULONG HandleCount);
62
63 VOID STDCALL
64 IntWinStaObjectDelete(PVOID DeletedObject);
65
66 PVOID STDCALL
67 IntWinStaObjectFind(PVOID Object,
68 PWSTR Name,
69 ULONG Attributes);
70
71 NTSTATUS
72 STDCALL
73 IntWinStaObjectParse(PVOID Object,
74 PVOID *NextObject,
75 PUNICODE_STRING FullPath,
76 PWSTR *Path,
77 ULONG Attributes);
78
79 NTSTATUS FASTCALL
80 IntValidateWindowStationHandle(
81 HWINSTA WindowStation,
82 KPROCESSOR_MODE AccessMode,
83 ACCESS_MASK DesiredAccess,
84 PWINSTATION_OBJECT *Object);
85
86 BOOL FASTCALL
87 IntGetWindowStationObject(PWINSTATION_OBJECT Object);
88
89 BOOL FASTCALL
90 co_IntInitializeDesktopGraphics(VOID);
91
92 VOID FASTCALL
93 IntEndDesktopGraphics(VOID);
94
95 BOOL FASTCALL
96 IntGetFullWindowStationName(
97 OUT PUNICODE_STRING FullName,
98 IN PUNICODE_STRING WinStaName,
99 IN OPTIONAL PUNICODE_STRING DesktopName);
100
101 PWINSTATION_OBJECT FASTCALL IntGetWinStaObj(VOID);
102
103 #endif /* _WIN32K_WINSTA_H */
104
105 /* EOF */