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
19 LIST_ENTRY DesktopListHead
;
20 PRTL_ATOM_TABLE AtomTable
;
25 struct _DESKTOP
* ActiveDesktop
;
27 PTHREADINFO ptiClipLock
;
28 PTHREADINFO ptiDrawingClipboard
;
32 PCLIP pClipBase
; // Not a clip object.
33 DWORD cNumClipFormats
;
34 INT iClipSerialNumber
;
35 INT iClipSequenceNumber
;
36 INT fClipboardChanged
: 1;
37 INT fInDelayedRendering
: 1;
39 PWND spwndClipboardListener
;
44 } WINSTATION_OBJECT
, *PWINSTATION_OBJECT
;
46 extern WINSTATION_OBJECT
*InputWindowStation
;
47 extern HANDLE gpidLogon
;
49 extern UNICODE_STRING gustrWindowStationsDir
;
51 #define WINSTA_READ STANDARD_RIGHTS_READ | \
52 WINSTA_ENUMDESKTOPS | \
54 WINSTA_READATTRIBUTES | \
57 #define WINSTA_WRITE STANDARD_RIGHTS_WRITE | \
58 WINSTA_ACCESSCLIPBOARD | \
59 WINSTA_CREATEDESKTOP | \
60 WINSTA_WRITEATTRIBUTES
62 #define WINSTA_EXECUTE STANDARD_RIGHTS_EXECUTE | \
63 WINSTA_ACCESSGLOBALATOMS | \
66 #define WINSTA_ACCESS_ALL STANDARD_RIGHTS_REQUIRED | \
67 WINSTA_ACCESSCLIPBOARD | \
68 WINSTA_ACCESSGLOBALATOMS | \
69 WINSTA_CREATEDESKTOP | \
70 WINSTA_ENUMDESKTOPS | \
72 WINSTA_EXITWINDOWS | \
73 WINSTA_READATTRIBUTES | \
75 WINSTA_WRITEATTRIBUTES
80 InitWindowStationImpl(VOID
);
84 UserCreateWinstaDirectory(VOID
);
88 IntWinStaObjectDelete(
89 _In_ PVOID Parameters
);
94 _In_ PVOID Parameters
);
99 _In_ PVOID Parameters
);
103 IntValidateWindowStationHandle(
104 HWINSTA WindowStation
,
105 KPROCESSOR_MODE AccessMode
,
106 ACCESS_MASK DesiredAccess
,
107 PWINSTATION_OBJECT
*Object
,
108 POBJECT_HANDLE_INFORMATION pObjectHandleInfo
);
110 BOOL FASTCALL
UserSetProcessWindowStation(HWINSTA hWindowStation
);
112 BOOL FASTCALL
co_IntInitializeDesktopGraphics(VOID
);
113 VOID FASTCALL
IntEndDesktopGraphics(VOID
);
114 BOOL FASTCALL
CheckWinstaAttributeAccess(ACCESS_MASK
);