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 */