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 typedef struct _WINSTATION_OBJECT
15 LIST_ENTRY DesktopListHead
;
16 PRTL_ATOM_TABLE AtomTable
;
21 struct _DESKTOP
* ActiveDesktop
;
23 PTHREADINFO ptiClipLock
;
24 PTHREADINFO ptiDrawingClipboard
;
28 PCLIP pClipBase
; // Not a clip object.
29 DWORD cNumClipFormats
;
30 INT iClipSerialNumber
;
31 INT iClipSequenceNumber
;
32 INT fClipboardChanged
: 1;
33 INT fInDelayedRendering
: 1;
35 } WINSTATION_OBJECT
, *PWINSTATION_OBJECT
;
37 extern WINSTATION_OBJECT
*InputWindowStation
;
38 extern HANDLE gpidLogon
;
40 extern UNICODE_STRING gustrWindowStationsDir
;
42 #define WINSTA_READ STANDARD_RIGHTS_READ | \
43 WINSTA_ENUMDESKTOPS | \
45 WINSTA_READATTRIBUTES | \
48 #define WINSTA_WRITE STANDARD_RIGHTS_WRITE | \
49 WINSTA_ACCESSCLIPBOARD | \
50 WINSTA_CREATEDESKTOP | \
51 WINSTA_WRITEATTRIBUTES
53 #define WINSTA_EXECUTE STANDARD_RIGHTS_EXECUTE | \
54 WINSTA_ACCESSGLOBALATOMS | \
57 #define WINSTA_ACCESS_ALL STANDARD_RIGHTS_REQUIRED | \
58 WINSTA_ACCESSCLIPBOARD | \
59 WINSTA_ACCESSGLOBALATOMS | \
60 WINSTA_CREATEDESKTOP | \
61 WINSTA_ENUMDESKTOPS | \
63 WINSTA_EXITWINDOWS | \
64 WINSTA_READATTRIBUTES | \
66 WINSTA_WRITEATTRIBUTES
71 InitWindowStationImpl(VOID
);
75 UserCreateWinstaDirectory();
79 IntWinStaObjectDelete(
80 _In_ PVOID Parameters
);
85 _In_ PVOID Parameters
);
90 _In_ PVOID Parameters
);
94 IntValidateWindowStationHandle(
95 HWINSTA WindowStation
,
96 KPROCESSOR_MODE AccessMode
,
97 ACCESS_MASK DesiredAccess
,
98 PWINSTATION_OBJECT
*Object
);
100 BOOL FASTCALL
UserSetProcessWindowStation(HWINSTA hWindowStation
);
102 BOOL FASTCALL
co_IntInitializeDesktopGraphics(VOID
);
103 VOID FASTCALL
IntEndDesktopGraphics(VOID
);