2 * internal executive prototypes
5 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
6 #define __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
8 #define NTOS_MODE_KERNEL
18 typedef struct _WINSTATION_OBJECT
24 LIST_ENTRY DesktopListHead
;
25 PRTL_ATOM_TABLE AtomTable
;
27 HANDLE SystemMenuTemplate
;
35 ULONG cxWallpaper
, cyWallpaper
;
36 WALLPAPER_MODE WallpaperMode
;
39 struct _DESKTOP_OBJECT
* ActiveDesktop
;
40 /* FIXME: Clipboard */
41 LIST_ENTRY HotKeyListHead
;
42 FAST_MUTEX HotKeyListLock
;
43 } WINSTATION_OBJECT
, *PWINSTATION_OBJECT
;
45 typedef struct _DESKTOP_OBJECT
52 /* Pointer to the associated window station. */
53 struct _WINSTATION_OBJECT
*WindowStation
;
54 /* Pointer to the active queue. */
55 PVOID ActiveMessageQueue
;
56 /* Rectangle of the work area */
62 /* Handle of the desktop window. */
64 HANDLE PrevActiveWindow
;
65 /* Thread blocking input */
66 PVOID BlockInputThread
;
67 } DESKTOP_OBJECT
, *PDESKTOP_OBJECT
;
70 typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE
)(
74 PUSHORT MaximumDepth
);
76 /* GLOBAL VARIABLES *********************************************************/
78 extern TIME_ZONE_INFORMATION ExpTimeZoneInfo
;
79 extern LARGE_INTEGER ExpTimeZoneBias
;
80 extern ULONG ExpTimeZoneId
;
82 extern POBJECT_TYPE ExEventPairObjectType
;
85 /* INITIALIZATION FUNCTIONS *************************************************/
95 ExpInitTimeZoneInfo(VOID
);
97 ExInitializeWorkerThreads(VOID
);
99 ExpInitLookasideLists(VOID
);
101 ExpInitializeCallbacks(VOID
);
105 /* OTHER FUNCTIONS **********************************************************/
107 #ifdef _ENABLE_THRDEVTPAIR
109 ExpSwapThreadEventPair(
110 IN
struct _ETHREAD
* Thread
,
111 IN
struct _KEVENT_PAIR
* EventPair
113 #endif /* _ENABLE_THRDEVTPAIR */
117 ExfpInterlockedExchange64(LONGLONG
volatile * Destination
,
121 ExpSetTimeZoneInformation(PTIME_ZONE_INFORMATION TimeZoneInformation
);
123 #define InterlockedDecrementUL(Addend) \
124 (ULONG)InterlockedDecrement((PLONG)(Addend))
126 #define InterlockedIncrementUL(Addend) \
127 (ULONG)InterlockedIncrement((PLONG)(Addend))
129 #define InterlockedExchangeUL(Target, Value) \
130 (ULONG)InterlockedExchange((PLONG)(Target), (LONG)(Value))
132 #define InterlockedExchangeAddUL(Addend, Value) \
133 (ULONG)InterlockedExchangeAdd((PLONG)(Addend), (LONG)(Value))
135 #define InterlockedCompareExchangeUL(Destination, Exchange, Comperand) \
136 (ULONG)InterlockedCompareExchange((PLONG)(Destination), (LONG)(Exchange), (LONG)(Comperand))
138 #define ExfInterlockedCompareExchange64UL(Destination, Exchange, Comperand) \
139 (ULONGLONG)ExfInterlockedCompareExchange64((PLONGLONG)(Destination), (PLONGLONG)(Exchange), (PLONGLONG)(Comperand))
141 #define ExfpInterlockedExchange64UL(Target, Value) \
142 (ULONGLONG)ExfpInterlockedExchange64((PLONGLONG)(Target), (PLONGLONG)(Value))
144 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */