b36aaa1ce5571625ffbcc4692cc43a42f09ea4f7
[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 #define WSS_NOIO (4)
10 #define WSS_SHUTDOWN (8)
11 #define WSS_DYING (16)
12 #define WSS_REALSHUTDOWN (32)
13
14 typedef struct _WINSTATION_OBJECT
15 {
16 DWORD dwSessionId;
17
18 LIST_ENTRY DesktopListHead;
19 PRTL_ATOM_TABLE AtomTable;
20 HANDLE ShellWindow;
21 HANDLE ShellListView;
22
23 ULONG Flags;
24 struct _DESKTOP* ActiveDesktop;
25
26 PTHREADINFO ptiClipLock;
27 PTHREADINFO ptiDrawingClipboard;
28 PWND spwndClipOpen;
29 PWND spwndClipViewer;
30 PWND spwndClipOwner;
31 PCLIP pClipBase; // Not a clip object.
32 DWORD cNumClipFormats;
33 INT iClipSerialNumber;
34 INT iClipSequenceNumber;
35 INT fClipboardChanged : 1;
36 INT fInDelayedRendering : 1;
37
38 PWND spwndClipboardListener;
39 LUID luidEndSession;
40 LUID luidUser;
41 PVOID psidUser;
42
43 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
44
45 extern WINSTATION_OBJECT *InputWindowStation;
46 extern HANDLE gpidLogon;
47 extern HWND hwndSAS;
48 extern UNICODE_STRING gustrWindowStationsDir;
49
50 CODE_SEG("INIT")
51 NTSTATUS
52 NTAPI
53 InitWindowStationImpl(VOID);
54
55 NTSTATUS
56 NTAPI
57 UserCreateWinstaDirectory(VOID);
58
59 NTSTATUS
60 NTAPI
61 IntWinStaObjectDelete(
62 _In_ PVOID Parameters);
63
64 NTSTATUS
65 NTAPI
66 IntWinStaObjectParse(
67 _In_ PVOID Parameters);
68
69 NTSTATUS
70 NTAPI
71 IntWinStaOkToClose(
72 _In_ PVOID Parameters);
73
74 NTSTATUS
75 FASTCALL
76 IntValidateWindowStationHandle(
77 HWINSTA WindowStation,
78 KPROCESSOR_MODE AccessMode,
79 ACCESS_MASK DesiredAccess,
80 PWINSTATION_OBJECT *Object,
81 POBJECT_HANDLE_INFORMATION pObjectHandleInfo);
82
83 NTSTATUS
84 FASTCALL
85 IntCreateWindowStation(
86 OUT HWINSTA* phWinSta,
87 IN POBJECT_ATTRIBUTES ObjectAttributes,
88 IN KPROCESSOR_MODE AccessMode,
89 IN KPROCESSOR_MODE OwnerMode,
90 IN ACCESS_MASK dwDesiredAccess,
91 DWORD Unknown2,
92 DWORD Unknown3,
93 DWORD Unknown4,
94 DWORD Unknown5,
95 DWORD Unknown6);
96
97 BOOL FASTCALL UserSetProcessWindowStation(HWINSTA hWindowStation);
98
99 BOOL FASTCALL co_IntInitializeDesktopGraphics(VOID);
100 VOID FASTCALL IntEndDesktopGraphics(VOID);
101 BOOL FASTCALL CheckWinstaAttributeAccess(ACCESS_MASK);
102
103 /* EOF */