You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1028 lines
72 KiB

<!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>Pin: Exception API</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" />
</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">Pin
</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>
</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="header">
<div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Exception API</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga6b419bb0f9a400c889e4cf12db70dda1"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">LEVEL_BASE::EXCEPTION_INFO</a></td></tr>
<tr class="separator:ga6b419bb0f9a400c889e4cf12db70dda1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga82830ef218ccaea87a822f8f192d5ddd"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga82830ef218ccaea87a822f8f192d5ddd">LEVEL_BASE::EXCEPTION_CLASS</a> { <br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddac0d739835d92315cb2dba7e50fec3220">LEVEL_BASE::EXCEPTCLASS_NONE</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5ddda5828c6458bb90593b1456e1bcdf9da43">LEVEL_BASE::EXCEPTCLASS_UNKNOWN</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddab81bc53b74bf65a727578f3a5b5bb1bc">LEVEL_BASE::EXCEPTCLASS_ACCESS_FAULT</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5ddda605116aba9cc132f2a032cb18fab3a2f">LEVEL_BASE::EXCEPTCLASS_INVALID_INS</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddabc47b297c6a29f256a74778727fb522a">LEVEL_BASE::EXCEPTCLASS_INT_ERROR</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5ddda77b08ea6ecaa58c479e3197e1bc42de2">LEVEL_BASE::EXCEPTCLASS_FP_ERROR</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddaf8c4e2afe6dd2b350b2f44bd432ed85c">LEVEL_BASE::EXCEPTCLASS_MULTIPLE_FP_ERROR</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddad6e2b59bd3b6d068c3b17ca66554237d">LEVEL_BASE::EXCEPTCLASS_DEBUG</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddae8235d5e7f1e5cfef00959a16ef27601">LEVEL_BASE::EXCEPTCLASS_OS</a>
<br />
}</td></tr>
<tr class="separator:ga82830ef218ccaea87a822f8f192d5ddd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga690ff97731b7a1d356976f89f8f10e95"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">LEVEL_BASE::EXCEPTION_CODE</a> { <br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a82141c9f95fb6eef72997f9be01ff249">LEVEL_BASE::EXCEPTCODE_NONE</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a847123e99ff951d1867634fc2545ee9d">LEVEL_BASE::EXCEPTCODE_ACCESS_INVALID_ADDRESS</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95ad58af30f3a4b045b6c40d271091cf2f4">LEVEL_BASE::EXCEPTCODE_ACCESS_DENIED</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a6dff7050c5617ca80bdb815292916bdb">LEVEL_BASE::EXCEPTCODE_ACCESS_INVALID_PAGE</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95af619f767a60a2efe42d088f5051521db">LEVEL_BASE::EXCEPTCODE_ACCESS_MISALIGNED</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95aec8bc53c338fb0d06c352a8b4dfa9398">LEVEL_BASE::EXCEPTCODE_ILLEGAL_INS</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a64cd14ca617434cf396e857e87010048">LEVEL_BASE::EXCEPTCODE_PRIVILEGED_INS</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95abe7d902f21a39a44fbc5e34da0b16a4b">LEVEL_BASE::EXCEPTCODE_INT_DIVIDE_BY_ZERO</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95aa58c2ef6c682c512973f88f172203865">LEVEL_BASE::EXCEPTCODE_INT_OVERFLOW_TRAP</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a12c3b619ea19a9c6b1b718562dc28203">LEVEL_BASE::EXCEPTCODE_INT_BOUNDS_EXCEEDED</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a4a8c04241b5d1d56f3c930285c2015e3">LEVEL_BASE::EXCEPTCODE_X87_DIVIDE_BY_ZERO</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a23f791eafd5ee3608c3229d7f346b412">LEVEL_BASE::EXCEPTCODE_X87_OVERFLOW</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95ab6d5772c86ffaa5dc20ba57860ab3a18">LEVEL_BASE::EXCEPTCODE_X87_UNDERFLOW</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95ab6eb089c993cabdccce784dcba62ba45">LEVEL_BASE::EXCEPTCODE_X87_INEXACT_RESULT</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a61eb7e8407050d7078d37a5d9de8ab21">LEVEL_BASE::EXCEPTCODE_X87_INVALID_OPERATION</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a62796a5ea9df0f9136a8f2c77a126ede">LEVEL_BASE::EXCEPTCODE_X87_DENORMAL_OPERAND</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a6248c2fdcc44d983d1945f899974eae5">LEVEL_BASE::EXCEPTCODE_X87_STACK_ERROR</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a697091c9fc26c30a2e6966c798ebc89c">LEVEL_BASE::EXCEPTCODE_SIMD_DIVIDE_BY_ZERO</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a15cfad6216ea5d6e46bf8bec895982e8">LEVEL_BASE::EXCEPTCODE_SIMD_OVERFLOW</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95acab8e99cff474d4844e60f9bd716f798">LEVEL_BASE::EXCEPTCODE_SIMD_UNDERFLOW</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95af8f4480c9c9b4b1937a3f66fd2e4cf0c">LEVEL_BASE::EXCEPTCODE_SIMD_INEXACT_RESULT</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95adb25fff3cdf1dfa37e7a81757bef5de6">LEVEL_BASE::EXCEPTCODE_SIMD_INVALID_OPERATION</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a698849a16d97ac98e66ca74de56870ff">LEVEL_BASE::EXCEPTCODE_SIMD_DENORMAL_OPERAND</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95afdb4500d5dd301557b4b1a48f7b6a5b0">LEVEL_BASE::EXCEPTCODE_DBG_BREAKPOINT_TRAP</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a82f14174f7d84791f371b5138bd71e2d">LEVEL_BASE::EXCEPTCODE_DBG_SINGLE_STEP_TRAP</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a6dcb490e4c3b02cd83a594e7807b6a6c">LEVEL_BASE::EXCEPTCODE_ACCESS_WINDOWS_GUARD_PAGE</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a4e8132d879d8ca0bf9ebbc3ba755efe3">LEVEL_BASE::EXCEPTCODE_ACCESS_WINDOWS_STACK_OVERFLOW</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">LEVEL_BASE::EXCEPTCODE_WINDOWS</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a766457b3866de2bf805c7180b36507a6">LEVEL_BASE::EXCEPTCODE_RECEIVED_UNKNOWN</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a72a64c3c99df9be925dec7b9e9fb65e0">LEVEL_BASE::EXCEPTCODE_RECEIVED_ACCESS_FAULT</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a1e708e07b2c861cb5d3379dbc063ee3b">LEVEL_BASE::EXCEPTCODE_RECEIVED_AMBIGUOUS_X87</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a2dfa7adaaac31d02b440a240dbe0b2dc">LEVEL_BASE::EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD</a>
<br />
}</td></tr>
<tr class="separator:ga690ff97731b7a1d356976f89f8f10e95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga360af8d7af72a0f432e95f0a3abce37d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga360af8d7af72a0f432e95f0a3abce37d">LEVEL_BASE::FAULTY_ACCESS_TYPE</a> { <br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga360af8d7af72a0f432e95f0a3abce37da88e7f24de098c1e113b9b6bde54a6d97">LEVEL_BASE::FAULTY_ACCESS_TYPE_UNKNOWN</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga360af8d7af72a0f432e95f0a3abce37da92665e8537def28062aba90511702399">LEVEL_BASE::FAULTY_ACCESS_READ</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga360af8d7af72a0f432e95f0a3abce37da4c57779a3f4ba10c746f319413f687e6">LEVEL_BASE::FAULTY_ACCESS_WRITE</a>,
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#gga360af8d7af72a0f432e95f0a3abce37da476bad7629f3c26c8b363a7d617278fc">LEVEL_BASE::FAULTY_ACCESS_EXECUTE</a>
<br />
}</td></tr>
<tr class="separator:ga360af8d7af72a0f432e95f0a3abce37d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa6076934993f2f3c516daf77e669d2c5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gaa6076934993f2f3c516daf77e669d2c5">LEVEL_BASE::FPERROR</a> { <br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5a08832d08c68fe1586272d43cf3363207">LEVEL_BASE::FPERROR_DIVIDE_BY_ZERO</a> = (1&lt;&lt;0),
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5ae1fca13cf17b184df2d1d85cbae4dc48">LEVEL_BASE::FPERROR_OVERFLOW</a> = (1&lt;&lt;1),
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5aeef79248e20193ba7129dbe79dddd98f">LEVEL_BASE::FPERROR_UNDERFLOW</a> = (1&lt;&lt;2),
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5a5f9cbd221713c1edd59df26c45fa6a65">LEVEL_BASE::FPERROR_INEXACT_RESULT</a> = (1&lt;&lt;3),
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5ade987be91e899f81d13e62cf423aa34f">LEVEL_BASE::FPERROR_INVALID_OPERATION</a> = (1&lt;&lt;4),
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5aa0d0160737774092d7aeff58ab4cfe0e">LEVEL_BASE::FPERROR_DENORMAL_OPERAND</a> = (1&lt;&lt;5),
<br />
&#160;&#160;<a class="el" href="group__EXCEPTION__API.html#ggaa6076934993f2f3c516daf77e669d2c5aa0a4e55d3c3ff6b1f0085cab4561c832">LEVEL_BASE::FPERROR_X87_STACK_ERROR</a> = (1&lt;&lt;6)
<br />
}</td></tr>
<tr class="separator:gaa6076934993f2f3c516daf77e669d2c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaebebae7c880735d6483b259f7628466f"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gaebebae7c880735d6483b259f7628466f">LEVEL_BASE::PIN_InitExceptionInfo</a> (<a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo, <a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a> exceptCode, ADDRINT exceptAddress)</td></tr>
<tr class="separator:gaebebae7c880735d6483b259f7628466f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga226188ff455ffdc49ea534c578668430"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga226188ff455ffdc49ea534c578668430">LEVEL_BASE::PIN_InitAccessFaultInfo</a> (<a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo, <a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a> exceptCode, ADDRINT exceptAddress, ADDRINT accessAddress, <a class="el" href="group__EXCEPTION__API.html#ga360af8d7af72a0f432e95f0a3abce37d">FAULTY_ACCESS_TYPE</a> accessType=<a class="el" href="group__EXCEPTION__API.html#gga360af8d7af72a0f432e95f0a3abce37da88e7f24de098c1e113b9b6bde54a6d97">FAULTY_ACCESS_TYPE_UNKNOWN</a>)</td></tr>
<tr class="separator:ga226188ff455ffdc49ea534c578668430"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga512749b45e0d2452a3fa7d2258124232"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga512749b45e0d2452a3fa7d2258124232">LEVEL_BASE::PIN_InitWindowsExceptionInfo</a> (<a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo, UINT32 sysExceptCode, ADDRINT exceptAddress, UINT32 numArgs=0, const ADDRINT *pArgs=0)</td></tr>
<tr class="separator:ga512749b45e0d2452a3fa7d2258124232"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga003a7bdef73373ccd23d3b9d01dce2d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga003a7bdef73373ccd23d3b9d01dce2d9">LEVEL_BASE::PIN_GetExceptionCode</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:ga003a7bdef73373ccd23d3b9d01dce2d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7691148df53cdbac9e2a6ef51c37e45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__EXCEPTION__API.html#ga82830ef218ccaea87a822f8f192d5ddd">EXCEPTION_CLASS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gae7691148df53cdbac9e2a6ef51c37e45">LEVEL_BASE::PIN_GetExceptionClass</a> (<a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a> exceptCode)</td></tr>
<tr class="separator:gae7691148df53cdbac9e2a6ef51c37e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba490be9cdc4342aa9dfe346efad0511"><td class="memItemLeft" align="right" valign="top">ADDRINT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gaba490be9cdc4342aa9dfe346efad0511">LEVEL_BASE::PIN_GetExceptionAddress</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:gaba490be9cdc4342aa9dfe346efad0511"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae2086cd53a577f44e1b2ed32e9231816"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gae2086cd53a577f44e1b2ed32e9231816">LEVEL_BASE::PIN_SetExceptionAddress</a> (<a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo, ADDRINT exceptAddress)</td></tr>
<tr class="separator:gae2086cd53a577f44e1b2ed32e9231816"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga39b47708432bd511aee7335e271b66ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__EXCEPTION__API.html#ga360af8d7af72a0f432e95f0a3abce37d">FAULTY_ACCESS_TYPE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga39b47708432bd511aee7335e271b66ad">LEVEL_BASE::PIN_GetFaultyAccessType</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:ga39b47708432bd511aee7335e271b66ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6bc47950934414e96108b0e2adfff762"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga6bc47950934414e96108b0e2adfff762">LEVEL_BASE::PIN_GetFaultyAccessAddress</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo, ADDRINT *pAccessAddress)</td></tr>
<tr class="separator:ga6bc47950934414e96108b0e2adfff762"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga55281d8ae52a45597d5f36d3f20da478"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga55281d8ae52a45597d5f36d3f20da478">LEVEL_BASE::PIN_GetFpErrorSet</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:ga55281d8ae52a45597d5f36d3f20da478"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf1e0e2ceb95279e1d41d0c38b687ff75"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gaf1e0e2ceb95279e1d41d0c38b687ff75">LEVEL_BASE::PIN_GetWindowsExceptionCode</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:gaf1e0e2ceb95279e1d41d0c38b687ff75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e74f4f272ce2142049a98a340922488"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga9e74f4f272ce2142049a98a340922488">LEVEL_BASE::PIN_CountWindowsExceptionArguments</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:ga9e74f4f272ce2142049a98a340922488"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2482da0da6ed6bf8fae88b07c39bd33c"><td class="memItemLeft" align="right" valign="top">ADDRINT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga2482da0da6ed6bf8fae88b07c39bd33c">LEVEL_BASE::PIN_GetWindowsExceptionArgument</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo, UINT32 argNum)</td></tr>
<tr class="separator:ga2482da0da6ed6bf8fae88b07c39bd33c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3f8bcbb23aef67a721bc033218dc4e27"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga3f8bcbb23aef67a721bc033218dc4e27">LEVEL_BASE::PIN_ExceptionToString</a> (const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *pExceptInfo)</td></tr>
<tr class="separator:ga3f8bcbb23aef67a721bc033218dc4e27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga656279818bb8972fbdac576b57854561"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#ga656279818bb8972fbdac576b57854561">LEVEL_PINCLIENT::PIN_RaiseException</a> (const <a class="el" href="group__CONTEXT__API.html#ga73f8f88949aaecf53a6d23f56399c676">CONTEXT</a> *ctxt, <a class="el" href="group__PIN__THREAD__API.html#ga645289be59039349ad77ad2fa7b0e2f3">THREADID</a> tid, const EXCEPTION_INFO *pExceptInfo)</td></tr>
<tr class="separator:ga656279818bb8972fbdac576b57854561"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:gaa84771de9d0e68016908593da44d9542"><td class="memItemLeft" align="right" valign="top">GLOBALCONST UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__EXCEPTION__API.html#gaa84771de9d0e68016908593da44d9542">LEVEL_BASE::MAX_WINDOWS_EXCEPTION_ARGS</a> = 5</td></tr>
<tr class="separator:gaa84771de9d0e68016908593da44d9542"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This API allows the user to raise exceptions on behalf of the application and also analyze information associated with exceptions. </p>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga6b419bb0f9a400c889e4cf12db70dda1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6b419bb0f9a400c889e4cf12db70dda1">&#9670;&nbsp;</a></span>EXCEPTION_INFO</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">LEVEL_BASE::EXCEPTION_INFO</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Structure that describes an exception.<br />
The tool should not read or modify data members of this structure directly, but must treat the structure as logically opaque and use the <a class="el" href="group__EXCEPTION__API.html">Exception API</a> functions to manage it. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga82830ef218ccaea87a822f8f192d5ddd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga82830ef218ccaea87a822f8f192d5ddd">&#9670;&nbsp;</a></span>EXCEPTION_CLASS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__EXCEPTION__API.html#ga82830ef218ccaea87a822f8f192d5ddd">LEVEL_BASE::EXCEPTION_CLASS</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Identifiers of exception classes. Exception class indicates the type of information (set of attributes) that accompanies exceptions of this class. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5dddac0d739835d92315cb2dba7e50fec3220"></a>EXCEPTCLASS_NONE&#160;</td><td class="fielddoc"><p>Reserved. No real exception belongs to this class. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5ddda5828c6458bb90593b1456e1bcdf9da43"></a>EXCEPTCLASS_UNKNOWN&#160;</td><td class="fielddoc"><p>Unknown exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5dddab81bc53b74bf65a727578f3a5b5bb1bc"></a>EXCEPTCLASS_ACCESS_FAULT&#160;</td><td class="fielddoc"><p>Memory access fault. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5ddda605116aba9cc132f2a032cb18fab3a2f"></a>EXCEPTCLASS_INVALID_INS&#160;</td><td class="fielddoc"><p>Invalid instruction. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5dddabc47b297c6a29f256a74778727fb522a"></a>EXCEPTCLASS_INT_ERROR&#160;</td><td class="fielddoc"><p>Erroneous integer operation. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5ddda77b08ea6ecaa58c479e3197e1bc42de2"></a>EXCEPTCLASS_FP_ERROR&#160;</td><td class="fielddoc"><p>Erroneous floating point operation. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5dddaf8c4e2afe6dd2b350b2f44bd432ed85c"></a>EXCEPTCLASS_MULTIPLE_FP_ERROR&#160;</td><td class="fielddoc"><p>Received an ambiguous floating point exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5dddad6e2b59bd3b6d068c3b17ca66554237d"></a>EXCEPTCLASS_DEBUG&#160;</td><td class="fielddoc"><p>Debugging trap. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga82830ef218ccaea87a822f8f192d5dddae8235d5e7f1e5cfef00959a16ef27601"></a>EXCEPTCLASS_OS&#160;</td><td class="fielddoc"><p>O/S specific exception. </p>
</td></tr>
</table>
</div>
</div>
<a id="ga690ff97731b7a1d356976f89f8f10e95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga690ff97731b7a1d356976f89f8f10e95">&#9670;&nbsp;</a></span>EXCEPTION_CODE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">LEVEL_BASE::EXCEPTION_CODE</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Identifiers for all possible exception codes. The codes below are divided into two groups. The first group list all the exceptions that can be raised by <a class="el" href="group__EXCEPTION__API.html#ga656279818bb8972fbdac576b57854561">PIN_RaiseException()</a>. Tools that want to be portable across operating systems should use codes from this first group when raising exceptions via <a class="el" href="group__EXCEPTION__API.html#ga656279818bb8972fbdac576b57854561">PIN_RaiseException()</a>.</p>
<p>When Pin receives an exception and reports it to the tool, it may report an exception in either the first or second group. This can happen, for example, when using the <a class="el" href="group__PIN__CONTROL.html#ga271a2d60a060ddd0c13d6599afe8c0e2">PIN_SafeCopyEx()</a> function. When Pin can identify a specific exception, it reports a code from the first group. Sometimes, though, the host operating system does not provide enough information for Pin to determine the exact exception. In these cases, Pin reports a code from the second group (one of the EXCEPTCODE_RECEIVED_ codes). A tool can always re-raise one of these exceptions by passing it to <a class="el" href="group__EXCEPTION__API.html#ga656279818bb8972fbdac576b57854561">PIN_RaiseException()</a>. However, portable tools should avoid creating new exceptions using codes from the second group, because these codes are not supported on all operating systems. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a82141c9f95fb6eef72997f9be01ff249"></a>EXCEPTCODE_NONE&#160;</td><td class="fielddoc"><p>Reserved. No real exception has this code. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a847123e99ff951d1867634fc2545ee9d"></a>EXCEPTCODE_ACCESS_INVALID_ADDRESS&#160;</td><td class="fielddoc"><p>Virtual address not mapped (the #PF exception). Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95ad58af30f3a4b045b6c40d271091cf2f4"></a>EXCEPTCODE_ACCESS_DENIED&#160;</td><td class="fielddoc"><p>Access not permitted due to protection violation (the #PF exception). Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a6dff7050c5617ca80bdb815292916bdb"></a>EXCEPTCODE_ACCESS_INVALID_PAGE&#160;</td><td class="fielddoc"><p>A #PF exception for some reason other than the cases above. Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95af619f767a60a2efe42d088f5051521db"></a>EXCEPTCODE_ACCESS_MISALIGNED&#160;</td><td class="fielddoc"><p>Misaligned memory reference (the #AC exception). Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95aec8bc53c338fb0d06c352a8b4dfa9398"></a>EXCEPTCODE_ILLEGAL_INS&#160;</td><td class="fielddoc"><p>Illegal instruction (the #UD exception). Belongs to EXCEPTCLASS_INVALID_INS. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a64cd14ca617434cf396e857e87010048"></a>EXCEPTCODE_PRIVILEGED_INS&#160;</td><td class="fielddoc"><p>Privileged instruction (the #GP exception). Belongs to EXCEPTCLASS_INVALID_INS. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95abe7d902f21a39a44fbc5e34da0b16a4b"></a>EXCEPTCODE_INT_DIVIDE_BY_ZERO&#160;</td><td class="fielddoc"><p>Integer divide by zero (the #DE exception). Belongs to EXCEPTCLASS_INT_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95aa58c2ef6c682c512973f88f172203865"></a>EXCEPTCODE_INT_OVERFLOW_TRAP&#160;</td><td class="fielddoc"><p>Integer overflow trap (the #OF trap). Belongs to EXCEPTCLASS_INT_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a12c3b619ea19a9c6b1b718562dc28203"></a>EXCEPTCODE_INT_BOUNDS_EXCEEDED&#160;</td><td class="fielddoc"><p>Array index is out of bounds (#BR exception). Belongs to EXCEPTCLASS_INT_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a4a8c04241b5d1d56f3c930285c2015e3"></a>EXCEPTCODE_X87_DIVIDE_BY_ZERO&#160;</td><td class="fielddoc"><p>x87 FPU divide by zero (the #MF/#Z exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a23f791eafd5ee3608c3229d7f346b412"></a>EXCEPTCODE_X87_OVERFLOW&#160;</td><td class="fielddoc"><p>x87 FPU overflow (the #MF/#O exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95ab6d5772c86ffaa5dc20ba57860ab3a18"></a>EXCEPTCODE_X87_UNDERFLOW&#160;</td><td class="fielddoc"><p>x87 FPU underflow (the #MF/#U exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95ab6eb089c993cabdccce784dcba62ba45"></a>EXCEPTCODE_X87_INEXACT_RESULT&#160;</td><td class="fielddoc"><p>x87 FPU inexact result (the #MF/#P exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a61eb7e8407050d7078d37a5d9de8ab21"></a>EXCEPTCODE_X87_INVALID_OPERATION&#160;</td><td class="fielddoc"><p>x87 FPU invalid operation (the #MF/#IA exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a62796a5ea9df0f9136a8f2c77a126ede"></a>EXCEPTCODE_X87_DENORMAL_OPERAND&#160;</td><td class="fielddoc"><p>x87 FPU denormal operand (the #MF/#D exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a6248c2fdcc44d983d1945f899974eae5"></a>EXCEPTCODE_X87_STACK_ERROR&#160;</td><td class="fielddoc"><p>x87 FPU stack overflowed or underflowed (the #MF/#IS exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a697091c9fc26c30a2e6966c798ebc89c"></a>EXCEPTCODE_SIMD_DIVIDE_BY_ZERO&#160;</td><td class="fielddoc"><p>SIMD floating point divide by zero (the #XM/#Z exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a15cfad6216ea5d6e46bf8bec895982e8"></a>EXCEPTCODE_SIMD_OVERFLOW&#160;</td><td class="fielddoc"><p>SIMD floating point overflow (the #XM/#O exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95acab8e99cff474d4844e60f9bd716f798"></a>EXCEPTCODE_SIMD_UNDERFLOW&#160;</td><td class="fielddoc"><p>SIMD floating point underflow (the #XM/#U exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95af8f4480c9c9b4b1937a3f66fd2e4cf0c"></a>EXCEPTCODE_SIMD_INEXACT_RESULT&#160;</td><td class="fielddoc"><p>SIMD floating point inexact result (the #XM/#P exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95adb25fff3cdf1dfa37e7a81757bef5de6"></a>EXCEPTCODE_SIMD_INVALID_OPERATION&#160;</td><td class="fielddoc"><p>SIMD invalid floating point operation (the #XM/#I exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a698849a16d97ac98e66ca74de56870ff"></a>EXCEPTCODE_SIMD_DENORMAL_OPERAND&#160;</td><td class="fielddoc"><p>SIMD denormal floating point operand (the #XM/#D exception). Belongs to EXCEPTCLASS_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95afdb4500d5dd301557b4b1a48f7b6a5b0"></a>EXCEPTCODE_DBG_BREAKPOINT_TRAP&#160;</td><td class="fielddoc"><p>Breakpoint trap (the #BP trap). Belongs to EXCEPTCLASS_DEBUG. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a82f14174f7d84791f371b5138bd71e2d"></a>EXCEPTCODE_DBG_SINGLE_STEP_TRAP&#160;</td><td class="fielddoc"><p>Trace trap (the #DB trap). Belongs to EXCEPTCLASS_DEBUG. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a6dcb490e4c3b02cd83a594e7807b6a6c"></a>EXCEPTCODE_ACCESS_WINDOWS_GUARD_PAGE&#160;</td><td class="fielddoc"><p>Guard page access (the Windows STATUS_GUARD_PAGE_VIOLATION exception). Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a4e8132d879d8ca0bf9ebbc3ba755efe3"></a>EXCEPTCODE_ACCESS_WINDOWS_STACK_OVERFLOW&#160;</td><td class="fielddoc"><p>Thread stack overflowed (the Windows STATUS_STACK_OVERFLOW exception). Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221"></a>EXCEPTCODE_WINDOWS&#160;</td><td class="fielddoc"><p>Generic Windows exception. Belongs to EXCEPTCLASS_OS. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a766457b3866de2bf805c7180b36507a6"></a>EXCEPTCODE_RECEIVED_UNKNOWN&#160;</td><td class="fielddoc"><p>Unknown exception, cannot be re-raised. Belongs to EXCEPTCLASS_UNKNOWN. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a72a64c3c99df9be925dec7b9e9fb65e0"></a>EXCEPTCODE_RECEIVED_ACCESS_FAULT&#160;</td><td class="fielddoc"><p>General memory access fault. Belongs to EXCEPTCLASS_ACCESS_FAULT. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a1e708e07b2c861cb5d3379dbc063ee3b"></a>EXCEPTCODE_RECEIVED_AMBIGUOUS_X87&#160;</td><td class="fielddoc"><p>Ambiguous x87 FPU exception. <a class="el" href="group__EXCEPTION__API.html#ga55281d8ae52a45597d5f36d3f20da478">PIN_GetFpErrorSet()</a> tell which are possible. Belongs to EXCEPTCLASS_MULTIPLE_FP_ERROR. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga690ff97731b7a1d356976f89f8f10e95a2dfa7adaaac31d02b440a240dbe0b2dc"></a>EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD&#160;</td><td class="fielddoc"><p>Ambiguous SIMD FPU exception. <a class="el" href="group__EXCEPTION__API.html#ga55281d8ae52a45597d5f36d3f20da478">PIN_GetFpErrorSet()</a> tell which are possible. Belongs to EXCEPTCLASS_MULTIPLE_FP_ERROR. </p>
</td></tr>
</table>
</div>
</div>
<a id="ga360af8d7af72a0f432e95f0a3abce37d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga360af8d7af72a0f432e95f0a3abce37d">&#9670;&nbsp;</a></span>FAULTY_ACCESS_TYPE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__EXCEPTION__API.html#ga360af8d7af72a0f432e95f0a3abce37d">LEVEL_BASE::FAULTY_ACCESS_TYPE</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Types of faulty memory accesses that may cause an EXCEPTCLASS_ACCESS_FAULT exception </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga360af8d7af72a0f432e95f0a3abce37da88e7f24de098c1e113b9b6bde54a6d97"></a>FAULTY_ACCESS_TYPE_UNKNOWN&#160;</td><td class="fielddoc"><p>Unknown access violation. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga360af8d7af72a0f432e95f0a3abce37da92665e8537def28062aba90511702399"></a>FAULTY_ACCESS_READ&#160;</td><td class="fielddoc"><p>Read access. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga360af8d7af72a0f432e95f0a3abce37da4c57779a3f4ba10c746f319413f687e6"></a>FAULTY_ACCESS_WRITE&#160;</td><td class="fielddoc"><p>Write access. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga360af8d7af72a0f432e95f0a3abce37da476bad7629f3c26c8b363a7d617278fc"></a>FAULTY_ACCESS_EXECUTE&#160;</td><td class="fielddoc"><p>Execute access. </p>
</td></tr>
</table>
</div>
</div>
<a id="gaa6076934993f2f3c516daf77e669d2c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa6076934993f2f3c516daf77e669d2c5">&#9670;&nbsp;</a></span>FPERROR</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__EXCEPTION__API.html#gaa6076934993f2f3c516daf77e669d2c5">LEVEL_BASE::FPERROR</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Possible types of FPU exceptions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5a08832d08c68fe1586272d43cf3363207"></a>FPERROR_DIVIDE_BY_ZERO&#160;</td><td class="fielddoc"><p>The #DE exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5ae1fca13cf17b184df2d1d85cbae4dc48"></a>FPERROR_OVERFLOW&#160;</td><td class="fielddoc"><p>The #O exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5aeef79248e20193ba7129dbe79dddd98f"></a>FPERROR_UNDERFLOW&#160;</td><td class="fielddoc"><p>The #U exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5a5f9cbd221713c1edd59df26c45fa6a65"></a>FPERROR_INEXACT_RESULT&#160;</td><td class="fielddoc"><p>The #P exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5ade987be91e899f81d13e62cf423aa34f"></a>FPERROR_INVALID_OPERATION&#160;</td><td class="fielddoc"><p>The #IA exception on x87 or #I exception on SIMD. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5aa0d0160737774092d7aeff58ab4cfe0e"></a>FPERROR_DENORMAL_OPERAND&#160;</td><td class="fielddoc"><p>The #D exception. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa6076934993f2f3c516daf77e669d2c5aa0a4e55d3c3ff6b1f0085cab4561c832"></a>FPERROR_X87_STACK_ERROR&#160;</td><td class="fielddoc"><p>The #IS exception on x87. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga9e74f4f272ce2142049a98a340922488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9e74f4f272ce2142049a98a340922488">&#9670;&nbsp;</a></span>PIN_CountWindowsExceptionArguments()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">UINT32 LEVEL_BASE::PIN_CountWindowsExceptionArguments </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the number of Windows system exception's arguments from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of arguments associated with the system exception </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>The specified exception information should describe an <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> exception.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: Windows<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga3f8bcbb23aef67a721bc033218dc4e27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3f8bcbb23aef67a721bc033218dc4e27">&#9670;&nbsp;</a></span>PIN_ExceptionToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string LEVEL_BASE::PIN_ExceptionToString </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a string representation of the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be stringized </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The string representation of this structure.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gaba490be9cdc4342aa9dfe346efad0511"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaba490be9cdc4342aa9dfe346efad0511">&#9670;&nbsp;</a></span>PIN_GetExceptionAddress()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ADDRINT LEVEL_BASE::PIN_GetExceptionAddress </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the address of the instruction that caused the specified exception. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The address of the instruction that caused the exception</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gae7691148df53cdbac9e2a6ef51c37e45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae7691148df53cdbac9e2a6ef51c37e45">&#9670;&nbsp;</a></span>PIN_GetExceptionClass()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__EXCEPTION__API.html#ga82830ef218ccaea87a822f8f192d5ddd">EXCEPTION_CLASS</a> LEVEL_BASE::PIN_GetExceptionClass </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a>&#160;</td>
<td class="paramname"><em>exceptCode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Given an exception code, return the corresponding exception class. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">exceptCode</td><td>exception code </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The class of the exception</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga003a7bdef73373ccd23d3b9d01dce2d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga003a7bdef73373ccd23d3b9d01dce2d9">&#9670;&nbsp;</a></span>PIN_GetExceptionCode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a> LEVEL_BASE::PIN_GetExceptionCode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the exception code from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The code of the exception</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga6bc47950934414e96108b0e2adfff762"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6bc47950934414e96108b0e2adfff762">&#9670;&nbsp;</a></span>PIN_GetFaultyAccessAddress()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL LEVEL_BASE::PIN_GetFaultyAccessAddress </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ADDRINT *&#160;</td>
<td class="paramname"><em>pAccessAddress</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the address of the faulty memory access from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">pAccessAddress</td><td>pointer to variable that receives the address of the faulty memory access, if known. If this pointer is NULL, the function only checks if the requested address is known but does not return its value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>TRUE, if the address of the faulty memory access is known </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>The specified exception information should describe an <a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddab81bc53b74bf65a727578f3a5b5bb1bc">EXCEPTCLASS_ACCESS_FAULT</a> exception.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga39b47708432bd511aee7335e271b66ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga39b47708432bd511aee7335e271b66ad">&#9670;&nbsp;</a></span>PIN_GetFaultyAccessType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__EXCEPTION__API.html#ga360af8d7af72a0f432e95f0a3abce37d">FAULTY_ACCESS_TYPE</a> LEVEL_BASE::PIN_GetFaultyAccessType </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the type of the faulty memory access from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type of the faulty memory access that caused the exception </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>The specified exception information should describe an <a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddab81bc53b74bf65a727578f3a5b5bb1bc">EXCEPTCLASS_ACCESS_FAULT</a> exception.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga55281d8ae52a45597d5f36d3f20da478"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga55281d8ae52a45597d5f36d3f20da478">&#9670;&nbsp;</a></span>PIN_GetFpErrorSet()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">UINT32 LEVEL_BASE::PIN_GetFpErrorSet </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the set of floating point exception codes from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. For EXCEPTCODE_RECEIVED_AMBIGUOUS_X87 and EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD exceptions, this is the set of possible causes for the exception. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A bitmask of FPERROR values. </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>The specified exception information should describe an <a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddaf8c4e2afe6dd2b350b2f44bd432ed85c">EXCEPTCLASS_MULTIPLE_FP_ERROR</a> exception.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga2482da0da6ed6bf8fae88b07c39bd33c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2482da0da6ed6bf8fae88b07c39bd33c">&#9670;&nbsp;</a></span>PIN_GetWindowsExceptionArgument()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ADDRINT LEVEL_BASE::PIN_GetWindowsExceptionArgument </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UINT32&#160;</td>
<td class="paramname"><em>argNum</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the specified Windows system exception's argument from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">argNum</td><td>ordinal number of the argument to be retrieved, starting from zero. The value of this parameter should not exceed the value returned by the <a class="el" href="group__EXCEPTION__API.html#ga9e74f4f272ce2142049a98a340922488">PIN_CountWindowsExceptionArguments</a> function. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value of the specified system exception's argument </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>The specified exception information should describe an <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> exception.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: Windows<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gaf1e0e2ceb95279e1d41d0c38b687ff75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf1e0e2ceb95279e1d41d0c38b687ff75">&#9670;&nbsp;</a></span>PIN_GetWindowsExceptionCode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">UINT32 LEVEL_BASE::PIN_GetWindowsExceptionCode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve the Windows system exception code from the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be queried </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The system exception code </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>The specified exception information should describe an <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> exception.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: Windows<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga226188ff455ffdc49ea534c578668430"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga226188ff455ffdc49ea534c578668430">&#9670;&nbsp;</a></span>PIN_InitAccessFaultInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_BASE::PIN_InitAccessFaultInfo </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a>&#160;</td>
<td class="paramname"><em>exceptCode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ADDRINT&#160;</td>
<td class="paramname"><em>exceptAddress</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ADDRINT&#160;</td>
<td class="paramname"><em>accessAddress</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga360af8d7af72a0f432e95f0a3abce37d">FAULTY_ACCESS_TYPE</a>&#160;</td>
<td class="paramname"><em>accessType</em> = <code><a class="el" href="group__EXCEPTION__API.html#gga360af8d7af72a0f432e95f0a3abce37da88e7f24de098c1e113b9b6bde54a6d97">FAULTY_ACCESS_TYPE_UNKNOWN</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure with the given attributes of an <a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddab81bc53b74bf65a727578f3a5b5bb1bc">EXCEPTCLASS_ACCESS_FAULT</a> exception.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be initialized </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exceptCode</td><td>exception code that specifies an <a class="el" href="group__EXCEPTION__API.html#gga82830ef218ccaea87a822f8f192d5dddab81bc53b74bf65a727578f3a5b5bb1bc">EXCEPTCLASS_ACCESS_FAULT</a> exception </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exceptAddress</td><td>address of the instruction that caused the exception </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">accessAddress</td><td>address of the faulty memory access </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">accessType</td><td>type of the faulty memory access</td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gaebebae7c880735d6483b259f7628466f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaebebae7c880735d6483b259f7628466f">&#9670;&nbsp;</a></span>PIN_InitExceptionInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_BASE::PIN_InitExceptionInfo </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga690ff97731b7a1d356976f89f8f10e95">EXCEPTION_CODE</a>&#160;</td>
<td class="paramname"><em>exceptCode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ADDRINT&#160;</td>
<td class="paramname"><em>exceptAddress</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure with the given generic exception's attributes. Set "unknown" state for all exception-specific attributes.<br />
</p><dl class="section note"><dt>Note</dt><dd>This function is useful when the specified exception code does not require any additional exception information or such information is not available. The function can not be used to initialize <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> exception information.<br />
Use exception-specific initialization functions if an additional exception information is available/required.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be initialized </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exceptCode</td><td>exception code. It could specify any exception other than <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exceptAddress</td><td>address of the instruction that caused the exception</td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: All<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga512749b45e0d2452a3fa7d2258124232"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga512749b45e0d2452a3fa7d2258124232">&#9670;&nbsp;</a></span>PIN_InitWindowsExceptionInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_BASE::PIN_InitWindowsExceptionInfo </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UINT32&#160;</td>
<td class="paramname"><em>sysExceptCode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ADDRINT&#160;</td>
<td class="paramname"><em>exceptAddress</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UINT32&#160;</td>
<td class="paramname"><em>numArgs</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const ADDRINT *&#160;</td>
<td class="paramname"><em>pArgs</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the specified <a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> structure with the given attributes of an <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> exception.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure to be initialized </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">sysExceptCode</td><td>the system exception code </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exceptAddress</td><td>address of the instruction that caused the exception </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">numArgs</td><td>number of arguments associated with the system exception. This is the number of elements in the &lt;pArgs&gt; array; it should not exceed the <a class="el" href="group__EXCEPTION__API.html#gaa84771de9d0e68016908593da44d9542">MAX_WINDOWS_EXCEPTION_ARGS</a> value. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pArgs</td><td>pointer to an array of arguments associated with the system exception or NULL if the number of arguments is zero</td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> All<br />
<b>O/S</b>: Windows<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga656279818bb8972fbdac576b57854561"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga656279818bb8972fbdac576b57854561">&#9670;&nbsp;</a></span>PIN_RaiseException()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_PINCLIENT::PIN_RaiseException </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__CONTEXT__API.html#ga73f8f88949aaecf53a6d23f56399c676">CONTEXT</a> *&#160;</td>
<td class="paramname"><em>ctxt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__PIN__THREAD__API.html#ga645289be59039349ad77ad2fa7b0e2f3">THREADID</a>&#160;</td>
<td class="paramname"><em>tid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const EXCEPTION_INFO *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A tool can call this API to raise an emulated exception in the application's calling thread. Calling this API abandons the current analysis function and immediately starts executing at the application's exception handler (if there is one) or terminates the application (if there is no handler). This API does not return back to the calling analysis function.</p>
<p>When raising a floating point exception, this method merely raises the exception. It does not set any bits in the floating point status register, nor does it check that the exception is enabled via the exception mask. If the tool wishes to examine or change the floating point status register bits, it may do so via the <em>ctxt</em> parameter.</p>
<p>This function can be called from an analysis function or a replacement routine, but not from an instrumentation callback.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctxt</td><td>Register state to be reported as the application's context at the exception point. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">tid</td><td>Id of the calling thread. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pExceptInfo</td><td>Pointer to the EXCEPTION_INFO structure that describes the exception. The exception information should be properly initialized.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>This API never returns. </dd></dl>
<dl class="section pre"><dt>Precondition</dt><dd>All locks must be released before calling to this function.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The vm lock is obtained during the call of this API.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT<br />
<b>O/S</b>: Windows<br />
<b>CPU:</b> IA-32 and Intel(R) 64 architectures<br />
</dd></dl>
</div>
</div>
<a id="gae2086cd53a577f44e1b2ed32e9231816"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae2086cd53a577f44e1b2ed32e9231816">&#9670;&nbsp;</a></span>PIN_SetExceptionAddress()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_BASE::PIN_SetExceptionAddress </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__EXCEPTION__API.html#ga6b419bb0f9a400c889e4cf12db70dda1">EXCEPTION_INFO</a> *&#160;</td>
<td class="paramname"><em>pExceptInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ADDRINT&#160;</td>
<td class="paramname"><em>exceptAddress</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the address of the instruction that caused the specified exception. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">pExceptInfo</td><td>pointer to the exception information structure that receives the new exception address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exceptAddress</td><td>address of the instruction that caused the exception </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="gaa84771de9d0e68016908593da44d9542"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa84771de9d0e68016908593da44d9542">&#9670;&nbsp;</a></span>MAX_WINDOWS_EXCEPTION_ARGS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">GLOBALCONST UINT32 LEVEL_BASE::MAX_WINDOWS_EXCEPTION_ARGS = 5</td>
</tr>
</table>
</div><div class="memdoc">
<p>Maximum number of arguments that can be associated with an <a class="el" href="group__EXCEPTION__API.html#gga690ff97731b7a1d356976f89f8f10e95a84f80151d550d1b277813b427809c221">EXCEPTCODE_WINDOWS</a> exception. </p>
</div>
</div>
</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>