Index: util/win/process_info.h |
diff --git a/util/win/process_info.h b/util/win/process_info.h |
index 5af28bd762bddabcc62f2f8be5e7cb88150f7ff0..25a544e7ab4c3bc92561f331ebdeaa3024cf39d1 100644 |
--- a/util/win/process_info.h |
+++ b/util/win/process_info.h |
@@ -23,6 +23,7 @@ |
#include "base/basictypes.h" |
#include "util/misc/initialization_state_dcheck.h" |
+#include "util/numeric/checked_range.h" |
#include "util/win/address_types.h" |
namespace crashpad { |
@@ -129,6 +130,16 @@ class ProcessInfo { |
//! \brief Retrieves information about all pages mapped into the process. |
const std::vector<MemoryInfo>& MemoryInformation() const; |
+ //! \brief Given a range to be read from the target process, returns a vector |
+ //! of ranges, representing the readable portions of the original range. |
+ //! |
+ //! \param[in] range The range being identified. |
+ //! |
+ //! \return A vector of ranges corresponding to the portion of \a range that |
+ //! is readable based on the memory map. |
+ std::vector<CheckedRange<WinVMAddress, WinVMSize>> GetReadableRanges( |
+ const CheckedRange<WinVMAddress, WinVMSize>& range) const; |
+ |
private: |
template <class Traits> |
friend bool GetProcessBasicInformation(HANDLE process, |
@@ -157,6 +168,16 @@ class ProcessInfo { |
DISALLOW_COPY_AND_ASSIGN(ProcessInfo); |
}; |
+//! \brief Given a memory map of a process, and a range to be read from the |
+//! target process, returns a vector of ranges, representing the readable |
+//! portions of the original range. |
+//! |
+//! This is a free function for testing, but prefer |
+//! ProcessInfo::GetReadableRanges(). |
+std::vector<CheckedRange<WinVMAddress, WinVMSize>> GetReadableRangesOfMemoryMap( |
+ const CheckedRange<WinVMAddress, WinVMSize>& range, |
+ const std::vector<ProcessInfo::MemoryInfo>& memory_info); |
+ |
} // namespace crashpad |
#endif // CRASHPAD_UTIL_WIN_PROCESS_INFO_H_ |