blob: 1c71df74e53b7ae6e25b46634f1a1264293357fe [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::internal::MemorySnapshotGeneric 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.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</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="namespacecrashpad_1_1internal.html">internal</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html">MemorySnapshotGeneric</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::internal::MemorySnapshotGeneric Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>A <a class="el" href="classcrashpad_1_1MemorySnapshot.html" title="An abstract interface to a snapshot representing a region of memory present in a snapshot process.">MemorySnapshot</a> of a memory region in a process on the running system. Works on multiple platforms by using a platform-specific <a class="el" href="classcrashpad_1_1ProcessMemory.html" title="Abstract base class for accessing the memory of another process.">ProcessMemory</a> object.
<a href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#details">More...</a></p>
<p><code>#include &quot;snapshot/memory_snapshot_generic.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::internal::MemorySnapshotGeneric:</div>
<div class="dyncontent">
<div class="center">
<img src="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.png" usemap="#crashpad::internal::MemorySnapshotGeneric_map" alt=""/>
<map id="crashpad::internal::MemorySnapshotGeneric_map" name="crashpad::internal::MemorySnapshotGeneric_map">
<area href="classcrashpad_1_1MemorySnapshot.html" title="An abstract interface to a snapshot representing a region of memory present in a snapshot process." alt="crashpad::MemorySnapshot" shape="rect" coords="0,0,262,24"/>
</map>
</div></div>
<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:ade6a342b6653185748dd883c29003b1b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#ade6a342b6653185748dd883c29003b1b">Initialize</a> (const <a class="el" href="classcrashpad_1_1ProcessMemory.html">ProcessMemory</a> *process_memory, <a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a> address, <a class="el" href="namespacecrashpad.html#a103690edebf604dcd23d5c03b78fe0be">VMSize</a> size)</td></tr>
<tr class="memdesc:ade6a342b6653185748dd883c29003b1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the object. <a href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#ade6a342b6653185748dd883c29003b1b">More...</a><br /></td></tr>
<tr class="separator:ade6a342b6653185748dd883c29003b1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5bdf470b7f7f02dc0862999e38b2fab"><td class="memItemLeft" align="right" valign="top"><a id="ae5bdf470b7f7f02dc0862999e38b2fab"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#ae5bdf470b7f7f02dc0862999e38b2fab">Address</a> () const override</td></tr>
<tr class="memdesc:ae5bdf470b7f7f02dc0862999e38b2fab"><td class="mdescLeft">&#160;</td><td class="mdescRight">The base address of the memory snapshot in the snapshot process’ address space. <br /></td></tr>
<tr class="separator:ae5bdf470b7f7f02dc0862999e38b2fab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a596b171197033067adb7226e0c6843d5"><td class="memItemLeft" align="right" valign="top"><a id="a596b171197033067adb7226e0c6843d5"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#a596b171197033067adb7226e0c6843d5">Size</a> () const override</td></tr>
<tr class="memdesc:a596b171197033067adb7226e0c6843d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The size of the memory snapshot. <br /></td></tr>
<tr class="separator:a596b171197033067adb7226e0c6843d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02120cc5c0ba7a4ba13b2ae9c682d008"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#a02120cc5c0ba7a4ba13b2ae9c682d008">Read</a> (<a class="el" href="classcrashpad_1_1MemorySnapshot_1_1Delegate.html">Delegate</a> *delegate) const override</td></tr>
<tr class="memdesc:a02120cc5c0ba7a4ba13b2ae9c682d008"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls <a class="el" href="classcrashpad_1_1MemorySnapshot_1_1Delegate.html#a844f77076dc607ce0cd8946aea75f73b" title="Called by MemorySnapshot::Read() to provide data requested by a call to that method.">Delegate::MemorySnapshotDelegateRead()</a>, providing it with the memory snapshot’s data. <a href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#a02120cc5c0ba7a4ba13b2ae9c682d008">More...</a><br /></td></tr>
<tr class="separator:a02120cc5c0ba7a4ba13b2ae9c682d008"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2bfb670cdd7bde7a8df3c1011c66cfd"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classcrashpad_1_1MemorySnapshot.html">MemorySnapshot</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#ad2bfb670cdd7bde7a8df3c1011c66cfd">MergeWithOtherSnapshot</a> (const <a class="el" href="classcrashpad_1_1MemorySnapshot.html">MemorySnapshot</a> *other) const override</td></tr>
<tr class="memdesc:ad2bfb670cdd7bde7a8df3c1011c66cfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcrashpad_1_1MemorySnapshot.html" title="An abstract interface to a snapshot representing a region of memory present in a snapshot process.">MemorySnapshot</a> based on merging this one with <em>other</em>. <a href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#ad2bfb670cdd7bde7a8df3c1011c66cfd">More...</a><br /></td></tr>
<tr class="separator:ad2bfb670cdd7bde7a8df3c1011c66cfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:af94b14421912394b031a223199cd97ae"><td class="memTemplParams" colspan="2"><a id="af94b14421912394b031a223199cd97ae"></a>
template&lt;class T &gt; </td></tr>
<tr class="memitem:af94b14421912394b031a223199cd97ae"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classcrashpad_1_1MemorySnapshot.html">MemorySnapshot</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>MergeWithOtherSnapshotImpl</b> (const T *self, const <a class="el" href="classcrashpad_1_1MemorySnapshot.html">MemorySnapshot</a> *other)</td></tr>
<tr class="separator:af94b14421912394b031a223199cd97ae"><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>A <a class="el" href="classcrashpad_1_1MemorySnapshot.html" title="An abstract interface to a snapshot representing a region of memory present in a snapshot process.">MemorySnapshot</a> of a memory region in a process on the running system. Works on multiple platforms by using a platform-specific <a class="el" href="classcrashpad_1_1ProcessMemory.html" title="Abstract base class for accessing the memory of another process.">ProcessMemory</a> object. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ade6a342b6653185748dd883c29003b1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade6a342b6653185748dd883c29003b1b">&#9670;&nbsp;</a></span>Initialize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void crashpad::internal::MemorySnapshotGeneric::Initialize </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcrashpad_1_1ProcessMemory.html">ProcessMemory</a> *&#160;</td>
<td class="paramname"><em>process_memory</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a>&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#a103690edebf604dcd23d5c03b78fe0be">VMSize</a>&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes the object. </p>
<p>Memory is read lazily. No attempt is made to read the memory snapshot data until <a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#a02120cc5c0ba7a4ba13b2ae9c682d008" title="Calls Delegate::MemorySnapshotDelegateRead(), providing it with the memory snapshot’s data.">Read()</a> is called, and the memory snapshot data is discared when <a class="el" href="classcrashpad_1_1internal_1_1MemorySnapshotGeneric.html#a02120cc5c0ba7a4ba13b2ae9c682d008" title="Calls Delegate::MemorySnapshotDelegateRead(), providing it with the memory snapshot’s data.">Read()</a> returns.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">process_memory</td><td>A reader for the process being snapshotted. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">address</td><td>The base address of the memory region to snapshot, in the snapshot process’ address space. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The size of the memory region to snapshot. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad2bfb670cdd7bde7a8df3c1011c66cfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2bfb670cdd7bde7a8df3c1011c66cfd">&#9670;&nbsp;</a></span>MergeWithOtherSnapshot()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classcrashpad_1_1MemorySnapshot.html">MemorySnapshot</a>* crashpad::internal::MemorySnapshotGeneric::MergeWithOtherSnapshot </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcrashpad_1_1MemorySnapshot.html">MemorySnapshot</a> *&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new <a class="el" href="classcrashpad_1_1MemorySnapshot.html" title="An abstract interface to a snapshot representing a region of memory present in a snapshot process.">MemorySnapshot</a> based on merging this one with <em>other</em>. </p>
<p>The ranges described by the two snapshots must either overlap or abut, and must be of the same concrete type.</p>
<dl class="section return"><dt>Returns</dt><dd>A newly allocated <a class="el" href="classcrashpad_1_1MemorySnapshot.html" title="An abstract interface to a snapshot representing a region of memory present in a snapshot process.">MemorySnapshot</a> representing the merged range, or <code>nullptr</code> with an error logged. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1MemorySnapshot.html#ac215c8c515725ac43f2bf5ec5d7a27a4">crashpad::MemorySnapshot</a>.</p>
</div>
</div>
<a id="a02120cc5c0ba7a4ba13b2ae9c682d008"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02120cc5c0ba7a4ba13b2ae9c682d008">&#9670;&nbsp;</a></span>Read()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::internal::MemorySnapshotGeneric::Read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1MemorySnapshot_1_1Delegate.html">Delegate</a> *&#160;</td>
<td class="paramname"><em>delegate</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calls <a class="el" href="classcrashpad_1_1MemorySnapshot_1_1Delegate.html#a844f77076dc607ce0cd8946aea75f73b" title="Called by MemorySnapshot::Read() to provide data requested by a call to that method.">Delegate::MemorySnapshotDelegateRead()</a>, providing it with the memory snapshot’s data. </p>
<p>Implementations do not necessarily read the memory snapshot data prior to this method being called. Memory snapshot data may be loaded lazily and may be discarded after being passed to the delegate. This provides clean memory management without burdening a snapshot implementation with the requirement that it track all memory region data simultaneously.</p>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> on failure, otherwise, the return value of <a class="el" href="classcrashpad_1_1MemorySnapshot_1_1Delegate.html#a844f77076dc607ce0cd8946aea75f73b" title="Called by MemorySnapshot::Read() to provide data requested by a call to that method.">Delegate::MemorySnapshotDelegateRead()</a>, which should be <code>true</code> on success and <code>false</code> on failure. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1MemorySnapshot.html#ad7bd3e85268e7b8d9d78e03be977ee52">crashpad::MemorySnapshot</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>snapshot/memory_snapshot_generic.h</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.18
</small></address>
</body>
</html>