[PATCH 3/4] kernelbase: Implement VirtualAlloc2.

Myah Caron qsniyg at protonmail.com
Fri Oct 16 20:44:52 CDT 2020


Signed-off-by: Myah Caron <qsniyg at protonmail.com>
---
 dlls/kernelbase/kernelbase.spec |  1 +
 dlls/kernelbase/memory.c        | 15 +++++++++++++++
 include/winbase.h               |  1 +
 3 files changed, 17 insertions(+)

diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 9c7babde7fd..16c51a15f1d 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1675,6 +1675,7 @@
 @ stdcall VirtualAlloc(ptr long long long)
 @ stdcall VirtualAllocEx(long ptr long long long)
 @ stdcall VirtualAllocExNuma(long ptr long long long long)
+@ stdcall VirtualAlloc2(long ptr long long long ptr long)
 # @ stub VirtualAllocFromApp
 @ stdcall VirtualFree(ptr long long)
 @ stdcall VirtualFreeEx(long ptr long long)
diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c
index 4ead38f2bc0..c3adf2217af 100644
--- a/dlls/kernelbase/memory.c
+++ b/dlls/kernelbase/memory.c
@@ -299,6 +299,21 @@ LPVOID WINAPI DECLSPEC_HOTPATCH VirtualAllocEx( HANDLE process, void *addr, SIZE
 }


+/***********************************************************************
+ *             VirtualAlloc2   (kernelbase.@)
+ */
+LPVOID WINAPI DECLSPEC_HOTPATCH VirtualAlloc2( HANDLE process, void *addr, SIZE_T size,
+                                               DWORD type, DWORD protect,
+                                               MEM_EXTENDED_PARAMETER* parameters, ULONG count )
+{
+    LPVOID ret = addr;
+
+    if (!set_ntstatus( NtAllocateVirtualMemoryEx( process, &ret, &size, type, protect, parameters, count )))
+        return NULL;
+    return ret;
+}
+
+
 /***********************************************************************
  *             VirtualFree   (kernelbase.@)
  */
diff --git a/include/winbase.h b/include/winbase.h
index f1c3198c21a..6bf632387a8 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -2746,6 +2746,7 @@ WINBASEAPI BOOL        WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDL
 WINBASEAPI LPVOID      WINAPI VirtualAlloc(LPVOID,SIZE_T,DWORD,DWORD);
 WINBASEAPI LPVOID      WINAPI VirtualAllocEx(HANDLE,LPVOID,SIZE_T,DWORD,DWORD);
 WINBASEAPI LPVOID      WINAPI VirtualAllocExNuma(HANDLE,void*,SIZE_T,DWORD,DWORD,DWORD);
+WINBASEAPI LPVOID      WINAPI VirtualAlloc2(HANDLE,LPVOID,SIZE_T,DWORD,DWORD,MEM_EXTENDED_PARAMETER*,ULONG);
 WINBASEAPI BOOL        WINAPI VirtualFree(LPVOID,SIZE_T,DWORD);
 WINBASEAPI BOOL        WINAPI VirtualFreeEx(HANDLE,LPVOID,SIZE_T,DWORD);
 WINBASEAPI BOOL        WINAPI VirtualLock(LPVOID,SIZE_T);
--
2.28.0





More information about the wine-devel mailing list