Use free Windows DDK and compile with latest MinGW releases.
[reactos.git] / reactos / include / ntos / win32.h
1 #ifndef __INCLUDE_NAPI_WIN32_H
2 #define __INCLUDE_NAPI_WIN32_H
3
4 struct _DESKTOP_OBJECT;
5
6 typedef struct _WINSTATION_OBJECT
7 {
8 CSHORT Type;
9 CSHORT Size;
10
11 KSPIN_LOCK Lock;
12 UNICODE_STRING Name;
13 LIST_ENTRY DesktopListHead;
14 PRTL_ATOM_TABLE AtomTable;
15 PVOID HandleTable;
16 struct _DESKTOP_OBJECT* ActiveDesktop;
17 /* FIXME: Clipboard */
18 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
19
20 typedef struct _DESKTOP_OBJECT
21 {
22 CSHORT Type;
23 CSHORT Size;
24 LIST_ENTRY ListEntry;
25 KSPIN_LOCK Lock;
26 UNICODE_STRING Name;
27 /* Pointer to the associated window station. */
28 struct _WINSTATION_OBJECT *WindowStation;
29 /* Head of the list of windows in this desktop. */
30 LIST_ENTRY WindowListHead;
31 /* Pointer to the active queue. */
32 PVOID ActiveMessageQueue;
33 /* Handle of the desktop window. */
34 HANDLE DesktopWindow;
35 HANDLE PrevActiveWindow;
36 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
37
38 typedef struct _W32THREAD
39 {
40 PVOID MessageQueue;
41 FAST_MUTEX WindowListLock;
42 LIST_ENTRY WindowListHead;
43 struct _DESKTOP_OBJECT *Desktop;
44 } __attribute__((packed)) W32THREAD, *PW32THREAD;
45
46 typedef struct _W32PROCESS
47 {
48 FAST_MUTEX ClassListLock;
49 LIST_ENTRY ClassListHead;
50 struct _WINSTATION_OBJECT *WindowStation;
51 } W32PROCESS, *PW32PROCESS;
52
53 typedef struct _NCCALCSIZE_PARAMS {
54 RECT rgrc[3];
55 PWINDOWPOS lppos;
56 } NCCALCSIZE_PARAMS;
57
58
59 PW32THREAD STDCALL
60 PsGetWin32Thread(VOID);
61 NTSTATUS STDCALL
62 PsCreateWin32Thread(PETHREAD Thread);
63 PW32PROCESS STDCALL
64 PsGetWin32Process(VOID);
65 NTSTATUS STDCALL
66 PsCreateWin32Process(PEPROCESS Process);
67 VOID STDCALL
68 PsEstablishWin32Callouts(PVOID Param1,
69 PVOID Param2,
70 PVOID Param3,
71 PVOID Param4,
72 ULONG W32ThreadSize,
73 ULONG W32ProcessSize);
74
75 #endif /* __INCLUDE_NAPI_WIN32_H */