3 #define WINSTA_OBJ_DIR L"\\Windows\\WindowStations"
4 #define SESSION_DIR L"\\Sessions"
6 /* Window Station Status Flags */
8 #define WSS_NOINTERACTIVE (2)
10 #define WSS_SHUTDOWN (8)
11 #define WSS_DYING (16)
12 #define WSS_REALSHUTDOWN (32)
14 typedef struct _WINSTATION_OBJECT
18 LIST_ENTRY DesktopListHead
;
19 PRTL_ATOM_TABLE AtomTable
;
24 struct _DESKTOP
* ActiveDesktop
;
26 PTHREADINFO ptiClipLock
;
27 PTHREADINFO ptiDrawingClipboard
;
31 PCLIP pClipBase
; // Not a clip object.
32 DWORD cNumClipFormats
;
33 INT iClipSerialNumber
;
34 INT iClipSequenceNumber
;
35 INT fClipboardChanged
: 1;
36 INT fInDelayedRendering
: 1;
38 PWND spwndClipboardListener
;
43 } WINSTATION_OBJECT
, *PWINSTATION_OBJECT
;
45 extern WINSTATION_OBJECT
*InputWindowStation
;
46 extern HANDLE gpidLogon
;
48 extern UNICODE_STRING gustrWindowStationsDir
;
50 #define WINSTA_READ STANDARD_RIGHTS_READ | \
51 WINSTA_ENUMDESKTOPS | \
53 WINSTA_READATTRIBUTES | \
56 #define WINSTA_WRITE STANDARD_RIGHTS_WRITE | \
57 WINSTA_ACCESSCLIPBOARD | \
58 WINSTA_CREATEDESKTOP | \
59 WINSTA_WRITEATTRIBUTES
61 #define WINSTA_EXECUTE STANDARD_RIGHTS_EXECUTE | \
62 WINSTA_ACCESSGLOBALATOMS | \
65 #define WINSTA_ACCESS_ALL STANDARD_RIGHTS_REQUIRED | \
66 WINSTA_ACCESSCLIPBOARD | \
67 WINSTA_ACCESSGLOBALATOMS | \
68 WINSTA_CREATEDESKTOP | \
69 WINSTA_ENUMDESKTOPS | \
71 WINSTA_EXITWINDOWS | \
72 WINSTA_READATTRIBUTES | \
74 WINSTA_WRITEATTRIBUTES
79 InitWindowStationImpl(VOID
);
83 UserCreateWinstaDirectory(VOID
);
87 IntWinStaObjectDelete(
88 _In_ PVOID Parameters
);
93 _In_ PVOID Parameters
);
98 _In_ PVOID Parameters
);
102 IntValidateWindowStationHandle(
103 HWINSTA WindowStation
,
104 KPROCESSOR_MODE AccessMode
,
105 ACCESS_MASK DesiredAccess
,
106 PWINSTATION_OBJECT
*Object
,
107 POBJECT_HANDLE_INFORMATION pObjectHandleInfo
);
111 IntCreateWindowStation(
112 OUT HWINSTA
* phWinSta
,
113 IN POBJECT_ATTRIBUTES ObjectAttributes
,
114 IN KPROCESSOR_MODE AccessMode
,
115 IN KPROCESSOR_MODE OwnerMode
,
116 IN ACCESS_MASK dwDesiredAccess
,
123 BOOL FASTCALL
UserSetProcessWindowStation(HWINSTA hWindowStation
);
125 BOOL FASTCALL
co_IntInitializeDesktopGraphics(VOID
);
126 VOID FASTCALL
IntEndDesktopGraphics(VOID
);
127 BOOL FASTCALL
CheckWinstaAttributeAccess(ACCESS_MASK
);