<!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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: MINIDUMP_MEMORY_LIST Struct 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.14 -->
<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><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structMINIDUMP__MEMORY__LIST-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MINIDUMP_MEMORY_LIST Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Information about memory regions within the process.  
 <a href="structMINIDUMP__MEMORY__LIST.html#details">More...</a></p>

<p><code>#include &quot;dbghelp.h&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a10c9a4bb206872c102aaffac05a4d924"><td class="memItemLeft" align="right" valign="top"><a id="a10c9a4bb206872c102aaffac05a4d924"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMINIDUMP__MEMORY__LIST.html#a10c9a4bb206872c102aaffac05a4d924">NumberOfMemoryRanges</a></td></tr>
<tr class="memdesc:a10c9a4bb206872c102aaffac05a4d924"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of memory regions present in the <a class="el" href="structMINIDUMP__MEMORY__LIST.html#a7c2359575a803000e228bcdef33b42d0" title="Structures identifying each memory region present in the minidump file. ">MemoryRanges</a> array. <br /></td></tr>
<tr class="separator:a10c9a4bb206872c102aaffac05a4d924"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c2359575a803000e228bcdef33b42d0"><td class="memItemLeft" align="right" valign="top"><a id="a7c2359575a803000e228bcdef33b42d0"></a>
<a class="el" href="structMINIDUMP__MEMORY__DESCRIPTOR.html">MINIDUMP_MEMORY_DESCRIPTOR</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structMINIDUMP__MEMORY__LIST.html#a7c2359575a803000e228bcdef33b42d0">MemoryRanges</a> [0]</td></tr>
<tr class="memdesc:a7c2359575a803000e228bcdef33b42d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structures identifying each memory region present in the minidump file. <br /></td></tr>
<tr class="separator:a7c2359575a803000e228bcdef33b42d0"><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>Information about memory regions within the process. </p>
<p>Typically, a minidump file will not contain a snapshot of a process’ entire memory image. For minidump files identified as <a class="el" href="dbghelp_8h.html#a7580bc5aa0738de92a9766904fc7e79ba8be18b33190940c5ca447bd989eaf7c5" title="A minidump file without any additional data. ">MiniDumpNormal</a> in <a class="el" href="structMINIDUMP__HEADER.html#a052f2280538826d030c4cb5154963e27" title="A bitfield containing members of MINIDUMP_TYPE, describing the types of data carried within this mini...">MINIDUMP_HEADER::Flags</a>, memory regions are limited to those referenced by <a class="el" href="structMINIDUMP__THREAD.html#a4affab2d1a0995fdb085d302d78fbb81" title="A snapshot of the thread’s stack. ">MINIDUMP_THREAD::Stack</a> fields, and a small number of others possibly related to the exception that triggered the snapshot to be taken. </p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<li>compat/non_win/<a class="el" href="dbghelp_8h.html">dbghelp.h</a></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.14
</small></address>
</body>
</html>
