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
20 PVOID SharedHeap
; /* points to kmode memory! */
26 LIST_ENTRY DesktopListHead
;
27 PRTL_ATOM_TABLE AtomTable
;
29 HANDLE SystemMenuTemplate
;
37 ULONG cxWallpaper
, cyWallpaper
;
38 WALLPAPER_MODE WallpaperMode
;
41 struct _DESKTOP_OBJECT
* ActiveDesktop
;
42 /* FIXME: Clipboard */
43 LIST_ENTRY HotKeyListHead
;
44 FAST_MUTEX HotKeyListLock
;
45 } WINSTATION_OBJECT
, *PWINSTATION_OBJECT
;
47 typedef struct _DESKTOP_OBJECT
49 PVOID DesktopHeap
; /* points to kmode memory! */
56 /* Pointer to the associated window station. */
57 struct _WINSTATION_OBJECT
*WindowStation
;
58 /* Pointer to the active queue. */
59 PVOID ActiveMessageQueue
;
60 /* Rectangle of the work area */
66 /* Handle of the desktop window. */
68 HANDLE PrevActiveWindow
;
69 /* Thread blocking input */
70 PVOID BlockInputThread
;
71 } DESKTOP_OBJECT
, *PDESKTOP_OBJECT
;
74 typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE
)(
78 PUSHORT MaximumDepth
);
80 /* GLOBAL VARIABLES *********************************************************/
82 extern TIME_ZONE_INFORMATION ExpTimeZoneInfo
;
83 extern LARGE_INTEGER ExpTimeZoneBias
;
84 extern ULONG ExpTimeZoneId
;
86 extern POBJECT_TYPE ExEventPairObjectType
;
89 /* INITIALIZATION FUNCTIONS *************************************************/
99 ExpInitTimeZoneInfo(VOID
);
101 ExInitializeWorkerThreads(VOID
);
103 ExpInitLookasideLists(VOID
);
105 ExpInitializeCallbacks(VOID
);
110 ExpInitializeExecutive(VOID
);
112 /* OTHER FUNCTIONS **********************************************************/
116 ExfpInterlockedExchange64(LONGLONG
volatile * Destination
,
120 ExpSetTimeZoneInformation(PTIME_ZONE_INFORMATION TimeZoneInformation
);
123 ExpAllocateLocallyUniqueId(OUT LUID
*LocallyUniqueId
);
125 #define InterlockedDecrementUL(Addend) \
126 (ULONG)InterlockedDecrement((PLONG)(Addend))
128 #define InterlockedIncrementUL(Addend) \
129 (ULONG)InterlockedIncrement((PLONG)(Addend))
131 #define InterlockedExchangeUL(Target, Value) \
132 (ULONG)InterlockedExchange((PLONG)(Target), (LONG)(Value))
134 #define InterlockedExchangeAddUL(Addend, Value) \
135 (ULONG)InterlockedExchangeAdd((PLONG)(Addend), (LONG)(Value))
137 #define InterlockedCompareExchangeUL(Destination, Exchange, Comperand) \
138 (ULONG)InterlockedCompareExchange((PLONG)(Destination), (LONG)(Exchange), (LONG)(Comperand))
140 #define ExfInterlockedCompareExchange64UL(Destination, Exchange, Comperand) \
141 (ULONGLONG)ExfInterlockedCompareExchange64((PLONGLONG)(Destination), (PLONGLONG)(Exchange), (PLONGLONG)(Comperand))
143 #define ExfpInterlockedExchange64UL(Target, Value) \
144 (ULONGLONG)ExfpInterlockedExchange64((PLONGLONG)(Target), (PLONGLONG)(Value))
146 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */