<!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::MinidumpModuleCrashpadInfoList 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.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="structcrashpad_1_1MinidumpModuleCrashpadInfoList.html">MinidumpModuleCrashpadInfoList</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structcrashpad_1_1MinidumpModuleCrashpadInfoList-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::MinidumpModuleCrashpadInfoList Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Additional Crashpad-specific information about modules carried within a minidump file.  
 <a href="structcrashpad_1_1MinidumpModuleCrashpadInfoList.html#details">More...</a></p>

<p><code>#include &quot;minidump/minidump_extensions.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:aa68aba45add215f1e1aff874201baaae"><td class="memItemLeft" align="right" valign="top"><a id="aa68aba45add215f1e1aff874201baaae"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcrashpad_1_1MinidumpModuleCrashpadInfoList.html#aa68aba45add215f1e1aff874201baaae">count</a></td></tr>
<tr class="memdesc:aa68aba45add215f1e1aff874201baaae"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of children present in the <a class="el" href="structcrashpad_1_1MinidumpModuleCrashpadInfoList.html#ab9bb5d82505839440903e0fe9253ea7b" title="Crashpad-specific information about modules, along with links to MINIDUMP_MODULE structures that cont...">modules</a> array. <br /></td></tr>
<tr class="separator:aa68aba45add215f1e1aff874201baaae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9bb5d82505839440903e0fe9253ea7b"><td class="memItemLeft" align="right" valign="top"><a id="ab9bb5d82505839440903e0fe9253ea7b"></a>
<a class="el" href="structcrashpad_1_1MinidumpModuleCrashpadInfoLink.html">MinidumpModuleCrashpadInfoLink</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcrashpad_1_1MinidumpModuleCrashpadInfoList.html#ab9bb5d82505839440903e0fe9253ea7b">modules</a> [0]</td></tr>
<tr class="memdesc:ab9bb5d82505839440903e0fe9253ea7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Crashpad-specific information about modules, along with links to <a class="el" href="structMINIDUMP__MODULE.html" title="Information about a specific module loaded within the process at the time the snapshot was taken.">MINIDUMP_MODULE</a> structures that contain module information traditionally carried within minidump files. <br /></td></tr>
<tr class="separator:ab9bb5d82505839440903e0fe9253ea7b"><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>Additional Crashpad-specific information about modules carried within a minidump file. </p>
<p>This structure augments the information provided by <a class="el" href="structMINIDUMP__MODULE__LIST.html" title="Information about all modules loaded within the process at the time the snapshot was taken.">MINIDUMP_MODULE_LIST</a>. The minidump file must contain a module list stream (<a class="el" href="namespacecrashpad.html#a88363a45a4af1a16f542a8c1ff522ab9a226cb7d075ec01c79f233d098e9a9e3f" title="The stream type for MINIDUMP_MODULE_LIST.">kMinidumpStreamTypeModuleList</a>) in order for this structure to appear.</p>
<p><a class="el" href="structcrashpad_1_1MinidumpModuleCrashpadInfoList.html#aa68aba45add215f1e1aff874201baaae" title="The number of children present in the modules array.">MinidumpModuleCrashpadInfoList::count</a> may be less than the value of <a class="el" href="structMINIDUMP__MODULE__LIST.html#a01eb8324809082c67f7374ca6e977c74" title="The number of modules present in the Modules array.">MINIDUMP_MODULE_LIST::NumberOfModules</a> because not every <a class="el" href="structMINIDUMP__MODULE.html" title="Information about a specific module loaded within the process at the time the snapshot was taken.">MINIDUMP_MODULE</a> structure carried within the minidump file will necessarily have Crashpad-specific information provided by a <a class="el" href="structcrashpad_1_1MinidumpModuleCrashpadInfo.html" title="Additional Crashpad-specific information about a module carried within a minidump file.">MinidumpModuleCrashpadInfo</a> structure. </p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<li>minidump/minidump_extensions.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>
