From 67a9700267f05da6425f52b6e68111c785b5019e Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sun, 8 Sep 2019 15:03:17 +0200 Subject: [PATCH] kernel32: Move memory resource functions to kernelbase. Signed-off-by: Alexandre Julliard --- dlls/kernel32/kernel32.spec | 4 +-- dlls/kernel32/sync.c | 62 --------------------------------- dlls/kernelbase/kernelbase.spec | 4 +-- dlls/kernelbase/memory.c | 57 ++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 66 deletions(-) diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index f856597acd0..33c97fd16f1 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -298,7 +298,7 @@ @ stub CreateKernelThread @ stdcall CreateMailslotA(str long long ptr) @ stdcall CreateMailslotW(wstr long long ptr) -@ stdcall CreateMemoryResourceNotification(long) +@ stdcall -import CreateMemoryResourceNotification(long) @ stdcall -import CreateMutexA(ptr long str) @ stdcall -import CreateMutexExA(ptr str long long) @ stdcall -import CreateMutexExW(ptr wstr long long) @@ -1166,7 +1166,7 @@ # @ stub QueryIdleProcessorCycleTime # @ stub QueryIdleProcessorCycleTimeEx @ stdcall QueryInformationJobObject(long long ptr long ptr) -@ stdcall QueryMemoryResourceNotification(ptr ptr) +@ stdcall -import QueryMemoryResourceNotification(ptr ptr) @ stub QueryNumberOfEventLogRecords @ stub QueryOldestEventLogRecord @ stdcall QueryPerformanceCounter(ptr) diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c index 9c2d29f1d34..054b8c205a4 100644 --- a/dlls/kernel32/sync.c +++ b/dlls/kernel32/sync.c @@ -1009,68 +1009,6 @@ BOOL WINAPI BindIoCompletionCallback( HANDLE FileHandle, LPOVERLAPPED_COMPLETION } -/*********************************************************************** - * CreateMemoryResourceNotification (KERNEL32.@) - */ -HANDLE WINAPI CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE type) -{ - static const WCHAR lowmemW[] = - {'\\','K','e','r','n','e','l','O','b','j','e','c','t','s', - '\\','L','o','w','M','e','m','o','r','y','C','o','n','d','i','t','i','o','n',0}; - static const WCHAR highmemW[] = - {'\\','K','e','r','n','e','l','O','b','j','e','c','t','s', - '\\','H','i','g','h','M','e','m','o','r','y','C','o','n','d','i','t','i','o','n',0}; - HANDLE ret; - UNICODE_STRING nameW; - OBJECT_ATTRIBUTES attr; - NTSTATUS status; - - switch (type) - { - case LowMemoryResourceNotification: - RtlInitUnicodeString( &nameW, lowmemW ); - break; - case HighMemoryResourceNotification: - RtlInitUnicodeString( &nameW, highmemW ); - break; - default: - SetLastError( ERROR_INVALID_PARAMETER ); - return 0; - } - - attr.Length = sizeof(attr); - attr.RootDirectory = 0; - attr.ObjectName = &nameW; - attr.Attributes = 0; - attr.SecurityDescriptor = NULL; - attr.SecurityQualityOfService = NULL; - status = NtOpenEvent( &ret, EVENT_ALL_ACCESS, &attr ); - if (status != STATUS_SUCCESS) - { - SetLastError( RtlNtStatusToDosError(status) ); - return 0; - } - return ret; -} - -/*********************************************************************** - * QueryMemoryResourceNotification (KERNEL32.@) - */ -BOOL WINAPI QueryMemoryResourceNotification(HANDLE handle, PBOOL state) -{ - switch (WaitForSingleObject( handle, 0 )) - { - case WAIT_OBJECT_0: - *state = TRUE; - return TRUE; - case WAIT_TIMEOUT: - *state = FALSE; - return TRUE; - } - SetLastError( ERROR_INVALID_PARAMETER ); - return FALSE; -} - #ifdef __i386__ /*********************************************************************** diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index 4d5e644dbd6..e4125a4c05e 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -194,7 +194,7 @@ @ stdcall CreateHardLinkA(str str ptr) kernel32.CreateHardLinkA @ stdcall CreateHardLinkW(wstr wstr ptr) kernel32.CreateHardLinkW @ stdcall CreateIoCompletionPort(long long long long) -@ stdcall CreateMemoryResourceNotification(long) kernel32.CreateMemoryResourceNotification +@ stdcall CreateMemoryResourceNotification(long) @ stdcall CreateMutexA(ptr long str) @ stdcall CreateMutexExA(ptr str long long) @ stdcall CreateMutexExW(ptr wstr long long) @@ -1202,7 +1202,7 @@ # @ stub QueryIdleProcessorCycleTimeEx # @ stub QueryInterruptTime # @ stub QueryInterruptTimePrecise -@ stdcall QueryMemoryResourceNotification(ptr ptr) kernel32.QueryMemoryResourceNotification +@ stdcall QueryMemoryResourceNotification(ptr ptr) # @ stub QueryOptionalDelayLoadedAPI @ stdcall QueryPerformanceCounter(ptr) kernel32.QueryPerformanceCounter @ stdcall QueryPerformanceFrequency(ptr) kernel32.QueryPerformanceFrequency diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index ec9eacecba5..aa834a39a92 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -382,3 +382,60 @@ BOOL WINAPI DECLSPEC_HOTPATCH HeapWalk( HANDLE heap, PROCESS_HEAP_ENTRY *entry ) { return set_ntstatus( RtlWalkHeap( heap, entry )); } + + +/*********************************************************************** + * Memory resource functions + ***********************************************************************/ + + +/*********************************************************************** + * CreateMemoryResourceNotification (kernelbase.@) + */ +HANDLE WINAPI DECLSPEC_HOTPATCH CreateMemoryResourceNotification( MEMORY_RESOURCE_NOTIFICATION_TYPE type ) +{ + static const WCHAR lowmemW[] = + {'\\','K','e','r','n','e','l','O','b','j','e','c','t','s', + '\\','L','o','w','M','e','m','o','r','y','C','o','n','d','i','t','i','o','n',0}; + static const WCHAR highmemW[] = + {'\\','K','e','r','n','e','l','O','b','j','e','c','t','s', + '\\','H','i','g','h','M','e','m','o','r','y','C','o','n','d','i','t','i','o','n',0}; + HANDLE ret; + UNICODE_STRING nameW; + OBJECT_ATTRIBUTES attr; + + switch (type) + { + case LowMemoryResourceNotification: + RtlInitUnicodeString( &nameW, lowmemW ); + break; + case HighMemoryResourceNotification: + RtlInitUnicodeString( &nameW, highmemW ); + break; + default: + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + + InitializeObjectAttributes( &attr, &nameW, 0, 0, NULL ); + if (!set_ntstatus( NtOpenEvent( &ret, EVENT_ALL_ACCESS, &attr ))) return 0; + return ret; +} + +/*********************************************************************** + * QueryMemoryResourceNotification (kernelbase.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH QueryMemoryResourceNotification( HANDLE handle, BOOL *state ) +{ + switch (WaitForSingleObject( handle, 0 )) + { + case WAIT_OBJECT_0: + *state = TRUE; + return TRUE; + case WAIT_TIMEOUT: + *state = FALSE; + return TRUE; + } + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; +}