4 * COPYRIGHT: See COPYING in the top level directory
5 * PROJECT: ReactOS Graphics Subsystem
6 * FILE: subsys/win32k/w32k.h
7 * PURPOSE: Main Win32K Header
8 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
11 /* INCLUDES ******************************************************************/
15 /* DDK/NDK/SDK Headers */
17 #define NTDDI_VERSION NTDDI_WS03SP1
23 #include <ntstrsafe.h>
26 /* FIXME: Defines in winbase.h that we need... */
27 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
, *LPSECURITY_ATTRIBUTES
;
29 #define STARTF_USESIZE 2
30 #define STARTF_USEPOSITION 4
34 /* Avoid type casting, by defining RECT to RECTL */
37 #define LPRECT LPRECTL
38 #define LPCRECT LPCRECTL
40 #define LPPOINT PPOINTL
41 #define PPOINT PPOINTL
45 #define NT_BUILD_ENVIRONMENT
54 /* SEH Support with PSEH */
55 #include <pseh/pseh2.h>
58 #include <csrss/csrss.h>
60 /* Public Win32K Headers */
61 #include <win32k/callback.h>
62 #include <win32k/ntusrtyp.h>
63 #include <win32k/ntuser.h>
64 #include <win32k/ntgdityp.h>
65 #include <win32k/ntgdibad.h>
68 /* Undocumented user definitions */
69 #include <undocuser.h>
71 /* Internal Win32K Header */
72 #include "include/win32kp.h"
74 /* Undocumented stuff */
75 typedef DRIVEROBJ
*PDRIVEROBJ
;
78 extern HANDLE GlobalUserHeap
;
81 UserCreateHeap(OUT PSECTION_OBJECT
*SectionObject
,
82 IN OUT PVOID
*SystemBase
,
86 UserHeapAlloc(SIZE_T Bytes
)
88 return RtlAllocateHeap(GlobalUserHeap
,
94 UserHeapFree(PVOID lpMem
)
96 return RtlFreeHeap(GlobalUserHeap
,
101 static __inline PVOID
102 UserHeapReAlloc(PVOID lpMem
,
106 /* NOTE: ntoskrnl doesn't export RtlReAllocateHeap... */
107 return RtlReAllocateHeap(GlobalUserHeap
,
115 PrevSize
= RtlSizeHeap(GlobalUserHeap
,
119 if (PrevSize
== Bytes
)
122 pNew
= RtlAllocateHeap(GlobalUserHeap
,
127 if (PrevSize
< Bytes
)
134 RtlFreeHeap(GlobalUserHeap
,
143 static __inline PVOID
144 UserHeapAddressToUser(PVOID lpMem
)
146 PPROCESSINFO W32Process
= PsGetCurrentProcessWin32Process();
147 return (PVOID
)(((ULONG_PTR
)lpMem
- (ULONG_PTR
)GlobalUserHeap
) +
148 (ULONG_PTR
)W32Process
->HeapMappings
.UserMapping
);
151 #define ROUND_DOWN(n, align) \
152 (((ULONG)n) & ~((align) - 1l))
154 #define ROUND_UP(n, align) \
155 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
157 #define LIST_FOR_EACH(elem, list, type, field) \
158 for ((elem) = CONTAINING_RECORD((list)->Flink, type, field); \
159 &(elem)->field != (list) && ((&((elem)->field)) != NULL); \
160 (elem) = CONTAINING_RECORD((elem)->field.Flink, type, field))
162 #define LIST_FOR_EACH_SAFE(cursor, cursor2, list, type, field) \
163 for ((cursor) = CONTAINING_RECORD((list)->Flink, type, field), \
164 (cursor2) = CONTAINING_RECORD((cursor)->field.Flink, type, field); \
165 &(cursor)->field != (list) && ((&((cursor)->field)) != NULL); \
166 (cursor) = (cursor2), \
167 (cursor2) = CONTAINING_RECORD((cursor)->field.Flink, type, field))
169 #endif /* __W32K_H */