<!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: File Members</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>
</div><!-- top -->
<!-- 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 class="contents">
&#160;<ul>
<li>ArraySize
: <a class="el" href="arraysize_8h.html#a5eda8ce9aad6f2c09683f97834d26555">arraysize.h</a>
</li>
<li>ASSERT_DEATH_CHECK
: <a class="el" href="gtest__death_8h.html#a11ab1a718cd7a7ed56b7e2fbd2c36f74">gtest_death.h</a>
</li>
<li>ASSERT_DEATH_CRASH
: <a class="el" href="gtest__death_8h.html#a415e40b4d538d7421e1b0a43ddd3f83e">gtest_death.h</a>
</li>
<li>CRASHPAD_CHILD_TEST_MAIN
: <a class="el" href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3">multiprocess_exec.h</a>
</li>
<li>CRASHPAD_SIMULATE_CRASH
: <a class="el" href="simulate__crash__win_8h.html#a0ac6f4df5ed356f04dd12be3f07f9ed2">simulate_crash_win.h</a>
, <a class="el" href="simulate__crash__mac_8h.html#a0ac6f4df5ed356f04dd12be3f07f9ed2">simulate_crash_mac.h</a>
, <a class="el" href="simulate__crash__linux_8h.html#a0ac6f4df5ed356f04dd12be3f07f9ed2">simulate_crash_linux.h</a>
</li>
<li>EXCEPTION_MAXIMUM_PARAMETERS
: <a class="el" href="winnt_8h.html#a3cd1c98b6babaa34a71c020782244ae2">winnt.h</a>
</li>
<li>EXPECT_DEATH_CHECK
: <a class="el" href="gtest__death_8h.html#aa4bd7e1dbfc8862448a4b0fb66790e50">gtest_death.h</a>
</li>
<li>EXPECT_DEATH_CRASH
: <a class="el" href="gtest__death_8h.html#a496cb27779b2120a1854e81375e9ae5f">gtest_death.h</a>
</li>
<li>GET_FUNCTION
: <a class="el" href="get__function_8h.html#a0997574e7522725516242d78632ed686">get_function.h</a>
</li>
<li>GET_FUNCTION_REQUIRED
: <a class="el" href="get__function_8h.html#ae87bc4c8800c7e6f35c06bf48cb636f3">get_function.h</a>
</li>
<li>IMAGE_DEBUG_MISC_EXENAME
: <a class="el" href="winnt_8h.html#aa9cc7d5b9cc8e88e3cde8e595c7b3a2f">winnt.h</a>
</li>
<li>INITIALIZATION_STATE_DCHECK_VALID
: <a class="el" href="initialization__state__dcheck_8h.html#ad0cdf9da2bf4bb9c2318e100136782ee">initialization_state_dcheck.h</a>
</li>
<li>INITIALIZATION_STATE_SET_INITIALIZING
: <a class="el" href="initialization__state__dcheck_8h.html#a9f550b300c9c7d5214aa612adfdba40e">initialization_state_dcheck.h</a>
</li>
<li>INITIALIZATION_STATE_SET_VALID
: <a class="el" href="initialization__state__dcheck_8h.html#a079bd353351188e4819d9008b732bdce">initialization_state_dcheck.h</a>
</li>
<li>MAXIMUM_XSTATE_FEATURES
: <a class="el" href="winnt_8h.html#a6d37582f61e222ca22b168d5b685f7a6">winnt.h</a>
</li>
<li>MINIDUMP_MISC1_PROCESS_ID
: <a class="el" href="dbghelp_8h.html#a7c45d36c41d28289bb5966da1eb4df1e">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC1_PROCESS_TIMES
: <a class="el" href="dbghelp_8h.html#ab3edfa814438bfee50c43b21693ca121">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC1_PROCESSOR_POWER_INFO
: <a class="el" href="dbghelp_8h.html#aaae1499c48b3277b847f6a3bc6b71c78">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC3_PROCESS_EXECUTE_FLAGS
: <a class="el" href="dbghelp_8h.html#a467ca1ad62bc613f3f0d8b015adcd513">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC3_PROCESS_INTEGRITY
: <a class="el" href="dbghelp_8h.html#a7fcbcd210bea531bf9cca1ed9d10113f">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC3_PROTECTED_PROCESS
: <a class="el" href="dbghelp_8h.html#af2a0c259e3c9b1e03cc3f2b07dede231">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC3_TIMEZONE
: <a class="el" href="dbghelp_8h.html#a971b8f20e37258ee18f4dd59295f8eb2">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC4_BUILDSTRING
: <a class="el" href="dbghelp_8h.html#ae7501b999998d342bea5ece7d7188142">dbghelp.h</a>
</li>
<li>MINIDUMP_MISC5_PROCESS_COOKIE
: <a class="el" href="dbghelp_8h.html#a13c8d8acb639d70b13379960efd7d34c">dbghelp.h</a>
</li>
<li>MINIDUMP_SIGNATURE
: <a class="el" href="dbghelp_8h.html#a0d0fecdd7d2b287138b5af5292b9b600">dbghelp.h</a>
</li>
<li>MINIDUMP_VERSION
: <a class="el" href="dbghelp_8h.html#ab247a0e9a47b718e3f091d992868830a">dbghelp.h</a>
</li>
<li>VS_FFI_SIGNATURE
: <a class="el" href="verrsrc_8h.html#a323849bf0740c974e68b19ae551e1a18">verrsrc.h</a>
</li>
<li>VS_FFI_STRUCVERSION
: <a class="el" href="verrsrc_8h.html#a5d5a4b05d359ca879b652292498d49b9">verrsrc.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.18
</small></address>
</body>
</html>
