diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 47ff251067a..8da6321e8d0 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -371,6 +371,7 @@ @ stdcall -import DeleteProcThreadAttributeList(ptr) # @ stub DisableThreadProfiling @ stdcall DisassociateCurrentThreadFromCallback(ptr) NTDLL.TpDisassociateCallback +@ stdcall DiscardVirtualMemory(ptr long) kernelbase.DiscardVirtualMemory @ stdcall DeleteTimerQueue(long) @ stdcall -import DeleteTimerQueueEx(long long) @ stdcall -import DeleteTimerQueueTimer(long long long) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index e3a0ad257f2..af3af8ecabe 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -269,7 +269,7 @@ @ stdcall DisablePredefinedHandleTableInternal(long) @ stdcall DisableThreadLibraryCalls(long) @ stdcall DisassociateCurrentThreadFromCallback(ptr) ntdll.TpDisassociateCallback -# @ stub DiscardVirtualMemory +@ stdcall DiscardVirtualMemory(ptr long) @ stdcall DisconnectNamedPipe(long) @ stdcall DnsHostnameToComputerNameExW(wstr ptr ptr) # @ stub DsBindWithSpnExW diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index 4bcd4a639f6..a3ba79f3405 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -52,6 +52,19 @@ BOOLEAN WINAPI RtlSetUserValueHeap( HANDLE handle, ULONG flags, void *ptr, void ***********************************************************************/ +/*********************************************************************** + * DiscardVirtualMemory (kernelbase.@) + */ +DWORD WINAPI DECLSPEC_HOTPATCH DiscardVirtualMemory( void *addr, SIZE_T size ) +{ + NTSTATUS status; + LPVOID ret = addr; + + status = NtAllocateVirtualMemory( GetCurrentProcess(), &ret, 0, &size, MEM_RESET, PAGE_NOACCESS ); + return RtlNtStatusToDosError( status ); +} + + /*********************************************************************** * FlushViewOfFile (kernelbase.@) */ diff --git a/include/memoryapi.h b/include/memoryapi.h index 8743e67927c..6728b832fa7 100644 --- a/include/memoryapi.h +++ b/include/memoryapi.h @@ -41,5 +41,6 @@ typedef struct WIN32_MEMORY_REGION_INFORMATION SIZE_T CommitSize; } WIN32_MEMORY_REGION_INFORMATION; +DWORD WINAPI DiscardVirtualMemory(void *addr, SIZE_T size); BOOL WINAPI QueryVirtualMemoryInformation(HANDLE process,const void *addr, WIN32_MEMORY_INFORMATION_CLASS info_class, void *info, SIZE_T size, SIZE_T *ret_size);