-Introduce new WinSta lock to replace most others
[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 typedef struct _WINSTATION_OBJECT
12 {
13 CSHORT Type;
14 CSHORT Size;
15
16 KSPIN_LOCK Lock;
17 UNICODE_STRING Name;
18 LIST_ENTRY DesktopListHead;
19 PRTL_ATOM_TABLE AtomTable;
20 PVOID HandleTable;
21 struct _DESKTOP_OBJECT* ActiveDesktop;
22 ERESOURCE Resource;
23 /* FIXME: Clipboard */
24 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
25
26 typedef struct _DESKTOP_OBJECT
27 {
28 CSHORT Type;
29 CSHORT Size;
30 LIST_ENTRY ListEntry;
31 KSPIN_LOCK Lock;
32 UNICODE_STRING Name;
33 /* Pointer to the associated window station. */
34 struct _WINSTATION_OBJECT *WindowStation;
35 /* Head of the list of windows in this desktop. */
36 LIST_ENTRY WindowListHead;
37 /* Pointer to the active queue. */
38 PVOID ActiveMessageQueue;
39 /* Handle of the desktop window. */
40 HANDLE DesktopWindow;
41 HANDLE PrevActiveWindow;
42 struct _WINDOW_OBJECT* CaptureWindow;
43 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
44
45
46 typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE)(
47 POOL_TYPE PoolType,
48 ULONG Size,
49 PUSHORT MinimumDepth,
50 PUSHORT MaximumDepth);
51
52 /* GLOBAL VARIABLES *********************************************************/
53
54 TIME_ZONE_INFORMATION SystemTimeZoneInfo;
55
56 /* INITIALIZATION FUNCTIONS *************************************************/
57
58 VOID
59 ExpWin32kInit(VOID);
60
61 VOID
62 ExInit (VOID);
63 VOID
64 ExInitTimeZoneInfo (VOID);
65 VOID
66 ExInitializeWorkerThreads(VOID);
67 VOID
68 ExpInitLookasideLists(VOID);
69
70 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H */