From 92677eb0874109329683c333575170b6712bc56f Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Thu, 10 Feb 2011 18:21:53 +0000 Subject: [PATCH] - Add stubs for all page heap API functions. - Enable call to RtlpPageHeapDestroy() when necessary. - Reset Parameters==-1 hack after unsuccessful call to RtlpPageHeapCreate(), would be necessary when page heap is implemented.. svn path=/trunk/; revision=50654 --- reactos/lib/rtl/heap.c | 7 ++++ reactos/lib/rtl/heap.h | 47 ++++++++++++++++++++++++++ reactos/lib/rtl/heappage.c | 69 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+) diff --git a/reactos/lib/rtl/heap.c b/reactos/lib/rtl/heap.c index 9a563eeecd0..bb81fc3987a 100644 --- a/reactos/lib/rtl/heap.c +++ b/reactos/lib/rtl/heap.c @@ -1364,6 +1364,10 @@ RtlCreateHeap(ULONG Flags, //ASSERT(FALSE); DPRINT1("Enabling page heap failed\n"); + + /* Reset a special Parameters == -1 hack */ + if ((ULONG_PTR)Parameters == (ULONG_PTR)-1) + Parameters = NULL; } /* Check validation flags */ @@ -1716,6 +1720,9 @@ RtlDestroyHeap(HANDLE HeapPtr) /* [in] Handle of heap */ if (!HeapPtr) return NULL; + /* Call page heap routine if required */ + if (Heap->ForceFlags & HEAP_FLAG_PAGE_ALLOCS) return RtlpPageHeapDestroy(HeapPtr); + /* Call special heap */ if (RtlpHeapIsSpecial(Heap->Flags)) { diff --git a/reactos/lib/rtl/heap.h b/reactos/lib/rtl/heap.h index 8291838c6de..4ea5f098620 100644 --- a/reactos/lib/rtl/heap.h +++ b/reactos/lib/rtl/heap.h @@ -385,6 +385,8 @@ RtlDebugSizeHeap(HANDLE HeapPtr, ULONG Flags, PVOID Ptr); +/* heappage.c */ + HANDLE NTAPI RtlpPageHeapCreate(ULONG Flags, PVOID Addr, @@ -393,4 +395,49 @@ RtlpPageHeapCreate(ULONG Flags, PVOID Lock, PRTL_HEAP_PARAMETERS Parameters); +PVOID NTAPI +RtlpPageHeapDestroy(HANDLE HeapPtr); + +PVOID NTAPI +RtlpPageHeapAllocate(IN PVOID HeapPtr, + IN ULONG Flags, + IN SIZE_T Size); + +BOOLEAN NTAPI +RtlpPageHeapFree(HANDLE HeapPtr, + ULONG Flags, + PVOID Ptr); + +PVOID NTAPI +RtlpPageHeapReAllocate(HANDLE HeapPtr, + ULONG Flags, + PVOID Ptr, + SIZE_T Size); + +BOOLEAN NTAPI +RtlpPageHeapGetUserInfo(PVOID HeapHandle, + ULONG Flags, + PVOID BaseAddress, + PVOID *UserValue, + PULONG UserFlags); + +BOOLEAN NTAPI +RtlpPageHeapSetUserValue(PVOID HeapHandle, + ULONG Flags, + PVOID BaseAddress, + PVOID UserValue); + +BOOLEAN +NTAPI +RtlpPageHeapSetUserFlags(PVOID HeapHandle, + ULONG Flags, + PVOID BaseAddress, + ULONG UserFlagsReset, + ULONG UserFlagsSet); + +SIZE_T NTAPI +RtlpPageHeapSize(HANDLE HeapPtr, + ULONG Flags, + PVOID Ptr); + #endif diff --git a/reactos/lib/rtl/heappage.c b/reactos/lib/rtl/heappage.c index b42136218b9..a953d4ceb39 100644 --- a/reactos/lib/rtl/heappage.c +++ b/reactos/lib/rtl/heappage.c @@ -36,4 +36,73 @@ RtlpPageHeapCreate(ULONG Flags, return NULL; } +PVOID NTAPI +RtlpPageHeapDestroy(HANDLE HeapPtr) +{ + return FALSE; +} + +PVOID NTAPI +RtlpPageHeapAllocate(IN PVOID HeapPtr, + IN ULONG Flags, + IN SIZE_T Size) +{ + return NULL; +} + +BOOLEAN NTAPI +RtlpPageHeapFree(HANDLE HeapPtr, + ULONG Flags, + PVOID Ptr) +{ + return FALSE; +} + +PVOID NTAPI +RtlpPageHeapReAllocate(HANDLE HeapPtr, + ULONG Flags, + PVOID Ptr, + SIZE_T Size) +{ + return NULL; +} + +BOOLEAN NTAPI +RtlpPageHeapGetUserInfo(PVOID HeapHandle, + ULONG Flags, + PVOID BaseAddress, + PVOID *UserValue, + PULONG UserFlags) +{ + return FALSE; +} + +BOOLEAN NTAPI +RtlpPageHeapSetUserValue(PVOID HeapHandle, + ULONG Flags, + PVOID BaseAddress, + PVOID UserValue) +{ + return FALSE; +} + +BOOLEAN +NTAPI +RtlpPageHeapSetUserFlags(PVOID HeapHandle, + ULONG Flags, + PVOID BaseAddress, + ULONG UserFlagsReset, + ULONG UserFlagsSet) +{ + return FALSE; +} + +SIZE_T NTAPI +RtlpPageHeapSize(HANDLE HeapPtr, + ULONG Flags, + PVOID Ptr) +{ + return 0; +} + /* EOF */