crashpad/doc/generated/doxygen/classcrashpad_1_1ProcessMemoryRange.html
2017-07-29 17:13:40 -04:00

376 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::ProcessMemoryRange Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Crashpad
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html">ProcessMemoryRange</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1ProcessMemoryRange-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::ProcessMemoryRange Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Provides range protected access to the memory of another process.
<a href="classcrashpad_1_1ProcessMemoryRange.html#details">More...</a></p>
<p><code>#include &quot;util/linux/process_memory_range.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a23ad3695cfbfa6e8d6d0c776afef46b6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#a23ad3695cfbfa6e8d6d0c776afef46b6">Initialize</a> (const <a class="el" href="classcrashpad_1_1ProcessMemory.html">ProcessMemory</a> *memory, bool is_64_bit, <a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a> base, <a class="el" href="namespacecrashpad.html#aa2b5b2818842bda12ff9c4d555c2c8c8">LinuxVMSize</a> size)</td></tr>
<tr class="memdesc:a23ad3695cfbfa6e8d6d0c776afef46b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes this object. <a href="#a23ad3695cfbfa6e8d6d0c776afef46b6">More...</a><br /></td></tr>
<tr class="separator:a23ad3695cfbfa6e8d6d0c776afef46b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4642cb32847e27d07998a6c7b0cc6cfb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#a4642cb32847e27d07998a6c7b0cc6cfb">Initialize</a> (const <a class="el" href="classcrashpad_1_1ProcessMemory.html">ProcessMemory</a> *memory, bool is_64_bit)</td></tr>
<tr class="memdesc:a4642cb32847e27d07998a6c7b0cc6cfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes this object with the maximum range for the address space. <a href="#a4642cb32847e27d07998a6c7b0cc6cfb">More...</a><br /></td></tr>
<tr class="separator:a4642cb32847e27d07998a6c7b0cc6cfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ffc0c7d4ae44532a8336ce1e4f7a4c9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#a5ffc0c7d4ae44532a8336ce1e4f7a4c9">Initialize</a> (const <a class="el" href="classcrashpad_1_1ProcessMemoryRange.html">ProcessMemoryRange</a> &amp;other)</td></tr>
<tr class="memdesc:a5ffc0c7d4ae44532a8336ce1e4f7a4c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes this object from an existing memory range. <a href="#a5ffc0c7d4ae44532a8336ce1e4f7a4c9">More...</a><br /></td></tr>
<tr class="separator:a5ffc0c7d4ae44532a8336ce1e4f7a4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c486d8043ce80096e4a578339d13196"><td class="memItemLeft" align="right" valign="top"><a id="a4c486d8043ce80096e4a578339d13196"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#a4c486d8043ce80096e4a578339d13196">Is64Bit</a> () const</td></tr>
<tr class="memdesc:a4c486d8043ce80096e4a578339d13196"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the range is part of a 64-bit address space. <br /></td></tr>
<tr class="separator:a4c486d8043ce80096e4a578339d13196"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca5609c65d501aaf82e95d6a349c1907"><td class="memItemLeft" align="right" valign="top"><a id="aca5609c65d501aaf82e95d6a349c1907"></a>
<a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#aca5609c65d501aaf82e95d6a349c1907">Base</a> () const</td></tr>
<tr class="memdesc:aca5609c65d501aaf82e95d6a349c1907"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the base address of the range. <br /></td></tr>
<tr class="separator:aca5609c65d501aaf82e95d6a349c1907"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac775497b681cb3471211a2bf2114d779"><td class="memItemLeft" align="right" valign="top"><a id="ac775497b681cb3471211a2bf2114d779"></a>
<a class="el" href="namespacecrashpad.html#aa2b5b2818842bda12ff9c4d555c2c8c8">LinuxVMSize</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#ac775497b681cb3471211a2bf2114d779">Size</a> () const</td></tr>
<tr class="memdesc:ac775497b681cb3471211a2bf2114d779"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the range. <br /></td></tr>
<tr class="separator:ac775497b681cb3471211a2bf2114d779"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f1a929c8147197216edf5187c7b24fa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#a6f1a929c8147197216edf5187c7b24fa">RestrictRange</a> (<a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a> base, <a class="el" href="namespacecrashpad.html#aa2b5b2818842bda12ff9c4d555c2c8c8">LinuxVMSize</a> size)</td></tr>
<tr class="memdesc:a6f1a929c8147197216edf5187c7b24fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shrinks the range to the new base and size. <a href="#a6f1a929c8147197216edf5187c7b24fa">More...</a><br /></td></tr>
<tr class="separator:a6f1a929c8147197216edf5187c7b24fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26c36adb5a042b1c3dddbcaf457200d6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#a26c36adb5a042b1c3dddbcaf457200d6">Read</a> (<a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a> address, size_t size, void *buffer) const</td></tr>
<tr class="memdesc:a26c36adb5a042b1c3dddbcaf457200d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies memory from the target process into a caller-provided buffer in the current process. <a href="#a26c36adb5a042b1c3dddbcaf457200d6">More...</a><br /></td></tr>
<tr class="separator:a26c36adb5a042b1c3dddbcaf457200d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc40d7e7835a1626ee80b69b1bee100a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryRange.html#afc40d7e7835a1626ee80b69b1bee100a">ReadCStringSizeLimited</a> (<a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a> address, size_t size, std::string *string) const</td></tr>
<tr class="memdesc:afc40d7e7835a1626ee80b69b1bee100a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a <code>NUL</code>-terminated C string from the target process into a string in the current process. <a href="#afc40d7e7835a1626ee80b69b1bee100a">More...</a><br /></td></tr>
<tr class="separator:afc40d7e7835a1626ee80b69b1bee100a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Provides range protected access to the memory of another process. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a23ad3695cfbfa6e8d6d0c776afef46b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23ad3695cfbfa6e8d6d0c776afef46b6">&#9670;&nbsp;</a></span>Initialize() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::ProcessMemoryRange::Initialize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcrashpad_1_1ProcessMemory.html">ProcessMemory</a> *&#160;</td>
<td class="paramname"><em>memory</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_64_bit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a>&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#aa2b5b2818842bda12ff9c4d555c2c8c8">LinuxVMSize</a>&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes this object. </p>
<p>One of the Initialize methods must be successfully called on this object before calling any other.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">memory</td><td>The memory reader to delegate to. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">is_64_bit</td><td>Whether the target process is 64-bit. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The base address of the initial range. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The size of the initial range. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
</div>
</div>
<a id="a4642cb32847e27d07998a6c7b0cc6cfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4642cb32847e27d07998a6c7b0cc6cfb">&#9670;&nbsp;</a></span>Initialize() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::ProcessMemoryRange::Initialize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcrashpad_1_1ProcessMemory.html">ProcessMemory</a> *&#160;</td>
<td class="paramname"><em>memory</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>is_64_bit</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes this object with the maximum range for the address space. </p>
<p>One of the Initialize methods must be successfully called on this object before calling any other.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">memory</td><td>The memory reader to delegate to. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">is_64_bit</td><td>Whether the target process is 64-bit. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5ffc0c7d4ae44532a8336ce1e4f7a4c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ffc0c7d4ae44532a8336ce1e4f7a4c9">&#9670;&nbsp;</a></span>Initialize() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::ProcessMemoryRange::Initialize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcrashpad_1_1ProcessMemoryRange.html">ProcessMemoryRange</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes this object from an existing memory range. </p>
<p>One of the Initialize methods must be successfully called on this object before calling any other.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">other</td><td>The memory range object to initialize from. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
</div>
</div>
<a id="a26c36adb5a042b1c3dddbcaf457200d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26c36adb5a042b1c3dddbcaf457200d6">&#9670;&nbsp;</a></span>Read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::ProcessMemoryRange::Read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a>&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>buffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Copies memory from the target process into a caller-provided buffer in the current process. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">address</td><td>The address, in the target process' address space, of the memory region to copy. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The size, in bytes, of the memory region to copy. <em>buffer</em> must be at least this size. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>The buffer into which the contents of the other process' memory will be copied.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success, with <em>buffer</em> filled appropriately. <code>false</code> on failure, with a message logged. </dd></dl>
</div>
</div>
<a id="afc40d7e7835a1626ee80b69b1bee100a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc40d7e7835a1626ee80b69b1bee100a">&#9670;&nbsp;</a></span>ReadCStringSizeLimited()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::ProcessMemoryRange::ReadCStringSizeLimited </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a>&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string *&#160;</td>
<td class="paramname"><em>string</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Reads a <code>NUL</code>-terminated C string from the target process into a string in the current process. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">address</td><td>The address, in the target processs address space, of the string to copy. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The maximum number of bytes to read. The string is required to be <code>NUL</code>-terminated within this many bytes. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">string</td><td>The string read from the other process.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success, with <em>string</em> set appropriately. <code>false</code> on failure, with a message logged. Failures can occur, for example, when a <code>NUL</code> terminator is not found within <em>size</em> bytes, or when encountering unmapped or unreadable pages. </dd></dl>
</div>
</div>
<a id="a6f1a929c8147197216edf5187c7b24fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f1a929c8147197216edf5187c7b24fa">&#9670;&nbsp;</a></span>RestrictRange()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool crashpad::ProcessMemoryRange::RestrictRange </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#acb197256391fbfca91f9a7e5c911db45">LinuxVMAddress</a>&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#aa2b5b2818842bda12ff9c4d555c2c8c8">LinuxVMSize</a>&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Shrinks the range to the new base and size. </p>
<p>The new range must be contained within the existing range for this object.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The new base of the range. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The new size of the range. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>util/linux/process_memory_range.h</li>
<li>util/linux/process_memory_range.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>