From a7b384319a7d02585ea832fff558c8a7974a7953 Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Sat, 27 Aug 2011 18:26:37 +0000 Subject: [PATCH] [win32k] - Move some definitions to a better place svn path=/trunk/; revision=53474 --- .../win32/win32k/include/driverobj.h | 2 + .../subsystems/win32/win32k/include/misc.h | 18 ++++ .../subsystems/win32/win32k/include/ntuser.h | 74 +++++++++++++++ reactos/subsystems/win32/win32k/pch.h | 95 ------------------- 4 files changed, 94 insertions(+), 95 deletions(-) diff --git a/reactos/subsystems/win32/win32k/include/driverobj.h b/reactos/subsystems/win32/win32k/include/driverobj.h index 7ecc5c3e171..d433bbdc2e9 100644 --- a/reactos/subsystems/win32/win32k/include/driverobj.h +++ b/reactos/subsystems/win32/win32k/include/driverobj.h @@ -8,6 +8,8 @@ typedef struct _EDRIVEROBJ PVOID reserved; } EDRIVEROBJ, *PEDRIVEROBJ; +typedef DRIVEROBJ *PDRIVEROBJ; + /* Cleanup function */ BOOL NTAPI DRIVEROBJ_Cleanup(PVOID pObject); diff --git a/reactos/subsystems/win32/win32k/include/misc.h b/reactos/subsystems/win32/win32k/include/misc.h index 46ff10eb3cb..72bd48ced58 100644 --- a/reactos/subsystems/win32/win32k/include/misc.h +++ b/reactos/subsystems/win32/win32k/include/misc.h @@ -145,3 +145,21 @@ NTSTATUS FASTCALL IntSafeCopyUnicodeStringTerminateNULL(PUNICODE_STRING Dest, PUNICODE_STRING Source); + +#define ROUND_DOWN(n, align) \ + (((ULONG)n) & ~((align) - 1l)) + +#define ROUND_UP(n, align) \ + ROUND_DOWN(((ULONG)n) + (align) - 1, (align)) + +#define LIST_FOR_EACH(elem, list, type, field) \ + for ((elem) = CONTAINING_RECORD((list)->Flink, type, field); \ + &(elem)->field != (list) && ((&((elem)->field)) != NULL); \ + (elem) = CONTAINING_RECORD((elem)->field.Flink, type, field)) + +#define LIST_FOR_EACH_SAFE(cursor, cursor2, list, type, field) \ + for ((cursor) = CONTAINING_RECORD((list)->Flink, type, field), \ + (cursor2) = CONTAINING_RECORD((cursor)->field.Flink, type, field); \ + &(cursor)->field != (list) && ((&((cursor)->field)) != NULL); \ + (cursor) = (cursor2), \ + (cursor2) = CONTAINING_RECORD((cursor)->field.Flink, type, field)) diff --git a/reactos/subsystems/win32/win32k/include/ntuser.h b/reactos/subsystems/win32/win32k/include/ntuser.h index 3a82f9d9f18..e932d3f760d 100644 --- a/reactos/subsystems/win32/win32k/include/ntuser.h +++ b/reactos/subsystems/win32/win32k/include/ntuser.h @@ -20,4 +20,78 @@ VOID FASTCALL UserLeave(VOID); BOOL FASTCALL UserIsEntered(VOID); BOOL FASTCALL UserIsEnteredExclusive(VOID); +/* User heap */ +extern HANDLE GlobalUserHeap; + +PWIN32HEAP +UserCreateHeap(OUT PSECTION_OBJECT *SectionObject, + IN OUT PVOID *SystemBase, + IN SIZE_T HeapSize); + +static __inline PVOID +UserHeapAlloc(SIZE_T Bytes) +{ + return RtlAllocateHeap(GlobalUserHeap, + HEAP_NO_SERIALIZE, + Bytes); +} + +static __inline BOOL +UserHeapFree(PVOID lpMem) +{ + return RtlFreeHeap(GlobalUserHeap, + HEAP_NO_SERIALIZE, + lpMem); +} + +static __inline PVOID +UserHeapReAlloc(PVOID lpMem, + SIZE_T Bytes) +{ +#if 0 + /* NOTE: ntoskrnl doesn't export RtlReAllocateHeap... */ + return RtlReAllocateHeap(GlobalUserHeap, + HEAP_NO_SERIALIZE, + lpMem, + Bytes); +#else + SIZE_T PrevSize; + PVOID pNew; + + PrevSize = RtlSizeHeap(GlobalUserHeap, + HEAP_NO_SERIALIZE, + lpMem); + + if (PrevSize == Bytes) + return lpMem; + + pNew = RtlAllocateHeap(GlobalUserHeap, + HEAP_NO_SERIALIZE, + Bytes); + if (pNew != NULL) + { + if (PrevSize < Bytes) + Bytes = PrevSize; + + RtlCopyMemory(pNew, + lpMem, + Bytes); + + RtlFreeHeap(GlobalUserHeap, + HEAP_NO_SERIALIZE, + lpMem); + } + + return pNew; +#endif +} + +static __inline PVOID +UserHeapAddressToUser(PVOID lpMem) +{ + PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process(); + return (PVOID)(((ULONG_PTR)lpMem - (ULONG_PTR)GlobalUserHeap) + + (ULONG_PTR)W32Process->HeapMappings.UserMapping); +} + /* EOF */ diff --git a/reactos/subsystems/win32/win32k/pch.h b/reactos/subsystems/win32/win32k/pch.h index 5fa79ee080b..fcb3583cca2 100644 --- a/reactos/subsystems/win32/win32k/pch.h +++ b/reactos/subsystems/win32/win32k/pch.h @@ -84,99 +84,4 @@ typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; /* Internal Win32K Header */ #include "include/win32kp.h" -/* Undocumented stuff */ -typedef DRIVEROBJ *PDRIVEROBJ; - -/* User heap */ -extern HANDLE GlobalUserHeap; - -PWIN32HEAP -UserCreateHeap(OUT PSECTION_OBJECT *SectionObject, - IN OUT PVOID *SystemBase, - IN SIZE_T HeapSize); - -static __inline PVOID -UserHeapAlloc(SIZE_T Bytes) -{ - return RtlAllocateHeap(GlobalUserHeap, - HEAP_NO_SERIALIZE, - Bytes); -} - -static __inline BOOL -UserHeapFree(PVOID lpMem) -{ - return RtlFreeHeap(GlobalUserHeap, - HEAP_NO_SERIALIZE, - lpMem); -} - -static __inline PVOID -UserHeapReAlloc(PVOID lpMem, - SIZE_T Bytes) -{ -#if 0 - /* NOTE: ntoskrnl doesn't export RtlReAllocateHeap... */ - return RtlReAllocateHeap(GlobalUserHeap, - HEAP_NO_SERIALIZE, - lpMem, - Bytes); -#else - SIZE_T PrevSize; - PVOID pNew; - - PrevSize = RtlSizeHeap(GlobalUserHeap, - HEAP_NO_SERIALIZE, - lpMem); - - if (PrevSize == Bytes) - return lpMem; - - pNew = RtlAllocateHeap(GlobalUserHeap, - HEAP_NO_SERIALIZE, - Bytes); - if (pNew != NULL) - { - if (PrevSize < Bytes) - Bytes = PrevSize; - - RtlCopyMemory(pNew, - lpMem, - Bytes); - - RtlFreeHeap(GlobalUserHeap, - HEAP_NO_SERIALIZE, - lpMem); - } - - return pNew; -#endif -} - -static __inline PVOID -UserHeapAddressToUser(PVOID lpMem) -{ - PPROCESSINFO W32Process = PsGetCurrentProcessWin32Process(); - return (PVOID)(((ULONG_PTR)lpMem - (ULONG_PTR)GlobalUserHeap) + - (ULONG_PTR)W32Process->HeapMappings.UserMapping); -} - -#define ROUND_DOWN(n, align) \ - (((ULONG)n) & ~((align) - 1l)) - -#define ROUND_UP(n, align) \ - ROUND_DOWN(((ULONG)n) + (align) - 1, (align)) - -#define LIST_FOR_EACH(elem, list, type, field) \ - for ((elem) = CONTAINING_RECORD((list)->Flink, type, field); \ - &(elem)->field != (list) && ((&((elem)->field)) != NULL); \ - (elem) = CONTAINING_RECORD((elem)->field.Flink, type, field)) - -#define LIST_FOR_EACH_SAFE(cursor, cursor2, list, type, field) \ - for ((cursor) = CONTAINING_RECORD((list)->Flink, type, field), \ - (cursor2) = CONTAINING_RECORD((cursor)->field.Flink, type, field); \ - &(cursor)->field != (list) && ((&((cursor)->field)) != NULL); \ - (cursor) = (cursor2), \ - (cursor2) = CONTAINING_RECORD((cursor)->field.Flink, type, field)) - #endif /* __W32K_H */