fixed a bug that caused the mouse cursor drawing incorrectly
[reactos.git] / reactos / ntoskrnl / include / internal / ex.h
1 /*
2 * internal executive prototypes
3 */
4
5 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
6 #define __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
7
8 #define NTOS_MODE_KERNEL
9 #include <ntos.h>
10
11 /* one systemcursor for custom cursors */
12 #define SYSCURSORCOUNT (14 + 1)
13
14 typedef struct _CURSORCLIP_INFO
15 {
16 BOOL IsClipped;
17 UINT Left;
18 UINT Top;
19 UINT Right;
20 UINT Bottom;
21 } CURSORCLIP_INFO, *PCURSORCLIP_INFO;
22
23 typedef struct _SYSCURSOR
24 {
25 HANDLE hCursor;
26 LONG cx, cy;
27 LONG hx, hy;
28 PVOID AndImage;
29 PVOID XorImage;
30 } SYSCURSOR, *PSYSCURSOR;
31
32 typedef struct _SYSTEM_CURSORINFO
33 {
34 BOOL Enabled;
35 UINT CurrentCursor;
36 LONG x, y;
37 BOOL SafetySwitch, SafetySwitch2;
38 FAST_MUTEX CursorMutex;
39 CURSORCLIP_INFO CursorClipInfo;
40 SYSCURSOR SystemCursors[SYSCURSORCOUNT];
41 } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO;
42
43 typedef struct _WINSTATION_OBJECT
44 {
45 CSHORT Type;
46 CSHORT Size;
47
48 KSPIN_LOCK Lock;
49 UNICODE_STRING Name;
50 LIST_ENTRY DesktopListHead;
51 PRTL_ATOM_TABLE AtomTable;
52 PVOID HandleTable;
53 HANDLE SystemMenuTemplate;
54 SYSTEM_CURSORINFO SystemCursor;
55 struct _DESKTOP_OBJECT* ActiveDesktop;
56 /* FIXME: Clipboard */
57 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
58
59 typedef struct _DESKTOP_OBJECT
60 {
61 CSHORT Type;
62 CSHORT Size;
63 LIST_ENTRY ListEntry;
64 KSPIN_LOCK Lock;
65 UNICODE_STRING Name;
66 /* Pointer to the associated window station. */
67 struct _WINSTATION_OBJECT *WindowStation;
68 /* Pointer to the active queue. */
69 PVOID ActiveMessageQueue;
70 /* Handle of the desktop window. */
71 HANDLE DesktopWindow;
72 HANDLE PrevActiveWindow;
73 struct _WINDOW_OBJECT* CaptureWindow;
74 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
75
76
77 typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE)(
78 POOL_TYPE PoolType,
79 ULONG Size,
80 PUSHORT MinimumDepth,
81 PUSHORT MaximumDepth);
82
83 /* GLOBAL VARIABLES *********************************************************/
84
85 TIME_ZONE_INFORMATION SystemTimeZoneInfo;
86
87 /* INITIALIZATION FUNCTIONS *************************************************/
88
89 VOID
90 ExpWin32kInit(VOID);
91
92 VOID
93 ExInit (VOID);
94 VOID
95 ExInitTimeZoneInfo (VOID);
96 VOID
97 ExInitializeWorkerThreads(VOID);
98 VOID
99 ExpInitLookasideLists(VOID);
100
101 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */