<!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::ProcessMemoryMac 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="classcrashpad_1_1ProcessMemoryMac.html">ProcessMemoryMac</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1ProcessMemoryMac-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">crashpad::ProcessMemoryMac Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Accesses the memory of another Mach task.  
 <a href="classcrashpad_1_1ProcessMemoryMac.html#details">More...</a></p>

<p><code>#include &quot;util/process/process_memory_mac.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::ProcessMemoryMac:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classcrashpad_1_1ProcessMemoryMac.png" usemap="#crashpad::ProcessMemoryMac_map" alt=""/>
  <map id="crashpad::ProcessMemoryMac_map" name="crashpad::ProcessMemoryMac_map">
<area href="classcrashpad_1_1ProcessMemory.html" title="Abstract base class for accessing the memory of another process." alt="crashpad::ProcessMemory" shape="rect" coords="0,0,188,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryMac_1_1MappedMemory.html">MappedMemory</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A memory region mapped from another Mach task.  <a href="classcrashpad_1_1ProcessMemoryMac_1_1MappedMemory.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:aa876ca41fbbd117f8e62e7dc05c50942"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryMac.html#aa876ca41fbbd117f8e62e7dc05c50942">Initialize</a> (task_t task)</td></tr>
<tr class="memdesc:aa876ca41fbbd117f8e62e7dc05c50942"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes this object to read the memory of a task with the provided task port.  <a href="classcrashpad_1_1ProcessMemoryMac.html#aa876ca41fbbd117f8e62e7dc05c50942">More...</a><br /></td></tr>
<tr class="separator:aa876ca41fbbd117f8e62e7dc05c50942"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca299c666d76e907facd4359fd00fcd"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classcrashpad_1_1ProcessMemoryMac_1_1MappedMemory.html">MappedMemory</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemoryMac.html#aeca299c666d76e907facd4359fd00fcd">ReadMapped</a> (mach_vm_address_t address, size_t size) const</td></tr>
<tr class="memdesc:aeca299c666d76e907facd4359fd00fcd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps memory from the target task into the current task.  <a href="classcrashpad_1_1ProcessMemoryMac.html#aeca299c666d76e907facd4359fd00fcd">More...</a><br /></td></tr>
<tr class="separator:aeca299c666d76e907facd4359fd00fcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcrashpad_1_1ProcessMemory"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcrashpad_1_1ProcessMemory')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcrashpad_1_1ProcessMemory.html">crashpad::ProcessMemory</a></td></tr>
<tr class="memitem:a728bc3afe29c3d5bf999c614d7fbf774 inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemory.html#a728bc3afe29c3d5bf999c614d7fbf774">Read</a> (<a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a> address, <a class="el" href="namespacecrashpad.html#a103690edebf604dcd23d5c03b78fe0be">VMSize</a> size, void *buffer) const</td></tr>
<tr class="memdesc:a728bc3afe29c3d5bf999c614d7fbf774 inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies memory from the target process into a caller-provided buffer in the current process.  <a href="classcrashpad_1_1ProcessMemory.html#a728bc3afe29c3d5bf999c614d7fbf774">More...</a><br /></td></tr>
<tr class="separator:a728bc3afe29c3d5bf999c614d7fbf774 inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f31b6f891e7a363b4d1c30d9d7fef2b inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemory.html#a9f31b6f891e7a363b4d1c30d9d7fef2b">ReadCString</a> (<a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a> address, std::string *string) const</td></tr>
<tr class="memdesc:a9f31b6f891e7a363b4d1c30d9d7fef2b inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a <code>NUL</code>-terminated C string from the target process into a string in the current process.  <a href="classcrashpad_1_1ProcessMemory.html#a9f31b6f891e7a363b4d1c30d9d7fef2b">More...</a><br /></td></tr>
<tr class="separator:a9f31b6f891e7a363b4d1c30d9d7fef2b inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f7450b1e02bed80a9573338cd32d260 inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ProcessMemory.html#a3f7450b1e02bed80a9573338cd32d260">ReadCStringSizeLimited</a> (<a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a> address, <a class="el" href="namespacecrashpad.html#a103690edebf604dcd23d5c03b78fe0be">VMSize</a> size, std::string *string) const</td></tr>
<tr class="memdesc:a3f7450b1e02bed80a9573338cd32d260 inherit pub_methods_classcrashpad_1_1ProcessMemory"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a <code>NUL</code>-terminated C string from the target process into a string in the current process.  <a href="classcrashpad_1_1ProcessMemory.html#a3f7450b1e02bed80a9573338cd32d260">More...</a><br /></td></tr>
<tr class="separator:a3f7450b1e02bed80a9573338cd32d260 inherit pub_methods_classcrashpad_1_1ProcessMemory"><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>Accesses the memory of another Mach task. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aa876ca41fbbd117f8e62e7dc05c50942"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa876ca41fbbd117f8e62e7dc05c50942">&#9670;&nbsp;</a></span>Initialize()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool crashpad::ProcessMemoryMac::Initialize </td>
          <td>(</td>
          <td class="paramtype">task_t&#160;</td>
          <td class="paramname"><em>task</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initializes this object to read the memory of a task with the provided task port. </p>
<p>This method must be called successfully prior to calling any other method in this class.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">task</td><td>A send right to the target task's task port. This object does not take ownership of the send right.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success, <code>false</code> on failure with a message logged. </dd></dl>

</div>
</div>
<a id="aeca299c666d76e907facd4359fd00fcd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeca299c666d76e907facd4359fd00fcd">&#9670;&nbsp;</a></span>ReadMapped()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::unique_ptr&lt; <a class="el" href="classcrashpad_1_1ProcessMemoryMac_1_1MappedMemory.html">ProcessMemoryMac::MappedMemory</a> &gt; crashpad::ProcessMemoryMac::ReadMapped </td>
          <td>(</td>
          <td class="paramtype">mach_vm_address_t&#160;</td>
          <td class="paramname"><em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Maps memory from the target task into the current task. </p>
<p>This interface is an alternative to <a class="el" href="classcrashpad_1_1ProcessMemory.html#a728bc3afe29c3d5bf999c614d7fbf774" title="Copies memory from the target process into a caller-provided buffer in the current process.">Read()</a> that does not require the caller to provide a buffer to fill. This avoids copying memory, which can offer a performance improvement.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">address</td><td>The address, in the target task’s address space, of the memory region to map. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>The size, in bytes, of the memory region to map.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>On success, a <a class="el" href="classcrashpad_1_1ProcessMemoryMac_1_1MappedMemory.html" title="A memory region mapped from another Mach task.">MappedMemory</a> object that provides access to the data requested. On faliure, <code>nullptr</code>, with a warning logged. Failures can occur, for example, when encountering unmapped or unreadable pages. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>util/process/process_memory_mac.h</li>
<li>util/process/process_memory_mac.cc</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>
