#ifndef __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
#define __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
-#include <ddk/ntddk.h>
-#include <ntos/time.h>
+#define NTOS_MODE_KERNEL
+#include <ntos.h>
+
+/* one systemcursor for custom cursors */
+#define SYSCURSORCOUNT (14 + 1)
+
+typedef struct _CURSORCLIP_INFO
+{
+ BOOL IsClipped;
+ UINT Left;
+ UINT Top;
+ UINT Right;
+ UINT Bottom;
+} CURSORCLIP_INFO, *PCURSORCLIP_INFO;
+
+typedef struct _SYSCURSOR
+{
+ HANDLE hCursor;
+ LONG cx, cy;
+ LONG hx, hy;
+ PVOID AndImage;
+ PVOID XorImage;
+} SYSCURSOR, *PSYSCURSOR;
+
+typedef struct _SYSTEM_CURSORINFO
+{
+ BOOL Enabled;
+ BOOL SwapButtons;
+ UINT CurrentCursor;
+ LONG x, y;
+ BOOL SafetySwitch, SafetySwitch2;
+ FAST_MUTEX CursorMutex;
+ CURSORCLIP_INFO CursorClipInfo;
+ SYSCURSOR SystemCursors[SYSCURSORCOUNT];
+ UINT DblClickSpeed;
+ UINT DblClickWidth;
+ UINT DblClickHeight;
+ DWORD LastBtnDown;
+ LONG LastBtnDownX;
+ LONG LastBtnDownY;
+} SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
typedef struct _WINSTATION_OBJECT
{
LIST_ENTRY DesktopListHead;
PRTL_ATOM_TABLE AtomTable;
PVOID HandleTable;
+ HANDLE SystemMenuTemplate;
+ SYSTEM_CURSORINFO SystemCursor;
struct _DESKTOP_OBJECT* ActiveDesktop;
/* FIXME: Clipboard */
} WINSTATION_OBJECT, *PWINSTATION_OBJECT;
UNICODE_STRING Name;
/* Pointer to the associated window station. */
struct _WINSTATION_OBJECT *WindowStation;
- /* Head of the list of windows in this desktop. */
- LIST_ENTRY WindowListHead;
/* Pointer to the active queue. */
PVOID ActiveMessageQueue;
/* Handle of the desktop window. */
HANDLE DesktopWindow;
HANDLE PrevActiveWindow;
+ struct _WINDOW_OBJECT* CaptureWindow;
} DESKTOP_OBJECT, *PDESKTOP_OBJECT;
/* GLOBAL VARIABLES *********************************************************/
TIME_ZONE_INFORMATION SystemTimeZoneInfo;
+extern POBJECT_TYPE ExEventPairObjectType;
+
/* INITIALIZATION FUNCTIONS *************************************************/
VOID
ExpInitLookasideLists(VOID);
+/* OTHER FUNCTIONS **********************************************************/
+
+VOID
+ExpSwapThreadEventPair(
+ IN struct _ETHREAD* Thread,
+ IN struct _KEVENT_PAIR* EventPair
+ );
+
+
#endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */