WinStd/classwinstd_1_1vmemory.html

505 lines
41 KiB
HTML

<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>WinStd: winstd::vmemory 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" />
</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 id="projectrow">
<td id="projectalign">
<div id="projectname">WinStd
</div>
<div id="projectbrief">Additional templates and function helpers for Microsoft Windows using Standard C++ classes</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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"><b>winstd</b></li><li class="navelem"><a class="el" href="classwinstd_1_1vmemory.html">vmemory</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classwinstd_1_1vmemory-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">winstd::vmemory Class Reference<div class="ingroups"><a class="el" href="group___win_std_win_a_p_i.html">Windows API</a></div></div></div>
</div><!--header-->
<div class="contents">
<p>Memory in virtual address space of a process handle wrapper.
<a href="classwinstd_1_1vmemory.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_win_8h_source.html">WinStd/Win.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for winstd::vmemory:</div>
<div class="dyncontent">
<div class="center">
<img src="classwinstd_1_1vmemory.png" usemap="#winstd::vmemory_map" alt=""/>
<map id="winstd::vmemory_map" name="winstd::vmemory_map">
<area href="classwinstd_1_1handle.html" alt="winstd::handle&lt; LPVOID, NULL &gt;" shape="rect" coords="0,0,201,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae49dd901cfb090ed736510e68a39be7d"><td class="memItemLeft" align="right" valign="top"><a id="ae49dd901cfb090ed736510e68a39be7d" name="ae49dd901cfb090ed736510e68a39be7d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>vmemory</b> () noexcept</td></tr>
<tr class="memdesc:ae49dd901cfb090ed736510e68a39be7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new class instance with the memory handle set to INVAL. <br /></td></tr>
<tr class="separator:ae49dd901cfb090ed736510e68a39be7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a808b73da9d2030e2ac11bcb3038ee09e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#a808b73da9d2030e2ac11bcb3038ee09e">vmemory</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h, 1 HANDLE proc) noexcept</td></tr>
<tr class="memdesc:a808b73da9d2030e2ac11bcb3038ee09e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new class instance with an already available object handle. <a href="classwinstd_1_1vmemory.html#a808b73da9d2030e2ac11bcb3038ee09e">More...</a><br /></td></tr>
<tr class="separator:a808b73da9d2030e2ac11bcb3038ee09e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a9f232324f80b0b818bbc868c23dfc1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#a4a9f232324f80b0b818bbc868c23dfc1">vmemory</a> (1 <a class="el" href="classwinstd_1_1vmemory.html">vmemory</a> &amp;&amp;h) noexcept</td></tr>
<tr class="memdesc:a4a9f232324f80b0b818bbc868c23dfc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor. <a href="classwinstd_1_1vmemory.html#a4a9f232324f80b0b818bbc868c23dfc1">More...</a><br /></td></tr>
<tr class="separator:a4a9f232324f80b0b818bbc868c23dfc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0d2edd7c1986736662b54a553695d51"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51">~vmemory</a> ()</td></tr>
<tr class="memdesc:aa0d2edd7c1986736662b54a553695d51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the memory. <a href="classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51">More...</a><br /></td></tr>
<tr class="separator:aa0d2edd7c1986736662b54a553695d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8ac839e2aaaad84f5954b83dd4c8420"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1vmemory.html">vmemory</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#aa8ac839e2aaaad84f5954b83dd4c8420">operator=</a> (1 <a class="el" href="classwinstd_1_1vmemory.html">vmemory</a> &amp;&amp;other) noexcept</td></tr>
<tr class="memdesc:aa8ac839e2aaaad84f5954b83dd4c8420"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment. <a href="classwinstd_1_1vmemory.html#aa8ac839e2aaaad84f5954b83dd4c8420">More...</a><br /></td></tr>
<tr class="separator:aa8ac839e2aaaad84f5954b83dd4c8420"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad301de2680f21d5e56af7e6a6ab25b12"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#ad301de2680f21d5e56af7e6a6ab25b12">attach</a> (1 HANDLE proc, 1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) noexcept</td></tr>
<tr class="memdesc:ad301de2680f21d5e56af7e6a6ab25b12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a new memory handle for the class. <a href="classwinstd_1_1vmemory.html#ad301de2680f21d5e56af7e6a6ab25b12">More...</a><br /></td></tr>
<tr class="separator:ad301de2680f21d5e56af7e6a6ab25b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20ba804420e290ee94593908b9877cdf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#a20ba804420e290ee94593908b9877cdf">alloc</a> (1 HANDLE hProcess, 1 LPVOID lpAddress, 1 SIZE_T dwSize, 1 DWORD flAllocationType, 1 DWORD flProtect) noexcept</td></tr>
<tr class="memdesc:a20ba804420e290ee94593908b9877cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserves, commits, or changes the state of a region of memory within the virtual address space of a specified process. The function initializes the memory it allocates to zero. <a href="classwinstd_1_1vmemory.html#a20ba804420e290ee94593908b9877cdf">More...</a><br /></td></tr>
<tr class="separator:a20ba804420e290ee94593908b9877cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classwinstd_1_1handle"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classwinstd_1_1handle')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classwinstd_1_1handle.html">winstd::handle&lt; LPVOID, NULL &gt;</a></td></tr>
<tr class="memitem:a1b9c4f9529c9efa7d16dec8bab3b00e4 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a id="a1b9c4f9529c9efa7d16dec8bab3b00e4" name="a1b9c4f9529c9efa7d16dec8bab3b00e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>handle</b> () noexcept</td></tr>
<tr class="memdesc:a1b9c4f9529c9efa7d16dec8bab3b00e4 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new class instance with the object handle set to INVAL. <br /></td></tr>
<tr class="separator:a1b9c4f9529c9efa7d16dec8bab3b00e4 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f3f6d80650f3cbb1857b879c060e7b inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a91f3f6d80650f3cbb1857b879c060e7b">handle</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) noexcept</td></tr>
<tr class="memdesc:a91f3f6d80650f3cbb1857b879c060e7b inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new class instance with an already available object handle. <a href="classwinstd_1_1handle.html#a91f3f6d80650f3cbb1857b879c060e7b">More...</a><br /></td></tr>
<tr class="separator:a91f3f6d80650f3cbb1857b879c060e7b inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6a984b1373bcec59e5342f035cebefc inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#ad6a984b1373bcec59e5342f035cebefc">handle</a> (1 <a class="el" href="classwinstd_1_1handle.html">handle</a>&lt; <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>, INVAL &gt; &amp;&amp;h) noexcept</td></tr>
<tr class="memdesc:ad6a984b1373bcec59e5342f035cebefc inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor. <a href="classwinstd_1_1handle.html#ad6a984b1373bcec59e5342f035cebefc">More...</a><br /></td></tr>
<tr class="separator:ad6a984b1373bcec59e5342f035cebefc inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae58ca3031e921aba1319e55159473ea9 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1handle.html">handle</a>&lt; <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>, INVAL &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#ae58ca3031e921aba1319e55159473ea9">operator=</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) noexcept</td></tr>
<tr class="memdesc:ae58ca3031e921aba1319e55159473ea9 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attaches already available object handle. <a href="classwinstd_1_1handle.html#ae58ca3031e921aba1319e55159473ea9">More...</a><br /></td></tr>
<tr class="separator:ae58ca3031e921aba1319e55159473ea9 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcb7f966e387a00f71268cf092295665 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1handle.html">handle</a>&lt; <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>, INVAL &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#abcb7f966e387a00f71268cf092295665">operator=</a> (1 <a class="el" href="classwinstd_1_1handle.html">handle</a>&lt; <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>, INVAL &gt; &amp;&amp;h) noexcept</td></tr>
<tr class="memdesc:abcb7f966e387a00f71268cf092295665 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assignment. <a href="classwinstd_1_1handle.html#abcb7f966e387a00f71268cf092295665">More...</a><br /></td></tr>
<tr class="separator:abcb7f966e387a00f71268cf092295665 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86114637674c82d6fd96d7b3eae39ac8 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8">operator handle_type</a> () const</td></tr>
<tr class="memdesc:a86114637674c82d6fd96d7b3eae39ac8 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Auto-typecasting operator. <a href="classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8">More...</a><br /></td></tr>
<tr class="separator:a86114637674c82d6fd96d7b3eae39ac8 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f1ac60cf62e41c24394bf0e3457fbd9 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> *&amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9">operator*</a> () const</td></tr>
<tr class="memdesc:a0f1ac60cf62e41c24394bf0e3457fbd9 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). <a href="classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9">More...</a><br /></td></tr>
<tr class="separator:a0f1ac60cf62e41c24394bf0e3457fbd9 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bd2de7bb89dcebe2c9379dd54ee79c1 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1">operator&amp;</a> ()</td></tr>
<tr class="memdesc:a2bd2de7bb89dcebe2c9379dd54ee79c1 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object handle reference. <a href="classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1">More...</a><br /></td></tr>
<tr class="separator:a2bd2de7bb89dcebe2c9379dd54ee79c1 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a285ada5936fe7afdd12eed70b38c2084 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084">operator-&gt;</a> () const</td></tr>
<tr class="memdesc:a285ada5936fe7afdd12eed70b38c2084 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides object handle member access when the object handle is a pointer to a class or struct. <a href="classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084">More...</a><br /></td></tr>
<tr class="separator:a285ada5936fe7afdd12eed70b38c2084 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5df08ecb32b9040bf7342479aee2286c inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c">operator!</a> () const</td></tr>
<tr class="memdesc:a5df08ecb32b9040bf7342479aee2286c inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests if the object handle is INVAL. <a href="classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c">More...</a><br /></td></tr>
<tr class="separator:a5df08ecb32b9040bf7342479aee2286c inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35646c66bd8939c8feb525878e51773e inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a35646c66bd8939c8feb525878e51773e">operator&lt;</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) const</td></tr>
<tr class="memdesc:a35646c66bd8939c8feb525878e51773e inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is handle less than? <a href="classwinstd_1_1handle.html#a35646c66bd8939c8feb525878e51773e">More...</a><br /></td></tr>
<tr class="separator:a35646c66bd8939c8feb525878e51773e inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe61cdc3ca53194bb55d3a6cabcc3c68 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#abe61cdc3ca53194bb55d3a6cabcc3c68">operator&lt;=</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) const</td></tr>
<tr class="memdesc:abe61cdc3ca53194bb55d3a6cabcc3c68 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is handle less than or equal to? <a href="classwinstd_1_1handle.html#abe61cdc3ca53194bb55d3a6cabcc3c68">More...</a><br /></td></tr>
<tr class="separator:abe61cdc3ca53194bb55d3a6cabcc3c68 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a602527ac20da6859ba53cc4ee2dc2399 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a602527ac20da6859ba53cc4ee2dc2399">operator&gt;=</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) const</td></tr>
<tr class="memdesc:a602527ac20da6859ba53cc4ee2dc2399 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is handle greater than or equal to? <a href="classwinstd_1_1handle.html#a602527ac20da6859ba53cc4ee2dc2399">More...</a><br /></td></tr>
<tr class="separator:a602527ac20da6859ba53cc4ee2dc2399 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17cab850d12bf22e82392cd75b4b1482 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a17cab850d12bf22e82392cd75b4b1482">operator&gt;</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) const</td></tr>
<tr class="memdesc:a17cab850d12bf22e82392cd75b4b1482 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is handle greater than? <a href="classwinstd_1_1handle.html#a17cab850d12bf22e82392cd75b4b1482">More...</a><br /></td></tr>
<tr class="separator:a17cab850d12bf22e82392cd75b4b1482 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7eaa8c309897e38c2e2e44db53694b9 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#ae7eaa8c309897e38c2e2e44db53694b9">operator!=</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) const</td></tr>
<tr class="memdesc:ae7eaa8c309897e38c2e2e44db53694b9 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is handle not equal to? <a href="classwinstd_1_1handle.html#ae7eaa8c309897e38c2e2e44db53694b9">More...</a><br /></td></tr>
<tr class="separator:ae7eaa8c309897e38c2e2e44db53694b9 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93994c0a04251d37f377495c15dbe10c inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a93994c0a04251d37f377495c15dbe10c">operator==</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) const</td></tr>
<tr class="memdesc:a93994c0a04251d37f377495c15dbe10c inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is handle equal to? <a href="classwinstd_1_1handle.html#a93994c0a04251d37f377495c15dbe10c">More...</a><br /></td></tr>
<tr class="separator:a93994c0a04251d37f377495c15dbe10c inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f8dc89f77c86714e65f9783a06ec208 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a6f8dc89f77c86714e65f9783a06ec208">attach</a> (1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h) noexcept</td></tr>
<tr class="memdesc:a6f8dc89f77c86714e65f9783a06ec208 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a new object handle for the class. <a href="classwinstd_1_1handle.html#a6f8dc89f77c86714e65f9783a06ec208">More...</a><br /></td></tr>
<tr class="separator:a6f8dc89f77c86714e65f9783a06ec208 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5acf6ce53e092b8d4d53f909cf321f9 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#ad5acf6ce53e092b8d4d53f909cf321f9">detach</a> ()</td></tr>
<tr class="memdesc:ad5acf6ce53e092b8d4d53f909cf321f9 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dismisses the object handle from this class. <a href="classwinstd_1_1handle.html#ad5acf6ce53e092b8d4d53f909cf321f9">More...</a><br /></td></tr>
<tr class="separator:ad5acf6ce53e092b8d4d53f909cf321f9 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a706aaab7691a472c608890f8e5dd0d96 inherit pub_methods_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a id="a706aaab7691a472c608890f8e5dd0d96" name="a706aaab7691a472c608890f8e5dd0d96"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>free</b> ()</td></tr>
<tr class="memdesc:a706aaab7691a472c608890f8e5dd0d96 inherit pub_methods_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the object. <br /></td></tr>
<tr class="separator:a706aaab7691a472c608890f8e5dd0d96 inherit pub_methods_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a616dbfba873b9a3dcf393cff6504fc2e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html#a616dbfba873b9a3dcf393cff6504fc2e">free_internal</a> () noexcept override</td></tr>
<tr class="memdesc:a616dbfba873b9a3dcf393cff6504fc2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the memory. <a href="classwinstd_1_1vmemory.html#a616dbfba873b9a3dcf393cff6504fc2e">More...</a><br /></td></tr>
<tr class="separator:a616dbfba873b9a3dcf393cff6504fc2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a137560600851eb4c3e4b80e25d4da629"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629">free_internal</a> () noexcept=0</td></tr>
<tr class="memdesc:a137560600851eb4c3e4b80e25d4da629"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract member function that must be implemented by child classes to do the actual object destruction. <a href="classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629">More...</a><br /></td></tr>
<tr class="separator:a137560600851eb4c3e4b80e25d4da629"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:af448989be292da246dd25469d7a70b87"><td class="memItemLeft" align="right" valign="top"><a id="af448989be292da246dd25469d7a70b87" name="af448989be292da246dd25469d7a70b87"></a>
HANDLE&#160;</td><td class="memItemRight" valign="bottom"><b>m_proc</b></td></tr>
<tr class="memdesc:af448989be292da246dd25469d7a70b87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle of memory's process. <br /></td></tr>
<tr class="separator:af448989be292da246dd25469d7a70b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classwinstd_1_1handle"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classwinstd_1_1handle')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classwinstd_1_1handle.html">winstd::handle&lt; LPVOID, NULL &gt;</a></td></tr>
<tr class="memitem:aabde3f16fd98b06b3b0282ef7806eb59 inherit pro_attribs_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a id="aabde3f16fd98b06b3b0282ef7806eb59" name="aabde3f16fd98b06b3b0282ef7806eb59"></a>
<a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_h</b></td></tr>
<tr class="memdesc:aabde3f16fd98b06b3b0282ef7806eb59 inherit pro_attribs_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Object handle. <br /></td></tr>
<tr class="separator:aabde3f16fd98b06b3b0282ef7806eb59 inherit pro_attribs_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classwinstd_1_1handle"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classwinstd_1_1handle')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classwinstd_1_1handle.html">winstd::handle&lt; LPVOID, NULL &gt;</a></td></tr>
<tr class="memitem:a3dda19199ecfbc378c932e7d84d0ea81 inherit pub_types_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a id="a3dda19199ecfbc378c932e7d84d0ea81" name="a3dda19199ecfbc378c932e7d84d0ea81"></a>
typedef LPVOID&#160;</td><td class="memItemRight" valign="bottom"><b>handle_type</b></td></tr>
<tr class="memdesc:a3dda19199ecfbc378c932e7d84d0ea81 inherit pub_types_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Datatype of the object handle this template class handles. <br /></td></tr>
<tr class="separator:a3dda19199ecfbc378c932e7d84d0ea81 inherit pub_types_classwinstd_1_1handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_attribs_classwinstd_1_1handle"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classwinstd_1_1handle')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classwinstd_1_1handle.html">winstd::handle&lt; LPVOID, NULL &gt;</a></td></tr>
<tr class="memitem:gacf43e306968474166474090690857e1c inherit pub_static_attribs_classwinstd_1_1handle"><td class="memItemLeft" align="right" valign="top"><a id="gacf43e306968474166474090690857e1c" name="gacf43e306968474166474090690857e1c"></a>
static const LPVOID&#160;</td><td class="memItemRight" valign="bottom"><b>invalid</b></td></tr>
<tr class="memdesc:gacf43e306968474166474090690857e1c inherit pub_static_attribs_classwinstd_1_1handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invalid handle value. <br /></td></tr>
<tr class="separator:gacf43e306968474166474090690857e1c inherit pub_static_attribs_classwinstd_1_1handle"><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 >Memory in virtual address space of a process handle wrapper. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a808b73da9d2030e2ac11bcb3038ee09e" name="a808b73da9d2030e2ac11bcb3038ee09e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a808b73da9d2030e2ac11bcb3038ee09e">&#9670;&nbsp;</a></span>vmemory() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">winstd::vmemory::vmemory </td>
<td>(</td>
<td class="paramtype">1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>&#160;</td>
<td class="paramname"><em>h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">1 HANDLE&#160;</td>
<td class="paramname"><em>proc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes a new class instance with an already available object handle. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">proc</td><td>Handle of process the memory belongs to </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Initial object handle value </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4a9f232324f80b0b818bbc868c23dfc1" name="a4a9f232324f80b0b818bbc868c23dfc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a9f232324f80b0b818bbc868c23dfc1">&#9670;&nbsp;</a></span>vmemory() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">winstd::vmemory::vmemory </td>
<td>(</td>
<td class="paramtype">1 <a class="el" href="classwinstd_1_1vmemory.html">vmemory</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>h</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">h</td><td>A rvalue reference of another object </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa0d2edd7c1986736662b54a553695d51" name="aa0d2edd7c1986736662b54a553695d51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0d2edd7c1986736662b54a553695d51">&#9670;&nbsp;</a></span>~vmemory()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual winstd::vmemory::~vmemory </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees the memory. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa366894.aspx">VirtualFreeEx function</a> </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a20ba804420e290ee94593908b9877cdf" name="a20ba804420e290ee94593908b9877cdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20ba804420e290ee94593908b9877cdf">&#9670;&nbsp;</a></span>alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool winstd::vmemory::alloc </td>
<td>(</td>
<td class="paramtype">1 HANDLE&#160;</td>
<td class="paramname"><em>hProcess</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">1 LPVOID&#160;</td>
<td class="paramname"><em>lpAddress</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">1 SIZE_T&#160;</td>
<td class="paramname"><em>dwSize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">1 DWORD&#160;</td>
<td class="paramname"><em>flAllocationType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">1 DWORD&#160;</td>
<td class="paramname"><em>flProtect</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserves, commits, or changes the state of a region of memory within the virtual address space of a specified process. The function initializes the memory it allocates to zero. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa366890.aspx">VirtualAllocEx function</a></dd></dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li><code>true</code> when succeeds;</li>
<li><code>false</code> when fails. Use <code>GetLastError()</code> for failure reason. </li>
</ul>
</dd></dl>
</div>
</div>
<a id="ad301de2680f21d5e56af7e6a6ab25b12" name="ad301de2680f21d5e56af7e6a6ab25b12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad301de2680f21d5e56af7e6a6ab25b12">&#9670;&nbsp;</a></span>attach()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void winstd::vmemory::attach </td>
<td>(</td>
<td class="paramtype">1 HANDLE&#160;</td>
<td class="paramname"><em>proc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">1 <a class="el" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a>&#160;</td>
<td class="paramname"><em>h</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets a new memory handle for the class. </p>
<p >When the current object handle of the class is non-INVAL, the object is destroyed first.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">proc</td><td>Handle of process the memory belongs to </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">h</td><td>Initial object handle value </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a616dbfba873b9a3dcf393cff6504fc2e" name="a616dbfba873b9a3dcf393cff6504fc2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a616dbfba873b9a3dcf393cff6504fc2e">&#9670;&nbsp;</a></span>free_internal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void winstd::vmemory::free_internal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees the memory. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa366894.aspx">VirtualFreeEx function</a> </dd></dl>
<p>Implements <a class="el" href="classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629">winstd::handle&lt; LPVOID, NULL &gt;</a>.</p>
</div>
</div>
<a id="aa8ac839e2aaaad84f5954b83dd4c8420" name="aa8ac839e2aaaad84f5954b83dd4c8420"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8ac839e2aaaad84f5954b83dd4c8420">&#9670;&nbsp;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classwinstd_1_1vmemory.html">vmemory</a> &amp; winstd::vmemory::operator= </td>
<td>(</td>
<td class="paramtype">1 <a class="el" href="classwinstd_1_1vmemory.html">vmemory</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move assignment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">other</td><td>A rvalue reference of another object </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/WinStd/<a class="el" href="_win_8h_source.html">Win.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Feb 4 2022 13:28:45 for WinStd by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>