Index: reactos/sdk/include/ndk/rtlfuncs.h =================================================================== --- reactos/sdk/include/ndk/rtlfuncs.h (revision 73352) +++ reactos/sdk/include/ndk/rtlfuncs.h (working copy) @@ -972,7 +972,7 @@ _Must_inspect_result_ NTSYSAPI -NTSTATUS +ULONG NTAPI RtlMultipleAllocateHeap ( _In_ HANDLE HeapHandle, @@ -983,7 +983,7 @@ ); NTSYSAPI -NTSTATUS +ULONG NTAPI RtlMultipleFreeHeap ( _In_ HANDLE HeapHandle, Index: reactos/sdk/lib/rtl/heap.c =================================================================== --- reactos/sdk/lib/rtl/heap.c (revision 73352) +++ reactos/sdk/lib/rtl/heap.c (working copy) @@ -4,6 +4,7 @@ * FILE: lib/rtl/heap.c * PURPOSE: RTL Heap backend allocator * PROGRAMMERS: Copyright 2010 Aleksey Bragin + * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com) */ /* Useful references: @@ -3955,7 +3956,10 @@ return STATUS_UNSUCCESSFUL; } -NTSTATUS +/* + * @implemented + */ +ULONG NTAPI RtlMultipleAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, @@ -3963,11 +3967,25 @@ IN ULONG Count, OUT PVOID *Array) { - UNIMPLEMENTED; - return 0; + ULONG Index; + + RtlZeroMemory(Array, Count * sizeof(PVOID)); + + for (Index = 0; Index < Count; ++Index) + { + Array[Index] = RtlAllocateHeap(HeapHandle, Flags, Size); + if (Array[Index] == NULL) + { + break; + } + } + return Index; } -NTSTATUS +/* + * @implemented + */ +ULONG NTAPI RtlMultipleFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, @@ -3974,8 +3992,15 @@ IN ULONG Count, OUT PVOID *Array) { - UNIMPLEMENTED; - return 0; + ULONG Index; + for (Index = 0; Index < Count; ++Index) + { + if (!RtlFreeHeap(HeapHandle, Flags, Array[Index])) + break; + + Array[Index] = NULL; + } + return Index; } /* EOF */