Synchronize with trunk r58606.
[reactos.git] / win32ss / user / ntuser / winsta.h
1 #pragma once
2
3 #define WINSTA_OBJ_DIR L"\\Windows\\WindowStations"
4 #define SESSION_DIR L"\\Sessions"
5
6 /* Window Station Status Flags */
7 #define WSS_LOCKED (1)
8 #define WSS_NOINTERACTIVE (2)
9
10 typedef struct _WINSTATION_OBJECT
11 {
12 DWORD dwSessionId;
13
14 KSPIN_LOCK Lock;
15 UNICODE_STRING Name;
16 LIST_ENTRY DesktopListHead;
17 PRTL_ATOM_TABLE AtomTable;
18 HANDLE SystemMenuTemplate;
19 HANDLE ShellWindow;
20 HANDLE ShellListView;
21
22 ULONG Flags;
23 struct _DESKTOP* ActiveDesktop;
24
25 PTHREADINFO ptiClipLock;
26 PTHREADINFO ptiDrawingClipboard;
27 PWND spwndClipOpen;
28 PWND spwndClipViewer;
29 PWND spwndClipOwner;
30 PCLIP pClipBase; // Not a clip object.
31 DWORD cNumClipFormats;
32 INT iClipSerialNumber;
33 INT iClipSequenceNumber;
34 INT fClipboardChanged : 1;
35 INT fInDelayedRendering : 1;
36
37 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
38
39 extern WINSTATION_OBJECT *InputWindowStation;
40 extern PPROCESSINFO LogonProcess;
41 extern HWND hwndSAS;
42 extern UNICODE_STRING gustrWindowStationsDir;
43
44 #define WINSTA_READ STANDARD_RIGHTS_READ | \
45 WINSTA_ENUMDESKTOPS | \
46 WINSTA_ENUMERATE | \
47 WINSTA_READATTRIBUTES | \
48 WINSTA_READSCREEN
49
50 #define WINSTA_WRITE STANDARD_RIGHTS_WRITE | \
51 WINSTA_ACCESSCLIPBOARD | \
52 WINSTA_CREATEDESKTOP | \
53 WINSTA_WRITEATTRIBUTES
54
55 #define WINSTA_EXECUTE STANDARD_RIGHTS_EXECUTE | \
56 WINSTA_ACCESSGLOBALATOMS | \
57 WINSTA_EXITWINDOWS
58
59 #define WINSTA_ACCESS_ALL STANDARD_RIGHTS_REQUIRED | \
60 WINSTA_ACCESSCLIPBOARD | \
61 WINSTA_ACCESSGLOBALATOMS | \
62 WINSTA_CREATEDESKTOP | \
63 WINSTA_ENUMDESKTOPS | \
64 WINSTA_ENUMERATE | \
65 WINSTA_EXITWINDOWS | \
66 WINSTA_READATTRIBUTES | \
67 WINSTA_READSCREEN | \
68 WINSTA_WRITEATTRIBUTES
69
70 INIT_FUNCTION
71 NTSTATUS
72 NTAPI
73 InitWindowStationImpl(VOID);
74 NTSTATUS NTAPI UserCreateWinstaDirectory();
75
76 VOID APIENTRY IntWinStaObjectDelete(PWIN32_DELETEMETHOD_PARAMETERS Parameters);
77 NTSTATUS APIENTRY IntWinStaObjectParse(PWIN32_PARSEMETHOD_PARAMETERS Parameters);
78 NTSTATUS NTAPI IntWinstaOkToClose(PWIN32_OKAYTOCLOSEMETHOD_PARAMETERS Parameters);
79
80 NTSTATUS FASTCALL
81 IntValidateWindowStationHandle(
82 HWINSTA WindowStation,
83 KPROCESSOR_MODE AccessMode,
84 ACCESS_MASK DesiredAccess,
85 PWINSTATION_OBJECT *Object);
86 BOOL FASTCALL UserSetProcessWindowStation(HWINSTA hWindowStation);
87
88 BOOL FASTCALL co_IntInitializeDesktopGraphics(VOID);
89 VOID FASTCALL IntEndDesktopGraphics(VOID);
90 /* EOF */