Module: wine Branch: master Commit: bbd73667d7c7cdec6d811ee911b57c0bebc3f03e URL: https://source.winehq.org/git/wine.git/?a=commit;h=bbd73667d7c7cdec6d811ee91...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Fri Jan 24 12:19:37 2020 -0800
ntdll: Split logic for MemoryBasicInformation into a separate function.
Signed-off-by: Andrew Wesie awesie@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/virtual.c | 65 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 28 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 5890344f7a..ad91cffd8f 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -3011,40 +3011,16 @@ static int get_free_mem_state_callback( void *start, size_t size, void *arg ) return 1; }
-#define UNIMPLEMENTED_INFO_CLASS(c) \ - case c: \ - FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ - return STATUS_INVALID_INFO_CLASS - -/*********************************************************************** - * NtQueryVirtualMemory (NTDLL.@) - * ZwQueryVirtualMemory (NTDLL.@) - */ -NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, - MEMORY_INFORMATION_CLASS info_class, PVOID buffer, - SIZE_T len, SIZE_T *res_len ) +/* get basic information about a memory block */ +static NTSTATUS get_basic_memory_info( HANDLE process, LPCVOID addr, + MEMORY_BASIC_INFORMATION *info, + SIZE_T len, SIZE_T *res_len ) { struct file_view *view; char *base, *alloc_base = 0, *alloc_end = working_set_limit; struct wine_rb_entry *ptr; - MEMORY_BASIC_INFORMATION *info = buffer; sigset_t sigset;
- if (info_class != MemoryBasicInformation) - { - switch(info_class) - { - UNIMPLEMENTED_INFO_CLASS(MemoryWorkingSetList); - UNIMPLEMENTED_INFO_CLASS(MemorySectionName); - UNIMPLEMENTED_INFO_CLASS(MemoryBasicVlmInformation); - - default: - FIXME("(%p,%p,info_class=%d,%p,%ld,%p) Unknown information class\n", - process, addr, info_class, buffer, len, res_len); - return STATUS_INVALID_INFO_CLASS; - } - } - if (len < sizeof(MEMORY_BASIC_INFORMATION)) return STATUS_INFO_LENGTH_MISMATCH;
@@ -3159,6 +3135,39 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, }
+#define UNIMPLEMENTED_INFO_CLASS(c) \ + case c: \ + FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ + return STATUS_INVALID_INFO_CLASS + +/*********************************************************************** + * NtQueryVirtualMemory (NTDLL.@) + * ZwQueryVirtualMemory (NTDLL.@) + */ +NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, + MEMORY_INFORMATION_CLASS info_class, + PVOID buffer, SIZE_T len, SIZE_T *res_len ) +{ + TRACE("(%p, %p, info_class=%d, %p, %ld, %p)\n", + process, addr, info_class, buffer, len, res_len); + + switch(info_class) + { + case MemoryBasicInformation: + return get_basic_memory_info( process, addr, buffer, len, res_len ); + + UNIMPLEMENTED_INFO_CLASS(MemoryWorkingSetList); + UNIMPLEMENTED_INFO_CLASS(MemorySectionName); + UNIMPLEMENTED_INFO_CLASS(MemoryBasicVlmInformation); + + default: + FIXME("(%p,%p,info_class=%d,%p,%ld,%p) Unknown information class\n", + process, addr, info_class, buffer, len, res_len); + return STATUS_INVALID_INFO_CLASS; + } +} + + /*********************************************************************** * NtLockVirtualMemory (NTDLL.@) * ZwLockVirtualMemory (NTDLL.@)