Author: ion Date: Sat Jun 24 03:10:58 2006 New Revision: 22552
URL: http://svn.reactos.org/svn/reactos?rev=22552&view=rev Log: - Hackplement RtlSetUserValueHeap and RtlGetUserInfoHeap, they are needed for being able to build higher-level heap management around the Heap APIs (either for developers or the OS). Case in point, needed for my Global* rewrite in kernel32. The current APIs are utter hacks, but they work (eventually we should get rid of the Wine Windows 95 heap implementation and replace it).
Modified: trunk/reactos/dll/ntdll/def/ntdll.def trunk/reactos/include/ndk/rtlfuncs.h trunk/reactos/lib/rtl/heap.c
Modified: trunk/reactos/dll/ntdll/def/ntdll.def URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/def/ntdll.def?rev... ============================================================================== --- trunk/reactos/dll/ntdll/def/ntdll.def (original) +++ trunk/reactos/dll/ntdll/def/ntdll.def Sat Jun 24 03:10:58 2006 @@ -482,7 +482,7 @@ RtlGetSaclSecurityDescriptor@16 RtlGetSecurityDescriptorRMControl@8 RtlGetSetBootStatusData@24 -;RtlGetUserInfoHeap +RtlGetUserInfoHeap@20 RtlGetVersion@4 RtlHashUnicodeString@16 RtlIdentifierAuthoritySid@4 @@ -638,7 +638,7 @@ RtlSetTimeZoneInformation@4 ;RtlSetUnicodeCallouts ;RtlSetUserFlagsHeap -;RtlSetUserValueHeap +RtlSetUserValueHeap@16 RtlSizeHeap@12 RtlSplay@4 ;RtlStartRXact
Modified: trunk/reactos/include/ndk/rtlfuncs.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/rtlfuncs.h?rev=... ============================================================================== --- trunk/reactos/include/ndk/rtlfuncs.h (original) +++ trunk/reactos/include/ndk/rtlfuncs.h Sat Jun 24 03:10:58 2006 @@ -496,6 +496,16 @@ HANDLE *HeapArray );
+BOOLEAN +NTAPI +RtlGetUserInfoHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + OUT PVOID *UserValue, + OUT PULONG UserFlags +); + NTSYSAPI PVOID NTAPI @@ -515,6 +525,15 @@ BOOLEAN NTAPI RtlUnlockHeap(IN HANDLE Heap); + +BOOLEAN +NTAPI +RtlSetUserValueHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN PVOID UserValue +);
NTSYSAPI ULONG
Modified: trunk/reactos/lib/rtl/heap.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/heap.c?rev=22552&am... ============================================================================== --- trunk/reactos/lib/rtl/heap.c (original) +++ trunk/reactos/lib/rtl/heap.c Sat Jun 24 03:10:58 2006 @@ -100,6 +100,7 @@ RTL_CRITICAL_SECTION critSection; /* Critical section for serialization */ ULONG flags; /* Heap flags */ ULONG magic; /* Magic number */ + PVOID UserValue; PRTL_HEAP_COMMIT_ROUTINE commitRoutine; } HEAP, *PHEAP; @@ -1843,4 +1844,40 @@ return FALSE; }
+/* + * @unimplemented + */ +BOOLEAN +NTAPI +RtlSetUserValueHeap(IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN PVOID UserValue) +{ + HEAP *heapPtr = HEAP_GetPtr(HeapHandle); + + /* Hack */ + heapPtr->UserValue = UserValue; + return TRUE; +} + +/* + * @unimplemented + */ +BOOLEAN +NTAPI +RtlGetUserInfoHeap(IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + OUT PVOID *UserValue, + OUT PULONG UserFlags) +{ + HEAP *heapPtr = HEAP_GetPtr(HeapHandle); + + /* Hack */ + if (UserValue) *UserValue = heapPtr->UserValue; + if (UserFlags) *UserFlags = heapPtr->flags & HEAP_SETTABLE_USER_FLAGS; + return TRUE; +} + /* EOF */