mirror of
https://github.com/reactos/reactos.git
synced 2025-05-28 21:48:19 +00:00
[RTL] Implement RtlGetProcessHeaps
This commit is contained in:
parent
0ba94c83b5
commit
b8cdd1a879
3 changed files with 32 additions and 15 deletions
|
@ -3756,7 +3756,7 @@ BOOLEAN NTAPI RtlValidateHeap(
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
RtlEnumProcessHeaps(PHEAP_ENUMERATION_ROUTINE HeapEnumerationRoutine,
|
RtlEnumProcessHeaps(PHEAP_ENUMERATION_ROUTINE HeapEnumerationRoutine,
|
||||||
|
@ -3766,21 +3766,8 @@ RtlEnumProcessHeaps(PHEAP_ENUMERATION_ROUTINE HeapEnumerationRoutine,
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @unimplemented
|
||||||
*/
|
|
||||||
ULONG NTAPI
|
|
||||||
RtlGetProcessHeaps(ULONG count,
|
|
||||||
HANDLE *heaps)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
*/
|
||||||
BOOLEAN NTAPI
|
BOOLEAN NTAPI
|
||||||
RtlValidateProcessHeaps(VOID)
|
RtlValidateProcessHeaps(VOID)
|
||||||
|
|
|
@ -339,6 +339,7 @@ BOOLEAN NTAPI
|
||||||
RtlpValidateHeapHeaders(PHEAP Heap, BOOLEAN Recalculate);
|
RtlpValidateHeapHeaders(PHEAP Heap, BOOLEAN Recalculate);
|
||||||
|
|
||||||
/* heapdbg.c */
|
/* heapdbg.c */
|
||||||
|
NTSYSAPI
|
||||||
HANDLE NTAPI
|
HANDLE NTAPI
|
||||||
RtlDebugCreateHeap(ULONG Flags,
|
RtlDebugCreateHeap(ULONG Flags,
|
||||||
PVOID Addr,
|
PVOID Addr,
|
||||||
|
|
|
@ -127,3 +127,32 @@ RtlInitializeHeapManager(VOID)
|
||||||
RtlInitializeCriticalSection(&RtlpProcessHeapsListLock);
|
RtlInitializeCriticalSection(&RtlpProcessHeapsListLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ULONG NTAPI
|
||||||
|
RtlGetProcessHeaps(_In_ ULONG HeapCount, _Out_cap_(HeapCount) HANDLE *HeapArray)
|
||||||
|
{
|
||||||
|
PPEB Peb = RtlGetCurrentPeb();
|
||||||
|
|
||||||
|
RtlEnterCriticalSection(&RtlpProcessHeapsListLock);
|
||||||
|
ULONG nHeaps = Peb->NumberOfHeaps;
|
||||||
|
|
||||||
|
_SEH2_TRY
|
||||||
|
{
|
||||||
|
if (HeapArray)
|
||||||
|
{
|
||||||
|
for (ULONG n = 0; n < min(nHeaps, HeapCount); ++n)
|
||||||
|
{
|
||||||
|
HeapArray[n] = Peb->ProcessHeaps[n];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_SEH2_FINALLY
|
||||||
|
{
|
||||||
|
RtlLeaveCriticalSection(&RtlpProcessHeapsListLock);
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
|
/* TODO: Add RtlpDphPageHeapList here */
|
||||||
|
|
||||||
|
return nHeaps;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue