Chromium Code Reviews| Index: util/win/process_info.h |
| diff --git a/util/win/process_info.h b/util/win/process_info.h |
| index ed07ab09f6b8ef27a51c6c456cdd7f40c2a285d1..4caeb3e36dfe492e4e4fd22492249daa9354b298 100644 |
| --- a/util/win/process_info.h |
| +++ b/util/win/process_info.h |
| @@ -49,6 +49,41 @@ class ProcessInfo { |
| time_t timestamp; |
| }; |
| + // \brief Contains information about a range of pages in the virtual address |
| + // space of a process. |
| + struct MemoryInfo { |
| + MemoryInfo(); |
|
Mark Mentovai
2015/09/26 03:36:36
Is this form needed because of the vector?
scottmg
2015/09/26 04:08:53
No, just habit. Removed.
|
| + explicit MemoryInfo(const MEMORY_BASIC_INFORMATION& mbi); |
| + ~MemoryInfo(); |
| + |
| + //! \brief The base address of the region of pages. |
| + WinVMAddress base_address; |
| + |
| + //! \brief The size of the region beginning at base_address in bytes. |
| + WinVMSize region_size; |
| + |
| + //! \brief The base address of a range of pages that was allocated by |
| + //! `VirtualAlloc()`. The page pointed to base_address is within this |
| + //! range of pages. |
| + WinVMAddress allocation_base; |
| + |
| + //! \brief The state of the pages, one of `MEM_COMMIT`, `MEM_FREE`, or |
| + //! `MEM_RESERVE`. |
| + uint32_t state; |
| + |
| + //! \brief The memory protection option when this page was originally |
| + //! allocated. This will be `PAGE_EXECUTE`, `PAGE_EXECUTE_READ`, etc. |
| + uint32_t allocation_protect; |
| + |
| + //! \brief The current memoryprotection state. This will be `PAGE_EXECUTE`, |
| + //! `PAGE_EXECUTE_READ`, etc. |
| + uint32_t protect; |
| + |
| + //! \brief The type of the pages. This will be one of `MEM_IMAGE`, |
| + //! `MEM_MAPPED`, or `MEM_PRIVATE`. |
| + uint32_t type; |
| + }; |
| + |
| ProcessInfo(); |
| ~ProcessInfo(); |
| @@ -92,6 +127,9 @@ class ProcessInfo { |
| //! first element. |
| bool Modules(std::vector<Module>* modules) const; |
| + //! \brief Retrieves information about all pages mapped into the process. |
| + const std::vector<MemoryInfo>& MemoryInformation() const; |
| + |
| private: |
| template <class Traits> |
| friend bool GetProcessBasicInformation(HANDLE process, |
| @@ -104,12 +142,15 @@ class ProcessInfo { |
| WinVMAddress peb_address_vmaddr, |
| ProcessInfo* process_info); |
| + friend bool ReadMemoryInfo(HANDLE process, ProcessInfo* process_info); |
| + |
| pid_t process_id_; |
| pid_t inherited_from_process_id_; |
| std::wstring command_line_; |
| WinVMAddress peb_address_; |
| WinVMSize peb_size_; |
| std::vector<Module> modules_; |
| + std::vector<MemoryInfo> memory_info_; |
| bool is_64_bit_; |
| bool is_wow64_; |
| InitializationStateDcheck initialized_; |