Alexandre Julliard : kernel32: Move heap functions to kernelbase.
Alexandre Julliard
julliard at winehq.org
Mon Sep 9 16:13:36 CDT 2019
Module: wine
Branch: master
Commit: cad0f61808cf6eba8109b40a19cacd96389cd139
URL: https://source.winehq.org/git/wine.git/?a=commit;h=cad0f61808cf6eba8109b40a19cacd96389cd139
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sun Sep 8 14:48:13 2019 +0200
kernel32: Move heap functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/heap.c | 94 -----------------------------------------
dlls/kernel32/kernel32.spec | 16 +++----
dlls/kernelbase/kernelbase.spec | 20 ++++-----
dlls/kernelbase/memory.c | 91 +++++++++++++++++++++++++++++++++++++++
4 files changed, 109 insertions(+), 112 deletions(-)
diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c
index 80e1152..8e0f8d4 100644
--- a/dlls/kernel32/heap.c
+++ b/dlls/kernel32/heap.c
@@ -171,85 +171,6 @@ BOOL WINAPI HeapDestroy( HANDLE heap /* [in] Handle of heap */ )
}
-/***********************************************************************
- * HeapCompact (KERNEL32.@)
- */
-SIZE_T WINAPI HeapCompact( HANDLE heap, DWORD flags )
-{
- return RtlCompactHeap( heap, flags );
-}
-
-
-/***********************************************************************
- * HeapValidate (KERNEL32.@)
- * Validates a specified heap.
- *
- * NOTES
- * Flags is ignored.
- *
- * RETURNS
- * TRUE: Success
- * FALSE: Failure
- */
-BOOL WINAPI HeapValidate(
- HANDLE heap, /* [in] Handle to the heap */
- DWORD flags, /* [in] Bit flags that control access during operation */
- LPCVOID block /* [in] Optional pointer to memory block to validate */
-) {
- return RtlValidateHeap( heap, flags, block );
-}
-
-
-/***********************************************************************
- * HeapWalk (KERNEL32.@)
- * Enumerates the memory blocks in a specified heap.
- *
- * TODO
- * - handling of PROCESS_HEAP_ENTRY_MOVEABLE and
- * PROCESS_HEAP_ENTRY_DDESHARE (needs heap.c support)
- *
- * RETURNS
- * TRUE: Success
- * FALSE: Failure
- */
-BOOL WINAPI HeapWalk(
- HANDLE heap, /* [in] Handle to heap to enumerate */
- LPPROCESS_HEAP_ENTRY entry /* [out] Pointer to structure of enumeration info */
-) {
- NTSTATUS ret = RtlWalkHeap( heap, entry );
- if (ret) SetLastError( RtlNtStatusToDosError(ret) );
- return !ret;
-}
-
-
-/***********************************************************************
- * HeapLock (KERNEL32.@)
- * Attempts to acquire the critical section object for a specified heap.
- *
- * RETURNS
- * TRUE: Success
- * FALSE: Failure
- */
-BOOL WINAPI HeapLock(
- HANDLE heap /* [in] Handle of heap to lock for exclusive access */
-) {
- return RtlLockHeap( heap );
-}
-
-
-/***********************************************************************
- * HeapUnlock (KERNEL32.@)
- * Releases ownership of the critical section object.
- *
- * RETURNS
- * TRUE: Success
- * FALSE: Failure
- */
-BOOL WINAPI HeapUnlock(
- HANDLE heap /* [in] Handle to the heap to unlock */
-) {
- return RtlUnlockHeap( heap );
-}
@@ -278,21 +199,6 @@ SIZE_T WINAPI HeapSize( HANDLE heap, DWORD flags, LPCVOID ptr )
return RtlSizeHeap( heap, flags, ptr );
}
-BOOL WINAPI HeapQueryInformation( HANDLE heap, HEAP_INFORMATION_CLASS info_class,
- PVOID info, SIZE_T size_in, PSIZE_T size_out)
-{
- NTSTATUS ret = RtlQueryHeapInformation( heap, info_class, info, size_in, size_out );
- if (ret) SetLastError( RtlNtStatusToDosError(ret) );
- return !ret;
-}
-
-BOOL WINAPI HeapSetInformation( HANDLE heap, HEAP_INFORMATION_CLASS infoclass, PVOID info, SIZE_T size)
-{
- NTSTATUS ret = RtlSetHeapInformation( heap, infoclass, info, size );
- if (ret) SetLastError( RtlNtStatusToDosError(ret) );
- return !ret;
-}
-
/*
* Win32 Global heap functions (GlobalXXX).
* These functions included in Win32 for compatibility with 16 bit Windows
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 9d5e9eb..f856597 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -918,24 +918,24 @@
@ stub Heap32ListNext
@ stub Heap32Next
@ stdcall HeapAlloc(long long long) ntdll.RtlAllocateHeap
-@ stdcall HeapCompact(long long)
+@ stdcall -import HeapCompact(long long)
@ stdcall HeapCreate(long long long)
@ stub HeapCreateTagsW
@ stdcall HeapDestroy(long)
@ stub HeapExtend
-@ stdcall HeapFree(long long ptr) ntdll.RtlFreeHeap
-@ stdcall HeapLock(long)
-@ stdcall HeapQueryInformation(long long ptr long ptr)
+@ stdcall HeapFree(long long ptr)
+@ stdcall -import HeapLock(long)
+@ stdcall -import HeapQueryInformation(long long ptr long ptr)
@ stub HeapQueryTagW
@ stdcall HeapReAlloc(long long ptr long) ntdll.RtlReAllocateHeap
@ stub HeapSetFlags
-@ stdcall HeapSetInformation(ptr long ptr long)
+@ stdcall -import HeapSetInformation(ptr long ptr long)
@ stdcall HeapSize(long long ptr) ntdll.RtlSizeHeap
@ stub HeapSummary
-@ stdcall HeapUnlock(long)
+@ stdcall -import HeapUnlock(long)
@ stub HeapUsage
-@ stdcall HeapValidate(long long ptr)
-@ stdcall HeapWalk(long ptr)
+@ stdcall -import HeapValidate(long long ptr)
+@ stdcall -import HeapWalk(long ptr)
@ stdcall IdnToAscii(long wstr long ptr long)
@ stdcall IdnToNameprepUnicode(long wstr long ptr long)
@ stdcall IdnToUnicode(long wstr long ptr long)
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 8889638..4d5e644 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -773,19 +773,19 @@
# @ stub HasPolicyForegroundProcessingCompletedInternal
@ stdcall HashData(ptr long ptr long)
@ stdcall HeapAlloc(long long long) ntdll.RtlAllocateHeap
-@ stdcall HeapCompact(long long) kernel32.HeapCompact
-@ stdcall HeapCreate(long long long) kernel32.HeapCreate
-@ stdcall HeapDestroy(long) kernel32.HeapDestroy
-@ stdcall HeapFree(long long ptr) ntdll.RtlFreeHeap
-@ stdcall HeapLock(long) kernel32.HeapLock
-@ stdcall HeapQueryInformation(long long ptr long ptr) kernel32.HeapQueryInformation
+@ stdcall HeapCompact(long long)
+@ stdcall HeapCreate(long long long)
+@ stdcall HeapDestroy(long)
+@ stdcall HeapFree(long long ptr)
+@ stdcall HeapLock(long)
+@ stdcall HeapQueryInformation(long long ptr long ptr)
@ stdcall HeapReAlloc(long long ptr long) ntdll.RtlReAllocateHeap
-@ stdcall HeapSetInformation(ptr long ptr long) kernel32.HeapSetInformation
+@ stdcall HeapSetInformation(ptr long ptr long)
@ stdcall HeapSize(long long ptr) ntdll.RtlSizeHeap
@ stub HeapSummary
-@ stdcall HeapUnlock(long) kernel32.HeapUnlock
-@ stdcall HeapValidate(long long ptr) kernel32.HeapValidate
-@ stdcall HeapWalk(long ptr) kernel32.HeapWalk
+@ stdcall HeapUnlock(long)
+@ stdcall HeapValidate(long long ptr)
+@ stdcall HeapWalk(long ptr)
@ stdcall IdnToAscii(long wstr long ptr long) kernel32.IdnToAscii
@ stdcall IdnToNameprepUnicode(long wstr long ptr long) kernel32.IdnToNameprepUnicode
@ stdcall IdnToUnicode(long wstr long ptr long) kernel32.IdnToUnicode
diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c
index 55e03df..ec9eace 100644
--- a/dlls/kernelbase/memory.c
+++ b/dlls/kernelbase/memory.c
@@ -291,3 +291,94 @@ BOOL WINAPI DECLSPEC_HOTPATCH WriteProcessMemory( HANDLE process, void *addr, co
{
return set_ntstatus( NtWriteVirtualMemory( process, addr, buffer, size, bytes_written ));
}
+
+
+/***********************************************************************
+ * Heap functions
+ ***********************************************************************/
+
+
+/***********************************************************************
+ * HeapCompact (kernelbase.@)
+ */
+SIZE_T WINAPI DECLSPEC_HOTPATCH HeapCompact( HANDLE heap, DWORD flags )
+{
+ return RtlCompactHeap( heap, flags );
+}
+
+
+/***********************************************************************
+ * HeapCreate (kernelbase.@)
+ */
+HANDLE WINAPI DECLSPEC_HOTPATCH HeapCreate( DWORD flags, SIZE_T init_size, SIZE_T max_size )
+{
+ HANDLE ret = RtlCreateHeap( flags, NULL, max_size, init_size, NULL, NULL );
+ if (!ret) SetLastError( ERROR_NOT_ENOUGH_MEMORY );
+ return ret;
+}
+
+
+/***********************************************************************
+ * HeapDestroy (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH HeapDestroy( HANDLE heap )
+{
+ if (!RtlDestroyHeap( heap )) return TRUE;
+ SetLastError( ERROR_INVALID_HANDLE );
+ return FALSE;
+}
+
+
+/***********************************************************************
+ * HeapLock (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH HeapLock( HANDLE heap )
+{
+ return RtlLockHeap( heap );
+}
+
+
+/***********************************************************************
+ * HeapQueryInformation (kernelbase.@)
+ */
+BOOL WINAPI HeapQueryInformation( HANDLE heap, HEAP_INFORMATION_CLASS info_class,
+ PVOID info, SIZE_T size, PSIZE_T size_out )
+{
+ return set_ntstatus( RtlQueryHeapInformation( heap, info_class, info, size, size_out ));
+}
+
+
+/***********************************************************************
+ * HeapSetInformation (kernelbase.@)
+ */
+BOOL WINAPI HeapSetInformation( HANDLE heap, HEAP_INFORMATION_CLASS infoclass, PVOID info, SIZE_T size )
+{
+ return set_ntstatus( RtlSetHeapInformation( heap, infoclass, info, size ));
+}
+
+
+/***********************************************************************
+ * HeapUnlock (kernelbase.@)
+ */
+BOOL WINAPI HeapUnlock( HANDLE heap )
+{
+ return RtlUnlockHeap( heap );
+}
+
+
+/***********************************************************************
+ * HeapValidate (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH HeapValidate( HANDLE heap, DWORD flags, LPCVOID ptr )
+{
+ return RtlValidateHeap( heap, flags, ptr );
+}
+
+
+/***********************************************************************
+ * HeapWalk (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH HeapWalk( HANDLE heap, PROCESS_HEAP_ENTRY *entry )
+{
+ return set_ntstatus( RtlWalkHeap( heap, entry ));
+}
More information about the wine-cvs
mailing list