[PATCH v2 1/4] ntdll: Split logic for MemoryBasicInformation into a separate function.
Andrew Wesie
awesie at gmail.com
Fri Jan 24 14:19:37 CST 2020
From: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Andrew Wesie <awesie at gmail.com>
---
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.@)
--
2.17.1
More information about the wine-devel
mailing list