deploy: b21f2efa91fb601363a7535ecd9367a4b1aa5866

This commit is contained in:
rozmansi 2022-03-07 09:10:54 +00:00
parent c40391b265
commit fa6576c229
318 changed files with 16776 additions and 7341 deletions

121
_c_o_m_8h.html Normal file
View File

@ -0,0 +1,121 @@
<!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: include/WinStd/COM.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">COM.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Provides helper templates for Windows COM object manipulation.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;unknwn.h&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div>
<p><a href="_c_o_m_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1com__runtime__error.html">winstd::com_runtime_error</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">COM runtime error. <a href="classwinstd_1_1com__runtime__error.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_co_task_mem_free__delete.html">winstd::CoTaskMemFree_delete</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using CoTaskMemFree. <a href="structwinstd_1_1_co_task_mem_free__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1com__obj.html">winstd::com_obj&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">COM object wrapper template. <a href="classwinstd_1_1com__obj.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1bstr.html">winstd::bstr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">BSTR string wrapper. <a href="classwinstd_1_1bstr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1variant.html">winstd::variant</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">VARIANT struct wrapper. <a href="classwinstd_1_1variant.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1com__initializer.html">winstd::com_initializer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context scope automatic COM (un)initialization. <a href="classwinstd_1_1com__initializer.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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaa05e677aa01b9b1f2f8b58571532c965"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:gaa05e677aa01b9b1f2f8b58571532c965"><td class="memTemplItemLeft" align="right" valign="top">static _Check_return_ HRESULT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965">CoCreateInstance</a> (REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, <a class="el" href="classwinstd_1_1com__obj.html">winstd::com_obj</a>&lt; T &gt; &amp;v)</td></tr>
<tr class="memdesc:gaa05e677aa01b9b1f2f8b58571532c965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates and default-initializes a single object of the class associated with a specified CLSID. <a href="group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965">More...</a><br /></td></tr>
<tr class="separator:gaa05e677aa01b9b1f2f8b58571532c965"><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 >Provides helper templates for Windows COM object manipulation. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

File diff suppressed because it is too large Load Diff

287
_common_8h.html Normal file
View File

@ -0,0 +1,287 @@
<!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: include/WinStd/Common.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Common.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>General API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;Windows.h&gt;</code><br />
<code>#include &lt;assert.h&gt;</code><br />
<code>#include &lt;stdarg.h&gt;</code><br />
<code>#include &lt;tchar.h&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
<code>#include &lt;stdexcept&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="_common_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_local_free__delete.html">winstd::LocalFree_delete&lt; _Ty &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using LocalFree. <a href="structwinstd_1_1_local_free__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html">winstd::LocalFree_delete&lt; _Ty[]&gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr to array of unknown size using LocalFree. <a href="structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1ref__unique__ptr.html">winstd::ref_unique_ptr&lt; _Ty, _Dx &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class for returning pointers to std::unique_ptr. <a href="classwinstd_1_1ref__unique__ptr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html">winstd::ref_unique_ptr&lt; _Ty[], _Dx &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class for returning pointers to std::unique_ptr (specialization for arrays) <a href="classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1handle.html">winstd::handle&lt; T, INVAL &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base abstract template class to support generic object handle keeping. <a href="classwinstd_1_1handle.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1dplhandle.html">winstd::dplhandle&lt; T, INVAL &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base abstract template class to support object handle keeping for objects that support trivial handle duplication. <a href="classwinstd_1_1dplhandle.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1num__runtime__error.html">winstd::num_runtime_error&lt; _Tn &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Numerical runtime error. <a href="classwinstd_1_1num__runtime__error.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1win__runtime__error.html">winstd::win_runtime_error</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Windows runtime error. <a href="classwinstd_1_1win__runtime__error.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__printf.html">winstd::basic_string_printf&lt; _Elem, _Traits, _Ax &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base template class to support string formatting using <code>printf()</code> style templates. <a href="classwinstd_1_1basic__string__printf.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html">winstd::basic_string_msg&lt; _Elem, _Traits, _Ax &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base template class to support string formatting using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style templates. <a href="classwinstd_1_1basic__string__msg.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__guid.html">winstd::basic_string_guid&lt; _Elem, _Traits, _Ax &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base template class to support converting GUID to string. <a href="classwinstd_1_1basic__string__guid.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1string__guid.html">winstd::string_guid</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-byte character implementation of a class to support converting GUID to string. <a href="classwinstd_1_1string__guid.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1wstring__guid.html">winstd::wstring_guid</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wide character implementation of a class to support converting GUID to string. <a href="classwinstd_1_1wstring__guid.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1sanitizing__allocator.html">winstd::sanitizing_allocator&lt; _Ty &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An allocator template that sanitizes each memory block before it is destroyed or reallocated. <a href="classwinstd_1_1sanitizing__allocator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1sanitizing__allocator_1_1rebind.html">winstd::sanitizing_allocator&lt; _Ty &gt;::rebind&lt; _Other &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert this type to sanitizing_allocator&lt;_Other&gt; <a href="structwinstd_1_1sanitizing__allocator_1_1rebind.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1sanitizing__blob.html">winstd::sanitizing_blob&lt; N &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sanitizing BLOB. <a href="classwinstd_1_1sanitizing__blob.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 id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga2cbff438813b72648c18c8af875f47c9"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>__L</b>(x)&#160;&#160;&#160;L ## x</td></tr>
<tr class="memdesc:ga2cbff438813b72648c18c8af875f47c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">"L" stringizing macro <br /></td></tr>
<tr class="separator:ga2cbff438813b72648c18c8af875f47c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b08a24569840250e78cb8d510f1324a"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_L</b>(x)&#160;&#160;&#160;<a class="el" href="group___win_std_general.html#ga2cbff438813b72648c18c8af875f47c9">__L</a>(x)</td></tr>
<tr class="memdesc:ga8b08a24569840250e78cb8d510f1324a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes string Unicode. <br /></td></tr>
<tr class="separator:ga8b08a24569840250e78cb8d510f1324a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a46b36a9276ea0451d0790e51c7621f"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>WINSTD_STRING_IMPL</b>(x)&#160;&#160;&#160;#x</td></tr>
<tr class="memdesc:ga4a46b36a9276ea0451d0790e51c7621f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringizing macro helper. <br /></td></tr>
<tr class="separator:ga4a46b36a9276ea0451d0790e51c7621f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac2a4fa0600886ba34fd4f7d2116d35da"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>WINSTD_STRING</b>(x)&#160;&#160;&#160;<a class="el" href="group___win_std_general.html#ga4a46b36a9276ea0451d0790e51c7621f">WINSTD_STRING_IMPL</a>(x)</td></tr>
<tr class="memdesc:gac2a4fa0600886ba34fd4f7d2116d35da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringizing macro. <br /></td></tr>
<tr class="separator:gac2a4fa0600886ba34fd4f7d2116d35da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga11254c72ad33a6e0f5de31db708f784c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(C)</td></tr>
<tr class="memdesc:ga11254c72ad33a6e0f5de31db708f784c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Declares a class as non-copyable. <a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">More...</a><br /></td></tr>
<tr class="separator:ga11254c72ad33a6e0f5de31db708f784c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac91fa8d79c860b1fdbba65b6a322f760"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(C)</td></tr>
<tr class="memdesc:gac91fa8d79c860b1fdbba65b6a322f760"><td class="mdescLeft">&#160;</td><td class="mdescRight">Declares a class as non-movable. <a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">More...</a><br /></td></tr>
<tr class="separator:gac91fa8d79c860b1fdbba65b6a322f760"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3ca39107a61bbcd05f901898ec584986"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>&#160;&#160;&#160;1024</td></tr>
<tr class="memdesc:ga3ca39107a61bbcd05f901898ec584986"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the stack buffer in bytes used for initial system function call. <a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">More...</a><br /></td></tr>
<tr class="separator:ga3ca39107a61bbcd05f901898ec584986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga145b6285cc6fced0a7a61c4368b0bf12"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PRINTF_LPTSTR</b>&#160;&#160;&#160;&quot;s&quot;</td></tr>
<tr class="memdesc:ga145b6285cc6fced0a7a61c4368b0bf12"><td class="mdescLeft">&#160;</td><td class="mdescRight">LPTSTR printf/scanf format specifier. <br /></td></tr>
<tr class="separator:ga145b6285cc6fced0a7a61c4368b0bf12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1bb2b564655d7b0dee3ec63a0fda2eb5"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PRINTF_LPOLESTR</b>&#160;&#160;&#160;&quot;ls&quot;</td></tr>
<tr class="memdesc:ga1bb2b564655d7b0dee3ec63a0fda2eb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">LPOLESTR printf/scanf format specifier. <br /></td></tr>
<tr class="separator:ga1bb2b564655d7b0dee3ec63a0fda2eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd052e867c5d82d180924da9d0e16798"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#gadd052e867c5d82d180924da9d0e16798">_tcin</a>&#160;&#160;&#160;(std::cin )</td></tr>
<tr class="memdesc:gadd052e867c5d82d180924da9d0e16798"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard input stream for TCHAR strings. <a href="group___win_std_str_format.html#gadd052e867c5d82d180924da9d0e16798">More...</a><br /></td></tr>
<tr class="separator:gadd052e867c5d82d180924da9d0e16798"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4b7f5dbc77bb5d56afbb217a8dcc8544"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_tcout</b>&#160;&#160;&#160;(std::cout)</td></tr>
<tr class="memdesc:ga4b7f5dbc77bb5d56afbb217a8dcc8544"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard output stream for TCHAR strings. <br /></td></tr>
<tr class="separator:ga4b7f5dbc77bb5d56afbb217a8dcc8544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad92c7b3354a4cc35a5b9ddd16841a9c0"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_tcerr</b>&#160;&#160;&#160;(std::cerr)</td></tr>
<tr class="memdesc:gad92c7b3354a4cc35a5b9ddd16841a9c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard error stream for TCHAR strings. <br /></td></tr>
<tr class="separator:gad92c7b3354a4cc35a5b9ddd16841a9c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga51ea87c84320a64b846a002ab52ac1b8"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_tclog</b>&#160;&#160;&#160;(std::clog)</td></tr>
<tr class="memdesc:ga51ea87c84320a64b846a002ab52ac1b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard logging stream for TCHAR strings. <br /></td></tr>
<tr class="separator:ga51ea87c84320a64b846a002ab52ac1b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga419efffd12b5c96abc8a275ba375ca60"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(C, INVAL)</td></tr>
<tr class="memdesc:ga419efffd12b5c96abc8a275ba375ca60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements default constructors and operators to prevent their auto-generation by compiler. <a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">More...</a><br /></td></tr>
<tr class="separator:ga419efffd12b5c96abc8a275ba375ca60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2768b80bcf124e3127f0b7fe64395adb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_sys_handles.html#ga2768b80bcf124e3127f0b7fe64395adb">WINSTD_DPLHANDLE_IMPL</a>(C, INVAL)</td></tr>
<tr class="memdesc:ga2768b80bcf124e3127f0b7fe64395adb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements default constructors and operators to prevent their auto-generation by compiler. <a href="group___win_std_sys_handles.html#ga2768b80bcf124e3127f0b7fe64395adb">More...</a><br /></td></tr>
<tr class="separator:ga2768b80bcf124e3127f0b7fe64395adb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga8081292a94f5d070e644bdc90662d1fc"><td class="memItemLeft" align="right" valign="top">
typedef std::string&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::tstring</b></td></tr>
<tr class="memdesc:ga8081292a94f5d070e644bdc90662d1fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-byte / Wide-character string (according to _UNICODE) <br /></td></tr>
<tr class="separator:ga8081292a94f5d070e644bdc90662d1fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9dda7a9a763b666f6fe00c4c6626621d"><td class="memItemLeft" align="right" valign="top">
typedef basic_string_printf&lt; char, std::char_traits&lt; char &gt;, std::allocator&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::string_printf</b></td></tr>
<tr class="memdesc:ga9dda7a9a763b666f6fe00c4c6626621d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-byte character implementation of a class to support string formatting using <code>printf()</code> style templates. <br /></td></tr>
<tr class="separator:ga9dda7a9a763b666f6fe00c4c6626621d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0abdccf0a03840f984b7a889fea13cac"><td class="memItemLeft" align="right" valign="top">
typedef basic_string_printf&lt; wchar_t, std::char_traits&lt; wchar_t &gt;, std::allocator&lt; wchar_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::wstring_printf</b></td></tr>
<tr class="memdesc:ga0abdccf0a03840f984b7a889fea13cac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wide character implementation of a class to support string formatting using <code>printf()</code> style templates. <br /></td></tr>
<tr class="separator:ga0abdccf0a03840f984b7a889fea13cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab805ccda115191833fb01ba4457f208a"><td class="memItemLeft" align="right" valign="top">
typedef string_printf&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::tstring_printf</b></td></tr>
<tr class="memdesc:gab805ccda115191833fb01ba4457f208a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-byte / Wide-character formatted string (according to _UNICODE) <br /></td></tr>
<tr class="separator:gab805ccda115191833fb01ba4457f208a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae63195e25e08e2b3d9a9b9c2987f5740"><td class="memItemLeft" align="right" valign="top">
typedef basic_string_msg&lt; char, std::char_traits&lt; char &gt;, std::allocator&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::string_msg</b></td></tr>
<tr class="memdesc:gae63195e25e08e2b3d9a9b9c2987f5740"><td class="mdescLeft">&#160;</td><td class="mdescRight">Single-byte character implementation of a class to support string formatting using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style templates. <br /></td></tr>
<tr class="separator:gae63195e25e08e2b3d9a9b9c2987f5740"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga52a88ab19a1a96f778dbf7a2938bc98f"><td class="memItemLeft" align="right" valign="top">
typedef basic_string_msg&lt; wchar_t, std::char_traits&lt; wchar_t &gt;, std::allocator&lt; wchar_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::wstring_msg</b></td></tr>
<tr class="memdesc:ga52a88ab19a1a96f778dbf7a2938bc98f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wide character implementation of a class to support string formatting using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style templates. <br /></td></tr>
<tr class="separator:ga52a88ab19a1a96f778dbf7a2938bc98f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf47f07aac0b4c8ef47cf42216ab17f1b"><td class="memItemLeft" align="right" valign="top">
typedef string_msg&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::tstring_msg</b></td></tr>
<tr class="memdesc:gaf47f07aac0b4c8ef47cf42216ab17f1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-byte / Wide-character formatted string (according to _UNICODE) <br /></td></tr>
<tr class="separator:gaf47f07aac0b4c8ef47cf42216ab17f1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c44b6a587f894ee33bb58a10ba27d6b"><td class="memItemLeft" align="right" valign="top">
typedef string_guid&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::tstring_guid</b></td></tr>
<tr class="memdesc:ga4c44b6a587f894ee33bb58a10ba27d6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-byte / Wide-character string GUID (according to _UNICODE) <br /></td></tr>
<tr class="separator:ga4c44b6a587f894ee33bb58a10ba27d6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafaf527687e080349d49b51c2362c32e8"><td class="memItemLeft" align="right" valign="top">typedef std::basic_string&lt; char, std::char_traits&lt; char &gt;, sanitizing_allocator&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_mem_sanitize.html#gafaf527687e080349d49b51c2362c32e8">winstd::sanitizing_string</a></td></tr>
<tr class="memdesc:gafaf527687e080349d49b51c2362c32e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">A sanitizing variant of std::string. <a href="group___win_std_mem_sanitize.html#gafaf527687e080349d49b51c2362c32e8">More...</a><br /></td></tr>
<tr class="separator:gafaf527687e080349d49b51c2362c32e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga57776f4affaac5040ba220302003eedc"><td class="memItemLeft" align="right" valign="top">typedef std::basic_string&lt; wchar_t, std::char_traits&lt; wchar_t &gt;, sanitizing_allocator&lt; wchar_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_mem_sanitize.html#ga57776f4affaac5040ba220302003eedc">winstd::sanitizing_wstring</a></td></tr>
<tr class="memdesc:ga57776f4affaac5040ba220302003eedc"><td class="mdescLeft">&#160;</td><td class="mdescRight">A sanitizing variant of std::wstring. <a href="group___win_std_mem_sanitize.html#ga57776f4affaac5040ba220302003eedc">More...</a><br /></td></tr>
<tr class="separator:ga57776f4affaac5040ba220302003eedc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa149b89d04cc80c125023a14e241e8bd"><td class="memItemLeft" align="right" valign="top">
typedef sanitizing_string&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::sanitizing_tstring</b></td></tr>
<tr class="memdesc:gaa149b89d04cc80c125023a14e241e8bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-byte / Wide-character sanitizing string (according to _UNICODE) <br /></td></tr>
<tr class="separator:gaa149b89d04cc80c125023a14e241e8bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaad906b9a0f259f7c45470a7d548957ed"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#gaad906b9a0f259f7c45470a7d548957ed">vsnprintf</a> (char *str, size_t capacity, const char *format, va_list arg)</td></tr>
<tr class="memdesc:gaad906b9a0f259f7c45470a7d548957ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats string using <code>printf()</code>. <a href="group___win_std_str_format.html#gaad906b9a0f259f7c45470a7d548957ed">More...</a><br /></td></tr>
<tr class="separator:gaad906b9a0f259f7c45470a7d548957ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f831951f2e74c57aea12da36fe136d4"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#ga9f831951f2e74c57aea12da36fe136d4">vsnprintf</a> (wchar_t *str, size_t capacity, const wchar_t *format, va_list arg) noexcept</td></tr>
<tr class="memdesc:ga9f831951f2e74c57aea12da36fe136d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats string using <code>printf()</code>. <a href="group___win_std_str_format.html#ga9f831951f2e74c57aea12da36fe136d4">More...</a><br /></td></tr>
<tr class="separator:ga9f831951f2e74c57aea12da36fe136d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga583555761f3d01787d5e5f0226472f4e"><td class="memTemplParams" colspan="2">template&lt;class _Elem , class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga583555761f3d01787d5e5f0226472f4e"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e">vsprintf</a> (std::basic_string&lt; _Elem, _Traits, _Ax &gt; &amp;str, const _Elem *format, va_list arg)</td></tr>
<tr class="memdesc:ga583555761f3d01787d5e5f0226472f4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats string using <code>printf()</code>. <a href="group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e">More...</a><br /></td></tr>
<tr class="separator:ga583555761f3d01787d5e5f0226472f4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac397f655a858a069b3e521940af64331"><td class="memTemplParams" colspan="2">template&lt;class _Elem , class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gac397f655a858a069b3e521940af64331"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#gac397f655a858a069b3e521940af64331">sprintf</a> (std::basic_string&lt; _Elem, _Traits, _Ax &gt; &amp;str, const _Elem *format,...)</td></tr>
<tr class="memdesc:gac397f655a858a069b3e521940af64331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats string using <code>printf()</code>. <a href="group___win_std_str_format.html#gac397f655a858a069b3e521940af64331">More...</a><br /></td></tr>
<tr class="separator:gac397f655a858a069b3e521940af64331"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78bf19793ce080f2826f56f228d64623"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga78bf19793ce080f2826f56f228d64623"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623">FormatMessage</a> (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;str, va_list *Arguments)</td></tr>
<tr class="memdesc:ga78bf19793ce080f2826f56f228d64623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats a message string. <a href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623">More...</a><br /></td></tr>
<tr class="separator:ga78bf19793ce080f2826f56f228d64623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaebf39378c982c5116ea0110a69eb2f75"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gaebf39378c982c5116ea0110a69eb2f75"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_str_format.html#gaebf39378c982c5116ea0110a69eb2f75">FormatMessage</a> (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;str, va_list *Arguments)</td></tr>
<tr class="memdesc:gaebf39378c982c5116ea0110a69eb2f75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats a message string. <a href="group___win_std_str_format.html#gaebf39378c982c5116ea0110a69eb2f75">More...</a><br /></td></tr>
<tr class="separator:gaebf39378c982c5116ea0110a69eb2f75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4ddaca47a234b4f81a1c3314b3ba205"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Dx &gt; </td></tr>
<tr class="memitem:gab4ddaca47a234b4f81a1c3314b3ba205"><td class="memTemplItemLeft" align="right" valign="top">ref_unique_ptr&lt; _Ty, _Dx &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_general.html#gab4ddaca47a234b4f81a1c3314b3ba205">winstd::get_ptr</a> (std::unique_ptr&lt; _Ty, _Dx &gt; &amp;owner) noexcept</td></tr>
<tr class="memdesc:gab4ddaca47a234b4f81a1c3314b3ba205"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function template for returning pointers to std::unique_ptr. <a href="group___win_std_general.html#gab4ddaca47a234b4f81a1c3314b3ba205">More...</a><br /></td></tr>
<tr class="separator:gab4ddaca47a234b4f81a1c3314b3ba205"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7ecb3b65341fd45c36fce1fe692ec19a"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Dx &gt; </td></tr>
<tr class="memitem:ga7ecb3b65341fd45c36fce1fe692ec19a"><td class="memTemplItemLeft" align="right" valign="top">ref_unique_ptr&lt; _Ty[], _Dx &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_general.html#ga7ecb3b65341fd45c36fce1fe692ec19a">winstd::get_ptr</a> (std::unique_ptr&lt; _Ty[], _Dx &gt; &amp;owner) noexcept</td></tr>
<tr class="memdesc:ga7ecb3b65341fd45c36fce1fe692ec19a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function template for returning pointers to std::unique_ptr (specialization for arrays) <a href="group___win_std_general.html#ga7ecb3b65341fd45c36fce1fe692ec19a">More...</a><br /></td></tr>
<tr class="separator:ga7ecb3b65341fd45c36fce1fe692ec19a"><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 >General API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

File diff suppressed because it is too large Load Diff

124
_cred_8h.html Normal file
View File

@ -0,0 +1,124 @@
<!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: include/WinStd/Cred.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Cred.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Credentials API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;wincred.h&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
</div>
<p><a href="_cred_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_cred_free__delete.html">winstd::CredFree_delete&lt; _Ty &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using CredFree. <a href="structwinstd_1_1_cred_free__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html">winstd::CredFree_delete&lt; _Ty[]&gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr to array of unknown size using CredFree. <a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga66f305cb6a0bf6d4f2c6f2f49180df9b"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga66f305cb6a0bf6d4f2c6f2f49180df9b"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b">CredProtectA</a> (BOOL fAsSelf, LPCSTR pszCredentials, DWORD cchCredentials, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sProtectedCredentials, CRED_PROTECTION_TYPE *ProtectionType)</td></tr>
<tr class="memdesc:ga66f305cb6a0bf6d4f2c6f2f49180df9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts the specified credentials so that only the current security context can decrypt them. <a href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b">More...</a><br /></td></tr>
<tr class="separator:ga66f305cb6a0bf6d4f2c6f2f49180df9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa140d15e40f91b075ad1fa69429a0922"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gaa140d15e40f91b075ad1fa69429a0922"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922">CredProtectW</a> (BOOL fAsSelf, LPCWSTR pszCredentials, DWORD cchCredentials, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sProtectedCredentials, CRED_PROTECTION_TYPE *ProtectionType)</td></tr>
<tr class="memdesc:gaa140d15e40f91b075ad1fa69429a0922"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts the specified credentials so that only the current security context can decrypt them. <a href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922">More...</a><br /></td></tr>
<tr class="separator:gaa140d15e40f91b075ad1fa69429a0922"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga289617e5856f3f4fd18b86754726407b"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga289617e5856f3f4fd18b86754726407b"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b">CredUnprotectA</a> (BOOL fAsSelf, LPCSTR pszProtectedCredentials, DWORD cchCredentials, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sCredentials)</td></tr>
<tr class="memdesc:ga289617e5856f3f4fd18b86754726407b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypts credentials that were previously encrypted by using the CredProtect function. <a href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b">More...</a><br /></td></tr>
<tr class="separator:ga289617e5856f3f4fd18b86754726407b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac5fc6137d0a5f7c4bc713676e08a214e"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gac5fc6137d0a5f7c4bc713676e08a214e"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e">CredUnprotectW</a> (BOOL fAsSelf, LPCWSTR pszProtectedCredentials, DWORD cchCredentials, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sCredentials)</td></tr>
<tr class="memdesc:gac5fc6137d0a5f7c4bc713676e08a214e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypts credentials that were previously encrypted by using the CredProtect function. <a href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e">More...</a><br /></td></tr>
<tr class="separator:gac5fc6137d0a5f7c4bc713676e08a214e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3279ce4382680fc19b1a89ea5a3f261e"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_cred_a_p_i.html#ga3279ce4382680fc19b1a89ea5a3f261e">CredEnumerate</a> (LPCTSTR Filter, DWORD Flags, DWORD *Count, std::unique_ptr&lt; PCREDENTIAL[], <a class="el" href="structwinstd_1_1_cred_free__delete.html">winstd::CredFree_delete</a>&lt; PCREDENTIAL[]&gt; &gt; &amp;cCredentials) noexcept</td></tr>
<tr class="memdesc:ga3279ce4382680fc19b1a89ea5a3f261e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumerates the credentials from the user's credential set. The credential set used is the one associated with the logon session of the current token. The token must not have the user's SID disabled. <a href="group___win_std_cred_a_p_i.html#ga3279ce4382680fc19b1a89ea5a3f261e">More...</a><br /></td></tr>
<tr class="separator:ga3279ce4382680fc19b1a89ea5a3f261e"><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 >Integrates WinStd classes with Microsoft Credentials API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,176 +70,183 @@ $(function() {
<div class="headertitle"><div class="title">Cred.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_cred_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;wincred.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;wincred.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">static</span> BOOL CredProtectA(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType)</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>{</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">char</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">if</span> (CredProtectA(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf, &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> sProtectedCredentials.assign(buf, dwSize - 1);</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> std::unique_ptr&lt;char[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">char</span>[dwSize]);</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">if</span> (CredProtectA(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf.get(), &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> sProtectedCredentials.assign(buf.get(), dwSize - 1);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> }</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> }</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b"> 24</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b">CredProtectA</a>(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType)</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>{</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keywordtype">char</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b">CredProtectA</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf, &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> sProtectedCredentials.assign(buf, dwSize - 1);</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> std::unique_ptr&lt;char[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">char</span>[dwSize]);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b">CredProtectA</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf.get(), &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> sProtectedCredentials.assign(buf.get(), dwSize - 1);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> }</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keyword">static</span> BOOL CredProtectW(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType)</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>{</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">wchar_t</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">if</span> (CredProtectW(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf, &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> sProtectedCredentials.assign(buf, dwSize - 1);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> std::unique_ptr&lt;wchar_t[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[dwSize]);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">if</span> (CredProtectW(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf.get(), &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> sProtectedCredentials.assign(buf.get(), dwSize - 1);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> }</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> }</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>}</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span>}</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922"> 52</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922">CredProtectW</a>(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType)</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span>{</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordtype">wchar_t</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922">CredProtectW</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf, &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> sProtectedCredentials.assign(buf, dwSize - 1);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> std::unique_ptr&lt;wchar_t[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[dwSize]);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922">CredProtectW</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszCredentials), cchCredentials, buf.get(), &amp;dwSize, ProtectionType)) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> sProtectedCredentials.assign(buf.get(), dwSize - 1);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> }</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="keyword">static</span> BOOL CredUnprotectA(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sCredentials)</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>{</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">char</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">if</span> (CredUnprotectA(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf, &amp;dwSize)) {</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> sCredentials.assign(buf, dwSize);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> std::unique_ptr&lt;char[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">char</span>[dwSize]);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span> (CredUnprotectA(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf.get(), &amp;dwSize)) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> sCredentials.assign(buf.get(), dwSize);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span>}</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span>}</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b"> 76</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b">CredUnprotectA</a>(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sCredentials)</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>{</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">char</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b">CredUnprotectA</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf, &amp;dwSize)) {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> sCredentials.assign(buf, dwSize);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> std::unique_ptr&lt;char[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">char</span>[dwSize]);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b">CredUnprotectA</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf.get(), &amp;dwSize)) {</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> sCredentials.assign(buf.get(), dwSize);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="keyword">static</span> BOOL CredUnprotectW(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sCredentials)</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>{</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">wchar_t</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">if</span> (CredUnprotectW(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf, &amp;dwSize)) {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> sCredentials.assign(buf, dwSize);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> std::unique_ptr&lt;wchar_t[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[dwSize]);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span> (CredUnprotectW(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf.get(), &amp;dwSize)) {</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> sCredentials.assign(buf.get(), dwSize);</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> }</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span>}</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span>}</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e"> 104</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e">CredUnprotectW</a>(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sCredentials)</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>{</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">wchar_t</span> buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> DWORD dwSize = _countof(buf);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// Try with the stack buffer first.</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e">CredUnprotectW</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf, &amp;dwSize)) {</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> sCredentials.assign(buf, dwSize);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// Allocate on heap and retry.</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> std::unique_ptr&lt;wchar_t[]&gt; buf(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[dwSize]);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e">CredUnprotectW</a>(fAsSelf, <span class="keyword">const_cast&lt;</span>LPWSTR<span class="keyword">&gt;</span>(pszProtectedCredentials), cchCredentials, buf.get(), &amp;dwSize)) {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> sCredentials.assign(buf.get(), dwSize);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> }</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span>{</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html"> 133</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete</a></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53"> 135</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53">_Myt</a>; </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a"> 140</a></span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a">CredFree_delete</a>() {}</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad"> 145</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty2&gt; <a class="code hl_function" href="structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad">CredFree_delete</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete&lt;_Ty2&gt;</a>&amp;) {}</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465"> 152</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465">operator()</a>(_Ty *_Ptr)<span class="keyword"> const</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> CredFree(_Ptr);</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> };</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html"> 161</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete</a>&lt;_Ty[]&gt;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> {</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1"> 163</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1">_Myt</a>; </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab"> 168</a></span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab">CredFree_delete</a>() {}</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a"> 175</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a">operator()</a>(_Ty *_Ptr) <span class="keyword">const</span> <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> {</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> CredFree(_Ptr);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> }</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Other&gt;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48"> 186</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48">operator()</a>(_Other *)<span class="keyword"> const</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> CredFree(_Ptr);</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> }</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> };</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span>}</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span>}</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span>{</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html"> 136</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete</a></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53"> 138</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53">_Myt</a>; </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a"> 143</a></span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a">CredFree_delete</a>() {}</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad"> 148</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty2&gt; <a class="code hl_function" href="structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad">CredFree_delete</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete&lt;_Ty2&gt;</a>&amp;) {}</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465"> 155</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465">operator()</a>(_Ty *_Ptr)<span class="keyword"> const</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> CredFree(_Ptr);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> }</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> };</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html"> 164</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete</a>&lt;_Ty[]&gt;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1"> 166</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">CredFree_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1">_Myt</a>; </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab"> 171</a></span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab">CredFree_delete</a>() {}</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a"> 178</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a">operator()</a>(_Ty *_Ptr) <span class="keyword">const</span> <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> CredFree(_Ptr);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> }</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Other&gt;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48"> 189</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48">operator()</a>(_Other *)<span class="keyword"> const</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> CredFree(_Ptr);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> }</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> };</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span>}</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="preprocessor">#pragma warning(suppress: 4505) </span><span class="comment">// Don&#39;t warn on unused code</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="keyword">static</span> BOOL CredEnumerate(_In_z_ LPCTSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Inout_ std::unique_ptr&lt;PCREDENTIAL[], <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">winstd::CredFree_delete</a>&lt;PCREDENTIAL[]&gt; &gt; &amp;cCredentials) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span>{</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> PCREDENTIAL *pCredentials;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">if</span> (CredEnumerate(Filter, Flags, Count, &amp;pCredentials)) {</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> cCredentials.reset(pCredentials);</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span>}</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="preprocessor">#pragma warning(suppress: 4505) </span><span class="comment">// Don&#39;t warn on unused code</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="group___win_std_cred_a_p_i.html#ga3279ce4382680fc19b1a89ea5a3f261e"> 207</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga3279ce4382680fc19b1a89ea5a3f261e">CredEnumerate</a>(_In_z_ LPCTSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Inout_ std::unique_ptr&lt;PCREDENTIAL[], <a class="code hl_struct" href="structwinstd_1_1_cred_free__delete.html">winstd::CredFree_delete</a>&lt;PCREDENTIAL[]&gt; &gt; &amp;cCredentials) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span>{</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> PCREDENTIAL *pCredentials;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_cred_a_p_i.html#ga3279ce4382680fc19b1a89ea5a3f261e">CredEnumerate</a>(Filter, Flags, Count, &amp;pCredentials)) {</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> cCredentials.reset(pCredentials);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> }</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:79</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_aa735db2daba14212c29b3c5af0e0b0d1"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1">winstd::CredFree_delete&lt; _Ty[]&gt;::_Myt</a></div><div class="ttdeci">CredFree_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> Cred.h:163</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_aad102423f4fb96fd105b57a88a6031ab"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab">winstd::CredFree_delete&lt; _Ty[]&gt;::CredFree_delete</a></div><div class="ttdeci">CredFree_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> Cred.h:168</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_acc62d6419d7dea72f237ab2788171f48"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48">winstd::CredFree_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Other *) const</div><div class="ttdoc">Delete a pointer of another type.</div><div class="ttdef"><b>Definition:</b> Cred.h:186</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_aea662a4ce3e32723646313a9a56c4c9a"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a">winstd::CredFree_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const noexcept</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> Cred.h:175</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html">winstd::CredFree_delete</a></div><div class="ttdoc">Deleter for unique_ptr using CredFree.</div><div class="ttdef"><b>Definition:</b> Cred.h:134</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_a247d6f53f119468b6ccb08ff01338465"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465">winstd::CredFree_delete::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> Cred.h:152</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_a3959d2b3727e557e19d8b0f5c449b57a"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a">winstd::CredFree_delete::CredFree_delete</a></div><div class="ttdeci">CredFree_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> Cred.h:140</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_ab46fe0807ba356084523c04c8c565b53"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53">winstd::CredFree_delete::_Myt</a></div><div class="ttdeci">CredFree_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> Cred.h:135</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_ac4cc203e783bcc1c71011cde00ddf9ad"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad">winstd::CredFree_delete::CredFree_delete</a></div><div class="ttdeci">CredFree_delete(const CredFree_delete&lt; _Ty2 &gt; &amp;)</div><div class="ttdoc">Construct from another CredFree_delete.</div><div class="ttdef"><b>Definition:</b> Cred.h:145</div></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span>}</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="agroup___win_std_cred_a_p_i_html_ga289617e5856f3f4fd18b86754726407b"><div class="ttname"><a href="group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b">CredUnprotectA</a></div><div class="ttdeci">static BOOL CredUnprotectA(BOOL fAsSelf, LPCSTR pszProtectedCredentials, DWORD cchCredentials, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sCredentials)</div><div class="ttdoc">Decrypts credentials that were previously encrypted by using the CredProtect function.</div><div class="ttdef"><b>Definition:</b> Cred.h:76</div></div>
<div class="ttc" id="agroup___win_std_cred_a_p_i_html_ga3279ce4382680fc19b1a89ea5a3f261e"><div class="ttname"><a href="group___win_std_cred_a_p_i.html#ga3279ce4382680fc19b1a89ea5a3f261e">CredEnumerate</a></div><div class="ttdeci">static BOOL CredEnumerate(LPCTSTR Filter, DWORD Flags, DWORD *Count, std::unique_ptr&lt; PCREDENTIAL[], winstd::CredFree_delete&lt; PCREDENTIAL[]&gt; &gt; &amp;cCredentials) noexcept</div><div class="ttdoc">Enumerates the credentials from the user's credential set. The credential set used is the one associa...</div><div class="ttdef"><b>Definition:</b> Cred.h:207</div></div>
<div class="ttc" id="agroup___win_std_cred_a_p_i_html_ga66f305cb6a0bf6d4f2c6f2f49180df9b"><div class="ttname"><a href="group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b">CredProtectA</a></div><div class="ttdeci">static BOOL CredProtectA(BOOL fAsSelf, LPCSTR pszCredentials, DWORD cchCredentials, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sProtectedCredentials, CRED_PROTECTION_TYPE *ProtectionType)</div><div class="ttdoc">Encrypts the specified credentials so that only the current security context can decrypt them.</div><div class="ttdef"><b>Definition:</b> Cred.h:24</div></div>
<div class="ttc" id="agroup___win_std_cred_a_p_i_html_gaa140d15e40f91b075ad1fa69429a0922"><div class="ttname"><a href="group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922">CredProtectW</a></div><div class="ttdeci">static BOOL CredProtectW(BOOL fAsSelf, LPCWSTR pszCredentials, DWORD cchCredentials, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sProtectedCredentials, CRED_PROTECTION_TYPE *ProtectionType)</div><div class="ttdoc">Encrypts the specified credentials so that only the current security context can decrypt them.</div><div class="ttdef"><b>Definition:</b> Cred.h:52</div></div>
<div class="ttc" id="agroup___win_std_cred_a_p_i_html_gac5fc6137d0a5f7c4bc713676e08a214e"><div class="ttname"><a href="group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e">CredUnprotectW</a></div><div class="ttdeci">static BOOL CredUnprotectW(BOOL fAsSelf, LPCWSTR pszProtectedCredentials, DWORD cchCredentials, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sCredentials)</div><div class="ttdoc">Decrypts credentials that were previously encrypted by using the CredProtect function.</div><div class="ttdef"><b>Definition:</b> Cred.h:104</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:101</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_aa735db2daba14212c29b3c5af0e0b0d1"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1">winstd::CredFree_delete&lt; _Ty[]&gt;::_Myt</a></div><div class="ttdeci">CredFree_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> Cred.h:166</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_aad102423f4fb96fd105b57a88a6031ab"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab">winstd::CredFree_delete&lt; _Ty[]&gt;::CredFree_delete</a></div><div class="ttdeci">CredFree_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> Cred.h:171</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_acc62d6419d7dea72f237ab2788171f48"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48">winstd::CredFree_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Other *) const</div><div class="ttdoc">Delete a pointer of another type.</div><div class="ttdef"><b>Definition:</b> Cred.h:189</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4_html_aea662a4ce3e32723646313a9a56c4c9a"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a">winstd::CredFree_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const noexcept</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> Cred.h:178</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html">winstd::CredFree_delete</a></div><div class="ttdoc">Deleter for unique_ptr using CredFree.</div><div class="ttdef"><b>Definition:</b> Cred.h:137</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_a247d6f53f119468b6ccb08ff01338465"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465">winstd::CredFree_delete::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> Cred.h:155</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_a3959d2b3727e557e19d8b0f5c449b57a"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a">winstd::CredFree_delete::CredFree_delete</a></div><div class="ttdeci">CredFree_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> Cred.h:143</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_ab46fe0807ba356084523c04c8c565b53"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53">winstd::CredFree_delete::_Myt</a></div><div class="ttdeci">CredFree_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> Cred.h:138</div></div>
<div class="ttc" id="astructwinstd_1_1_cred_free__delete_html_ac4cc203e783bcc1c71011cde00ddf9ad"><div class="ttname"><a href="structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad">winstd::CredFree_delete::CredFree_delete</a></div><div class="ttdeci">CredFree_delete(const CredFree_delete&lt; _Ty2 &gt; &amp;)</div><div class="ttdoc">Construct from another CredFree_delete.</div><div class="ttdef"><b>Definition:</b> Cred.h:148</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:04 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
Generated on Mon Mar 7 2022 09:10:52 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>

187
_crypt_8h.html Normal file
View File

@ -0,0 +1,187 @@
<!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: include/WinStd/Crypt.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Crypt.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Cryptography API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;assert.h&gt;</code><br />
<code>#include &lt;WinCrypt.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="_crypt_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1cert__context.html">winstd::cert_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PCCERT_CONTEXT wrapper class. <a href="classwinstd_1_1cert__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1cert__chain__context.html">winstd::cert_chain_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PCCERT_CHAIN_CONTEXT wrapper class. <a href="classwinstd_1_1cert__chain__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1cert__store.html">winstd::cert_store</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCERTSTORE wrapper class. <a href="classwinstd_1_1cert__store.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1crypt__prov.html">winstd::crypt_prov</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCRYPTPROV wrapper class. <a href="classwinstd_1_1crypt__prov.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1crypt__hash.html">winstd::crypt_hash</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCRYPTHASH wrapper class. <a href="classwinstd_1_1crypt__hash.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1crypt__key.html">winstd::crypt_key</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCRYPTKEY wrapper class. <a href="classwinstd_1_1crypt__key.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1data__blob.html">winstd::data_blob</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">DATA_BLOB wrapper class. <a href="classwinstd_1_1data__blob.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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga551dacab30d7f72a713f69ea09edea92"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga551dacab30d7f72a713f69ea09edea92"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga551dacab30d7f72a713f69ea09edea92">CertGetNameStringA</a> (PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sNameString)</td></tr>
<tr class="memdesc:ga551dacab30d7f72a713f69ea09edea92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtains the subject or issuer name from a certificate <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa377189.aspx">CERT_CONTEXT</a> structure and stores it in a std::wstring string. <a href="group___win_std_crypto_a_p_i.html#ga551dacab30d7f72a713f69ea09edea92">More...</a><br /></td></tr>
<tr class="separator:ga551dacab30d7f72a713f69ea09edea92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2a0de58b33f5eb080e3b6ba9a7fe1e53"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga2a0de58b33f5eb080e3b6ba9a7fe1e53"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga2a0de58b33f5eb080e3b6ba9a7fe1e53">CertGetNameStringW</a> (PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sNameString)</td></tr>
<tr class="memdesc:ga2a0de58b33f5eb080e3b6ba9a7fe1e53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtains the subject or issuer name from a certificate <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa377189.aspx">CERT_CONTEXT</a> structure and stores it in a std::wstring string. <a href="group___win_std_crypto_a_p_i.html#ga2a0de58b33f5eb080e3b6ba9a7fe1e53">More...</a><br /></td></tr>
<tr class="separator:ga2a0de58b33f5eb080e3b6ba9a7fe1e53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0f4039aa2a795b7a73e5fb07f3742378"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga0f4039aa2a795b7a73e5fb07f3742378"><td class="memTemplItemLeft" align="right" valign="top">static BOOL WINAPI&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga0f4039aa2a795b7a73e5fb07f3742378">CertGetCertificateContextProperty</a> (PCCERT_CONTEXT pCertContext, DWORD dwPropId, std::vector&lt; _Ty, _Ax &gt; &amp;aData)</td></tr>
<tr class="memdesc:ga0f4039aa2a795b7a73e5fb07f3742378"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the information contained in an extended property of a certificate context. <a href="group___win_std_crypto_a_p_i.html#ga0f4039aa2a795b7a73e5fb07f3742378">More...</a><br /></td></tr>
<tr class="separator:ga0f4039aa2a795b7a73e5fb07f3742378"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga231b40581fbe230fdc82d4f473f2e43f"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga231b40581fbe230fdc82d4f473f2e43f"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f">CryptGetHashParam</a> (HCRYPTHASH hHash, DWORD dwParam, std::vector&lt; _Ty, _Ax &gt; &amp;aData, DWORD dwFlags)</td></tr>
<tr class="memdesc:ga231b40581fbe230fdc82d4f473f2e43f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves data that governs the operations of a hash object. The actual hash value can be retrieved by using this function. <a href="group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f">More...</a><br /></td></tr>
<tr class="separator:ga231b40581fbe230fdc82d4f473f2e43f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab3ae01f33782c38e84f2ec4a520c0628"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:gab3ae01f33782c38e84f2ec4a520c0628"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628">CryptGetHashParam</a> (HCRYPTHASH hHash, DWORD dwParam, T &amp;data, DWORD dwFlags)</td></tr>
<tr class="memdesc:gab3ae01f33782c38e84f2ec4a520c0628"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves data that governs the operations of a hash object. The actual hash value can be retrieved by using this function. <a href="group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628">More...</a><br /></td></tr>
<tr class="separator:gab3ae01f33782c38e84f2ec4a520c0628"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga782fd6fda714da07b5e687b80fc6f443"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga782fd6fda714da07b5e687b80fc6f443"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443">CryptGetKeyParam</a> (HCRYPTKEY hKey, DWORD dwParam, std::vector&lt; _Ty, _Ax &gt; &amp;aData, DWORD dwFlags)</td></tr>
<tr class="memdesc:ga782fd6fda714da07b5e687b80fc6f443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves data that governs the operations of a key. <a href="group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443">More...</a><br /></td></tr>
<tr class="separator:ga782fd6fda714da07b5e687b80fc6f443"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba94a7e33622f959702ac0e24edc3aee"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:gaba94a7e33622f959702ac0e24edc3aee"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee">CryptGetKeyParam</a> (HCRYPTKEY hKey, DWORD dwParam, T &amp;data, DWORD dwFlags)</td></tr>
<tr class="memdesc:gaba94a7e33622f959702ac0e24edc3aee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves data that governs the operations of a key. <a href="group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee">More...</a><br /></td></tr>
<tr class="separator:gaba94a7e33622f959702ac0e24edc3aee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga72ee7a873236f55ff0cb56d46e4ff0a6"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga72ee7a873236f55ff0cb56d46e4ff0a6"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6">CryptExportKey</a> (HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags, std::vector&lt; _Ty, _Ax &gt; &amp;aData)</td></tr>
<tr class="memdesc:ga72ee7a873236f55ff0cb56d46e4ff0a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exports a cryptographic key or a key pair from a cryptographic service provider (CSP) in a secure manner. <a href="group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6">More...</a><br /></td></tr>
<tr class="separator:ga72ee7a873236f55ff0cb56d46e4ff0a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd30cb0e884c2c88c3e4f3321ea5efff"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:gabd30cb0e884c2c88c3e4f3321ea5efff"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff">CryptEncrypt</a> (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, std::vector&lt; _Ty, _Ax &gt; &amp;aData)</td></tr>
<tr class="memdesc:gabd30cb0e884c2c88c3e4f3321ea5efff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts data. <a href="group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff">More...</a><br /></td></tr>
<tr class="separator:gabd30cb0e884c2c88c3e4f3321ea5efff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae93b1a49d6eafd5c7d8abe48ee97faf8"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:gae93b1a49d6eafd5c7d8abe48ee97faf8"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8">CryptDecrypt</a> (HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, std::vector&lt; _Ty, _Ax &gt; &amp;aData)</td></tr>
<tr class="memdesc:gae93b1a49d6eafd5c7d8abe48ee97faf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypts data previously encrypted by using the CryptEncrypt function. <a href="group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8">More...</a><br /></td></tr>
<tr class="separator:gae93b1a49d6eafd5c7d8abe48ee97faf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1dc14f316fe7a31ad54bb55400f54d87"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga1dc14f316fe7a31ad54bb55400f54d87">CertGetCertificateChain</a> (HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, <a class="el" href="classwinstd_1_1cert__chain__context.html">winstd::cert_chain_context</a> &amp;ctx)</td></tr>
<tr class="memdesc:ga1dc14f316fe7a31ad54bb55400f54d87"><td class="mdescLeft">&#160;</td><td class="mdescRight">The CertGetCertificateChain function builds a certificate chain context starting from an end certificate and going back, if possible, to a trusted root certificate. <a href="group___win_std_crypto_a_p_i.html#ga1dc14f316fe7a31ad54bb55400f54d87">More...</a><br /></td></tr>
<tr class="separator:ga1dc14f316fe7a31ad54bb55400f54d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54a61f3b9b1ddc10544d7156184a9c51"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51">CryptAcquireContextA</a> (<a class="el" href="classwinstd_1_1crypt__prov.html">winstd::crypt_prov</a> &amp;prov, LPCSTR szContainer, LPCSTR szProvider, DWORD dwProvType, DWORD dwFlags)</td></tr>
<tr class="memdesc:ga54a61f3b9b1ddc10544d7156184a9c51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acquires the cryptographic context. <a href="group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51">More...</a><br /></td></tr>
<tr class="separator:ga54a61f3b9b1ddc10544d7156184a9c51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa4a362230b1471ad35e4072a8d506ad4"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4">CryptAcquireContextW</a> (<a class="el" href="classwinstd_1_1crypt__prov.html">winstd::crypt_prov</a> &amp;prov, LPCWSTR szContainer, LPCWSTR szProvider, DWORD dwProvType, DWORD dwFlags)</td></tr>
<tr class="memdesc:gaa4a362230b1471ad35e4072a8d506ad4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acquires the cryptographic context. <a href="group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4">More...</a><br /></td></tr>
<tr class="separator:gaa4a362230b1471ad35e4072a8d506ad4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga947da720e2b4c51947e06f9489cf71eb"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb">CryptCreateHash</a> (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, <a class="el" href="classwinstd_1_1crypt__hash.html">winstd::crypt_hash</a> &amp;hash)</td></tr>
<tr class="memdesc:ga947da720e2b4c51947e06f9489cf71eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the hash context. <a href="group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb">More...</a><br /></td></tr>
<tr class="separator:ga947da720e2b4c51947e06f9489cf71eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965">CryptGenKey</a> (HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, <a class="el" href="classwinstd_1_1crypt__key.html">winstd::crypt_key</a> &amp;key)</td></tr>
<tr class="memdesc:ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates the key. <a href="group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965">More...</a><br /></td></tr>
<tr class="separator:ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf835e8e1fa80cfed905aa535e210a177"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177">CryptImportKey</a> (HCRYPTPROV hProv, __in_bcount(dwDataLen) LPCBYTE pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, <a class="el" href="classwinstd_1_1crypt__key.html">winstd::crypt_key</a> &amp;key)</td></tr>
<tr class="memdesc:gaf835e8e1fa80cfed905aa535e210a177"><td class="mdescLeft">&#160;</td><td class="mdescRight">Imports the key. <a href="group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177">More...</a><br /></td></tr>
<tr class="separator:gaf835e8e1fa80cfed905aa535e210a177"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0e1662683cff5871962961a6f49664a0"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0">CryptImportPublicKeyInfo</a> (HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, <a class="el" href="classwinstd_1_1crypt__key.html">winstd::crypt_key</a> &amp;key)</td></tr>
<tr class="memdesc:ga0e1662683cff5871962961a6f49664a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Imports the public key. <a href="group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0">More...</a><br /></td></tr>
<tr class="separator:ga0e1662683cff5871962961a6f49664a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2de3e63d5df80d031a13aaa50bade53"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53">CryptDeriveKey</a> (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, <a class="el" href="classwinstd_1_1crypt__key.html">winstd::crypt_key</a> &amp;key)</td></tr>
<tr class="memdesc:gad2de3e63d5df80d031a13aaa50bade53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates cryptographic session keys derived from a base data value. <a href="group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53">More...</a><br /></td></tr>
<tr class="separator:gad2de3e63d5df80d031a13aaa50bade53"><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 >Integrates WinStd classes with Microsoft Cryptography API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

File diff suppressed because it is too large Load Diff

197
_e_a_p_8h.html Normal file
View File

@ -0,0 +1,197 @@
<!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: include/WinStd/EAP.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<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">EAP.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft EAP API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;eaphostpeerconfigapis.h&gt;</code><br />
<code>#include &lt;eaptypes.h&gt;</code><br />
<code>#include &lt;EapHostPeerTypes.h&gt;</code><br />
<code>#include &lt;eapmethodtypes.h&gt;</code><br />
<code>#include &lt;eappapis.h&gt;</code><br />
<code>#include &lt;<a class="el" href="_win_sock2_8h_source.html">WinSock2.h</a>&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
</div>
<p><a href="_e_a_p_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_eap_host_peer_free_memory__delete.html">winstd::EapHostPeerFreeMemory_delete</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using EapHostPeerFreeMemory. <a href="structwinstd_1_1_eap_host_peer_free_memory__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html">winstd::EapHostPeerFreeRuntimeMemory_delete</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using EapHostPeerFreeRuntimeMemory. <a href="structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_eap_host_peer_free_error_memory__delete.html">winstd::EapHostPeerFreeErrorMemory_delete</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory. <a href="structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_eap_host_peer_free_eap_error__delete.html">winstd::EapHostPeerFreeEapError_delete</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError. <a href="structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1eap__attr.html">winstd::eap_attr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EAP_ATTRIBUTE wrapper class. <a href="classwinstd_1_1eap__attr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1eap__method__prop.html">winstd::eap_method_prop</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EAP_METHOD_PROPERTY wrapper class. <a href="classwinstd_1_1eap__method__prop.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1eap__packet.html">winstd::eap_packet</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EapPacket wrapper class. <a href="classwinstd_1_1eap__packet.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1eap__method__info__array.html">winstd::eap_method_info_array</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EAP_METHOD_INFO_ARRAY wrapper class. <a href="classwinstd_1_1eap__method__info__array.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1eap__runtime__error.html">winstd::eap_runtime_error</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EapHost runtime error. <a href="classwinstd_1_1eap__runtime__error.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 id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga25f2a0eea11e8332bfcec6b032a17a05"><td class="memItemLeft" align="right" valign="top">
typedef std::unique_ptr&lt; BYTE[], EapHostPeerFreeMemory_delete &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::eap_blob</b></td></tr>
<tr class="memdesc:ga25f2a0eea11e8332bfcec6b032a17a05"><td class="mdescLeft">&#160;</td><td class="mdescRight">EapHost BLOB wrapper class. <br /></td></tr>
<tr class="separator:ga25f2a0eea11e8332bfcec6b032a17a05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd2665596cc49191b36e6378147c47ad"><td class="memItemLeft" align="right" valign="top">
typedef std::unique_ptr&lt; BYTE[], EapHostPeerFreeRuntimeMemory_delete &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::eap_blob_runtime</b></td></tr>
<tr class="memdesc:gabd2665596cc49191b36e6378147c47ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">EapHost BLOB wrapper class. <br /></td></tr>
<tr class="separator:gabd2665596cc49191b36e6378147c47ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga910edec3d3d1ba4f6f306dcafdc2117a"><td class="memItemLeft" align="right" valign="top">
typedef std::unique_ptr&lt; EAP_ERROR, EapHostPeerFreeErrorMemory_delete &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::eap_error</b></td></tr>
<tr class="memdesc:ga910edec3d3d1ba4f6f306dcafdc2117a"><td class="mdescLeft">&#160;</td><td class="mdescRight">EAP_ERROR wrapper class. <br /></td></tr>
<tr class="separator:ga910edec3d3d1ba4f6f306dcafdc2117a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga102f6e28f2ae479af7b6555894f110ac"><td class="memItemLeft" align="right" valign="top">
typedef std::unique_ptr&lt; EAP_ERROR, EapHostPeerFreeEapError_delete &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::eap_error_runtime</b></td></tr>
<tr class="memdesc:ga102f6e28f2ae479af7b6555894f110ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">EAP_ERROR wrapper class. <br /></td></tr>
<tr class="separator:ga102f6e28f2ae479af7b6555894f110ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga50f5584ca708165f43cec42c42243315"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_e_a_p_a_p_i.html#ga50f5584ca708165f43cec42c42243315">winstd::eap_type_t</a> : unsigned char { <br />
&#160;&#160;<a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a5e543256c480ac577d30f76f9120eb74">eap_type_t::undefined</a> = 0
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aff483d1ff591898a9942916050d2ca3f">eap_type_t::identity</a> = 1
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a0cfd653d5d3e1e9fdbb644523d77971d">eap_type_t::notification</a> = 2
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa755bc3c9689ab5eaedd25afc4a79b9f">eap_type_t::nak</a> = 3
, <br />
&#160;&#160;<a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a1f61e547b81232a658f0704e85488a6c">eap_type_t::md5_challenge</a> = 4
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d">eap_type_t::otp</a> = 5
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a3761e7920c97542314b1aa50434f9293">eap_type_t::gtc</a> = 6
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa60aeea3d4cdbb5049fc37164644bb34">eap_type_t::tls</a> = 13
, <br />
&#160;&#160;<a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315accd905a8bbc449980aa7f26fcbd206e2">eap_type_t::ttls</a> = 21
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ab62d9100a672844bff4ac5cbc8de9fce">eap_type_t::peap</a> = 25
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315af579ec4460aed7126de9ed539845a0f4">eap_type_t::mschapv2</a> = 26
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ae19141eb8aa04ffb76d616409efcdf03">eap_type_t::ms_auth_tlv</a> = 33
, <br />
&#160;&#160;<a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a811f41353a6e1e0ecf7a03308c4f8e0e">eap_type_t::gtcp</a> = 128 + gtc
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a262032c7bb2ef8f08d5b85ee63f79eff">eap_type_t::legacy_pap</a> = 192
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315adfe86ce1b68c3cdefe90e35904fc744a">eap_type_t::legacy_mschapv2</a> = 193
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aea2b2676c28c0db26d39331a336c6b92">eap_type_t::start</a> = 1
, <br />
&#160;&#160;<a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a7f021a1415b86f2d013b2618fb31ae53">eap_type_t::end</a> = 192
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a8fb40a36c92da4be50f5052602e6fcf4">eap_type_t::noneap_start</a> = 192
, <a class="el" href="group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa93b0d36fa0eb07db651bb830470be12">eap_type_t::noneap_end</a> = 254
<br />
}</td></tr>
<tr class="memdesc:ga50f5584ca708165f43cec42c42243315"><td class="mdescLeft">&#160;</td><td class="mdescRight">EAP method numbers. <a href="group___win_std_e_a_p_a_p_i.html#ga50f5584ca708165f43cec42c42243315">More...</a><br /></td></tr>
<tr class="separator:ga50f5584ca708165f43cec42c42243315"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga4fac0d35e8ca3fa63c53f85a9d10fa80"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80">operator==</a> (const EAP_METHOD_TYPE &amp;a, const EAP_METHOD_TYPE &amp;b) noexcept</td></tr>
<tr class="memdesc:ga4fac0d35e8ca3fa63c53f85a9d10fa80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Are EAP method types equal? <a href="group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80">More...</a><br /></td></tr>
<tr class="separator:ga4fac0d35e8ca3fa63c53f85a9d10fa80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac742802fadd5c08227ed40026c21524a"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a">operator!=</a> (const EAP_METHOD_TYPE &amp;a, const EAP_METHOD_TYPE &amp;b) noexcept</td></tr>
<tr class="memdesc:gac742802fadd5c08227ed40026c21524a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Are EAP method types non-equal? <a href="group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a">More...</a><br /></td></tr>
<tr class="separator:gac742802fadd5c08227ed40026c21524a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:gaeeb21f5241c6b605b67c3e6e4128f972"><td class="memItemLeft" align="right" valign="top">
static const EAP_ATTRIBUTE&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::blank_eap_attr</b> = {}</td></tr>
<tr class="memdesc:gaeeb21f5241c6b605b67c3e6e4128f972"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blank EAP attribute. <br /></td></tr>
<tr class="separator:gaeeb21f5241c6b605b67c3e6e4128f972"><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 >Integrates WinStd classes with Microsoft EAP API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

File diff suppressed because it is too large Load Diff

147
_e_t_w_8h.html Normal file
View File

@ -0,0 +1,147 @@
<!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: include/WinStd/ETW.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">ETW.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Event Tracing for Windows API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;assert.h&gt;</code><br />
<code>#include &lt;evntprov.h&gt;</code><br />
<code>#include &lt;evntcons.h&gt;</code><br />
<code>#include &lt;stdarg.h&gt;</code><br />
<code>#include &lt;tdh.h&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="_e_t_w_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1event__data.html">winstd::event_data</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EVENT_DATA_DESCRIPTOR wrapper. <a href="classwinstd_1_1event__data.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__rec.html">winstd::event_rec</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">EVENT_RECORD wrapper. <a href="classwinstd_1_1event__rec.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__provider.html">winstd::event_provider</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">ETW event provider. <a href="classwinstd_1_1event__provider.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__session.html">winstd::event_session</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">ETW session. <a href="classwinstd_1_1event__session.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__trace.html">winstd::event_trace</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">ETW trace. <a href="classwinstd_1_1event__trace.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__trace__enabler.html">winstd::event_trace_enabler</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class to enable event provider in constructor and disables it in destructor. <a href="classwinstd_1_1event__trace__enabler.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__fn__auto.html">winstd::event_fn_auto</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class to write an event on entry/exit of scope. <a href="classwinstd_1_1event__fn__auto.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__fn__auto__ret.html">winstd::event_fn_auto_ret&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper template to write an event on entry/exit of scope with one parameter (typically result). <a href="classwinstd_1_1event__fn__auto__ret.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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga565b3185a93009edbb2d248227106bec"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga565b3185a93009edbb2d248227106bec"><td class="memTemplItemLeft" align="right" valign="top">static ULONG&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_e_t_w_a_p_i.html#ga565b3185a93009edbb2d248227106bec">TdhGetProperty</a> (PEVENT_RECORD pEvent, ULONG TdhContextCount, PTDH_CONTEXT pTdhContext, ULONG PropertyDataCount, PPROPERTY_DATA_DESCRIPTOR pPropertyData, std::vector&lt; _Ty, _Ax &gt; &amp;aData)</td></tr>
<tr class="memdesc:ga565b3185a93009edbb2d248227106bec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a property value from the event data. <a href="group___win_std_e_t_w_a_p_i.html#ga565b3185a93009edbb2d248227106bec">More...</a><br /></td></tr>
<tr class="separator:ga565b3185a93009edbb2d248227106bec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga318eb7aaef74aa01c86039520360e68a"><td class="memItemLeft" align="right" valign="top">static ULONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_e_t_w_a_p_i.html#ga318eb7aaef74aa01c86039520360e68a">TdhGetEventInformation</a> (PEVENT_RECORD pEvent, ULONG TdhContextCount, PTDH_CONTEXT pTdhContext, std::unique_ptr&lt; TRACE_EVENT_INFO &gt; &amp;info)</td></tr>
<tr class="memdesc:ga318eb7aaef74aa01c86039520360e68a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves metadata about an event. <a href="group___win_std_e_t_w_a_p_i.html#ga318eb7aaef74aa01c86039520360e68a">More...</a><br /></td></tr>
<tr class="separator:ga318eb7aaef74aa01c86039520360e68a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6726748672bf351a0910292e0ef23290"><td class="memItemLeft" align="right" valign="top">static ULONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_e_t_w_a_p_i.html#ga6726748672bf351a0910292e0ef23290">TdhGetEventMapInformation</a> (PEVENT_RECORD pEvent, LPWSTR pMapName, std::unique_ptr&lt; EVENT_MAP_INFO &gt; &amp;info)</td></tr>
<tr class="memdesc:ga6726748672bf351a0910292e0ef23290"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves information about the event map contained in the event. <a href="group___win_std_e_t_w_a_p_i.html#ga6726748672bf351a0910292e0ef23290">More...</a><br /></td></tr>
<tr class="separator:ga6726748672bf351a0910292e0ef23290"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:gaf7a60dde62523f074610aef107bd5d9d"><td class="memItemLeft" align="right" valign="top">
static const event_data&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::blank_event_data</b></td></tr>
<tr class="memdesc:gaf7a60dde62523f074610aef107bd5d9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blank event data used as terminator. <br /></td></tr>
<tr class="separator:gaf7a60dde62523f074610aef107bd5d9d"><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 >Integrates WinStd classes with Event Tracing for Windows API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

File diff suppressed because it is too large Load Diff

105
_g_d_i_8h.html Normal file
View File

@ -0,0 +1,105 @@
<!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: include/WinStd/GDI.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">GDI.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Windows GDI.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
</div>
<p><a href="_g_d_i_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1gdi__handle.html">winstd::gdi_handle&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Windows HGDIOBJ wrapper class. <a href="classwinstd_1_1gdi__handle.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1dc.html">winstd::dc</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Device context wrapper class. <a href="classwinstd_1_1dc.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1window__dc.html">winstd::window_dc</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Device context wrapper class. <a href="classwinstd_1_1window__dc.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1dc__selector.html">winstd::dc_selector</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context scope DC object restorer. <a href="classwinstd_1_1dc__selector.html#details">More...</a><br /></td></tr>
<tr class="separator:"><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 >Integrates WinStd classes with Microsoft Windows GDI. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,158 +70,160 @@ $(function() {
<div class="headertitle"><div class="title">GDI.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_g_d_i_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">*/</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span>{</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="classwinstd_1_1gdi__handle.html"> 22</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1gdi__handle.html">gdi_handle</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;T, NULL&gt;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> {</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1gdi__handle.html">gdi_handle</a>, NULL)</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2"> 32</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2">~gdi_handle</a>()</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_function" href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87">free_internal</a>();</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> }</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87"> 44</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> DeleteObject(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> };</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc.html"> 53</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1dc.html">dc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HDC, NULL&gt;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1dc.html">dc</a>, NULL)</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c"> 63</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c">~dc</a>()</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <a class="code hl_function" href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557">free_internal</a>();</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557"> 75</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> DeleteDC(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> }</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> };</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html"> 84</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HDC, NULL&gt;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a"> 90</a></span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a">window_dc</a>() noexcept :</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>(NULL)</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> {}</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12"> 97</a></span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12">window_dc</a>(_In_opt_ <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h, _In_opt_ HWND hwnd) noexcept :</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>(h),</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>(hwnd)</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> {}</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e"> 105</a></span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e">window_dc</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a> &amp;&amp;h) noexcept :</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>(std::move(h)),</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>(h.m_hwnd)</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> {}</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b"> 113</a></span> <a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a>&amp; <a class="code hl_function" href="classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b">operator=</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a> &amp;&amp;h) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> {</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;::operator=</a>(std::move(h));</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a> = h.m_hwnd;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a>)</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b"> 128</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b">~window_dc</a>()</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> {</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a">free_internal</a>();</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> }</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a"> 140</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> ReleaseDC(<a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>, <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3"> 146</a></span> HWND <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>; </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> };</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html"> 152</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1dc__selector.html">dc_selector</a></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1dc__selector.html">dc_selector</a>)</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_define" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(<a class="code hl_class" href="classwinstd_1_1dc__selector.html">dc_selector</a>)</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22"> 163</a></span> <a class="code hl_function" href="classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22">dc_selector</a>(_In_ HDC hdc, _In_ HGDIOBJ h) noexcept :</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">m_hdc</a>(hdc),</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>(SelectObject(hdc, h))</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> }</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd"> 174</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd">~dc_selector</a>()</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>)</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> SelectObject(<a class="code hl_variable" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">m_hdc</a>, <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> }</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d"> 185</a></span> HGDIOBJ <a class="code hl_function" href="classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d">status</a>() const noexcept</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> {</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> }</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3"> 191</a></span> HDC <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">m_hdc</a>; </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e"> 192</a></span> HGDIOBJ <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>; </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> };</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span>}</div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html"><div class="ttname"><a href="classwinstd_1_1dc__selector.html">winstd::dc_selector</a></div><div class="ttdoc">Context scope DC object restorer.</div><div class="ttdef"><b>Definition:</b> GDI.h:153</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_a4cb5b528376651a59eb9bbb8471c3f22"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22">winstd::dc_selector::dc_selector</a></div><div class="ttdeci">dc_selector(HDC hdc, HGDIOBJ h) noexcept</div><div class="ttdoc">Selects an object into the specified device context (DC). The new object replaces the previous object...</div><div class="ttdef"><b>Definition:</b> GDI.h:163</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_a6e4daf6736cab31fc696dd3adfe4bcfd"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd">winstd::dc_selector::~dc_selector</a></div><div class="ttdeci">virtual ~dc_selector()</div><div class="ttdoc">Restores original object.</div><div class="ttdef"><b>Definition:</b> GDI.h:174</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_aa443ed25d281078db2172808e7c74b3e"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">winstd::dc_selector::m_orig</a></div><div class="ttdeci">HGDIOBJ m_orig</div><div class="ttdoc">Original object handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:192</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_aacb4060094f2c4b1747ffa76455b235d"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d">winstd::dc_selector::status</a></div><div class="ttdeci">HGDIOBJ status() const noexcept</div><div class="ttdoc">Return result of SelectObject() call.</div><div class="ttdef"><b>Definition:</b> GDI.h:185</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_ab2d1223cd41529b6b2c9bb09c34568e3"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">winstd::dc_selector::m_hdc</a></div><div class="ttdeci">HDC m_hdc</div><div class="ttdoc">A handle to the device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:191</div></div>
<div class="ttc" id="aclasswinstd_1_1dc_html"><div class="ttname"><a href="classwinstd_1_1dc.html">winstd::dc</a></div><div class="ttdoc">Device context wrapper class.</div><div class="ttdef"><b>Definition:</b> GDI.h:54</div></div>
<div class="ttc" id="aclasswinstd_1_1dc_html_ad3dc9d48645022e7a1adcdb9ea01a557"><div class="ttname"><a href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557">winstd::dc::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Deletes the specified device context (DC).</div><div class="ttdef"><b>Definition:</b> GDI.h:75</div></div>
<div class="ttc" id="aclasswinstd_1_1dc_html_ae8c5722935c8a1c3f6a1857679f4563c"><div class="ttname"><a href="classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c">winstd::dc::~dc</a></div><div class="ttdeci">virtual ~dc()</div><div class="ttdoc">Deletes the specified device context (DC).</div><div class="ttdef"><b>Definition:</b> GDI.h:63</div></div>
<div class="ttc" id="aclasswinstd_1_1gdi__handle_html"><div class="ttname"><a href="classwinstd_1_1gdi__handle.html">winstd::gdi_handle</a></div><div class="ttdoc">Windows HGDIOBJ wrapper class.</div><div class="ttdef"><b>Definition:</b> GDI.h:23</div></div>
<div class="ttc" id="aclasswinstd_1_1gdi__handle_html_a777cd2403d6b8d0fb0a4b69c82fcca87"><div class="ttname"><a href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87">winstd::gdi_handle::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Closes an open object handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:44</div></div>
<div class="ttc" id="aclasswinstd_1_1gdi__handle_html_aae79abc9495f415a548d7f1f1ce4dab2"><div class="ttname"><a href="classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2">winstd::gdi_handle::~gdi_handle</a></div><div class="ttdeci">virtual ~gdi_handle()</div><div class="ttdoc">Closes an open object handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:32</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:603</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_a3dda19199ecfbc378c932e7d84d0ea81"><div class="ttname"><a href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">winstd::handle&lt; HDC, NULL &gt;::handle_type</a></div><div class="ttdeci">HDC handle_type</div><div class="ttdoc">Datatype of the object handle this template class handles.</div><div class="ttdef"><b>Definition:</b> Common.h:608</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; T, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:854</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html"><div class="ttname"><a href="classwinstd_1_1window__dc.html">winstd::window_dc</a></div><div class="ttdoc">Device context wrapper class.</div><div class="ttdef"><b>Definition:</b> GDI.h:85</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a04f6e8a97f6a492cc2f0683738e978d3"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">winstd::window_dc::m_hwnd</a></div><div class="ttdeci">HWND m_hwnd</div><div class="ttdoc">Window handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:146</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a2b4c7b6f55d8d87dedadf08457031d12"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12">winstd::window_dc::window_dc</a></div><div class="ttdeci">window_dc(handle_type h, HWND hwnd) noexcept</div><div class="ttdoc">Initializes a device context from existing data.</div><div class="ttdef"><b>Definition:</b> GDI.h:97</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a351bae4203ad766c94f4fc6eac74e98a"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a">winstd::window_dc::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Releases a device context (DC), freeing it for use by other applications.</div><div class="ttdef"><b>Definition:</b> GDI.h:140</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a3fd01c5264443520462cb7cab886a79b"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b">winstd::window_dc::~window_dc</a></div><div class="ttdeci">virtual ~window_dc()</div><div class="ttdoc">Releases a device context (DC), freeing it for use by other applications.</div><div class="ttdef"><b>Definition:</b> GDI.h:128</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a82c191df2785d2d83517d44744b28e0a"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a">winstd::window_dc::window_dc</a></div><div class="ttdeci">window_dc() noexcept</div><div class="ttdoc">Initializes an empty device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:90</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_ad5d431027a698fef783407ba9e9d167b"><div class="ttname"><a href="classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b">winstd::window_dc::operator=</a></div><div class="ttdeci">window_dc &amp; operator=(window_dc &amp;&amp;h) noexcept</div><div class="ttdoc">Copy an existing device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:113</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_af4841fbba9da009955938892fad8de0e"><div class="ttname"><a href="classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e">winstd::window_dc::window_dc</a></div><div class="ttdeci">window_dc(window_dc &amp;&amp;h) noexcept</div><div class="ttdoc">Move an existing device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:105</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:52</div></div>
<div class="ttc" id="agroup___win_std_general_html_gac91fa8d79c860b1fdbba65b6a322f760"><div class="ttname"><a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a></div><div class="ttdeci">#define WINSTD_NONMOVABLE(C)</div><div class="ttdoc">Declares a class as non-movable.</div><div class="ttdef"><b>Definition:</b> Common.h:60</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:161</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; T, NULL &gt;::invalid</a></div><div class="ttdeci">static const T invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:613</div></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span>{</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classwinstd_1_1gdi__handle.html"> 25</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1gdi__handle.html">gdi_handle</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;T, NULL&gt;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1gdi__handle.html">gdi_handle</a>, NULL)</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2"> 35</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2">~gdi_handle</a>()</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_function" href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87">free_internal</a>();</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> }</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87"> 47</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> DeleteObject(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> };</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc.html"> 56</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1dc.html">dc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HDC, NULL&gt;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1dc.html">dc</a>, NULL)</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c"> 66</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c">~dc</a>()</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <a class="code hl_function" href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557">free_internal</a>();</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> }</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557"> 78</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> DeleteDC(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> };</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html"> 87</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HDC, NULL&gt;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a"> 93</a></span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a">window_dc</a>() noexcept :</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>(NULL)</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> {}</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12"> 100</a></span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12">window_dc</a>(_In_opt_ <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h, _In_opt_ HWND hwnd) noexcept :</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>(h),</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>(hwnd)</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> {}</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e"> 108</a></span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e">window_dc</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a> &amp;&amp;h) noexcept :</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>(std::move(h)),</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>(h.m_hwnd)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {}</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b"> 116</a></span> <a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a>&amp; <a class="code hl_function" href="classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b">operator=</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a> &amp;&amp;h) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;::operator=</a>(std::move(h));</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a> = h.m_hwnd;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1window__dc.html">window_dc</a>)</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b"> 131</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b">~window_dc</a>()</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a">free_internal</a>();</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> }</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a"> 143</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> ReleaseDC(<a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>, <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> }</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3"> 149</a></span> HWND <a class="code hl_variable" href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">m_hwnd</a>; </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> };</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html"> 155</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1dc__selector.html">dc_selector</a></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1dc__selector.html">dc_selector</a>)</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <a class="code hl_define" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(<a class="code hl_class" href="classwinstd_1_1dc__selector.html">dc_selector</a>)</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22"> 166</a></span> <a class="code hl_function" href="classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22">dc_selector</a>(_In_ HDC hdc, _In_ HGDIOBJ h) noexcept :</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">m_hdc</a>(hdc),</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>(SelectObject(hdc, h))</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> {</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd"> 177</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd">~dc_selector</a>()</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>)</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> SelectObject(<a class="code hl_variable" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">m_hdc</a>, <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> }</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d"> 188</a></span> HGDIOBJ <a class="code hl_function" href="classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d">status</a>() const noexcept</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> }</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3"> 194</a></span> HDC <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">m_hdc</a>; </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e"> 195</a></span> HGDIOBJ <a class="code hl_variable" href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">m_orig</a>; </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> };</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span>}</div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html"><div class="ttname"><a href="classwinstd_1_1dc__selector.html">winstd::dc_selector</a></div><div class="ttdoc">Context scope DC object restorer.</div><div class="ttdef"><b>Definition:</b> GDI.h:156</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_a4cb5b528376651a59eb9bbb8471c3f22"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22">winstd::dc_selector::dc_selector</a></div><div class="ttdeci">dc_selector(HDC hdc, HGDIOBJ h) noexcept</div><div class="ttdoc">Selects an object into the specified device context (DC). The new object replaces the previous object...</div><div class="ttdef"><b>Definition:</b> GDI.h:166</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_a6e4daf6736cab31fc696dd3adfe4bcfd"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd">winstd::dc_selector::~dc_selector</a></div><div class="ttdeci">virtual ~dc_selector()</div><div class="ttdoc">Restores original object.</div><div class="ttdef"><b>Definition:</b> GDI.h:177</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_aa443ed25d281078db2172808e7c74b3e"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e">winstd::dc_selector::m_orig</a></div><div class="ttdeci">HGDIOBJ m_orig</div><div class="ttdoc">Original object handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:195</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_aacb4060094f2c4b1747ffa76455b235d"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d">winstd::dc_selector::status</a></div><div class="ttdeci">HGDIOBJ status() const noexcept</div><div class="ttdoc">Return result of SelectObject() call.</div><div class="ttdef"><b>Definition:</b> GDI.h:188</div></div>
<div class="ttc" id="aclasswinstd_1_1dc__selector_html_ab2d1223cd41529b6b2c9bb09c34568e3"><div class="ttname"><a href="classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3">winstd::dc_selector::m_hdc</a></div><div class="ttdeci">HDC m_hdc</div><div class="ttdoc">A handle to the device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:194</div></div>
<div class="ttc" id="aclasswinstd_1_1dc_html"><div class="ttname"><a href="classwinstd_1_1dc.html">winstd::dc</a></div><div class="ttdoc">Device context wrapper class.</div><div class="ttdef"><b>Definition:</b> GDI.h:57</div></div>
<div class="ttc" id="aclasswinstd_1_1dc_html_ad3dc9d48645022e7a1adcdb9ea01a557"><div class="ttname"><a href="classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557">winstd::dc::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Deletes the specified device context (DC).</div><div class="ttdef"><b>Definition:</b> GDI.h:78</div></div>
<div class="ttc" id="aclasswinstd_1_1dc_html_ae8c5722935c8a1c3f6a1857679f4563c"><div class="ttname"><a href="classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c">winstd::dc::~dc</a></div><div class="ttdeci">virtual ~dc()</div><div class="ttdoc">Deletes the specified device context (DC).</div><div class="ttdef"><b>Definition:</b> GDI.h:66</div></div>
<div class="ttc" id="aclasswinstd_1_1gdi__handle_html"><div class="ttname"><a href="classwinstd_1_1gdi__handle.html">winstd::gdi_handle</a></div><div class="ttdoc">Windows HGDIOBJ wrapper class.</div><div class="ttdef"><b>Definition:</b> GDI.h:26</div></div>
<div class="ttc" id="aclasswinstd_1_1gdi__handle_html_a777cd2403d6b8d0fb0a4b69c82fcca87"><div class="ttname"><a href="classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87">winstd::gdi_handle::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Closes an open object handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:47</div></div>
<div class="ttc" id="aclasswinstd_1_1gdi__handle_html_aae79abc9495f415a548d7f1f1ce4dab2"><div class="ttname"><a href="classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2">winstd::gdi_handle::~gdi_handle</a></div><div class="ttdeci">virtual ~gdi_handle()</div><div class="ttdoc">Closes an open object handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:35</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:615</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_a3dda19199ecfbc378c932e7d84d0ea81"><div class="ttname"><a href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">winstd::handle&lt; HDC, NULL &gt;::handle_type</a></div><div class="ttdeci">HDC handle_type</div><div class="ttdoc">Datatype of the object handle this template class handles.</div><div class="ttdef"><b>Definition:</b> Common.h:620</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; T, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:866</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html"><div class="ttname"><a href="classwinstd_1_1window__dc.html">winstd::window_dc</a></div><div class="ttdoc">Device context wrapper class.</div><div class="ttdef"><b>Definition:</b> GDI.h:88</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a04f6e8a97f6a492cc2f0683738e978d3"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3">winstd::window_dc::m_hwnd</a></div><div class="ttdeci">HWND m_hwnd</div><div class="ttdoc">Window handle.</div><div class="ttdef"><b>Definition:</b> GDI.h:149</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a2b4c7b6f55d8d87dedadf08457031d12"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12">winstd::window_dc::window_dc</a></div><div class="ttdeci">window_dc(handle_type h, HWND hwnd) noexcept</div><div class="ttdoc">Initializes a device context from existing data.</div><div class="ttdef"><b>Definition:</b> GDI.h:100</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a351bae4203ad766c94f4fc6eac74e98a"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a">winstd::window_dc::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Releases a device context (DC), freeing it for use by other applications.</div><div class="ttdef"><b>Definition:</b> GDI.h:143</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a3fd01c5264443520462cb7cab886a79b"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b">winstd::window_dc::~window_dc</a></div><div class="ttdeci">virtual ~window_dc()</div><div class="ttdoc">Releases a device context (DC), freeing it for use by other applications.</div><div class="ttdef"><b>Definition:</b> GDI.h:131</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_a82c191df2785d2d83517d44744b28e0a"><div class="ttname"><a href="classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a">winstd::window_dc::window_dc</a></div><div class="ttdeci">window_dc() noexcept</div><div class="ttdoc">Initializes an empty device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:93</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_ad5d431027a698fef783407ba9e9d167b"><div class="ttname"><a href="classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b">winstd::window_dc::operator=</a></div><div class="ttdeci">window_dc &amp; operator=(window_dc &amp;&amp;h) noexcept</div><div class="ttdoc">Copy an existing device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:116</div></div>
<div class="ttc" id="aclasswinstd_1_1window__dc_html_af4841fbba9da009955938892fad8de0e"><div class="ttname"><a href="classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e">winstd::window_dc::window_dc</a></div><div class="ttdeci">window_dc(window_dc &amp;&amp;h) noexcept</div><div class="ttdoc">Move an existing device context.</div><div class="ttdef"><b>Definition:</b> GDI.h:108</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:74</div></div>
<div class="ttc" id="agroup___win_std_general_html_gac91fa8d79c860b1fdbba65b6a322f760"><div class="ttname"><a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a></div><div class="ttdeci">#define WINSTD_NONMOVABLE(C)</div><div class="ttdoc">Declares a class as non-movable.</div><div class="ttdef"><b>Definition:</b> Common.h:82</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:171</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; T, NULL &gt;::invalid</a></div><div class="ttdeci">static const T invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:625</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

140
_m_s_i_8h.html Normal file
View File

@ -0,0 +1,140 @@
<!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: include/WinStd/MSI.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">MSI.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Installer API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;MsiQuery.h&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="_m_s_i_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga7a5853cf74ed8adb1b5cd1289c39e385"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga7a5853cf74ed8adb1b5cd1289c39e385"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385">MsiGetPropertyA</a> (MSIHANDLE hInstall, LPCSTR szName, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga7a5853cf74ed8adb1b5cd1289c39e385"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the value for an installer property and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385">More...</a><br /></td></tr>
<tr class="separator:ga7a5853cf74ed8adb1b5cd1289c39e385"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32e20a17013eb7660fda19f2b1de389d"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga32e20a17013eb7660fda19f2b1de389d"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d">MsiGetPropertyW</a> (MSIHANDLE hInstall, LPCWSTR szName, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga32e20a17013eb7660fda19f2b1de389d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the value for an installer property and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d">More...</a><br /></td></tr>
<tr class="separator:ga32e20a17013eb7660fda19f2b1de389d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaedc818f42d945e54f6956c928b3ffc29"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gaedc818f42d945e54f6956c928b3ffc29"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29">MsiRecordGetStringA</a> (MSIHANDLE hRecord, unsigned int iField, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:gaedc818f42d945e54f6956c928b3ffc29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string value of a record field and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29">More...</a><br /></td></tr>
<tr class="separator:gaedc818f42d945e54f6956c928b3ffc29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga487c38b4353054a4e518ca01d1397cf6"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga487c38b4353054a4e518ca01d1397cf6"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6">MsiRecordGetStringW</a> (MSIHANDLE hRecord, unsigned int iField, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga487c38b4353054a4e518ca01d1397cf6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string value of a record field and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6">More...</a><br /></td></tr>
<tr class="separator:ga487c38b4353054a4e518ca01d1397cf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7cb245425b74bdf9b89c754636486f0c"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga7cb245425b74bdf9b89c754636486f0c"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c">MsiFormatRecordA</a> (MSIHANDLE hInstall, MSIHANDLE hRecord, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga7cb245425b74bdf9b89c754636486f0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats record field data and properties using a format string and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c">More...</a><br /></td></tr>
<tr class="separator:ga7cb245425b74bdf9b89c754636486f0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga016f87f038892fe3121a2dd5232468d2"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga016f87f038892fe3121a2dd5232468d2"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2">MsiFormatRecordW</a> (MSIHANDLE hInstall, MSIHANDLE hRecord, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga016f87f038892fe3121a2dd5232468d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats record field data and properties using a format string and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2">More...</a><br /></td></tr>
<tr class="separator:ga016f87f038892fe3121a2dd5232468d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga83052d8dfbdf437cc45e6a4b46357036"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga83052d8dfbdf437cc45e6a4b46357036"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036">MsiRecordReadStream</a> (MSIHANDLE hRecord, unsigned int iField, std::vector&lt; _Ty, _Ax &gt; &amp;binData)</td></tr>
<tr class="memdesc:ga83052d8dfbdf437cc45e6a4b46357036"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads bytes from a record stream field into a std::vector buffer. <a href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036">More...</a><br /></td></tr>
<tr class="separator:ga83052d8dfbdf437cc45e6a4b46357036"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga340ee7efbd658e2d6ecfb199c41856bc"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga340ee7efbd658e2d6ecfb199c41856bc"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc">MsiGetTargetPathA</a> (MSIHANDLE hInstall, LPCSTR szFolder, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga340ee7efbd658e2d6ecfb199c41856bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the full target path for a folder in the Directory table and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc">More...</a><br /></td></tr>
<tr class="separator:ga340ee7efbd658e2d6ecfb199c41856bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga51696a19fb4b748eed04fa3b6a8f9eca"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga51696a19fb4b748eed04fa3b6a8f9eca"><td class="memTemplItemLeft" align="right" valign="top">static UINT&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca">MsiGetTargetPathW</a> (MSIHANDLE hInstall, LPCWSTR szFolder, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga51696a19fb4b748eed04fa3b6a8f9eca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the full target path for a folder in the Directory table and stores it in a std::wstring string. <a href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca">More...</a><br /></td></tr>
<tr class="separator:ga51696a19fb4b748eed04fa3b6a8f9eca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41c26288267e69f5bba73f9b125bf2a3"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga41c26288267e69f5bba73f9b125bf2a3"><td class="memTemplItemLeft" align="right" valign="top">static INSTALLSTATE&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3">MsiGetComponentPathA</a> (LPCSTR szProduct, LPCSTR szComponent, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:ga41c26288267e69f5bba73f9b125bf2a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the full path to an installed component. If the key path for the component is a registry key then the registry key is returned. <a href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3">More...</a><br /></td></tr>
<tr class="separator:ga41c26288267e69f5bba73f9b125bf2a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4be55d9d370a31e064787675c518c58"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gac4be55d9d370a31e064787675c518c58"><td class="memTemplItemLeft" align="right" valign="top">static INSTALLSTATE&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58">MsiGetComponentPathW</a> (LPCWSTR szProduct, LPCWSTR szComponent, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</td></tr>
<tr class="memdesc:gac4be55d9d370a31e064787675c518c58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the full path to an installed component. If the key path for the component is a registry key then the registry key is returned. <a href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58">More...</a><br /></td></tr>
<tr class="separator:gac4be55d9d370a31e064787675c518c58"><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 >Integrates WinStd classes with Microsoft Installer API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,302 +70,315 @@ $(function() {
<div class="headertitle"><div class="title">MSI.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_m_s_i_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;MsiQuery.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">static</span> UINT MsiGetPropertyA(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szName, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span>{</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> UINT uiResult;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> uiResult = ::MsiGetPropertyA(hInstall, szName, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> uiResult = ::MsiGetPropertyA(hInstall, szName, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="keyword">static</span> UINT MsiGetPropertyW(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szName, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>{</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> UINT uiResult;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> uiResult = ::MsiGetPropertyW(hInstall, szName, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> uiResult = ::MsiGetPropertyW(hInstall, szName, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>}</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="keyword">static</span> UINT MsiRecordGetStringA(_In_ MSIHANDLE hRecord, _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iField, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>{</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> UINT uiResult;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> uiResult = ::MsiRecordGetStringA(hRecord, iField, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> uiResult = ::MsiRecordGetStringA(hRecord, iField, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>}</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="keyword">static</span> UINT MsiRecordGetStringW(_In_ MSIHANDLE hRecord, _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iField, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>{</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> UINT uiResult;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> uiResult = ::MsiRecordGetStringW(hRecord, iField, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> uiResult = ::MsiRecordGetStringW(hRecord, iField, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span>}</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="keyword">static</span> UINT MsiFormatRecordA(_In_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span>{</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> UINT uiResult;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> uiResult = ::MsiFormatRecordA(hInstall, hRecord, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> uiResult = ::MsiFormatRecordA(hInstall, hRecord, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> }</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span>}</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="keyword">static</span> UINT MsiFormatRecordW(_In_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span>{</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> UINT uiResult;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> uiResult = ::MsiFormatRecordW(hInstall, hRecord, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> uiResult = ::MsiFormatRecordW(hInstall, hRecord, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> }</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span>}</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="keyword">static</span> UINT MsiRecordReadStream(_In_ MSIHANDLE hRecord, _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iField, _Inout_ std::vector&lt;_Ty, _Ax&gt; &amp;binData)</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span>{</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> DWORD dwSize = 0;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> UINT uiResult;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// Query the actual data length first.</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> uiResult = ::MsiRecordReadStream(hRecord, iField, NULL, &amp;dwSize);</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> binData.resize((dwSize + <span class="keyword">sizeof</span>(_Ty) - 1) / <span class="keyword">sizeof</span>(_Ty));</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> return ::MsiRecordReadStream(hRecord, iField, <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(binData.data()), &amp;dwSize);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> }</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span>}</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="keyword">static</span> UINT MsiGetTargetPathA(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szFolder, _Out_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span>{</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> </div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> UINT uiResult;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> uiResult = ::MsiGetTargetPathA(hInstall, szFolder, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> uiResult = ::MsiGetTargetPathA(hInstall, szFolder, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> }</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span>}</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="keyword">static</span> UINT MsiGetTargetPathW(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szFolder, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span>{</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> UINT uiResult;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> uiResult = ::MsiGetTargetPathW(hInstall, szFolder, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> uiResult = ::MsiGetTargetPathW(hInstall, szFolder, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> }</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span>}</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="keyword">static</span> INSTALLSTATE MsiGetComponentPathA(_In_z_ LPCSTR szProduct, _In_z_ LPCSTR szComponent, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span>{</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> INSTALLSTATE state;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> state = ::MsiGetComponentPathA(szProduct, szComponent, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keywordflow">if</span> (state &gt;= INSTALLSTATE_BROKEN) {</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (state == INSTALLSTATE_MOREDATA) {</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> state = ::MsiGetComponentPathA(szProduct, szComponent, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> sValue.assign(szBuffer.get(), state &gt;= INSTALLSTATE_BROKEN ? dwSize : 0);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> }</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span>}</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> </div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="keyword">static</span> INSTALLSTATE MsiGetComponentPathW(_In_z_ LPCWSTR szProduct, _In_z_ LPCWSTR szComponent, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span>{</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> INSTALLSTATE state;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> state = ::MsiGetComponentPathW(szProduct, szComponent, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keywordflow">if</span> (state &gt;= INSTALLSTATE_BROKEN) {</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (state == INSTALLSTATE_MOREDATA) {</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> state = ::MsiGetComponentPathW(szProduct, szComponent, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> sValue.assign(szBuffer.get(), state &gt;= INSTALLSTATE_BROKEN ? dwSize : 0);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> }</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span>}</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> </div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:79</div></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;MsiQuery.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385"> 25</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385">MsiGetPropertyA</a>(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szName, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span>{</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> UINT uiResult;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385">::MsiGetPropertyA</a>(hInstall, szName, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385">::MsiGetPropertyA</a>(hInstall, szName, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>}</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d"> 57</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d">MsiGetPropertyW</a>(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szName, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>{</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> UINT uiResult;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d">::MsiGetPropertyW</a>(hInstall, szName, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d">::MsiGetPropertyW</a>(hInstall, szName, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> }</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>}</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29"> 83</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29">MsiRecordGetStringA</a>(_In_ MSIHANDLE hRecord, _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iField, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span>{</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> UINT uiResult;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29">::MsiRecordGetStringA</a>(hRecord, iField, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29">::MsiRecordGetStringA</a>(hRecord, iField, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span>}</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6"> 115</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6">MsiRecordGetStringW</a>(_In_ MSIHANDLE hRecord, _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iField, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span>{</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> UINT uiResult;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6">::MsiRecordGetStringW</a>(hRecord, iField, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// Allocate buffer on heap to read the string data into and read it.</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6">::MsiRecordGetStringW</a>(hRecord, iField, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> }</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span>}</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c"> 141</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c">MsiFormatRecordA</a>(_In_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span>{</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> UINT uiResult;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c">::MsiFormatRecordA</a>(hInstall, hRecord, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c">::MsiFormatRecordA</a>(hInstall, hRecord, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> }</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>}</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2"> 173</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2">MsiFormatRecordW</a>(_In_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span>{</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> UINT uiResult;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2">::MsiFormatRecordW</a>(hInstall, hRecord, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2">::MsiFormatRecordW</a>(hInstall, hRecord, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> }</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span>}</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Ty, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036"> 203</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036">MsiRecordReadStream</a>(_In_ MSIHANDLE hRecord, _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iField, _Inout_ std::vector&lt;_Ty, _Ax&gt; &amp;binData)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>{</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> DWORD dwSize = 0;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> UINT uiResult;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// Query the actual data length first.</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036">::MsiRecordReadStream</a>(hRecord, iField, NULL, &amp;dwSize);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> binData.resize((dwSize + <span class="keyword">sizeof</span>(_Ty) - 1) / <span class="keyword">sizeof</span>(_Ty));</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036">return ::MsiRecordReadStream</a>(hRecord, iField, <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(binData.data()), &amp;dwSize);</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> }</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span>}</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc"> 223</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc">MsiGetTargetPathA</a>(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szFolder, _Out_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span>{</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> UINT uiResult;</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc">::MsiGetTargetPathA</a>(hInstall, szFolder, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc">::MsiGetTargetPathA</a>(hInstall, szFolder, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> }</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span>}</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca"> 255</a></span><span class="keyword">static</span> UINT <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca">MsiGetTargetPathW</a>(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szFolder, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span>{</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> UINT uiResult;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca">::MsiGetTargetPathW</a>(hInstall, szFolder, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">if</span> (uiResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uiResult == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> uiResult = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca">::MsiGetTargetPathW</a>(hInstall, szFolder, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">return</span> uiResult;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> }</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span>}</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3"> 281</a></span><span class="keyword">static</span> INSTALLSTATE <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3">MsiGetComponentPathA</a>(_In_z_ LPCSTR szProduct, _In_z_ LPCSTR szComponent, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span>{</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> INSTALLSTATE state;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> </div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> state = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3">::MsiGetComponentPathA</a>(szProduct, szComponent, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">if</span> (state &gt;= INSTALLSTATE_BROKEN) {</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (state == INSTALLSTATE_MOREDATA) {</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[++dwSize]);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> state = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3">::MsiGetComponentPathA</a>(szProduct, szComponent, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> sValue.assign(szBuffer.get(), state &gt;= INSTALLSTATE_BROKEN ? dwSize : 0);</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> }</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span>}</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58"> 311</a></span><span class="keyword">static</span> INSTALLSTATE <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58">MsiGetComponentPathW</a>(_In_z_ LPCWSTR szProduct, _In_z_ LPCWSTR szComponent, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue)</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span>{</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> DWORD dwSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> INSTALLSTATE state;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> state = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58">::MsiGetComponentPathW</a>(szProduct, szComponent, szStackBuffer, &amp;dwSize);</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordflow">if</span> (state &gt;= INSTALLSTATE_BROKEN) {</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> sValue.assign(szStackBuffer, dwSize);</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (state == INSTALLSTATE_MOREDATA) {</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="comment">// Allocate buffer on heap to format the string data into and read it.</span></div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[++dwSize]);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> state = <a class="code hl_function" href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58">::MsiGetComponentPathW</a>(szProduct, szComponent, szBuffer.get(), &amp;dwSize);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> sValue.assign(szBuffer.get(), state &gt;= INSTALLSTATE_BROKEN ? dwSize : 0);</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keywordflow">return</span> state;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> }</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span>}</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:101</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga016f87f038892fe3121a2dd5232468d2"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2">MsiFormatRecordW</a></div><div class="ttdeci">static UINT MsiFormatRecordW(MSIHANDLE hInstall, MSIHANDLE hRecord, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Formats record field data and properties using a format string and stores it in a std::wstring string...</div><div class="ttdef"><b>Definition:</b> MSI.h:173</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga32e20a17013eb7660fda19f2b1de389d"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d">MsiGetPropertyW</a></div><div class="ttdeci">static UINT MsiGetPropertyW(MSIHANDLE hInstall, LPCWSTR szName, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Gets the value for an installer property and stores it in a std::wstring string.</div><div class="ttdef"><b>Definition:</b> MSI.h:57</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga340ee7efbd658e2d6ecfb199c41856bc"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc">MsiGetTargetPathA</a></div><div class="ttdeci">static UINT MsiGetTargetPathA(MSIHANDLE hInstall, LPCSTR szFolder, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Returns the full target path for a folder in the Directory table and stores it in a std::wstring stri...</div><div class="ttdef"><b>Definition:</b> MSI.h:223</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga41c26288267e69f5bba73f9b125bf2a3"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3">MsiGetComponentPathA</a></div><div class="ttdeci">static INSTALLSTATE MsiGetComponentPathA(LPCSTR szProduct, LPCSTR szComponent, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Returns the full path to an installed component. If the key path for the component is a registry key ...</div><div class="ttdef"><b>Definition:</b> MSI.h:281</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga487c38b4353054a4e518ca01d1397cf6"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6">MsiRecordGetStringW</a></div><div class="ttdeci">static UINT MsiRecordGetStringW(MSIHANDLE hRecord, unsigned int iField, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Returns the string value of a record field and stores it in a std::wstring string.</div><div class="ttdef"><b>Definition:</b> MSI.h:115</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga51696a19fb4b748eed04fa3b6a8f9eca"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca">MsiGetTargetPathW</a></div><div class="ttdeci">static UINT MsiGetTargetPathW(MSIHANDLE hInstall, LPCWSTR szFolder, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Returns the full target path for a folder in the Directory table and stores it in a std::wstring stri...</div><div class="ttdef"><b>Definition:</b> MSI.h:255</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga7a5853cf74ed8adb1b5cd1289c39e385"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385">MsiGetPropertyA</a></div><div class="ttdeci">static UINT MsiGetPropertyA(MSIHANDLE hInstall, LPCSTR szName, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Gets the value for an installer property and stores it in a std::wstring string.</div><div class="ttdef"><b>Definition:</b> MSI.h:25</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga7cb245425b74bdf9b89c754636486f0c"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c">MsiFormatRecordA</a></div><div class="ttdeci">static UINT MsiFormatRecordA(MSIHANDLE hInstall, MSIHANDLE hRecord, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Formats record field data and properties using a format string and stores it in a std::wstring string...</div><div class="ttdef"><b>Definition:</b> MSI.h:141</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_ga83052d8dfbdf437cc45e6a4b46357036"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036">MsiRecordReadStream</a></div><div class="ttdeci">static UINT MsiRecordReadStream(MSIHANDLE hRecord, unsigned int iField, std::vector&lt; _Ty, _Ax &gt; &amp;binData)</div><div class="ttdoc">Reads bytes from a record stream field into a std::vector buffer.</div><div class="ttdef"><b>Definition:</b> MSI.h:203</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_gac4be55d9d370a31e064787675c518c58"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58">MsiGetComponentPathW</a></div><div class="ttdeci">static INSTALLSTATE MsiGetComponentPathW(LPCWSTR szProduct, LPCWSTR szComponent, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Returns the full path to an installed component. If the key path for the component is a registry key ...</div><div class="ttdef"><b>Definition:</b> MSI.h:311</div></div>
<div class="ttc" id="agroup___win_std_m_s_i_a_p_i_html_gaedc818f42d945e54f6956c928b3ffc29"><div class="ttname"><a href="group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29">MsiRecordGetStringA</a></div><div class="ttdeci">static UINT MsiRecordGetStringA(MSIHANDLE hRecord, unsigned int iField, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue)</div><div class="ttdoc">Returns the string value of a record field and stores it in a std::wstring string.</div><div class="ttdef"><b>Definition:</b> MSI.h:83</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

107
_sec_8h.html Normal file
View File

@ -0,0 +1,107 @@
<!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: include/WinStd/Sec.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">Sec.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Security API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;Security.h&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div>
<p><a href="_sec_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1sec__credentials.html">winstd::sec_credentials</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PCredHandle wrapper class. <a href="classwinstd_1_1sec__credentials.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1sec__context.html">winstd::sec_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PCtxtHandle wrapper class. <a href="classwinstd_1_1sec__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1sec__buffer__desc.html">winstd::sec_buffer_desc</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SecBufferDesc wrapper class. <a href="classwinstd_1_1sec__buffer__desc.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1sec__runtime__error.html">winstd::sec_runtime_error</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Security runtime error. <a href="classwinstd_1_1sec__runtime__error.html#details">More...</a><br /></td></tr>
<tr class="separator:"><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 >Integrates WinStd classes with Microsoft Security API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,305 +70,307 @@ $(function() {
<div class="headertitle"><div class="title">Sec.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_sec_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;Security.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;Security.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL)</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">static</span> BOOLEAN GetUserNameExA(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sName)</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span>{</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> ULONG ulSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL)</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keyword">static</span> BOOLEAN GetUserNameExA(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sName)</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span>{</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">if</span> (::GetUserNameExA(NameFormat, szStackBuffer, &amp;ulSize)) {</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> sName.assign(szStackBuffer, ulSize);</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">if</span> (::GetLastError() == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Allocate buffer on heap and retry.</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[ulSize]);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">if</span> (::GetUserNameExA(NameFormat, szBuffer.get(), &amp;ulSize)) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> sName.assign(szBuffer.get(), ulSize);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> }</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> }</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> }</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">char</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(char)];</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> ULONG ulSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">if</span> (::GetUserNameExA(NameFormat, szStackBuffer, &amp;ulSize)) {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> sName.assign(szStackBuffer, ulSize);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">if</span> (::GetLastError() == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Allocate buffer on heap and retry.</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> std::unique_ptr&lt;char[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">char</span>[ulSize]);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">if</span> (::GetUserNameExA(NameFormat, szBuffer.get(), &amp;ulSize)) {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> sName.assign(szBuffer.get(), ulSize);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="keyword">static</span> BOOLEAN GetUserNameExW(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sName)</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>{</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> ULONG ulSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>}</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="keyword">static</span> BOOLEAN GetUserNameExW(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sName)</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>{</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">if</span> (::GetUserNameExW(NameFormat, szStackBuffer, &amp;ulSize)) {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> sName.assign(szStackBuffer, ulSize);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">if</span> (::GetLastError() == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// Allocate buffer on heap and retry.</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[ulSize]);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (::GetUserNameExW(NameFormat, szBuffer.get(), &amp;ulSize)) {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> sName.assign(szBuffer.get(), ulSize);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> }</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>}</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">wchar_t</span> szStackBuffer[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>/<span class="keyword">sizeof</span>(wchar_t)];</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> ULONG ulSize = _countof(szStackBuffer);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// Try with stack buffer first.</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">if</span> (::GetUserNameExW(NameFormat, szStackBuffer, &amp;ulSize)) {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// Copy from stack.</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> sName.assign(szStackBuffer, ulSize);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (::GetLastError() == ERROR_MORE_DATA) {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// Allocate buffer on heap and retry.</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[ulSize]);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span> (::GetUserNameExW(NameFormat, szBuffer.get(), &amp;ulSize)) {</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> sName.assign(szBuffer.get(), ulSize);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> }</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> }</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>{</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html"> 93</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PCredHandle, NULL&gt;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a>)</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8"> 101</a></span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8">sec_credentials</a>()</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> {</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>.QuadPart = -1;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946"> 112</a></span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946">sec_credentials</a>(_In_opt_ <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h, _In_ <span class="keyword">const</span> TimeStamp expires) :</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>(expires),</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>(h)</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> {</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba"> 123</a></span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba">sec_credentials</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a> &amp;&amp;h) noexcept :</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>(std::move(h.m_expires)),</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;PCredHandle, NULL&gt;</a>(std::move(h))</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> {</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> }</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3"> 134</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3">~sec_credentials</a>()</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260">free_internal</a>();</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623"> 145</a></span> <a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a>&amp; <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623">operator=</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a> &amp;&amp;h) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">if</span> (<span class="keyword">this</span> != std::addressof(h)) {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> *(<a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>*)<span class="keyword">this</span> = std::move(h);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a> = std::move(h.m_expires);</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> }</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280"> 163</a></span> SECURITY_STATUS <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280">acquire</a>(</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> _In_opt_ LPTSTR pszPrincipal,</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> _In_ LPTSTR pszPackage,</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> fCredentialUse,</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> _In_opt_ <span class="keywordtype">void</span> *pvLogonId,</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> _In_opt_ <span class="keywordtype">void</span> *pAuthData,</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> _In_opt_ SEC_GET_KEY_FN pGetKeyFn = NULL,</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> _In_opt_ <span class="keywordtype">void</span> *pvGetKeyArgument = NULL)</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h = <span class="keyword">new</span> CredHandle;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> TimeStamp exp;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> SECURITY_STATUS res = AcquireCredentialsHandle(pszPrincipal, pszPackage, fCredentialUse, pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, h, &amp;exp);</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">if</span> (SUCCEEDED(res)) {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <a class="code hl_function" href="classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11">attach</a>(h);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a> = exp;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">delete</span> h;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> }</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260"> 189</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> FreeCredentialsHandle(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">delete</span> <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> }</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a"> 196</a></span> TimeStamp <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>; </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> };</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html"> 202</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PCtxtHandle, NULL&gt;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> {</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763"> 208</a></span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763">sec_context</a>() :</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a>(0),</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PCtxtHandle, NULL&gt;()</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> {</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>.QuadPart = -1;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> }</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e"> 220</a></span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e">sec_context</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a> &amp;&amp;h) noexcept :</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a> (std::move(h.m_attrib )),</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>(std::move(h.m_expires)),</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;PCtxtHandle, NULL&gt;</a>(std::move(h))</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> {</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> }</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9"> 232</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9">~sec_context</a>()</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> {</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9">free_internal</a>();</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> }</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> </div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52"> 243</a></span> <a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a>&amp; <a class="code hl_function" href="classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52">operator=</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a> &amp;&amp;h) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> {</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">if</span> (<span class="keyword">this</span> != std::addressof(h)) {</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> *(<a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>*)<span class="keyword">this</span> = std::move(h);</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a> = std::move(h.m_attrib);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a> = std::move(h.m_expires);</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> }</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> }</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21"> 262</a></span> SECURITY_STATUS <a class="code hl_function" href="classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21">initialize</a>(</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> _In_opt_ PCredHandle phCredential,</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> _In_opt_z_ LPCTSTR pszTargetName,</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> _In_ ULONG fContextReq,</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> _In_ ULONG TargetDataRep,</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> _In_opt_ PSecBufferDesc pInput,</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> _Inout_opt_ PSecBufferDesc pOutput)</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> {</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h = <span class="keyword">new</span> CtxtHandle;</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> h-&gt;dwUpper = 0;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> h-&gt;dwLower = 0;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> ULONG attr;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> TimeStamp exp;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, <span class="keyword">const_cast&lt;</span>LPTSTR<span class="keyword">&gt;</span>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &amp;attr, &amp;exp);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">if</span> (SUCCEEDED(res)) {</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <a class="code hl_function" href="classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11">attach</a>(h);</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a> = attr;</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a> = exp;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">delete</span> h;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> }</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54"> 294</a></span> SECURITY_STATUS <a class="code hl_function" href="classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54">process</a>(</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> _In_opt_ PCredHandle phCredential,</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> _In_opt_z_ LPCTSTR pszTargetName,</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> _In_ ULONG fContextReq,</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> _In_ ULONG TargetDataRep,</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> _In_opt_ PSecBufferDesc pInput,</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> _Inout_opt_ PSecBufferDesc pOutput)</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> {</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">return</span> InitializeSecurityContext(phCredential, <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>, <span class="keyword">const_cast&lt;</span>LPTSTR<span class="keyword">&gt;</span>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &amp;<a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a>, &amp;<a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>);</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> }</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9"> 311</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> DeleteSecurityContext(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="keyword">delete</span> <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>;</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> }</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f"> 318</a></span> ULONG <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a>; </div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304"> 319</a></span> TimeStamp <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>; </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> };</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__buffer__desc.html"> 325</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__buffer__desc.html">sec_buffer_desc</a> : <span class="keyword">public</span> SecBufferDesc</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> {</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5"> 331</a></span> <a class="code hl_function" href="classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5">sec_buffer_desc</a>(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version = SECBUFFER_VERSION)</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> {</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> ulVersion = version;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> cBuffers = count;</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> pBuffers = buf;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> }</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4"> 343</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4">~sec_buffer_desc</a>()</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> {</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="keywordflow">for</span> (ULONG i = 0; i &lt; cBuffers; i++) {</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keywordflow">if</span> (pBuffers[i].pvBuffer)</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> FreeContextBuffer(pBuffers[i].pvBuffer);</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> }</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> }</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> };</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>}</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>{</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html"> 96</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PCredHandle, NULL&gt;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a>)</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8"> 104</a></span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8">sec_credentials</a>()</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>.QuadPart = -1;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946"> 115</a></span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946">sec_credentials</a>(_In_opt_ <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h, _In_ <span class="keyword">const</span> TimeStamp expires) :</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>(expires),</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>(h)</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> {</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba"> 126</a></span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba">sec_credentials</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a> &amp;&amp;h) noexcept :</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>(std::move(h.m_expires)),</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;PCredHandle, NULL&gt;</a>(std::move(h))</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> {</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3"> 137</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3">~sec_credentials</a>()</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> {</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260">free_internal</a>();</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623"> 148</a></span> <a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a>&amp; <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623">operator=</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__credentials.html">sec_credentials</a> &amp;&amp;h) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">if</span> (<span class="keyword">this</span> != std::addressof(h)) {</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> *(<a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>*)<span class="keyword">this</span> = std::move(h);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a> = std::move(h.m_expires);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280"> 166</a></span> SECURITY_STATUS <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280">acquire</a>(</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> _In_opt_ LPTSTR pszPrincipal,</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> _In_ LPTSTR pszPackage,</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> _In_ <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> fCredentialUse,</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> _In_opt_ <span class="keywordtype">void</span> *pvLogonId,</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> _In_opt_ <span class="keywordtype">void</span> *pAuthData,</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> _In_opt_ SEC_GET_KEY_FN pGetKeyFn = NULL,</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> _In_opt_ <span class="keywordtype">void</span> *pvGetKeyArgument = NULL)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h = <span class="keyword">new</span> CredHandle;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> TimeStamp exp;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> SECURITY_STATUS res = AcquireCredentialsHandle(pszPrincipal, pszPackage, fCredentialUse, pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, h, &amp;exp);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">if</span> (SUCCEEDED(res)) {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <a class="code hl_function" href="classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11">attach</a>(h);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a> = exp;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">delete</span> h;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> }</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260"> 192</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> FreeCredentialsHandle(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">delete</span> <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> }</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a"> 199</a></span> TimeStamp <a class="code hl_variable" href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">m_expires</a>; </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> };</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html"> 205</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PCtxtHandle, NULL&gt;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> {</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763"> 211</a></span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763">sec_context</a>() :</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a>(0),</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PCtxtHandle, NULL&gt;()</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> {</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>.QuadPart = -1;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> }</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e"> 223</a></span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e">sec_context</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a> &amp;&amp;h) noexcept :</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a> (std::move(h.m_attrib )),</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>(std::move(h.m_expires)),</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;PCtxtHandle, NULL&gt;</a>(std::move(h))</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> {</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> }</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9"> 235</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9">~sec_context</a>()</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> {</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9">free_internal</a>();</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> }</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52"> 246</a></span> <a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a>&amp; <a class="code hl_function" href="classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52">operator=</a>(_Inout_ <a class="code hl_class" href="classwinstd_1_1sec__context.html">sec_context</a> &amp;&amp;h) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> {</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keywordflow">if</span> (<span class="keyword">this</span> != std::addressof(h)) {</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> *(<a class="code hl_class" href="classwinstd_1_1handle.html">handle&lt;handle_type, NULL&gt;</a>*)<span class="keyword">this</span> = std::move(h);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a> = std::move(h.m_attrib);</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a> = std::move(h.m_expires);</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> }</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> }</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21"> 265</a></span> SECURITY_STATUS <a class="code hl_function" href="classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21">initialize</a>(</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> _In_opt_ PCredHandle phCredential,</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> _In_opt_z_ LPCTSTR pszTargetName,</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> _In_ ULONG fContextReq,</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> _In_ ULONG TargetDataRep,</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> _In_opt_ PSecBufferDesc pInput,</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> _Inout_opt_ PSecBufferDesc pOutput)</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> {</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <a class="code hl_typedef" href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">handle_type</a> h = <span class="keyword">new</span> CtxtHandle;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> h-&gt;dwUpper = 0;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> h-&gt;dwLower = 0;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> ULONG attr;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> TimeStamp exp;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, <span class="keyword">const_cast&lt;</span>LPTSTR<span class="keyword">&gt;</span>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &amp;attr, &amp;exp);</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">if</span> (SUCCEEDED(res)) {</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <a class="code hl_function" href="classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11">attach</a>(h);</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a> = attr;</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a> = exp;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">delete</span> h;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> }</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54"> 297</a></span> SECURITY_STATUS <a class="code hl_function" href="classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54">process</a>(</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> _In_opt_ PCredHandle phCredential,</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> _In_opt_z_ LPCTSTR pszTargetName,</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> _In_ ULONG fContextReq,</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> _In_ ULONG TargetDataRep,</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> _In_opt_ PSecBufferDesc pInput,</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> _Inout_opt_ PSecBufferDesc pOutput)</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> {</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="keywordflow">return</span> InitializeSecurityContext(phCredential, <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>, <span class="keyword">const_cast&lt;</span>LPTSTR<span class="keyword">&gt;</span>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &amp;<a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a>, &amp;<a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>);</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> }</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> </div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9"> 314</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> DeleteSecurityContext(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keyword">delete</span> <a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> }</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f"> 321</a></span> ULONG <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">m_attrib</a>; </div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304"> 322</a></span> TimeStamp <a class="code hl_variable" href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">m_expires</a>; </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> };</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> </div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__buffer__desc.html"> 328</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__buffer__desc.html">sec_buffer_desc</a> : <span class="keyword">public</span> SecBufferDesc</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> {</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5"> 334</a></span> <a class="code hl_function" href="classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5">sec_buffer_desc</a>(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version = SECBUFFER_VERSION)</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> {</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> ulVersion = version;</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> cBuffers = count;</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> pBuffers = buf;</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> }</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> </div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4"> 346</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4">~sec_buffer_desc</a>()</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> {</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="keywordflow">for</span> (ULONG i = 0; i &lt; cBuffers; i++) {</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">if</span> (pBuffers[i].pvBuffer)</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> FreeContextBuffer(pBuffers[i].pvBuffer);</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> }</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> }</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> };</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> </div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html"> 362</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__runtime__error.html">sec_runtime_error</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> {</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b"> 371</a></span> <a class="code hl_function" href="classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b">sec_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_ <span class="keyword">const</span> std::string&amp; msg) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;(num, msg)</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> {</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> }</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> </div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4"> 381</a></span> <a class="code hl_function" href="classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4">sec_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_opt_z_ <span class="keyword">const</span> <span class="keywordtype">char</span> *msg = <span class="keyword">nullptr</span>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;(num, msg)</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> {</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> }</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> </div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce"> 390</a></span> <a class="code hl_function" href="classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce">sec_runtime_error</a>(<span class="keyword">const</span> <a class="code hl_class" href="classwinstd_1_1sec__runtime__error.html">sec_runtime_error</a> &amp;other) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;(other)</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> {</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> }</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> };</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span>}</div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:603</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_a3dda19199ecfbc378c932e7d84d0ea81"><div class="ttname"><a href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">winstd::handle&lt; PCredHandle, NULL &gt;::handle_type</a></div><div class="ttdeci">PCredHandle handle_type</div><div class="ttdoc">Datatype of the object handle this template class handles.</div><div class="ttdef"><b>Definition:</b> Common.h:608</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; PCredHandle, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:854</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_ab2a98042c3b88fda687e34d370756f11"><div class="ttname"><a href="classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11">winstd::handle&lt; PCredHandle, NULL &gt;::attach</a></div><div class="ttdeci">void attach(handle_type h) noexcept</div><div class="ttdoc">Sets a new object handle for the class.</div><div class="ttdef"><b>Definition:</b> Common.h:817</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html">winstd::num_runtime_error</a></div><div class="ttdoc">Numerical runtime error.</div><div class="ttdef"><b>Definition:</b> Common.h:1002</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html_a6fa2de87d0151b3ad9cac58f838852e0"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">winstd::num_runtime_error&lt; SECURITY_STATUS &gt;::error_type</a></div><div class="ttdeci">SECURITY_STATUS error_type</div><div class="ttdoc">Error number type.</div><div class="ttdef"><b>Definition:</b> Common.h:1004</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__buffer__desc_html"><div class="ttname"><a href="classwinstd_1_1sec__buffer__desc.html">winstd::sec_buffer_desc</a></div><div class="ttdoc">SecBufferDesc wrapper class.</div><div class="ttdef"><b>Definition:</b> Sec.h:326</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__buffer__desc_html_a70ebe23821ab3f90eb20e4a5e69c49c4"><div class="ttname"><a href="classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4">winstd::sec_buffer_desc::~sec_buffer_desc</a></div><div class="ttdeci">virtual ~sec_buffer_desc()</div><div class="ttdoc">Frees the security buffer descriptor.</div><div class="ttdef"><b>Definition:</b> Sec.h:343</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__buffer__desc_html_aed8a33ad87b31098a60facb3f656cea5"><div class="ttname"><a href="classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5">winstd::sec_buffer_desc::sec_buffer_desc</a></div><div class="ttdeci">sec_buffer_desc(PSecBuffer buf, ULONG count, ULONG version=SECBUFFER_VERSION)</div><div class="ttdoc">Initializes security buffer descriptor.</div><div class="ttdef"><b>Definition:</b> Sec.h:331</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html"><div class="ttname"><a href="classwinstd_1_1sec__context.html">winstd::sec_context</a></div><div class="ttdoc">PCtxtHandle wrapper class.</div><div class="ttdef"><b>Definition:</b> Sec.h:203</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a05356227fbaa04cf65cd8da86daac49e"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e">winstd::sec_context::sec_context</a></div><div class="ttdeci">sec_context(sec_context &amp;&amp;h) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition:</b> Sec.h:220</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a07d7c85d0db22a2b7ababdac632b3c54"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54">winstd::sec_context::process</a></div><div class="ttdeci">SECURITY_STATUS process(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)</div><div class="ttdoc">Continue security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:294</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a2307770cc707a4f8e815c3fea57ac8a9"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9">winstd::sec_context::~sec_context</a></div><div class="ttdeci">virtual ~sec_context()</div><div class="ttdoc">Frees the security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:232</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a5d41cc2cbe613fcc2bd37cc260de9763"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763">winstd::sec_context::sec_context</a></div><div class="ttdeci">sec_context()</div><div class="ttdoc">Initializes a new class instance with the object handle set to NULL.</div><div class="ttdef"><b>Definition:</b> Sec.h:208</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a7cc49346bd63d78928e65b11b21b6e21"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21">winstd::sec_context::initialize</a></div><div class="ttdeci">SECURITY_STATUS initialize(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)</div><div class="ttdoc">Initializes security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:262</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a8a211355b63585e9cc633639d801a13f"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">winstd::sec_context::m_attrib</a></div><div class="ttdeci">ULONG m_attrib</div><div class="ttdoc">Context attributes.</div><div class="ttdef"><b>Definition:</b> Sec.h:318</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a8ea323950689fbfa34e945825f013304"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">winstd::sec_context::m_expires</a></div><div class="ttdeci">TimeStamp m_expires</div><div class="ttdoc">Context expiration time.</div><div class="ttdef"><b>Definition:</b> Sec.h:319</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_aba957329771358ef9ca65c5e1176fc52"><div class="ttname"><a href="classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52">winstd::sec_context::operator=</a></div><div class="ttdeci">sec_context &amp; operator=(sec_context &amp;&amp;h) noexcept</div><div class="ttdoc">Move assignment.</div><div class="ttdef"><b>Definition:</b> Sec.h:243</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_afe8682a77fe50e5818ee6c4c741f36d9"><div class="ttname"><a href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9">winstd::sec_context::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees the security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:311</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html">winstd::sec_credentials</a></div><div class="ttdoc">PCredHandle wrapper class.</div><div class="ttdef"><b>Definition:</b> Sec.h:94</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_a4cc86fe337998e5becc41c3f78563df8"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8">winstd::sec_credentials::sec_credentials</a></div><div class="ttdeci">sec_credentials()</div><div class="ttdoc">Initializes a new class instance with the object handle set to NULL.</div><div class="ttdef"><b>Definition:</b> Sec.h:101</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_a6156649d1a93696c8369361cb426e260"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260">winstd::sec_credentials::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees the security credentials.</div><div class="ttdef"><b>Definition:</b> Sec.h:189</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_ab2b392dc45e270c5855245fe4c8d159a"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">winstd::sec_credentials::m_expires</a></div><div class="ttdeci">TimeStamp m_expires</div><div class="ttdoc">Credentials expiration time.</div><div class="ttdef"><b>Definition:</b> Sec.h:196</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_ac9ece1c98aebffa3efc90a0b37f6d2ba"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba">winstd::sec_credentials::sec_credentials</a></div><div class="ttdeci">sec_credentials(sec_credentials &amp;&amp;h) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition:</b> Sec.h:123</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_ad8b34c3a231201fd201e56a28235b9c3"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3">winstd::sec_credentials::~sec_credentials</a></div><div class="ttdeci">virtual ~sec_credentials()</div><div class="ttdoc">Frees the security credentials.</div><div class="ttdef"><b>Definition:</b> Sec.h:134</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_adac21d2b22fba61197ad315e8996f946"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946">winstd::sec_credentials::sec_credentials</a></div><div class="ttdeci">sec_credentials(handle_type h, const TimeStamp expires)</div><div class="ttdoc">Initializes a new class with an already available object handle.</div><div class="ttdef"><b>Definition:</b> Sec.h:112</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_af01c07130505e33fb2d4fbf5a8377280"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280">winstd::sec_credentials::acquire</a></div><div class="ttdeci">SECURITY_STATUS acquire(LPTSTR pszPrincipal, LPTSTR pszPackage, unsigned long fCredentialUse, void *pvLogonId, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn=NULL, void *pvGetKeyArgument=NULL)</div><div class="ttdoc">Acquires the security credentials.</div><div class="ttdef"><b>Definition:</b> Sec.h:163</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_af0c3ec1f8e1b060cd4dd99b4d34d4623"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623">winstd::sec_credentials::operator=</a></div><div class="ttdeci">sec_credentials &amp; operator=(sec_credentials &amp;&amp;h) noexcept</div><div class="ttdoc">Move assignment.</div><div class="ttdef"><b>Definition:</b> Sec.h:145</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html">winstd::sec_runtime_error</a></div><div class="ttdoc">Security runtime error.</div><div class="ttdef"><b>Definition:</b> Sec.h:363</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html_aa1d671d5c996a8217de62a816f39a5d4"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4">winstd::sec_runtime_error::sec_runtime_error</a></div><div class="ttdeci">sec_runtime_error(error_type num, const char *msg=nullptr)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> Sec.h:381</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html_ac9f3ac01e422ce43aebb8e5eae9290ce"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce">winstd::sec_runtime_error::sec_runtime_error</a></div><div class="ttdeci">sec_runtime_error(const sec_runtime_error &amp;other)</div><div class="ttdoc">Copies an exception.</div><div class="ttdef"><b>Definition:</b> Sec.h:390</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html_afc95fcf773b18fc72aaacf4ec025471b"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b">winstd::sec_runtime_error::sec_runtime_error</a></div><div class="ttdeci">sec_runtime_error(error_type num, const std::string &amp;msg)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> Sec.h:371</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:52</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:79</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; PCredHandle, NULL &gt;::invalid</a></div><div class="ttdeci">static const PCredHandle invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:613</div></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> </div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html"> 365</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1sec__runtime__error.html">sec_runtime_error</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> {</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b"> 374</a></span> <a class="code hl_function" href="classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b">sec_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_ <span class="keyword">const</span> std::string&amp; msg) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;(num, msg)</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> {</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> }</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4"> 384</a></span> <a class="code hl_function" href="classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4">sec_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_opt_z_ <span class="keyword">const</span> <span class="keywordtype">char</span> *msg = <span class="keyword">nullptr</span>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;(num, msg)</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> {</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> }</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce"> 393</a></span> <a class="code hl_function" href="classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce">sec_runtime_error</a>(<span class="keyword">const</span> <a class="code hl_class" href="classwinstd_1_1sec__runtime__error.html">sec_runtime_error</a> &amp;other) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;SECURITY_STATUS&gt;(other)</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> {</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> }</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> };</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span>}</div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:615</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_a3dda19199ecfbc378c932e7d84d0ea81"><div class="ttname"><a href="classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81">winstd::handle&lt; PCredHandle, NULL &gt;::handle_type</a></div><div class="ttdeci">PCredHandle handle_type</div><div class="ttdoc">Datatype of the object handle this template class handles.</div><div class="ttdef"><b>Definition:</b> Common.h:620</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; PCredHandle, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:866</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_ab2a98042c3b88fda687e34d370756f11"><div class="ttname"><a href="classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11">winstd::handle&lt; PCredHandle, NULL &gt;::attach</a></div><div class="ttdeci">void attach(handle_type h) noexcept</div><div class="ttdoc">Sets a new object handle for the class.</div><div class="ttdef"><b>Definition:</b> Common.h:829</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html">winstd::num_runtime_error</a></div><div class="ttdoc">Numerical runtime error.</div><div class="ttdef"><b>Definition:</b> Common.h:1011</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html_a6fa2de87d0151b3ad9cac58f838852e0"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">winstd::num_runtime_error&lt; SECURITY_STATUS &gt;::error_type</a></div><div class="ttdeci">SECURITY_STATUS error_type</div><div class="ttdoc">Error number type.</div><div class="ttdef"><b>Definition:</b> Common.h:1013</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__buffer__desc_html"><div class="ttname"><a href="classwinstd_1_1sec__buffer__desc.html">winstd::sec_buffer_desc</a></div><div class="ttdoc">SecBufferDesc wrapper class.</div><div class="ttdef"><b>Definition:</b> Sec.h:329</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__buffer__desc_html_a70ebe23821ab3f90eb20e4a5e69c49c4"><div class="ttname"><a href="classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4">winstd::sec_buffer_desc::~sec_buffer_desc</a></div><div class="ttdeci">virtual ~sec_buffer_desc()</div><div class="ttdoc">Frees the security buffer descriptor.</div><div class="ttdef"><b>Definition:</b> Sec.h:346</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__buffer__desc_html_aed8a33ad87b31098a60facb3f656cea5"><div class="ttname"><a href="classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5">winstd::sec_buffer_desc::sec_buffer_desc</a></div><div class="ttdeci">sec_buffer_desc(PSecBuffer buf, ULONG count, ULONG version=SECBUFFER_VERSION)</div><div class="ttdoc">Initializes security buffer descriptor.</div><div class="ttdef"><b>Definition:</b> Sec.h:334</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html"><div class="ttname"><a href="classwinstd_1_1sec__context.html">winstd::sec_context</a></div><div class="ttdoc">PCtxtHandle wrapper class.</div><div class="ttdef"><b>Definition:</b> Sec.h:206</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a05356227fbaa04cf65cd8da86daac49e"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e">winstd::sec_context::sec_context</a></div><div class="ttdeci">sec_context(sec_context &amp;&amp;h) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition:</b> Sec.h:223</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a07d7c85d0db22a2b7ababdac632b3c54"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54">winstd::sec_context::process</a></div><div class="ttdeci">SECURITY_STATUS process(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)</div><div class="ttdoc">Continue security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:297</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a2307770cc707a4f8e815c3fea57ac8a9"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9">winstd::sec_context::~sec_context</a></div><div class="ttdeci">virtual ~sec_context()</div><div class="ttdoc">Frees the security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:235</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a5d41cc2cbe613fcc2bd37cc260de9763"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763">winstd::sec_context::sec_context</a></div><div class="ttdeci">sec_context()</div><div class="ttdoc">Initializes a new class instance with the object handle set to NULL.</div><div class="ttdef"><b>Definition:</b> Sec.h:211</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a7cc49346bd63d78928e65b11b21b6e21"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21">winstd::sec_context::initialize</a></div><div class="ttdeci">SECURITY_STATUS initialize(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)</div><div class="ttdoc">Initializes security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:265</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a8a211355b63585e9cc633639d801a13f"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f">winstd::sec_context::m_attrib</a></div><div class="ttdeci">ULONG m_attrib</div><div class="ttdoc">Context attributes.</div><div class="ttdef"><b>Definition:</b> Sec.h:321</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_a8ea323950689fbfa34e945825f013304"><div class="ttname"><a href="classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304">winstd::sec_context::m_expires</a></div><div class="ttdeci">TimeStamp m_expires</div><div class="ttdoc">Context expiration time.</div><div class="ttdef"><b>Definition:</b> Sec.h:322</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_aba957329771358ef9ca65c5e1176fc52"><div class="ttname"><a href="classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52">winstd::sec_context::operator=</a></div><div class="ttdeci">sec_context &amp; operator=(sec_context &amp;&amp;h) noexcept</div><div class="ttdoc">Move assignment.</div><div class="ttdef"><b>Definition:</b> Sec.h:246</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__context_html_afe8682a77fe50e5818ee6c4c741f36d9"><div class="ttname"><a href="classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9">winstd::sec_context::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees the security context.</div><div class="ttdef"><b>Definition:</b> Sec.h:314</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html">winstd::sec_credentials</a></div><div class="ttdoc">PCredHandle wrapper class.</div><div class="ttdef"><b>Definition:</b> Sec.h:97</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_a4cc86fe337998e5becc41c3f78563df8"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8">winstd::sec_credentials::sec_credentials</a></div><div class="ttdeci">sec_credentials()</div><div class="ttdoc">Initializes a new class instance with the object handle set to NULL.</div><div class="ttdef"><b>Definition:</b> Sec.h:104</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_a6156649d1a93696c8369361cb426e260"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260">winstd::sec_credentials::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees the security credentials.</div><div class="ttdef"><b>Definition:</b> Sec.h:192</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_ab2b392dc45e270c5855245fe4c8d159a"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a">winstd::sec_credentials::m_expires</a></div><div class="ttdeci">TimeStamp m_expires</div><div class="ttdoc">Credentials expiration time.</div><div class="ttdef"><b>Definition:</b> Sec.h:199</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_ac9ece1c98aebffa3efc90a0b37f6d2ba"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba">winstd::sec_credentials::sec_credentials</a></div><div class="ttdeci">sec_credentials(sec_credentials &amp;&amp;h) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition:</b> Sec.h:126</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_ad8b34c3a231201fd201e56a28235b9c3"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3">winstd::sec_credentials::~sec_credentials</a></div><div class="ttdeci">virtual ~sec_credentials()</div><div class="ttdoc">Frees the security credentials.</div><div class="ttdef"><b>Definition:</b> Sec.h:137</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_adac21d2b22fba61197ad315e8996f946"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946">winstd::sec_credentials::sec_credentials</a></div><div class="ttdeci">sec_credentials(handle_type h, const TimeStamp expires)</div><div class="ttdoc">Initializes a new class with an already available object handle.</div><div class="ttdef"><b>Definition:</b> Sec.h:115</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_af01c07130505e33fb2d4fbf5a8377280"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280">winstd::sec_credentials::acquire</a></div><div class="ttdeci">SECURITY_STATUS acquire(LPTSTR pszPrincipal, LPTSTR pszPackage, unsigned long fCredentialUse, void *pvLogonId, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn=NULL, void *pvGetKeyArgument=NULL)</div><div class="ttdoc">Acquires the security credentials.</div><div class="ttdef"><b>Definition:</b> Sec.h:166</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__credentials_html_af0c3ec1f8e1b060cd4dd99b4d34d4623"><div class="ttname"><a href="classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623">winstd::sec_credentials::operator=</a></div><div class="ttdeci">sec_credentials &amp; operator=(sec_credentials &amp;&amp;h) noexcept</div><div class="ttdoc">Move assignment.</div><div class="ttdef"><b>Definition:</b> Sec.h:148</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html">winstd::sec_runtime_error</a></div><div class="ttdoc">Security runtime error.</div><div class="ttdef"><b>Definition:</b> Sec.h:366</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html_aa1d671d5c996a8217de62a816f39a5d4"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4">winstd::sec_runtime_error::sec_runtime_error</a></div><div class="ttdeci">sec_runtime_error(error_type num, const char *msg=nullptr)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> Sec.h:384</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html_ac9f3ac01e422ce43aebb8e5eae9290ce"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce">winstd::sec_runtime_error::sec_runtime_error</a></div><div class="ttdeci">sec_runtime_error(const sec_runtime_error &amp;other)</div><div class="ttdoc">Copies an exception.</div><div class="ttdef"><b>Definition:</b> Sec.h:393</div></div>
<div class="ttc" id="aclasswinstd_1_1sec__runtime__error_html_afc95fcf773b18fc72aaacf4ec025471b"><div class="ttname"><a href="classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b">winstd::sec_runtime_error::sec_runtime_error</a></div><div class="ttdeci">sec_runtime_error(error_type num, const std::string &amp;msg)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> Sec.h:374</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:74</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:101</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; PCredHandle, NULL &gt;::invalid</a></div><div class="ttdeci">static const PCredHandle invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:625</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

100
_setup_a_p_i_8h.html Normal file
View File

@ -0,0 +1,100 @@
<!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: include/WinStd/SetupAPI.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">SetupAPI.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Setup API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;<a class="el" href="_setup_a_p_i_8h_source.html">SetupAPI.h</a>&gt;</code><br />
</div>
<p><a href="_setup_a_p_i_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1setup__device__info__list.html">winstd::setup_device_info_list</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HDEVINFO wrapper class. <a href="classwinstd_1_1setup__device__info__list.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1setup__driver__info__list__builder.html">winstd::setup_driver_info_list_builder</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds a list of drivers in constructor and deletes it in destructor. <a href="classwinstd_1_1setup__driver__info__list__builder.html#details">More...</a><br /></td></tr>
<tr class="separator:"><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 >Integrates WinStd classes with Microsoft Setup API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,91 +70,94 @@ $(function() {
<div class="headertitle"><div class="title">SetupAPI.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_setup_a_p_i_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;SetupAPI.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span>{</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__device__info__list.html"> 26</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1setup__device__info__list.html">setup_device_info_list</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HDEVINFO, INVALID_HANDLE_VALUE&gt;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> {</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1setup__device__info__list.html">setup_device_info_list</a>, INVALID_HANDLE_VALUE)</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487"> 36</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487">~setup_device_info_list</a>()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_function" href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437">free_internal</a>();</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437"> 48</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> SetupDiDestroyDeviceInfoList(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> }</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> };</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html"> 57</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1setup__driver__info__list__builder.html">setup_driver_info_list_builder</a></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1setup__driver__info__list__builder.html">setup_driver_info_list_builder</a>)</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_define" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(<a class="code hl_class" href="classwinstd_1_1setup__driver__info__list__builder.html">setup_driver_info_list_builder</a>)</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f"> 68</a></span> <a class="code hl_function" href="classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f">setup_driver_info_list_builder</a>(</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> _In_ HDEVINFO DeviceInfoSet,</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData,</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> _In_ DWORD DriverType) noexcept :</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> m_DeviceInfoSet (DeviceInfoSet),</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> m_DeviceInfoData(DeviceInfoData),</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> m_DriverType (DriverType)</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> {</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> m_result = SetupDiBuildDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e"> 84</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e">~setup_driver_info_list_builder</a>()</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span> (m_result)</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> SetupDiDestroyDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e"> 95</a></span> BOOL <a class="code hl_function" href="classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e">status</a>() const noexcept</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> m_result;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> HDEVINFO m_DeviceInfoSet;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> PSP_DEVINFO_DATA m_DeviceInfoData;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> DWORD m_DriverType;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> BOOL m_result;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> };</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span>}</div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:603</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; HDEVINFO, INVALID_HANDLE_VALUE &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:854</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__device__info__list_html"><div class="ttname"><a href="classwinstd_1_1setup__device__info__list.html">winstd::setup_device_info_list</a></div><div class="ttdoc">HDEVINFO wrapper class.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:27</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__device__info__list_html_a25368d32a4f4bfe23cb9749464daa487"><div class="ttname"><a href="classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487">winstd::setup_device_info_list::~setup_device_info_list</a></div><div class="ttdeci">virtual ~setup_device_info_list()</div><div class="ttdoc">Frees the device information set.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:36</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__device__info__list_html_a41f013a37e16074f1972fd279f8c1437"><div class="ttname"><a href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437">winstd::setup_device_info_list::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees the device information set.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:48</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html">winstd::setup_driver_info_list_builder</a></div><div class="ttdoc">Builds a list of drivers in constructor and deletes it in destructor.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:58</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html_a4774edfbe680a3a496e243544a68c94f"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f">winstd::setup_driver_info_list_builder::setup_driver_info_list_builder</a></div><div class="ttdeci">setup_driver_info_list_builder(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD DriverType) noexcept</div><div class="ttdoc">Construct the builder and builds a list of drivers that is associated with a specific device or with ...</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:68</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html_a836a7bb6c3c78c7c78965a32cfc2750e"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e">winstd::setup_driver_info_list_builder::~setup_driver_info_list_builder</a></div><div class="ttdeci">virtual ~setup_driver_info_list_builder()</div><div class="ttdoc">Deletes a driver list and destructs the builder.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:84</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html_ae9c062e82afc1ee1eda5926a0567637e"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e">winstd::setup_driver_info_list_builder::status</a></div><div class="ttdeci">BOOL status() const noexcept</div><div class="ttdoc">Return result of SetupDiBuildDriverInfoList() call.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:95</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:52</div></div>
<div class="ttc" id="agroup___win_std_general_html_gac91fa8d79c860b1fdbba65b6a322f760"><div class="ttname"><a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a></div><div class="ttdeci">#define WINSTD_NONMOVABLE(C)</div><div class="ttdoc">Declares a class as non-movable.</div><div class="ttdef"><b>Definition:</b> Common.h:60</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:161</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; HDEVINFO, INVALID_HANDLE_VALUE &gt;::invalid</a></div><div class="ttdeci">static const HDEVINFO invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:613</div></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;<a class="code" href="_setup_a_p_i_8h.html">SetupAPI.h</a>&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>{</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__device__info__list.html"> 29</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1setup__device__info__list.html">setup_device_info_list</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HDEVINFO, INVALID_HANDLE_VALUE&gt;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> {</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1setup__device__info__list.html">setup_device_info_list</a>, INVALID_HANDLE_VALUE)</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487"> 39</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487">~setup_device_info_list</a>()</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <a class="code hl_function" href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437">free_internal</a>();</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> }</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437"> 51</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> SetupDiDestroyDeviceInfoList(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> }</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> };</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html"> 60</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1setup__driver__info__list__builder.html">setup_driver_info_list_builder</a></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1setup__driver__info__list__builder.html">setup_driver_info_list_builder</a>)</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_define" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(<a class="code hl_class" href="classwinstd_1_1setup__driver__info__list__builder.html">setup_driver_info_list_builder</a>)</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f"> 71</a></span> <a class="code hl_function" href="classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f">setup_driver_info_list_builder</a>(</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> _In_ HDEVINFO DeviceInfoSet,</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData,</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> _In_ DWORD DriverType) noexcept :</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> m_DeviceInfoSet (DeviceInfoSet),</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> m_DeviceInfoData(DeviceInfoData),</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> m_DriverType (DriverType)</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> {</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> m_result = SetupDiBuildDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> }</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e"> 87</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e">~setup_driver_info_list_builder</a>()</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">if</span> (m_result)</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> SetupDiDestroyDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e"> 98</a></span> BOOL <a class="code hl_function" href="classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e">status</a>() const noexcept</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> m_result;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> HDEVINFO m_DeviceInfoSet;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> PSP_DEVINFO_DATA m_DeviceInfoData;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> DWORD m_DriverType;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> BOOL m_result;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> };</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span>}</div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="a_setup_a_p_i_8h_html"><div class="ttname"><a href="_setup_a_p_i_8h.html">SetupAPI.h</a></div><div class="ttdoc">Integrates WinStd classes with Microsoft Setup API.</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:615</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; HDEVINFO, INVALID_HANDLE_VALUE &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:866</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__device__info__list_html"><div class="ttname"><a href="classwinstd_1_1setup__device__info__list.html">winstd::setup_device_info_list</a></div><div class="ttdoc">HDEVINFO wrapper class.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:30</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__device__info__list_html_a25368d32a4f4bfe23cb9749464daa487"><div class="ttname"><a href="classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487">winstd::setup_device_info_list::~setup_device_info_list</a></div><div class="ttdeci">virtual ~setup_device_info_list()</div><div class="ttdoc">Frees the device information set.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:39</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__device__info__list_html_a41f013a37e16074f1972fd279f8c1437"><div class="ttname"><a href="classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437">winstd::setup_device_info_list::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees the device information set.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:51</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html">winstd::setup_driver_info_list_builder</a></div><div class="ttdoc">Builds a list of drivers in constructor and deletes it in destructor.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:61</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html_a4774edfbe680a3a496e243544a68c94f"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f">winstd::setup_driver_info_list_builder::setup_driver_info_list_builder</a></div><div class="ttdeci">setup_driver_info_list_builder(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD DriverType) noexcept</div><div class="ttdoc">Construct the builder and builds a list of drivers that is associated with a specific device or with ...</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:71</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html_a836a7bb6c3c78c7c78965a32cfc2750e"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e">winstd::setup_driver_info_list_builder::~setup_driver_info_list_builder</a></div><div class="ttdeci">virtual ~setup_driver_info_list_builder()</div><div class="ttdoc">Deletes a driver list and destructs the builder.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:87</div></div>
<div class="ttc" id="aclasswinstd_1_1setup__driver__info__list__builder_html_ae9c062e82afc1ee1eda5926a0567637e"><div class="ttname"><a href="classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e">winstd::setup_driver_info_list_builder::status</a></div><div class="ttdeci">BOOL status() const noexcept</div><div class="ttdoc">Return result of SetupDiBuildDriverInfoList() call.</div><div class="ttdef"><b>Definition:</b> SetupAPI.h:98</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:74</div></div>
<div class="ttc" id="agroup___win_std_general_html_gac91fa8d79c860b1fdbba65b6a322f760"><div class="ttname"><a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a></div><div class="ttdeci">#define WINSTD_NONMOVABLE(C)</div><div class="ttdoc">Declares a class as non-movable.</div><div class="ttdef"><b>Definition:</b> Common.h:82</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:171</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; HDEVINFO, INVALID_HANDLE_VALUE &gt;::invalid</a></div><div class="ttdeci">static const HDEVINFO invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:625</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

103
_shell_8h.html Normal file
View File

@ -0,0 +1,103 @@
<!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: include/WinStd/Shell.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Shell.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Shell API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;Shlwapi.h&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div>
<p><a href="_shell_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gabc79615c035f76d08ddced61807b6676"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gabc79615c035f76d08ddced61807b6676"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_shell_w_a_p_i.html#gabc79615c035f76d08ddced61807b6676">PathCanonicalizeA</a> (std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue, LPCSTR pszPath)</td></tr>
<tr class="memdesc:gabc79615c035f76d08ddced61807b6676"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simplifies a path by removing navigation elements such as "." and ".." to produce a direct, well-formed path, and stores it in a std::wstring string. <a href="group___win_std_shell_w_a_p_i.html#gabc79615c035f76d08ddced61807b6676">More...</a><br /></td></tr>
<tr class="separator:gabc79615c035f76d08ddced61807b6676"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2bb4436e8e3b7452b48d01cbb18bc818"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga2bb4436e8e3b7452b48d01cbb18bc818"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_shell_w_a_p_i.html#ga2bb4436e8e3b7452b48d01cbb18bc818">PathCanonicalizeW</a> (std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue, LPCWSTR pszPath)</td></tr>
<tr class="memdesc:ga2bb4436e8e3b7452b48d01cbb18bc818"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simplifies a path by removing navigation elements such as "." and ".." to produce a direct, well-formed path, and stores it in a std::wstring string. <a href="group___win_std_shell_w_a_p_i.html#ga2bb4436e8e3b7452b48d01cbb18bc818">More...</a><br /></td></tr>
<tr class="separator:ga2bb4436e8e3b7452b48d01cbb18bc818"><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 >Integrates WinStd classes with Microsoft Shell API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,46 +70,50 @@ $(function() {
<div class="headertitle"><div class="title">Shell.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_shell_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;Shlwapi.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;Shlwapi.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">static</span> BOOL PathCanonicalizeA(_Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue, _In_ LPCSTR pszPath)</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>{</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// Allocate buffer on heap and read into it.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keywordtype">char</span> szBuffer[MAX_PATH + 1];</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> BOOL bResult = ::PathCanonicalizeA(szBuffer, pszPath);</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> sValue.assign(szBuffer, bResult ? MAX_PATH : 0);</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">return</span> bResult;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span>}</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">static</span> BOOL PathCanonicalizeW(_Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue, _In_ LPCWSTR pszPath)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>{</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">wchar_t</span> szBuffer[MAX_PATH + 1];</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> BOOL bResult = ::PathCanonicalizeW(szBuffer, pszPath);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> sValue.assign(szBuffer, bResult ? MAX_PATH : 0);</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">return</span> bResult;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>}</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="group___win_std_shell_w_a_p_i.html#gabc79615c035f76d08ddced61807b6676"> 24</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_shell_w_a_p_i.html#gabc79615c035f76d08ddced61807b6676">PathCanonicalizeA</a>(_Inout_ std::basic_string&lt;char, _Traits, _Ax&gt; &amp;sValue, _In_ LPCSTR pszPath)</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>{</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Allocate buffer on heap and read into it.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordtype">char</span> szBuffer[MAX_PATH + 1];</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> BOOL bResult = <a class="code hl_function" href="group___win_std_shell_w_a_p_i.html#gabc79615c035f76d08ddced61807b6676">::PathCanonicalizeA</a>(szBuffer, pszPath);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> sValue.assign(szBuffer, bResult ? MAX_PATH : 0);</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">return</span> bResult;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>}</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="group___win_std_shell_w_a_p_i.html#ga2bb4436e8e3b7452b48d01cbb18bc818"> 41</a></span><span class="keyword">static</span> BOOL <a class="code hl_function" href="group___win_std_shell_w_a_p_i.html#ga2bb4436e8e3b7452b48d01cbb18bc818">PathCanonicalizeW</a>(_Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue, _In_ LPCWSTR pszPath)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>{</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> assert(0); <span class="comment">// TODO: Test this code.</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">wchar_t</span> szBuffer[MAX_PATH + 1];</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> BOOL bResult = <a class="code hl_function" href="group___win_std_shell_w_a_p_i.html#ga2bb4436e8e3b7452b48d01cbb18bc818">::PathCanonicalizeW</a>(szBuffer, pszPath);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> sValue.assign(szBuffer, bResult ? MAX_PATH : 0);</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span> bResult;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>}</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="agroup___win_std_shell_w_a_p_i_html_ga2bb4436e8e3b7452b48d01cbb18bc818"><div class="ttname"><a href="group___win_std_shell_w_a_p_i.html#ga2bb4436e8e3b7452b48d01cbb18bc818">PathCanonicalizeW</a></div><div class="ttdeci">static BOOL PathCanonicalizeW(std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue, LPCWSTR pszPath)</div><div class="ttdoc">Simplifies a path by removing navigation elements such as &quot;.&quot; and &quot;..&quot; to produce a direct,...</div><div class="ttdef"><b>Definition:</b> Shell.h:41</div></div>
<div class="ttc" id="agroup___win_std_shell_w_a_p_i_html_gabc79615c035f76d08ddced61807b6676"><div class="ttname"><a href="group___win_std_shell_w_a_p_i.html#gabc79615c035f76d08ddced61807b6676">PathCanonicalizeA</a></div><div class="ttdeci">static BOOL PathCanonicalizeA(std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue, LPCSTR pszPath)</div><div class="ttdoc">Simplifies a path by removing navigation elements such as &quot;.&quot; and &quot;..&quot; to produce a direct,...</div><div class="ttdef"><b>Definition:</b> Shell.h:24</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

115
_w_l_a_n_8h.html Normal file
View File

@ -0,0 +1,115 @@
<!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: include/WinStd/WLAN.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">WLAN.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft WLAN API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;wlanapi.h&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div>
<p><a href="_w_l_a_n_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_wlan_free_memory__delete.html">winstd::WlanFreeMemory_delete&lt; _Ty &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using WlanFreeMemory. <a href="structwinstd_1_1_wlan_free_memory__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr to array of unknown size using WlanFreeMemory. <a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1wlan__handle.html">winstd::wlan_handle</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">WLAN handle wrapper. <a href="classwinstd_1_1wlan__handle.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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaf621eeb252e56982bc063a629bee30c7"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gaf621eeb252e56982bc063a629bee30c7"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7">WlanReasonCodeToString</a> (DWORD dwReasonCode, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue, __reserved PVOID pReserved)</td></tr>
<tr class="memdesc:gaf621eeb252e56982bc063a629bee30c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a string that describes a specified reason code and stores it in a std::wstring string. <a href="group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7">More...</a><br /></td></tr>
<tr class="separator:gaf621eeb252e56982bc063a629bee30c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d1669a80ed12f13ffa780048076c586"><td class="memItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586">WlanOpenHandle</a> (DWORD dwClientVersion, PVOID pReserved, PDWORD pdwNegotiatedVersion, <a class="el" href="classwinstd_1_1wlan__handle.html">winstd::wlan_handle</a> &amp;handle)</td></tr>
<tr class="memdesc:ga2d1669a80ed12f13ffa780048076c586"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opens a connection to the server. <a href="group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586">More...</a><br /></td></tr>
<tr class="separator:ga2d1669a80ed12f13ffa780048076c586"><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 >Integrates WinStd classes with Microsoft WLAN API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,143 +70,147 @@ $(function() {
<div class="headertitle"><div class="title">WLAN.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_w_l_a_n_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;wlanapi.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">// Must not statically link to Wlanapi.dll as it is not available on Windows</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// without a WLAN interface.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="keyword">extern</span> DWORD (WINAPI *pfnWlanReasonCodeToString)(__in DWORD dwReasonCode, __in DWORD dwBufferSize, __in_ecount(dwBufferSize) PWCHAR pStringBuffer, __reserved PVOID pReserved);</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">static</span> DWORD WlanReasonCodeToString(_In_ DWORD dwReasonCode, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue, __reserved PVOID pReserved)</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>{</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> DWORD dwSize = 0;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">if</span> (!::pfnWlanReasonCodeToString)</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">return</span> ERROR_CALL_NOT_IMPLEMENTED;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Increment size and allocate buffer.</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> dwSize += 1024;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[dwSize]);</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;wlanapi.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// Must not statically link to Wlanapi.dll as it is not available on Windows</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// without a WLAN interface.</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">extern</span> DWORD (WINAPI *pfnWlanReasonCodeToString)(__in DWORD dwReasonCode, __in DWORD dwBufferSize, __in_ecount(dwBufferSize) PWCHAR pStringBuffer, __reserved PVOID pReserved);</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">template</span>&lt;<span class="keyword">class</span> _Traits, <span class="keyword">class</span> _Ax&gt;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7"> 38</a></span><span class="keyword">static</span> DWORD <a class="code hl_function" href="group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7">WlanReasonCodeToString</a>(_In_ DWORD dwReasonCode, _Inout_ std::basic_string&lt;wchar_t, _Traits, _Ax&gt; &amp;sValue, __reserved PVOID pReserved)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>{</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> DWORD dwSize = 0;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">if</span> (!::pfnWlanReasonCodeToString)</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordflow">return</span> ERROR_CALL_NOT_IMPLEMENTED;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// Try!</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> DWORD dwResult = ::pfnWlanReasonCodeToString(dwReasonCode, dwSize, szBuffer.get(), pReserved);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">if</span> (dwResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> DWORD dwLength = (DWORD)wcsnlen(szBuffer.get(), dwSize);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">if</span> (dwLength &lt; dwSize - 1) {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Buffer was long enough.</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> sValue.assign(szBuffer.get(), dwLength);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> }</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> dwResult;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> }</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">for</span> (;;) {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Increment size and allocate buffer.</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> dwSize += 1024;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> std::unique_ptr&lt;wchar_t[]&gt; szBuffer(<span class="keyword">new</span> <span class="keywordtype">wchar_t</span>[dwSize]);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Try!</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> DWORD dwResult = ::pfnWlanReasonCodeToString(dwReasonCode, dwSize, szBuffer.get(), pReserved);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> (dwResult == ERROR_SUCCESS) {</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> DWORD dwLength = (DWORD)wcsnlen(szBuffer.get(), dwSize);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">if</span> (dwLength &lt; dwSize - 1) {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// Buffer was long enough.</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> sValue.assign(szBuffer.get(), dwLength);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> ERROR_SUCCESS;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> }</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>}</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>{</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// Return error code.</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> dwResult;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> }</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>}</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html"> 71</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete</a></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> {</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668"> 73</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668">_Myt</a>; </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e"> 78</a></span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e">WlanFreeMemory_delete</a>() {}</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>{</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html"> 76</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete</a></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668"> 78</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668">_Myt</a>; </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546"> 83</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty2&gt; <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546">WlanFreeMemory_delete</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete&lt;_Ty2&gt;</a>&amp;) {}</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e"> 83</a></span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e">WlanFreeMemory_delete</a>() {}</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b"> 88</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b">operator()</a>(_Ty *_Ptr)<span class="keyword"> const</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> WlanFreeMemory(_Ptr);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> };</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html"> 97</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete</a>&lt;_Ty[]&gt;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837"> 99</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837">_Myt</a>; </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf"> 104</a></span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf">WlanFreeMemory_delete</a>() {}</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546"> 88</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty2&gt; <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546">WlanFreeMemory_delete</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete&lt;_Ty2&gt;</a>&amp;) {}</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b"> 93</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b">operator()</a>(_Ty *_Ptr)<span class="keyword"> const</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> WlanFreeMemory(_Ptr);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> };</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html"> 102</a></span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Ty&gt; <span class="keyword">struct </span><a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete</a>&lt;_Ty[]&gt;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837"> 104</a></span> <span class="keyword">typedef</span> <a class="code hl_struct" href="structwinstd_1_1_wlan_free_memory__delete.html">WlanFreeMemory_delete&lt;_Ty&gt;</a> <a class="code hl_typedef" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837">_Myt</a>; </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4"> 109</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4">operator()</a>(_Ty *_Ptr)<span class="keyword"> const</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> WlanFreeMemory(_Ptr);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> }</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Other&gt;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b"> 118</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b">operator()</a>(_Other *)<span class="keyword"> const</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> WlanFreeMemory(_Ptr);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> };</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="classwinstd_1_1wlan__handle.html"> 129</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1wlan__handle.html">wlan_handle</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HANDLE, NULL&gt;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1wlan__handle.html">wlan_handle</a>, NULL)</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"><a class="line" href="classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9"> 139</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9">~wlan_handle</a>()</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <a class="code hl_function" href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261">free_internal</a>();</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> }</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261"> 151</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> WlanCloseHandle(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>, NULL);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> }</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> };</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span>}</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="preprocessor">#pragma warning(suppress: 4505) </span><span class="comment">// Don&#39;t warn on unused code</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="keyword">static</span> DWORD WlanOpenHandle(</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> _In_ DWORD dwClientVersion,</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> _Reserved_ PVOID pReserved,</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> _Out_ PDWORD pdwNegotiatedVersion,</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> _Inout_ <a class="code hl_class" href="classwinstd_1_1wlan__handle.html">winstd::wlan_handle</a> &amp;handle)</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span>{</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> HANDLE h;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> DWORD dwResult = WlanOpenHandle(dwClientVersion, pReserved, pdwNegotiatedVersion, &amp;h);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">if</span> (dwResult == ERROR_SUCCESS)</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> handle.attach(h);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">return</span> dwResult;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span>}</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:603</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; HANDLE, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:854</div></div>
<div class="ttc" id="aclasswinstd_1_1wlan__handle_html"><div class="ttname"><a href="classwinstd_1_1wlan__handle.html">winstd::wlan_handle</a></div><div class="ttdoc">WLAN handle wrapper.</div><div class="ttdef"><b>Definition:</b> WLAN.h:130</div></div>
<div class="ttc" id="aclasswinstd_1_1wlan__handle_html_a57e97a572a121f6e28673e6d84493de9"><div class="ttname"><a href="classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9">winstd::wlan_handle::~wlan_handle</a></div><div class="ttdeci">virtual ~wlan_handle()</div><div class="ttdoc">Closes a connection to the server.</div><div class="ttdef"><b>Definition:</b> WLAN.h:139</div></div>
<div class="ttc" id="aclasswinstd_1_1wlan__handle_html_a86e2b4aa2a5177b6ebac0258099f9261"><div class="ttname"><a href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261">winstd::wlan_handle::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Closes a connection to the server.</div><div class="ttdef"><b>Definition:</b> WLAN.h:151</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:161</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; HANDLE, NULL &gt;::invalid</a></div><div class="ttdeci">static const HANDLE invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:613</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a39d42f9429ac337513cd2cad1b5c8fdf"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::WlanFreeMemory_delete</a></div><div class="ttdeci">WlanFreeMemory_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> WLAN.h:104</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a3b0a5a8db35677a63c3583a45658df1b"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Other *) const</div><div class="ttdoc">Delete a pointer of another type.</div><div class="ttdef"><b>Definition:</b> WLAN.h:118</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a42bc91dcaea20ff32034ba5482027837"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::_Myt</a></div><div class="ttdeci">WlanFreeMemory_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> WLAN.h:99</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a60d22784612a4cfd16ca8ad6629a77e4"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> WLAN.h:109</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html">winstd::WlanFreeMemory_delete</a></div><div class="ttdoc">Deleter for unique_ptr using WlanFreeMemory.</div><div class="ttdef"><b>Definition:</b> WLAN.h:72</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_a3e356b7c4a09f33100e3e35a71d1d94e"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e">winstd::WlanFreeMemory_delete::WlanFreeMemory_delete</a></div><div class="ttdeci">WlanFreeMemory_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> WLAN.h:78</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_a5013eb2213d92798d755cbb9fa24e26b"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b">winstd::WlanFreeMemory_delete::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> WLAN.h:88</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_a92dd05a3becb4a67ad858472eb615668"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668">winstd::WlanFreeMemory_delete::_Myt</a></div><div class="ttdeci">WlanFreeMemory_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> WLAN.h:73</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_ab30e2946800931f214e9a55a527fe546"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546">winstd::WlanFreeMemory_delete::WlanFreeMemory_delete</a></div><div class="ttdeci">WlanFreeMemory_delete(const WlanFreeMemory_delete&lt; _Ty2 &gt; &amp;)</div><div class="ttdoc">Construct from another WlanFreeMemory_delete.</div><div class="ttdef"><b>Definition:</b> WLAN.h:83</div></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf"> 109</a></span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf">WlanFreeMemory_delete</a>() {}</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4"> 114</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4">operator()</a>(_Ty *_Ptr)<span class="keyword"> const</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> WlanFreeMemory(_Ptr);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> }</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keyword">template</span>&lt;<span class="keyword">class</span> _Other&gt;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b"> 123</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b">operator()</a>(_Other *)<span class="keyword"> const</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> WlanFreeMemory(_Ptr);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> }</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> };</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classwinstd_1_1wlan__handle.html"> 134</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1wlan__handle.html">wlan_handle</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;HANDLE, NULL&gt;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1wlan__handle.html">wlan_handle</a>, NULL)</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"><a class="line" href="classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9"> 144</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9">~wlan_handle</a>()</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_function" href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261">free_internal</a>();</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> }</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261"> 156</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> WlanCloseHandle(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>, NULL);</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> }</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> };</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span>}</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="preprocessor">#pragma warning(suppress: 4505) </span><span class="comment">// Don&#39;t warn on unused code</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586"> 174</a></span><span class="keyword">static</span> DWORD <a class="code hl_function" href="group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586">WlanOpenHandle</a>(</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> _In_ DWORD dwClientVersion,</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> _Reserved_ PVOID pReserved,</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> _Out_ PDWORD pdwNegotiatedVersion,</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> _Inout_ <a class="code hl_class" href="classwinstd_1_1wlan__handle.html">winstd::wlan_handle</a> &amp;handle)</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span>{</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> HANDLE h;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> DWORD dwResult = <a class="code hl_function" href="group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586">WlanOpenHandle</a>(dwClientVersion, pReserved, pdwNegotiatedVersion, &amp;h);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">if</span> (dwResult == ERROR_SUCCESS)</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> handle.attach(h);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">return</span> dwResult;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>}</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:615</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; HANDLE, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:866</div></div>
<div class="ttc" id="aclasswinstd_1_1wlan__handle_html"><div class="ttname"><a href="classwinstd_1_1wlan__handle.html">winstd::wlan_handle</a></div><div class="ttdoc">WLAN handle wrapper.</div><div class="ttdef"><b>Definition:</b> WLAN.h:135</div></div>
<div class="ttc" id="aclasswinstd_1_1wlan__handle_html_a57e97a572a121f6e28673e6d84493de9"><div class="ttname"><a href="classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9">winstd::wlan_handle::~wlan_handle</a></div><div class="ttdeci">virtual ~wlan_handle()</div><div class="ttdoc">Closes a connection to the server.</div><div class="ttdef"><b>Definition:</b> WLAN.h:144</div></div>
<div class="ttc" id="aclasswinstd_1_1wlan__handle_html_a86e2b4aa2a5177b6ebac0258099f9261"><div class="ttname"><a href="classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261">winstd::wlan_handle::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Closes a connection to the server.</div><div class="ttdef"><b>Definition:</b> WLAN.h:156</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:171</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; HANDLE, NULL &gt;::invalid</a></div><div class="ttdeci">static const HANDLE invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:625</div></div>
<div class="ttc" id="agroup___win_std_w_l_a_n_a_p_i_html_ga2d1669a80ed12f13ffa780048076c586"><div class="ttname"><a href="group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586">WlanOpenHandle</a></div><div class="ttdeci">static DWORD WlanOpenHandle(DWORD dwClientVersion, PVOID pReserved, PDWORD pdwNegotiatedVersion, winstd::wlan_handle &amp;handle)</div><div class="ttdoc">Opens a connection to the server.</div><div class="ttdef"><b>Definition:</b> WLAN.h:174</div></div>
<div class="ttc" id="agroup___win_std_w_l_a_n_a_p_i_html_gaf621eeb252e56982bc063a629bee30c7"><div class="ttname"><a href="group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7">WlanReasonCodeToString</a></div><div class="ttdeci">static DWORD WlanReasonCodeToString(DWORD dwReasonCode, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue, __reserved PVOID pReserved)</div><div class="ttdoc">Retrieves a string that describes a specified reason code and stores it in a std::wstring string.</div><div class="ttdef"><b>Definition:</b> WLAN.h:38</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a39d42f9429ac337513cd2cad1b5c8fdf"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::WlanFreeMemory_delete</a></div><div class="ttdeci">WlanFreeMemory_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> WLAN.h:109</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a3b0a5a8db35677a63c3583a45658df1b"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Other *) const</div><div class="ttdoc">Delete a pointer of another type.</div><div class="ttdef"><b>Definition:</b> WLAN.h:123</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a42bc91dcaea20ff32034ba5482027837"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::_Myt</a></div><div class="ttdeci">WlanFreeMemory_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> WLAN.h:104</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4_html_a60d22784612a4cfd16ca8ad6629a77e4"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4">winstd::WlanFreeMemory_delete&lt; _Ty[]&gt;::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> WLAN.h:114</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html">winstd::WlanFreeMemory_delete</a></div><div class="ttdoc">Deleter for unique_ptr using WlanFreeMemory.</div><div class="ttdef"><b>Definition:</b> WLAN.h:77</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_a3e356b7c4a09f33100e3e35a71d1d94e"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e">winstd::WlanFreeMemory_delete::WlanFreeMemory_delete</a></div><div class="ttdeci">WlanFreeMemory_delete()</div><div class="ttdoc">Default construct.</div><div class="ttdef"><b>Definition:</b> WLAN.h:83</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_a5013eb2213d92798d755cbb9fa24e26b"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b">winstd::WlanFreeMemory_delete::operator()</a></div><div class="ttdeci">void operator()(_Ty *_Ptr) const</div><div class="ttdoc">Delete a pointer.</div><div class="ttdef"><b>Definition:</b> WLAN.h:93</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_a92dd05a3becb4a67ad858472eb615668"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668">winstd::WlanFreeMemory_delete::_Myt</a></div><div class="ttdeci">WlanFreeMemory_delete&lt; _Ty &gt; _Myt</div><div class="ttdoc">This type.</div><div class="ttdef"><b>Definition:</b> WLAN.h:78</div></div>
<div class="ttc" id="astructwinstd_1_1_wlan_free_memory__delete_html_ab30e2946800931f214e9a55a527fe546"><div class="ttname"><a href="structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546">winstd::WlanFreeMemory_delete::WlanFreeMemory_delete</a></div><div class="ttdeci">WlanFreeMemory_delete(const WlanFreeMemory_delete&lt; _Ty2 &gt; &amp;)</div><div class="ttdoc">Construct from another WlanFreeMemory_delete.</div><div class="ttdef"><b>Definition:</b> WLAN.h:88</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

368
_win_8h.html Normal file
View File

@ -0,0 +1,368 @@
<!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: include/WinStd/Win.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Win.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Windows API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="_win_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1win__handle.html">winstd::win_handle&lt; INVALID &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Windows HANDLE wrapper class. <a href="classwinstd_1_1win__handle.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1library.html">winstd::library</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Module handle wrapper. <a href="classwinstd_1_1library.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_unmap_view_of_file__delete.html">winstd::UnmapViewOfFile_delete&lt; _Ty &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr using UnmapViewOfFile. <a href="structwinstd_1_1_unmap_view_of_file__delete.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html">winstd::UnmapViewOfFile_delete&lt; _Ty[]&gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deleter for unique_ptr to array of unknown size using UnmapViewOfFile. <a href="structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1critical__section.html">winstd::critical_section</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Critical section wrapper. <a href="classwinstd_1_1critical__section.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1find__file.html">winstd::find_file</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find-file handle wrapper. <a href="classwinstd_1_1find__file.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1heap.html">winstd::heap</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Heap handle wrapper. <a href="classwinstd_1_1heap.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1heap__allocator.html">winstd::heap_allocator&lt; _Ty &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HeapAlloc allocator. <a href="classwinstd_1_1heap__allocator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwinstd_1_1heap__allocator_1_1rebind.html">winstd::heap_allocator&lt; _Ty &gt;::rebind&lt; _Other &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A structure that enables an allocator for objects of one type to allocate storage for objects of another type. <a href="structwinstd_1_1heap__allocator_1_1rebind.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1actctx__activator.html">winstd::actctx_activator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activates given activation context in constructor and deactivates it in destructor. <a href="classwinstd_1_1actctx__activator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1user__impersonator.html">winstd::user_impersonator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lets the calling thread impersonate the security context of a logged-on user. <a href="classwinstd_1_1user__impersonator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1console__ctrl__handler.html">winstd::console_ctrl_handler</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Console control handler stack management. <a href="classwinstd_1_1console__ctrl__handler.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1vmemory.html">winstd::vmemory</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory in virtual address space of a process handle wrapper. <a href="classwinstd_1_1vmemory.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1reg__key.html">winstd::reg_key</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registry key wrapper class. <a href="classwinstd_1_1reg__key.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1security__id.html">winstd::security_id</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SID wrapper class. <a href="classwinstd_1_1security__id.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1process__information.html">winstd::process_information</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PROCESS_INFORMATION struct wrapper. <a href="classwinstd_1_1process__information.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1event__log.html">winstd::event_log</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event log handle wrapper. <a href="classwinstd_1_1event__log.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 id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gad08dfb2a0d1254918a2a4ed45061a50d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gad08dfb2a0d1254918a2a4ed45061a50d">GuidToString</a>&#160;&#160;&#160;<a class="el" href="group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313">GuidToStringA</a></td></tr>
<tr class="memdesc:gad08dfb2a0d1254918a2a4ed45061a50d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats GUID and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#gad08dfb2a0d1254918a2a4ed45061a50d">More...</a><br /></td></tr>
<tr class="separator:gad08dfb2a0d1254918a2a4ed45061a50d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab9c35127ac48f8d941a5354b1a1b7abe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gab9c35127ac48f8d941a5354b1a1b7abe">StringToGuid</a>&#160;&#160;&#160;<a class="el" href="group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c">StringToGuidA</a></td></tr>
<tr class="memdesc:gab9c35127ac48f8d941a5354b1a1b7abe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses string with GUID and stores it to GUID. <a href="group___win_std_win_a_p_i.html#gab9c35127ac48f8d941a5354b1a1b7abe">More...</a><br /></td></tr>
<tr class="separator:gab9c35127ac48f8d941a5354b1a1b7abe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gac5db2a322de45a52343ca98bbec302df"><td class="memItemLeft" align="right" valign="top">typedef win_handle&lt; NULL &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gac5db2a322de45a52343ca98bbec302df">winstd::process</a></td></tr>
<tr class="memdesc:gac5db2a322de45a52343ca98bbec302df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process handle wrapper. <a href="group___win_std_win_a_p_i.html#gac5db2a322de45a52343ca98bbec302df">More...</a><br /></td></tr>
<tr class="separator:gac5db2a322de45a52343ca98bbec302df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff5d7416024ba7489a7631c310e15aab"><td class="memItemLeft" align="right" valign="top">typedef win_handle&lt; NULL &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gaff5d7416024ba7489a7631c310e15aab">winstd::thread</a></td></tr>
<tr class="memdesc:gaff5d7416024ba7489a7631c310e15aab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread handle wrapper. <a href="group___win_std_win_a_p_i.html#gaff5d7416024ba7489a7631c310e15aab">More...</a><br /></td></tr>
<tr class="separator:gaff5d7416024ba7489a7631c310e15aab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga59cd7dece6bf5649013f07c929547e80"><td class="memItemLeft" align="right" valign="top">typedef win_handle&lt; INVALID_HANDLE_VALUE &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga59cd7dece6bf5649013f07c929547e80">winstd::process_snapshot</a></td></tr>
<tr class="memdesc:ga59cd7dece6bf5649013f07c929547e80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process snapshot handle wrapper. <a href="group___win_std_win_a_p_i.html#ga59cd7dece6bf5649013f07c929547e80">More...</a><br /></td></tr>
<tr class="separator:ga59cd7dece6bf5649013f07c929547e80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1778bfb00ccb4f2d86f3bb6d660c1c9b"><td class="memItemLeft" align="right" valign="top">typedef win_handle&lt; INVALID_HANDLE_VALUE &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga1778bfb00ccb4f2d86f3bb6d660c1c9b">winstd::file</a></td></tr>
<tr class="memdesc:ga1778bfb00ccb4f2d86f3bb6d660c1c9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">File handle wrapper. <a href="group___win_std_win_a_p_i.html#ga1778bfb00ccb4f2d86f3bb6d660c1c9b">More...</a><br /></td></tr>
<tr class="separator:ga1778bfb00ccb4f2d86f3bb6d660c1c9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaff19b3c25870c8fb66c2d43833875f0"><td class="memItemLeft" align="right" valign="top">typedef win_handle&lt; NULL &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gaaff19b3c25870c8fb66c2d43833875f0">winstd::file_mapping</a></td></tr>
<tr class="memdesc:gaaff19b3c25870c8fb66c2d43833875f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">File mapping. <a href="group___win_std_win_a_p_i.html#gaaff19b3c25870c8fb66c2d43833875f0">More...</a><br /></td></tr>
<tr class="separator:gaaff19b3c25870c8fb66c2d43833875f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8aad78395ff021f46a34e51816038d20"><td class="memItemLeft" align="right" valign="top">typedef win_handle&lt; NULL &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga8aad78395ff021f46a34e51816038d20">winstd::event</a></td></tr>
<tr class="memdesc:ga8aad78395ff021f46a34e51816038d20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event handle wrapper. <a href="group___win_std_win_a_p_i.html#ga8aad78395ff021f46a34e51816038d20">More...</a><br /></td></tr>
<tr class="separator:ga8aad78395ff021f46a34e51816038d20"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6934cae7e0b3133206b8324e4372e1cc"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga6934cae7e0b3133206b8324e4372e1cc"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga6934cae7e0b3133206b8324e4372e1cc">GetModuleFileNameA</a> (HMODULE hModule, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:ga6934cae7e0b3133206b8324e4372e1cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the fully qualified path for the file that contains the specified module and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga6934cae7e0b3133206b8324e4372e1cc">More...</a><br /></td></tr>
<tr class="separator:ga6934cae7e0b3133206b8324e4372e1cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga51dfe8b12845850282f4d120e51e80fa"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga51dfe8b12845850282f4d120e51e80fa"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga51dfe8b12845850282f4d120e51e80fa">GetModuleFileNameW</a> (HMODULE hModule, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:ga51dfe8b12845850282f4d120e51e80fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the fully qualified path for the file that contains the specified module and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga51dfe8b12845850282f4d120e51e80fa">More...</a><br /></td></tr>
<tr class="separator:ga51dfe8b12845850282f4d120e51e80fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga11fd1f3e9a51e636f6e0f060e604c1aa"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga11fd1f3e9a51e636f6e0f060e604c1aa"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga11fd1f3e9a51e636f6e0f060e604c1aa">GetWindowTextA</a> (HWND hWnd, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:ga11fd1f3e9a51e636f6e0f060e604c1aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies the text of the specified window's title bar (if it has one) into a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga11fd1f3e9a51e636f6e0f060e604c1aa">More...</a><br /></td></tr>
<tr class="separator:ga11fd1f3e9a51e636f6e0f060e604c1aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacab04e9e5cbbc759fe83cf70fb891acc"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gacab04e9e5cbbc759fe83cf70fb891acc"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gacab04e9e5cbbc759fe83cf70fb891acc">GetWindowTextW</a> (HWND hWnd, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:gacab04e9e5cbbc759fe83cf70fb891acc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies the text of the specified window's title bar (if it has one) into a std::wstring string. <a href="group___win_std_win_a_p_i.html#gacab04e9e5cbbc759fe83cf70fb891acc">More...</a><br /></td></tr>
<tr class="separator:gacab04e9e5cbbc759fe83cf70fb891acc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga195210dac36b34baa0e616c86bb2b147"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga195210dac36b34baa0e616c86bb2b147"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga195210dac36b34baa0e616c86bb2b147">GetFileVersionInfoA</a> (LPCSTR lptstrFilename, __reserved DWORD dwHandle, std::vector&lt; _Ty, _Ax &gt; &amp;aValue) noexcept</td></tr>
<tr class="memdesc:ga195210dac36b34baa0e616c86bb2b147"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves version information for the specified file and stores it in a std::vector buffer. <a href="group___win_std_win_a_p_i.html#ga195210dac36b34baa0e616c86bb2b147">More...</a><br /></td></tr>
<tr class="separator:ga195210dac36b34baa0e616c86bb2b147"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7dbb645a5381e6e7bba37429d3de2d51"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga7dbb645a5381e6e7bba37429d3de2d51"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga7dbb645a5381e6e7bba37429d3de2d51">GetFileVersionInfoW</a> (LPCWSTR lptstrFilename, __reserved DWORD dwHandle, std::vector&lt; _Ty, _Ax &gt; &amp;aValue) noexcept</td></tr>
<tr class="memdesc:ga7dbb645a5381e6e7bba37429d3de2d51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves version information for the specified file and stores it in a std::vector buffer. <a href="group___win_std_win_a_p_i.html#ga7dbb645a5381e6e7bba37429d3de2d51">More...</a><br /></td></tr>
<tr class="separator:ga7dbb645a5381e6e7bba37429d3de2d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga07fbe3c3b5aceaf3442a26fc3b6ce4b0"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga07fbe3c3b5aceaf3442a26fc3b6ce4b0"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga07fbe3c3b5aceaf3442a26fc3b6ce4b0">ExpandEnvironmentStringsA</a> (LPCSTR lpSrc, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:ga07fbe3c3b5aceaf3442a26fc3b6ce4b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands environment-variable strings, replaces them with the values defined for the current user, and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga07fbe3c3b5aceaf3442a26fc3b6ce4b0">More...</a><br /></td></tr>
<tr class="separator:ga07fbe3c3b5aceaf3442a26fc3b6ce4b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2e379fa7f86f101bff21d2c10b7d430"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gad2e379fa7f86f101bff21d2c10b7d430"><td class="memTemplItemLeft" align="right" valign="top">static DWORD&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gad2e379fa7f86f101bff21d2c10b7d430">ExpandEnvironmentStringsW</a> (LPCWSTR lpSrc, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:gad2e379fa7f86f101bff21d2c10b7d430"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands environment-variable strings, replaces them with the values defined for the current user, and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#gad2e379fa7f86f101bff21d2c10b7d430">More...</a><br /></td></tr>
<tr class="separator:gad2e379fa7f86f101bff21d2c10b7d430"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2ec9f457e182c451486333fa0a994313"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga2ec9f457e182c451486333fa0a994313"><td class="memTemplItemLeft" align="right" valign="top">static VOID&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313">GuidToStringA</a> (LPCGUID lpGuid, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;str) noexcept</td></tr>
<tr class="memdesc:ga2ec9f457e182c451486333fa0a994313"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats GUID and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313">More...</a><br /></td></tr>
<tr class="separator:ga2ec9f457e182c451486333fa0a994313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad8dcada3be8a9e8c0d2f0db263c2a5e3"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gad8dcada3be8a9e8c0d2f0db263c2a5e3"><td class="memTemplItemLeft" align="right" valign="top">static VOID&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gad8dcada3be8a9e8c0d2f0db263c2a5e3">GuidToStringW</a> (LPCGUID lpGuid, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;str) noexcept</td></tr>
<tr class="memdesc:gad8dcada3be8a9e8c0d2f0db263c2a5e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats GUID and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#gad8dcada3be8a9e8c0d2f0db263c2a5e3">More...</a><br /></td></tr>
<tr class="separator:gad8dcada3be8a9e8c0d2f0db263c2a5e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0a3545c7b4d6509b77a9a156e882f32c"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c">StringToGuidA</a> (LPCSTR lpszGuid, LPGUID lpGuid, LPCSTR *lpszGuidEnd=NULL) noexcept</td></tr>
<tr class="memdesc:ga0a3545c7b4d6509b77a9a156e882f32c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses string with GUID and stores it to GUID. <a href="group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c">More...</a><br /></td></tr>
<tr class="separator:ga0a3545c7b4d6509b77a9a156e882f32c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3411488c7daa5c8e03b2ad34764914aa"><td class="memItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa">StringToGuidW</a> (LPCWSTR lpszGuid, LPGUID lpGuid, LPCWSTR *lpszGuidEnd=NULL) noexcept</td></tr>
<tr class="memdesc:ga3411488c7daa5c8e03b2ad34764914aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses string with GUID and stores it to GUID. <a href="group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa">More...</a><br /></td></tr>
<tr class="separator:ga3411488c7daa5c8e03b2ad34764914aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac91030c0badd322d3c64663ceab77b7a"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gac91030c0badd322d3c64663ceab77b7a"><td class="memTemplItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gac91030c0badd322d3c64663ceab77b7a">RegQueryStringValue</a> (HKEY hReg, LPCSTR pszName, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:gac91030c0badd322d3c64663ceab77b7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Queries for a string value in the registry and stores it in a std::string string. <a href="group___win_std_win_a_p_i.html#gac91030c0badd322d3c64663ceab77b7a">More...</a><br /></td></tr>
<tr class="separator:gac91030c0badd322d3c64663ceab77b7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef0a2e894cd51e0003498958008ef825"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gaef0a2e894cd51e0003498958008ef825"><td class="memTemplItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gaef0a2e894cd51e0003498958008ef825">RegQueryStringValue</a> (HKEY hReg, LPCWSTR pszName, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sValue) noexcept</td></tr>
<tr class="memdesc:gaef0a2e894cd51e0003498958008ef825"><td class="mdescLeft">&#160;</td><td class="mdescRight">Queries for a string value in the registry and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#gaef0a2e894cd51e0003498958008ef825">More...</a><br /></td></tr>
<tr class="separator:gaef0a2e894cd51e0003498958008ef825"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac75dca7a4e87365ca7021edd82509584"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:gac75dca7a4e87365ca7021edd82509584"><td class="memTemplItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gac75dca7a4e87365ca7021edd82509584">RegQueryValueExA</a> (HKEY hKey, LPCSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector&lt; _Ty, _Ax &gt; &amp;aData) noexcept</td></tr>
<tr class="memdesc:gac75dca7a4e87365ca7021edd82509584"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the type and data for the specified value name associated with an open registry key and stores the data in a std::vector buffer. <a href="group___win_std_win_a_p_i.html#gac75dca7a4e87365ca7021edd82509584">More...</a><br /></td></tr>
<tr class="separator:gac75dca7a4e87365ca7021edd82509584"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78f02613f20cc234aad4e1b4726db9ea"><td class="memTemplParams" colspan="2">template&lt;class _Ty , class _Ax &gt; </td></tr>
<tr class="memitem:ga78f02613f20cc234aad4e1b4726db9ea"><td class="memTemplItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga78f02613f20cc234aad4e1b4726db9ea">RegQueryValueExW</a> (HKEY hKey, LPCWSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector&lt; _Ty, _Ax &gt; &amp;aData) noexcept</td></tr>
<tr class="memdesc:ga78f02613f20cc234aad4e1b4726db9ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the type and data for the specified value name associated with an open registry key and stores the data in a std::vector buffer. <a href="group___win_std_win_a_p_i.html#ga78f02613f20cc234aad4e1b4726db9ea">More...</a><br /></td></tr>
<tr class="separator:ga78f02613f20cc234aad4e1b4726db9ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8baffb9a05cbfe1e198c47e0a1e2cf88"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga8baffb9a05cbfe1e198c47e0a1e2cf88"><td class="memTemplItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga8baffb9a05cbfe1e198c47e0a1e2cf88">RegLoadMUIStringA</a> (HKEY hKey, LPCSTR pszValue, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sOut, DWORD Flags, LPCSTR pszDirectory) noexcept</td></tr>
<tr class="memdesc:ga8baffb9a05cbfe1e198c47e0a1e2cf88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads the specified string from the specified key and subkey, and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga8baffb9a05cbfe1e198c47e0a1e2cf88">More...</a><br /></td></tr>
<tr class="separator:ga8baffb9a05cbfe1e198c47e0a1e2cf88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3f9a3593107d5333f057570a76e04a57"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga3f9a3593107d5333f057570a76e04a57"><td class="memTemplItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga3f9a3593107d5333f057570a76e04a57">RegLoadMUIStringW</a> (HKEY hKey, LPCWSTR pszValue, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sOut, DWORD Flags, LPCWSTR pszDirectory) noexcept</td></tr>
<tr class="memdesc:ga3f9a3593107d5333f057570a76e04a57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads the specified string from the specified key and subkey, and stores it in a std::wstring string. <a href="group___win_std_win_a_p_i.html#ga3f9a3593107d5333f057570a76e04a57">More...</a><br /></td></tr>
<tr class="separator:ga3f9a3593107d5333f057570a76e04a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf5eed22d7c5d7a89334dbe1e04e2656"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gabf5eed22d7c5d7a89334dbe1e04e2656"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gabf5eed22d7c5d7a89334dbe1e04e2656">WideCharToMultiByte</a> (UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept</td></tr>
<tr class="memdesc:gabf5eed22d7c5d7a89334dbe1e04e2656"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#gabf5eed22d7c5d7a89334dbe1e04e2656">More...</a><br /></td></tr>
<tr class="separator:gabf5eed22d7c5d7a89334dbe1e04e2656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ab082dc4cba91b23c4364a125f2f778"><td class="memTemplParams" colspan="2">template&lt;class _Ax &gt; </td></tr>
<tr class="memitem:ga9ab082dc4cba91b23c4364a125f2f778"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga9ab082dc4cba91b23c4364a125f2f778">WideCharToMultiByte</a> (UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector&lt; char, _Ax &gt; &amp;sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept</td></tr>
<tr class="memdesc:ga9ab082dc4cba91b23c4364a125f2f778"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a UTF-16 (wide character) string to a std::vector. The new character vector is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga9ab082dc4cba91b23c4364a125f2f778">More...</a><br /></td></tr>
<tr class="separator:ga9ab082dc4cba91b23c4364a125f2f778"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2eee7ccbf8faa628b303df158b67fb2b"><td class="memTemplParams" colspan="2">template&lt;class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 &gt; </td></tr>
<tr class="memitem:ga2eee7ccbf8faa628b303df158b67fb2b"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga2eee7ccbf8faa628b303df158b67fb2b">WideCharToMultiByte</a> (UINT CodePage, DWORD dwFlags, std::basic_string&lt; wchar_t, _Traits1, _Ax1 &gt; sWideCharStr, std::basic_string&lt; char, _Traits2, _Ax2 &gt; &amp;sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept</td></tr>
<tr class="memdesc:ga2eee7ccbf8faa628b303df158b67fb2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga2eee7ccbf8faa628b303df158b67fb2b">More...</a><br /></td></tr>
<tr class="separator:ga2eee7ccbf8faa628b303df158b67fb2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga04f5e27a0e2066c85d7a421fe4e4c462"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga04f5e27a0e2066c85d7a421fe4e4c462"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga04f5e27a0e2066c85d7a421fe4e4c462">SecureWideCharToMultiByte</a> (UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept</td></tr>
<tr class="memdesc:ga04f5e27a0e2066c85d7a421fe4e4c462"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga04f5e27a0e2066c85d7a421fe4e4c462">More...</a><br /></td></tr>
<tr class="separator:ga04f5e27a0e2066c85d7a421fe4e4c462"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a0accb3a54ae0ed34944fd483e0c329"><td class="memTemplParams" colspan="2">template&lt;class _Ax &gt; </td></tr>
<tr class="memitem:ga1a0accb3a54ae0ed34944fd483e0c329"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga1a0accb3a54ae0ed34944fd483e0c329">SecureWideCharToMultiByte</a> (UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector&lt; char, _Ax &gt; &amp;sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept</td></tr>
<tr class="memdesc:ga1a0accb3a54ae0ed34944fd483e0c329"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a UTF-16 (wide character) string to a std::vector. The new character vector is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga1a0accb3a54ae0ed34944fd483e0c329">More...</a><br /></td></tr>
<tr class="separator:ga1a0accb3a54ae0ed34944fd483e0c329"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga05ac1b43a241f1bbcbf1440cf26c6335"><td class="memTemplParams" colspan="2">template&lt;class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 &gt; </td></tr>
<tr class="memitem:ga05ac1b43a241f1bbcbf1440cf26c6335"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga05ac1b43a241f1bbcbf1440cf26c6335">SecureWideCharToMultiByte</a> (UINT CodePage, DWORD dwFlags, std::basic_string&lt; wchar_t, _Traits1, _Ax1 &gt; sWideCharStr, std::basic_string&lt; char, _Traits2, _Ax2 &gt; &amp;sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept</td></tr>
<tr class="memdesc:ga05ac1b43a241f1bbcbf1440cf26c6335"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga05ac1b43a241f1bbcbf1440cf26c6335">More...</a><br /></td></tr>
<tr class="separator:ga05ac1b43a241f1bbcbf1440cf26c6335"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a92ed50a4e4cdaea5d470a52291098c"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga1a92ed50a4e4cdaea5d470a52291098c"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga1a92ed50a4e4cdaea5d470a52291098c">MultiByteToWideChar</a> (UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sWideCharStr) noexcept</td></tr>
<tr class="memdesc:ga1a92ed50a4e4cdaea5d470a52291098c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga1a92ed50a4e4cdaea5d470a52291098c">More...</a><br /></td></tr>
<tr class="separator:ga1a92ed50a4e4cdaea5d470a52291098c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb4d134b8910610678988196480a29cc"><td class="memTemplParams" colspan="2">template&lt;class _Ax &gt; </td></tr>
<tr class="memitem:gaeb4d134b8910610678988196480a29cc"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gaeb4d134b8910610678988196480a29cc">MultiByteToWideChar</a> (UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector&lt; wchar_t, _Ax &gt; &amp;sWideCharStr) noexcept</td></tr>
<tr class="memdesc:gaeb4d134b8910610678988196480a29cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a character string to a UTF-16 (wide character) std::vector. The character vector is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#gaeb4d134b8910610678988196480a29cc">More...</a><br /></td></tr>
<tr class="separator:gaeb4d134b8910610678988196480a29cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5fe48d031512d6acbd14095b6d4e182d"><td class="memTemplParams" colspan="2">template&lt;class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 &gt; </td></tr>
<tr class="memitem:ga5fe48d031512d6acbd14095b6d4e182d"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga5fe48d031512d6acbd14095b6d4e182d">MultiByteToWideChar</a> (UINT CodePage, DWORD dwFlags, const std::basic_string&lt; char, _Traits1, _Ax1 &gt; &amp;sMultiByteStr, std::basic_string&lt; wchar_t, _Traits2, _Ax2 &gt; &amp;sWideCharStr) noexcept</td></tr>
<tr class="memdesc:ga5fe48d031512d6acbd14095b6d4e182d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga5fe48d031512d6acbd14095b6d4e182d">More...</a><br /></td></tr>
<tr class="separator:ga5fe48d031512d6acbd14095b6d4e182d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab02484a16fea41e3d9a5c64c2ee1da1a"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gab02484a16fea41e3d9a5c64c2ee1da1a"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gab02484a16fea41e3d9a5c64c2ee1da1a">SecureMultiByteToWideChar</a> (UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sWideCharStr) noexcept</td></tr>
<tr class="memdesc:gab02484a16fea41e3d9a5c64c2ee1da1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#gab02484a16fea41e3d9a5c64c2ee1da1a">More...</a><br /></td></tr>
<tr class="separator:gab02484a16fea41e3d9a5c64c2ee1da1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa15c8edc525c24109fafea640cdedfcb"><td class="memTemplParams" colspan="2">template&lt;class _Ax &gt; </td></tr>
<tr class="memitem:gaa15c8edc525c24109fafea640cdedfcb"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gaa15c8edc525c24109fafea640cdedfcb">SecureMultiByteToWideChar</a> (UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector&lt; wchar_t, _Ax &gt; &amp;sWideCharStr) noexcept</td></tr>
<tr class="memdesc:gaa15c8edc525c24109fafea640cdedfcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a character string to a UTF-16 (wide character) std::vector. The character vector is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#gaa15c8edc525c24109fafea640cdedfcb">More...</a><br /></td></tr>
<tr class="separator:gaa15c8edc525c24109fafea640cdedfcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9aaaa6113374b6cbad241626819d06c9"><td class="memTemplParams" colspan="2">template&lt;class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 &gt; </td></tr>
<tr class="memitem:ga9aaaa6113374b6cbad241626819d06c9"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga9aaaa6113374b6cbad241626819d06c9">SecureMultiByteToWideChar</a> (UINT CodePage, DWORD dwFlags, const std::basic_string&lt; char, _Traits1, _Ax1 &gt; &amp;sMultiByteStr, std::basic_string&lt; wchar_t, _Traits2, _Ax2 &gt; &amp;sWideCharStr) noexcept</td></tr>
<tr class="memdesc:ga9aaaa6113374b6cbad241626819d06c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necessarily from a multibyte character set. <a href="group___win_std_win_a_p_i.html#ga9aaaa6113374b6cbad241626819d06c9">More...</a><br /></td></tr>
<tr class="separator:ga9aaaa6113374b6cbad241626819d06c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga006d35d0a588fa18614030e4e4487b91"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga006d35d0a588fa18614030e4e4487b91"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga006d35d0a588fa18614030e4e4487b91">NormalizeString</a> (NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sDstString) noexcept</td></tr>
<tr class="memdesc:ga006d35d0a588fa18614030e4e4487b91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes characters of a text string according to Unicode 4.0 TR#15. <a href="group___win_std_win_a_p_i.html#ga006d35d0a588fa18614030e4e4487b91">More...</a><br /></td></tr>
<tr class="separator:ga006d35d0a588fa18614030e4e4487b91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadcb43067e0a63745adf10b68dafbfb7c"><td class="memTemplParams" colspan="2">template&lt;class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 &gt; </td></tr>
<tr class="memitem:gadcb43067e0a63745adf10b68dafbfb7c"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gadcb43067e0a63745adf10b68dafbfb7c">NormalizeString</a> (NORM_FORM NormForm, const std::basic_string&lt; wchar_t, _Traits1, _Ax1 &gt; &amp;sSrcString, std::basic_string&lt; wchar_t, _Traits2, _Ax2 &gt; &amp;sDstString) noexcept</td></tr>
<tr class="memdesc:gadcb43067e0a63745adf10b68dafbfb7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes characters of a text string according to Unicode 4.0 TR#15. <a href="group___win_std_win_a_p_i.html#gadcb43067e0a63745adf10b68dafbfb7c">More...</a><br /></td></tr>
<tr class="separator:gadcb43067e0a63745adf10b68dafbfb7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga141a51b128dac2b7b0b0f5fddc91fdaf"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga141a51b128dac2b7b0b0f5fddc91fdaf"><td class="memTemplItemLeft" align="right" valign="top">static int WINAPI&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga141a51b128dac2b7b0b0f5fddc91fdaf">LoadStringA</a> (HINSTANCE hInstance, UINT uID, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sBuffer) noexcept</td></tr>
<tr class="memdesc:ga141a51b128dac2b7b0b0f5fddc91fdaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a string resource from the executable file associated with a specified module. <a href="group___win_std_win_a_p_i.html#ga141a51b128dac2b7b0b0f5fddc91fdaf">More...</a><br /></td></tr>
<tr class="separator:ga141a51b128dac2b7b0b0f5fddc91fdaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c4d84d20f78aac00fe314a7d35d8b48"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga6c4d84d20f78aac00fe314a7d35d8b48"><td class="memTemplItemLeft" align="right" valign="top">static int WINAPI&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga6c4d84d20f78aac00fe314a7d35d8b48">LoadStringW</a> (HINSTANCE hInstance, UINT uID, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sBuffer) noexcept</td></tr>
<tr class="memdesc:ga6c4d84d20f78aac00fe314a7d35d8b48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a string resource from the executable file associated with a specified module. <a href="group___win_std_win_a_p_i.html#ga6c4d84d20f78aac00fe314a7d35d8b48">More...</a><br /></td></tr>
<tr class="separator:ga6c4d84d20f78aac00fe314a7d35d8b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4bcdb27022cf775035520bc749cbc84"><td class="memItemLeft" align="right" valign="top">static VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84">OutputDebugStrV</a> (LPCSTR lpOutputString, va_list arg) noexcept</td></tr>
<tr class="memdesc:gae4bcdb27022cf775035520bc749cbc84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and sends a string to the debugger for display. <a href="group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84">More...</a><br /></td></tr>
<tr class="separator:gae4bcdb27022cf775035520bc749cbc84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae399b26e1670d999125e1332e03e9f70"><td class="memItemLeft" align="right" valign="top">static VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70">OutputDebugStrV</a> (LPCWSTR lpOutputString, va_list arg) noexcept</td></tr>
<tr class="memdesc:gae399b26e1670d999125e1332e03e9f70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and sends a string to the debugger for display. <a href="group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70">More...</a><br /></td></tr>
<tr class="separator:gae399b26e1670d999125e1332e03e9f70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9742ac3627448c97ece59127536bb830"><td class="memItemLeft" align="right" valign="top">static VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830">OutputDebugStr</a> (LPCSTR lpOutputString,...) noexcept</td></tr>
<tr class="memdesc:ga9742ac3627448c97ece59127536bb830"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and sends a string to the debugger for display. <a href="group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830">More...</a><br /></td></tr>
<tr class="separator:ga9742ac3627448c97ece59127536bb830"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2ccdeb31db4cf3a93f6b8bcf78636f7b"><td class="memItemLeft" align="right" valign="top">static VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b">OutputDebugStr</a> (LPCWSTR lpOutputString,...) noexcept</td></tr>
<tr class="memdesc:ga2ccdeb31db4cf3a93f6b8bcf78636f7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats and sends a string to the debugger for display. <a href="group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b">More...</a><br /></td></tr>
<tr class="separator:ga2ccdeb31db4cf3a93f6b8bcf78636f7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacacc28dcab4a8e45fadccdb51993e40b"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gacacc28dcab4a8e45fadccdb51993e40b"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gacacc28dcab4a8e45fadccdb51993e40b">GetDateFormatA</a> (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sDate) noexcept</td></tr>
<tr class="memdesc:gacacc28dcab4a8e45fadccdb51993e40b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats a date as a date string for a locale specified by the locale identifier. The function formats either a specified date or the local system date. <a href="group___win_std_win_a_p_i.html#gacacc28dcab4a8e45fadccdb51993e40b">More...</a><br /></td></tr>
<tr class="separator:gacacc28dcab4a8e45fadccdb51993e40b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a9b892bd42f7de12e7e17e89e10fb01"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga6a9b892bd42f7de12e7e17e89e10fb01"><td class="memTemplItemLeft" align="right" valign="top">static int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga6a9b892bd42f7de12e7e17e89e10fb01">GetDateFormatW</a> (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sDate) noexcept</td></tr>
<tr class="memdesc:ga6a9b892bd42f7de12e7e17e89e10fb01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats a date as a date string for a locale specified by the locale identifier. The function formats either a specified date or the local system date. <a href="group___win_std_win_a_p_i.html#ga6a9b892bd42f7de12e7e17e89e10fb01">More...</a><br /></td></tr>
<tr class="separator:ga6a9b892bd42f7de12e7e17e89e10fb01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga494161e98275f571eff0da1d34e80145"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga494161e98275f571eff0da1d34e80145"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga494161e98275f571eff0da1d34e80145">LookupAccountSidA</a> (LPCSTR lpSystemName, PSID lpSid, std::basic_string&lt; char, _Traits, _Ax &gt; *sName, std::basic_string&lt; char, _Traits, _Ax &gt; *sReferencedDomainName, PSID_NAME_USE peUse) noexcept</td></tr>
<tr class="memdesc:ga494161e98275f571eff0da1d34e80145"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the name of the account for this SID and the name of the first domain on which this SID is found. <a href="group___win_std_win_a_p_i.html#ga494161e98275f571eff0da1d34e80145">More...</a><br /></td></tr>
<tr class="separator:ga494161e98275f571eff0da1d34e80145"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga55cf815e26d149f0032f1a1c5160fac4"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga55cf815e26d149f0032f1a1c5160fac4"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga55cf815e26d149f0032f1a1c5160fac4">LookupAccountSidW</a> (LPCWSTR lpSystemName, PSID lpSid, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; *sName, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; *sReferencedDomainName, PSID_NAME_USE peUse) noexcept</td></tr>
<tr class="memdesc:ga55cf815e26d149f0032f1a1c5160fac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the name of the account for this SID and the name of the first domain on which this SID is found. <a href="group___win_std_win_a_p_i.html#ga55cf815e26d149f0032f1a1c5160fac4">More...</a><br /></td></tr>
<tr class="separator:ga55cf815e26d149f0032f1a1c5160fac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga75b761473822ee6e9cf336d28b30b073"><td class="memTemplParams" colspan="2">template&lt;class _Ty &gt; </td></tr>
<tr class="memitem:ga75b761473822ee6e9cf336d28b30b073"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga75b761473822ee6e9cf336d28b30b073">GetTokenInformation</a> (HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, std::unique_ptr&lt; _Ty &gt; &amp;TokenInformation) noexcept</td></tr>
<tr class="memdesc:ga75b761473822ee6e9cf336d28b30b073"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a specified type of information about an access token. The calling process must have appropriate access rights to obtain the information. <a href="group___win_std_win_a_p_i.html#ga75b761473822ee6e9cf336d28b30b073">More...</a><br /></td></tr>
<tr class="separator:ga75b761473822ee6e9cf336d28b30b073"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9961177e8dd38279bcec5ecef6f8c1e8"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:ga9961177e8dd38279bcec5ecef6f8c1e8"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga9961177e8dd38279bcec5ecef6f8c1e8">QueryFullProcessImageNameA</a> (HANDLE hProcess, DWORD dwFlags, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;sExeName)</td></tr>
<tr class="memdesc:ga9961177e8dd38279bcec5ecef6f8c1e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the full name of the executable image for the specified process. <a href="group___win_std_win_a_p_i.html#ga9961177e8dd38279bcec5ecef6f8c1e8">More...</a><br /></td></tr>
<tr class="separator:ga9961177e8dd38279bcec5ecef6f8c1e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac1c1969a1b4df932b7f0dab529ffc4aa"><td class="memTemplParams" colspan="2">template&lt;class _Traits , class _Ax &gt; </td></tr>
<tr class="memitem:gac1c1969a1b4df932b7f0dab529ffc4aa"><td class="memTemplItemLeft" align="right" valign="top">static BOOL&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#gac1c1969a1b4df932b7f0dab529ffc4aa">QueryFullProcessImageNameW</a> (HANDLE hProcess, DWORD dwFlags, std::basic_string&lt; wchar_t, _Traits, _Ax &gt; &amp;sExeName)</td></tr>
<tr class="memdesc:gac1c1969a1b4df932b7f0dab529ffc4aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the full name of the executable image for the specified process. <a href="group___win_std_win_a_p_i.html#gac1c1969a1b4df932b7f0dab529ffc4aa">More...</a><br /></td></tr>
<tr class="separator:gac1c1969a1b4df932b7f0dab529ffc4aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1cba8a6da4757b79b5e416be149dc923"><td class="memItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga1cba8a6da4757b79b5e416be149dc923">RegCreateKeyExA</a> (HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, <a class="el" href="classwinstd_1_1reg__key.html">winstd::reg_key</a> &amp;result, LPDWORD lpdwDisposition)</td></tr>
<tr class="memdesc:ga1cba8a6da4757b79b5e416be149dc923"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the specified registry key. If the key already exists, the function opens it. <a href="group___win_std_win_a_p_i.html#ga1cba8a6da4757b79b5e416be149dc923">More...</a><br /></td></tr>
<tr class="separator:ga1cba8a6da4757b79b5e416be149dc923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga131fdda112e5cbfd123718153d925932"><td class="memItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga131fdda112e5cbfd123718153d925932">RegCreateKeyExW</a> (HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, <a class="el" href="classwinstd_1_1reg__key.html">winstd::reg_key</a> &amp;result, LPDWORD lpdwDisposition)</td></tr>
<tr class="memdesc:ga131fdda112e5cbfd123718153d925932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the specified registry key. If the key already exists, the function opens it. <a href="group___win_std_win_a_p_i.html#ga131fdda112e5cbfd123718153d925932">More...</a><br /></td></tr>
<tr class="separator:ga131fdda112e5cbfd123718153d925932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2974136cb4530867e14434fb05712b92"><td class="memItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga2974136cb4530867e14434fb05712b92">RegOpenKeyExA</a> (HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, <a class="el" href="classwinstd_1_1reg__key.html">winstd::reg_key</a> &amp;result)</td></tr>
<tr class="memdesc:ga2974136cb4530867e14434fb05712b92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opens the specified registry key. <a href="group___win_std_win_a_p_i.html#ga2974136cb4530867e14434fb05712b92">More...</a><br /></td></tr>
<tr class="separator:ga2974136cb4530867e14434fb05712b92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2c61d837a3d96ca9dad3a73df03bf8e4"><td class="memItemLeft" align="right" valign="top">static LSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_win_a_p_i.html#ga2c61d837a3d96ca9dad3a73df03bf8e4">RegOpenKeyExW</a> (HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, <a class="el" href="classwinstd_1_1reg__key.html">winstd::reg_key</a> &amp;result)</td></tr>
<tr class="memdesc:ga2c61d837a3d96ca9dad3a73df03bf8e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opens the specified registry key. <a href="group___win_std_win_a_p_i.html#ga2c61d837a3d96ca9dad3a73df03bf8e4">More...</a><br /></td></tr>
<tr class="separator:ga2c61d837a3d96ca9dad3a73df03bf8e4"><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 >Integrates WinStd classes with Microsoft Windows API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

File diff suppressed because it is too large Load Diff

123
_win_sock2_8h.html Normal file
View File

@ -0,0 +1,123 @@
<!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: include/WinStd/WinSock2.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">WinSock2.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft WinSock2 API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;<a class="el" href="_win_sock2_8h_source.html">WinSock2.h</a>&gt;</code><br />
<code>#include &lt;ws2def.h&gt;</code><br />
<code>#include &lt;WS2tcpip.h&gt;</code><br />
</div>
<p><a href="_win_sock2_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1ws2__runtime__error.html">winstd::ws2_runtime_error</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">WinSock2 runtime error. <a href="classwinstd_1_1ws2__runtime__error.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1addrinfo.html">winstd::addrinfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SID wrapper class. <a href="classwinstd_1_1addrinfo.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1waddrinfo.html">winstd::waddrinfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SID wrapper class. <a href="classwinstd_1_1waddrinfo.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 id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga73a783d5ebf3d1af2a565cb78062b5b6"><td class="memItemLeft" align="right" valign="top">
typedef addrinfo&#160;</td><td class="memItemRight" valign="bottom"><b>winstd::taddrinfo</b></td></tr>
<tr class="memdesc:ga73a783d5ebf3d1af2a565cb78062b5b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-byte / Wide-character SID wrapper class (according to _UNICODE) <br /></td></tr>
<tr class="separator:ga73a783d5ebf3d1af2a565cb78062b5b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gae9f6e09e2e81a57135dc30bc999d27af"><td class="memItemLeft" align="right" valign="top">static INT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_sock2_a_p_i.html#gae9f6e09e2e81a57135dc30bc999d27af">GetAddrInfoA</a> (PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, <a class="el" href="classwinstd_1_1addrinfo.html">winstd::addrinfo</a> &amp;result)</td></tr>
<tr class="memdesc:gae9f6e09e2e81a57135dc30bc999d27af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides protocol-independent translation from a host name to an address. <a href="group___win_sock2_a_p_i.html#gae9f6e09e2e81a57135dc30bc999d27af">More...</a><br /></td></tr>
<tr class="separator:gae9f6e09e2e81a57135dc30bc999d27af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad222deae09d76241e018a2e350aa1ec9"><td class="memItemLeft" align="right" valign="top">static INT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_sock2_a_p_i.html#gad222deae09d76241e018a2e350aa1ec9">GetAddrInfoW</a> (PCWSTR pNodeName, PCWSTR pServiceName, const ADDRINFOW *pHints, <a class="el" href="classwinstd_1_1waddrinfo.html">winstd::waddrinfo</a> &amp;result)</td></tr>
<tr class="memdesc:gad222deae09d76241e018a2e350aa1ec9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides protocol-independent translation from a host name to an address. <a href="group___win_sock2_a_p_i.html#gad222deae09d76241e018a2e350aa1ec9">More...</a><br /></td></tr>
<tr class="separator:gad222deae09d76241e018a2e350aa1ec9"><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 >Integrates WinStd classes with Microsoft WinSock2 API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,160 +70,167 @@ $(function() {
<div class="headertitle"><div class="title">WinSock2.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_win_sock2_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;WinSock2.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;ws2def.h&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;WS2tcpip.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span>{</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html"> 25</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1ws2__runtime__error.html">ws2_runtime_error</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a"> 34</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a">ws2_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_ <span class="keyword">const</span> std::string&amp; <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(num, <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> }</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b"> 44</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b">ws2_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_opt_z_ <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a> = <span class="keyword">nullptr</span>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(num, <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> }</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e"> 53</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e">ws2_runtime_error</a>(_In_ <span class="keyword">const</span> std::string&amp; <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(WSAGetLastError(), <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> }</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267"> 62</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267">ws2_runtime_error</a>(_In_opt_z_ <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a> = <span class="keyword">nullptr</span>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(WSAGetLastError(), <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> }</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f"> 71</a></span> <a class="code hl_typedef" href="group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc">tstring</a> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>(_In_opt_ DWORD dwLanguageId = 0)<span class="keyword"> const</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <a class="code hl_typedef" href="group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc">tstring</a> str;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span> (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, <a class="code hl_variable" href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">m_num</a>, dwLanguageId, str, NULL)) {</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> str.erase(str.find_last_not_of(_T(<span class="stringliteral">&quot; \t\n\r\f\v&quot;</span>)) + 1);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> sprintf(str, <a class="code hl_variable" href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">m_num</a> &gt;= 0x10000 ? _T(<span class="stringliteral">&quot;Error 0x%X&quot;</span>) : _T(<span class="stringliteral">&quot;Error %u&quot;</span>), <a class="code hl_variable" href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">m_num</a>);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">return</span> str;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> }</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> };</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;<a class="code" href="_win_sock2_8h.html">WinSock2.h</a>&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;ws2def.h&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;WS2tcpip.h&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span>{</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html"> 28</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1ws2__runtime__error.html">ws2_runtime_error</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> {</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a"> 37</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a">ws2_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_ <span class="keyword">const</span> std::string&amp; <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(num, <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> }</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b"> 47</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b">ws2_runtime_error</a>(_In_ <a class="code hl_typedef" href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">error_type</a> num, _In_opt_z_ <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a> = <span class="keyword">nullptr</span>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(num, <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> {</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e"> 56</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e">ws2_runtime_error</a>(_In_ <span class="keyword">const</span> std::string&amp; <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(WSAGetLastError(), <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> }</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267"> 65</a></span> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267">ws2_runtime_error</a>(_In_opt_z_ <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a> = <span class="keyword">nullptr</span>) : <a class="code hl_class" href="classwinstd_1_1num__runtime__error.html">num_runtime_error</a>&lt;int&gt;(WSAGetLastError(), <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>)</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f"> 74</a></span> <a class="code hl_typedef" href="group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc">tstring</a> <a class="code hl_function" href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">msg</a>(_In_opt_ DWORD dwLanguageId = 0)<span class="keyword"> const</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_typedef" href="group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc">tstring</a> str;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623">FormatMessage</a>(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, <a class="code hl_variable" href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">m_num</a>, dwLanguageId, str, NULL)) {</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> str.erase(str.find_last_not_of(_T(<span class="stringliteral">&quot; \t\n\r\f\v&quot;</span>)) + 1);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> } <span class="keywordflow">else</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_function" href="group___win_std_str_format.html#gac397f655a858a069b3e521940af64331">sprintf</a>(str, <a class="code hl_variable" href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">m_num</a> &gt;= 0x10000 ? _T(<span class="stringliteral">&quot;Error 0x%X&quot;</span>) : _T(<span class="stringliteral">&quot;Error %u&quot;</span>), <a class="code hl_variable" href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">m_num</a>);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> str;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> }</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> };</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#if (NTDDI_VERSION &gt;= NTDDI_WINXPSP2) || (_WIN32_WINNT &gt;= 0x0502)</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="classwinstd_1_1addrinfo.html"> 95</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1addrinfo.html">addrinfo</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PADDRINFOA, NULL&gt;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1addrinfo.html">addrinfo</a>, NULL)</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883"> 105</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883">~addrinfo</a>()</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_function" href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f">free_internal</a>();</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> }</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f"> 117</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> FreeAddrInfoA(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> }</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> };</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"><a class="line" href="classwinstd_1_1waddrinfo.html"> 128</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1waddrinfo.html">waddrinfo</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PADDRINFOW, NULL&gt;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> {</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1waddrinfo.html">waddrinfo</a>, NULL)</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca"> 138</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca">~waddrinfo</a>()</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <a class="code hl_function" href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66">free_internal</a>();</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> }</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66"> 150</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> FreeAddrInfoW(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> };</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="preprocessor">#ifdef _UNICODE</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">typedef</span> waddrinfo <a class="code hl_typedef" href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6">taddrinfo</a>;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6"> 162</a></span> <span class="keyword">typedef</span> <a class="code hl_class" href="classwinstd_1_1addrinfo.html">addrinfo</a> <a class="code hl_typedef" href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6">taddrinfo</a>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span>}</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#if (NTDDI_VERSION &gt;= NTDDI_WINXPSP2) || (_WIN32_WINNT &gt;= 0x0502)</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="classwinstd_1_1addrinfo.html"> 98</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1addrinfo.html">addrinfo</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PADDRINFOA, NULL&gt;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1addrinfo.html">addrinfo</a>, NULL)</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883"> 108</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883">~addrinfo</a>()</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> {</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_function" href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f">free_internal</a>();</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> }</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f"> 120</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> FreeAddrInfoA(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> };</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="classwinstd_1_1waddrinfo.html"> 131</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1waddrinfo.html">waddrinfo</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwinstd_1_1handle.html">handle</a>&lt;PADDRINFOW, NULL&gt;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <a class="code hl_define" href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a>(<a class="code hl_class" href="classwinstd_1_1waddrinfo.html">waddrinfo</a>, NULL)</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"><a class="line" href="classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca"> 141</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca">~waddrinfo</a>()</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> {</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a> != <a class="code hl_variable" href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">invalid</a>)</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <a class="code hl_function" href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66">free_internal</a>();</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"><a class="line" href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66"> 153</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66">free_internal</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> FreeAddrInfoW(<a class="code hl_variable" href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">m_h</a>);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> };</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor">#ifdef _UNICODE</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">typedef</span> waddrinfo <a class="code hl_typedef" href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6">taddrinfo</a>;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6"> 165</a></span> <span class="keyword">typedef</span> <a class="code hl_class" href="classwinstd_1_1addrinfo.html">addrinfo</a> <a class="code hl_typedef" href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6">taddrinfo</a>;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span>}</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="preprocessor">#pragma warning(push)</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor">#pragma warning(disable: 4505) </span><span class="comment">// Don&#39;t warn on unused code</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="keyword">static</span> INT GetAddrInfoA(</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> _In_opt_ PCSTR pNodeName,</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> _In_opt_ PCSTR pServiceName,</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> _In_opt_ <span class="keyword">const</span> ADDRINFOA *pHints,</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> _Inout_ <a class="code hl_class" href="classwinstd_1_1addrinfo.html">winstd::addrinfo</a> &amp;result)</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span>{</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> PADDRINFOA h;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> INT iResult = GetAddrInfoA(pNodeName, pServiceName, pHints, &amp;h);</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">if</span> (iResult == 0)</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> result.attach(h);</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">return</span> iResult;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span>}</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="keyword">static</span> INT GetAddrInfoW(</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> _In_opt_ PCWSTR pNodeName,</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> _In_opt_ PCWSTR pServiceName,</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> _In_opt_ <span class="keyword">const</span> ADDRINFOW *pHints,</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> _Inout_ <a class="code hl_class" href="classwinstd_1_1waddrinfo.html">winstd::waddrinfo</a> &amp;result)</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span>{</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> PADDRINFOW h;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> INT iResult = GetAddrInfoW(pNodeName, pServiceName, pHints, &amp;h);</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">if</span> (iResult == 0)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> result.attach(h);</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> iResult;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span>}</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="preprocessor">#pragma warning(pop)</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="ttc" id="aclasswinstd_1_1addrinfo_html"><div class="ttname"><a href="classwinstd_1_1addrinfo.html">winstd::addrinfo</a></div><div class="ttdoc">SID wrapper class.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:96</div></div>
<div class="ttc" id="aclasswinstd_1_1addrinfo_html_a279ad84ce2877b22797eedbec80cd55f"><div class="ttname"><a href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f">winstd::addrinfo::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:117</div></div>
<div class="ttc" id="aclasswinstd_1_1addrinfo_html_aaa7a9365cde194bb9f54a96ea04f9883"><div class="ttname"><a href="classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883">winstd::addrinfo::~addrinfo</a></div><div class="ttdeci">virtual ~addrinfo()</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:105</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:603</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; PADDRINFOA, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:854</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html">winstd::num_runtime_error</a></div><div class="ttdoc">Numerical runtime error.</div><div class="ttdef"><b>Definition:</b> Common.h:1002</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html_a6fa2de87d0151b3ad9cac58f838852e0"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">winstd::num_runtime_error&lt; int &gt;::error_type</a></div><div class="ttdeci">int error_type</div><div class="ttdoc">Error number type.</div><div class="ttdef"><b>Definition:</b> Common.h:1004</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html_a865b8400a5a5a962c3068bf55f022d1f"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">winstd::num_runtime_error&lt; int &gt;::m_num</a></div><div class="ttdeci">error_type m_num</div><div class="ttdoc">Numeric error code.</div><div class="ttdef"><b>Definition:</b> Common.h:1040</div></div>
<div class="ttc" id="aclasswinstd_1_1waddrinfo_html"><div class="ttname"><a href="classwinstd_1_1waddrinfo.html">winstd::waddrinfo</a></div><div class="ttdoc">SID wrapper class.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:129</div></div>
<div class="ttc" id="aclasswinstd_1_1waddrinfo_html_a2b1209904bd7486acefd833ff5c4bcca"><div class="ttname"><a href="classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca">winstd::waddrinfo::~waddrinfo</a></div><div class="ttdeci">virtual ~waddrinfo()</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:138</div></div>
<div class="ttc" id="aclasswinstd_1_1waddrinfo_html_a479f7602b60a4c4205a9327f91e25f66"><div class="ttname"><a href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66">winstd::waddrinfo::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:150</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html">winstd::ws2_runtime_error</a></div><div class="ttdoc">WinSock2 runtime error.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:26</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_a0f57437dbc7c87ac05230a5a5458846b"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(error_type num, const char *msg=nullptr)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:44</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_a2e54221cc0f78724af416f9af1415267"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(const char *msg=nullptr)</div><div class="ttdoc">Constructs an exception using WSAGetLastError()</div><div class="ttdef"><b>Definition:</b> WinSock2.h:62</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_aa6ed38106310751800eca077c2fcb71a"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(error_type num, const std::string &amp;msg)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:34</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_ae7914ed1c76d543399992573bc580b4e"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(const std::string &amp;msg)</div><div class="ttdoc">Constructs an exception using WSAGetLastError()</div><div class="ttdef"><b>Definition:</b> WinSock2.h:53</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_af6984de4ac18e732a6844f379d67c52f"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">winstd::ws2_runtime_error::msg</a></div><div class="ttdeci">tstring msg(DWORD dwLanguageId=0) const</div><div class="ttdoc">Returns a user-readable Windows error message.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:71</div></div>
<div class="ttc" id="agroup___win_sock2_a_p_i_html_ga73a783d5ebf3d1af2a565cb78062b5b6"><div class="ttname"><a href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6">winstd::taddrinfo</a></div><div class="ttdeci">addrinfo taddrinfo</div><div class="ttdoc">Multi-byte / Wide-character SID wrapper class (according to _UNICODE)</div><div class="ttdef"><b>Definition:</b> WinSock2.h:162</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga8081292a94f5d070e644bdc90662d1fc"><div class="ttname"><a href="group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc">winstd::tstring</a></div><div class="ttdeci">std::string tstring</div><div class="ttdoc">Multi-byte / Wide-character string (according to _UNICODE)</div><div class="ttdef"><b>Definition:</b> Common.h:334</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:161</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; PADDRINFOA, NULL &gt;::invalid</a></div><div class="ttdeci">static const PADDRINFOA invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:613</div></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="preprocessor">#pragma warning(push)</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor">#pragma warning(disable: 4505) </span><span class="comment">// Don&#39;t warn on unused code</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="group___win_sock2_a_p_i.html#gae9f6e09e2e81a57135dc30bc999d27af"> 180</a></span><span class="keyword">static</span> INT <a class="code hl_function" href="group___win_sock2_a_p_i.html#gae9f6e09e2e81a57135dc30bc999d27af">GetAddrInfoA</a>(</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> _In_opt_ PCSTR pNodeName,</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> _In_opt_ PCSTR pServiceName,</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> _In_opt_ <span class="keyword">const</span> ADDRINFOA *pHints,</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> _Inout_ <a class="code hl_class" href="classwinstd_1_1addrinfo.html">winstd::addrinfo</a> &amp;result)</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>{</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> PADDRINFOA h;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> INT iResult = <a class="code hl_function" href="group___win_sock2_a_p_i.html#gae9f6e09e2e81a57135dc30bc999d27af">GetAddrInfoA</a>(pNodeName, pServiceName, pHints, &amp;h);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">if</span> (iResult == 0)</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> result.attach(h);</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> iResult;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>}</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="group___win_sock2_a_p_i.html#gad222deae09d76241e018a2e350aa1ec9"> 198</a></span><span class="keyword">static</span> INT <a class="code hl_function" href="group___win_sock2_a_p_i.html#gad222deae09d76241e018a2e350aa1ec9">GetAddrInfoW</a>(</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> _In_opt_ PCWSTR pNodeName,</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> _In_opt_ PCWSTR pServiceName,</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> _In_opt_ <span class="keyword">const</span> ADDRINFOW *pHints,</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> _Inout_ <a class="code hl_class" href="classwinstd_1_1waddrinfo.html">winstd::waddrinfo</a> &amp;result)</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span>{</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> PADDRINFOW h;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> INT iResult = <a class="code hl_function" href="group___win_sock2_a_p_i.html#gad222deae09d76241e018a2e350aa1ec9">GetAddrInfoW</a>(pNodeName, pServiceName, pHints, &amp;h);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">if</span> (iResult == 0)</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> result.attach(h);</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">return</span> iResult;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span>}</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="preprocessor">#pragma warning(pop)</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="a_win_sock2_8h_html"><div class="ttname"><a href="_win_sock2_8h.html">WinSock2.h</a></div><div class="ttdoc">Integrates WinStd classes with Microsoft WinSock2 API.</div></div>
<div class="ttc" id="aclasswinstd_1_1addrinfo_html"><div class="ttname"><a href="classwinstd_1_1addrinfo.html">winstd::addrinfo</a></div><div class="ttdoc">SID wrapper class.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:99</div></div>
<div class="ttc" id="aclasswinstd_1_1addrinfo_html_a279ad84ce2877b22797eedbec80cd55f"><div class="ttname"><a href="classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f">winstd::addrinfo::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:120</div></div>
<div class="ttc" id="aclasswinstd_1_1addrinfo_html_aaa7a9365cde194bb9f54a96ea04f9883"><div class="ttname"><a href="classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883">winstd::addrinfo::~addrinfo</a></div><div class="ttdeci">virtual ~addrinfo()</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:108</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html"><div class="ttname"><a href="classwinstd_1_1handle.html">winstd::handle</a></div><div class="ttdoc">Base abstract template class to support generic object handle keeping.</div><div class="ttdef"><b>Definition:</b> Common.h:615</div></div>
<div class="ttc" id="aclasswinstd_1_1handle_html_aabde3f16fd98b06b3b0282ef7806eb59"><div class="ttname"><a href="classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59">winstd::handle&lt; PADDRINFOA, NULL &gt;::m_h</a></div><div class="ttdeci">handle_type m_h</div><div class="ttdoc">Object handle.</div><div class="ttdef"><b>Definition:</b> Common.h:866</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html">winstd::num_runtime_error</a></div><div class="ttdoc">Numerical runtime error.</div><div class="ttdef"><b>Definition:</b> Common.h:1011</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html_a6fa2de87d0151b3ad9cac58f838852e0"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0">winstd::num_runtime_error&lt; int &gt;::error_type</a></div><div class="ttdeci">int error_type</div><div class="ttdoc">Error number type.</div><div class="ttdef"><b>Definition:</b> Common.h:1013</div></div>
<div class="ttc" id="aclasswinstd_1_1num__runtime__error_html_a865b8400a5a5a962c3068bf55f022d1f"><div class="ttname"><a href="classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f">winstd::num_runtime_error&lt; int &gt;::m_num</a></div><div class="ttdeci">error_type m_num</div><div class="ttdoc">Numeric error code.</div><div class="ttdef"><b>Definition:</b> Common.h:1049</div></div>
<div class="ttc" id="aclasswinstd_1_1waddrinfo_html"><div class="ttname"><a href="classwinstd_1_1waddrinfo.html">winstd::waddrinfo</a></div><div class="ttdoc">SID wrapper class.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:132</div></div>
<div class="ttc" id="aclasswinstd_1_1waddrinfo_html_a2b1209904bd7486acefd833ff5c4bcca"><div class="ttname"><a href="classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca">winstd::waddrinfo::~waddrinfo</a></div><div class="ttdeci">virtual ~waddrinfo()</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:141</div></div>
<div class="ttc" id="aclasswinstd_1_1waddrinfo_html_a479f7602b60a4c4205a9327f91e25f66"><div class="ttname"><a href="classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66">winstd::waddrinfo::free_internal</a></div><div class="ttdeci">void free_internal() noexcept override</div><div class="ttdoc">Frees address information.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:153</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html">winstd::ws2_runtime_error</a></div><div class="ttdoc">WinSock2 runtime error.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:29</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_a0f57437dbc7c87ac05230a5a5458846b"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(error_type num, const char *msg=nullptr)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:47</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_a2e54221cc0f78724af416f9af1415267"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(const char *msg=nullptr)</div><div class="ttdoc">Constructs an exception using WSAGetLastError()</div><div class="ttdef"><b>Definition:</b> WinSock2.h:65</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_aa6ed38106310751800eca077c2fcb71a"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(error_type num, const std::string &amp;msg)</div><div class="ttdoc">Constructs an exception.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:37</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_ae7914ed1c76d543399992573bc580b4e"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e">winstd::ws2_runtime_error::ws2_runtime_error</a></div><div class="ttdeci">ws2_runtime_error(const std::string &amp;msg)</div><div class="ttdoc">Constructs an exception using WSAGetLastError()</div><div class="ttdef"><b>Definition:</b> WinSock2.h:56</div></div>
<div class="ttc" id="aclasswinstd_1_1ws2__runtime__error_html_af6984de4ac18e732a6844f379d67c52f"><div class="ttname"><a href="classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f">winstd::ws2_runtime_error::msg</a></div><div class="ttdeci">tstring msg(DWORD dwLanguageId=0) const</div><div class="ttdoc">Returns a user-readable Windows error message.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:74</div></div>
<div class="ttc" id="agroup___win_sock2_a_p_i_html_ga73a783d5ebf3d1af2a565cb78062b5b6"><div class="ttname"><a href="group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6">winstd::taddrinfo</a></div><div class="ttdeci">addrinfo taddrinfo</div><div class="ttdoc">Multi-byte / Wide-character SID wrapper class (according to _UNICODE)</div><div class="ttdef"><b>Definition:</b> WinSock2.h:165</div></div>
<div class="ttc" id="agroup___win_sock2_a_p_i_html_gad222deae09d76241e018a2e350aa1ec9"><div class="ttname"><a href="group___win_sock2_a_p_i.html#gad222deae09d76241e018a2e350aa1ec9">GetAddrInfoW</a></div><div class="ttdeci">static INT GetAddrInfoW(PCWSTR pNodeName, PCWSTR pServiceName, const ADDRINFOW *pHints, winstd::waddrinfo &amp;result)</div><div class="ttdoc">Provides protocol-independent translation from a host name to an address.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:198</div></div>
<div class="ttc" id="agroup___win_sock2_a_p_i_html_gae9f6e09e2e81a57135dc30bc999d27af"><div class="ttname"><a href="group___win_sock2_a_p_i.html#gae9f6e09e2e81a57135dc30bc999d27af">GetAddrInfoA</a></div><div class="ttdeci">static INT GetAddrInfoA(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, winstd::addrinfo &amp;result)</div><div class="ttdoc">Provides protocol-independent translation from a host name to an address.</div><div class="ttdef"><b>Definition:</b> WinSock2.h:180</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga8081292a94f5d070e644bdc90662d1fc"><div class="ttname"><a href="group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc">winstd::tstring</a></div><div class="ttdeci">std::string tstring</div><div class="ttdoc">Multi-byte / Wide-character string (according to _UNICODE)</div><div class="ttdef"><b>Definition:</b> Common.h:346</div></div>
<div class="ttc" id="agroup___win_std_str_format_html_ga78bf19793ce080f2826f56f228d64623"><div class="ttname"><a href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623">FormatMessage</a></div><div class="ttdeci">static DWORD FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string&lt; char, _Traits, _Ax &gt; &amp;str, va_list *Arguments)</div><div class="ttdoc">Formats a message string.</div><div class="ttdef"><b>Definition:</b> Common.h:307</div></div>
<div class="ttc" id="agroup___win_std_str_format_html_gac397f655a858a069b3e521940af64331"><div class="ttname"><a href="group___win_std_str_format.html#gac397f655a858a069b3e521940af64331">sprintf</a></div><div class="ttdeci">static int sprintf(std::basic_string&lt; _Elem, _Traits, _Ax &gt; &amp;str, const _Elem *format,...)</div><div class="ttdoc">Formats string using printf().</div><div class="ttdef"><b>Definition:</b> Common.h:292</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_ga419efffd12b5c96abc8a275ba375ca60"><div class="ttname"><a href="group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60">WINSTD_HANDLE_IMPL</a></div><div class="ttdeci">#define WINSTD_HANDLE_IMPL(C, INVAL)</div><div class="ttdoc">Implements default constructors and operators to prevent their auto-generation by compiler.</div><div class="ttdef"><b>Definition:</b> Common.h:171</div></div>
<div class="ttc" id="agroup___win_std_sys_handles_html_gacf43e306968474166474090690857e1c"><div class="ttname"><a href="group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c">winstd::handle&lt; PADDRINFOA, NULL &gt;::invalid</a></div><div class="ttdeci">static const PADDRINFOA invalid</div><div class="ttdoc">Invalid handle value.</div><div class="ttdef"><b>Definition:</b> Common.h:625</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

97
_win_trust_8h.html Normal file
View File

@ -0,0 +1,97 @@
<!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: include/WinStd/WinTrust.h File 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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_6f50bb204833d887b928571856c82fbe.html">WinStd</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle"><div class="title">WinTrust.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft WinTrust API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_common_8h_source.html">Common.h</a>&quot;</code><br />
<code>#include &lt;<a class="el" href="_win_trust_8h_source.html">WinTrust.h</a>&gt;</code><br />
</div>
<p><a href="_win_trust_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" 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="classwinstd_1_1wintrust.html">winstd::wintrust</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">WinTrust engine wrapper class. <a href="classwinstd_1_1wintrust.html#details">More...</a><br /></td></tr>
<tr class="separator:"><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 >Integrates WinStd classes with Microsoft WinTrust API. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -70,59 +70,62 @@ $(function() {
<div class="headertitle"><div class="title">WinTrust.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<a href="_win_trust_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 1991-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;Common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;WinTrust.h&gt;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span>{</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="classwinstd_1_1wintrust.html"> 23</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1wintrust.html">wintrust</a></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> {</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1wintrust.html">wintrust</a>)</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <a class="code hl_define" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(<a class="code hl_class" href="classwinstd_1_1wintrust.html">wintrust</a>)</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b"> 32</a></span> <a class="code hl_function" href="classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b">wintrust</a>(_In_opt_ HWND hwnd, _In_ <span class="keyword">const</span> GUID &amp;action, _Inout_ WINTRUST_DATA &amp;wtd) :</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> m_hwnd(hwnd),</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> m_action(action),</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> m_wtd(wtd)</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">const</span> LONG lResult = WinVerifyTrust(m_hwnd, &amp;m_action, &amp;m_wtd);</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> (lResult != ERROR_SUCCESS)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classwinstd_1_1win__runtime__error.html">win_runtime_error</a>(lResult, <span class="stringliteral">&quot;WinVerifyTrust failed.&quot;</span>);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3"> 45</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3">~wintrust</a>()</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> m_wtd.dwStateAction = WTD_STATEACTION_CLOSE;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> WinVerifyTrust(m_hwnd, &amp;m_action, &amp;m_wtd);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> }</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> HWND m_hwnd;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> GUID m_action;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> WINTRUST_DATA &amp;m_wtd;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> };</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>}</div>
<div class="ttc" id="aclasswinstd_1_1win__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1win__runtime__error.html">winstd::win_runtime_error</a></div><div class="ttdoc">Windows runtime error.</div><div class="ttdef"><b>Definition:</b> Common.h:1047</div></div>
<div class="ttc" id="aclasswinstd_1_1wintrust_html"><div class="ttname"><a href="classwinstd_1_1wintrust.html">winstd::wintrust</a></div><div class="ttdoc">WinTrust engine wrapper class.</div><div class="ttdef"><b>Definition:</b> WinTrust.h:24</div></div>
<div class="ttc" id="aclasswinstd_1_1wintrust_html_a5f01f7952ccb4e4f6b3b52968470e49b"><div class="ttname"><a href="classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b">winstd::wintrust::wintrust</a></div><div class="ttdeci">wintrust(HWND hwnd, const GUID &amp;action, WINTRUST_DATA &amp;wtd)</div><div class="ttdoc">Initializes a new class instance.</div><div class="ttdef"><b>Definition:</b> WinTrust.h:32</div></div>
<div class="ttc" id="aclasswinstd_1_1wintrust_html_ac529a244b4f2f4eb85bcdf594ff723c3"><div class="ttname"><a href="classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3">winstd::wintrust::~wintrust</a></div><div class="ttdeci">virtual ~wintrust()</div><div class="ttdoc">Destroys the WinTrust context.</div><div class="ttdef"><b>Definition:</b> WinTrust.h:45</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:52</div></div>
<div class="ttc" id="agroup___win_std_general_html_gac91fa8d79c860b1fdbba65b6a322f760"><div class="ttname"><a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a></div><div class="ttdeci">#define WINSTD_NONMOVABLE(C)</div><div class="ttdoc">Declares a class as non-movable.</div><div class="ttdef"><b>Definition:</b> Common.h:60</div></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="_common_8h.html">Common.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;<a class="code" href="_win_trust_8h.html">WinTrust.h</a>&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span>winstd</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span>{</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="classwinstd_1_1wintrust.html"> 26</a></span> <span class="keyword">class </span><a class="code hl_class" href="classwinstd_1_1wintrust.html">wintrust</a></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> {</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_define" href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a>(<a class="code hl_class" href="classwinstd_1_1wintrust.html">wintrust</a>)</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_define" href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a>(<a class="code hl_class" href="classwinstd_1_1wintrust.html">wintrust</a>)</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b"> 35</a></span> <a class="code hl_function" href="classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b">wintrust</a>(_In_opt_ HWND hwnd, _In_ <span class="keyword">const</span> GUID &amp;action, _Inout_ WINTRUST_DATA &amp;wtd) :</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> m_hwnd(hwnd),</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> m_action(action),</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> m_wtd(wtd)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">const</span> LONG lResult = WinVerifyTrust(m_hwnd, &amp;m_action, &amp;m_wtd);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">if</span> (lResult != ERROR_SUCCESS)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">throw</span> <a class="code hl_class" href="classwinstd_1_1win__runtime__error.html">win_runtime_error</a>(lResult, <span class="stringliteral">&quot;WinVerifyTrust failed.&quot;</span>);</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> }</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3"> 48</a></span> <span class="keyword">virtual</span> <a class="code hl_function" href="classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3">~wintrust</a>()</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> m_wtd.dwStateAction = WTD_STATEACTION_CLOSE;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> WinVerifyTrust(m_hwnd, &amp;m_action, &amp;m_wtd);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> }</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> HWND m_hwnd;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> GUID m_action;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> WINTRUST_DATA &amp;m_wtd;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> };</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>}</div>
<div class="ttc" id="a_common_8h_html"><div class="ttname"><a href="_common_8h.html">Common.h</a></div><div class="ttdoc">General API.</div></div>
<div class="ttc" id="a_win_trust_8h_html"><div class="ttname"><a href="_win_trust_8h.html">WinTrust.h</a></div><div class="ttdoc">Integrates WinStd classes with Microsoft WinTrust API.</div></div>
<div class="ttc" id="aclasswinstd_1_1win__runtime__error_html"><div class="ttname"><a href="classwinstd_1_1win__runtime__error.html">winstd::win_runtime_error</a></div><div class="ttdoc">Windows runtime error.</div><div class="ttdef"><b>Definition:</b> Common.h:1056</div></div>
<div class="ttc" id="aclasswinstd_1_1wintrust_html"><div class="ttname"><a href="classwinstd_1_1wintrust.html">winstd::wintrust</a></div><div class="ttdoc">WinTrust engine wrapper class.</div><div class="ttdef"><b>Definition:</b> WinTrust.h:27</div></div>
<div class="ttc" id="aclasswinstd_1_1wintrust_html_a5f01f7952ccb4e4f6b3b52968470e49b"><div class="ttname"><a href="classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b">winstd::wintrust::wintrust</a></div><div class="ttdeci">wintrust(HWND hwnd, const GUID &amp;action, WINTRUST_DATA &amp;wtd)</div><div class="ttdoc">Initializes a new class instance.</div><div class="ttdef"><b>Definition:</b> WinTrust.h:35</div></div>
<div class="ttc" id="aclasswinstd_1_1wintrust_html_ac529a244b4f2f4eb85bcdf594ff723c3"><div class="ttname"><a href="classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3">winstd::wintrust::~wintrust</a></div><div class="ttdeci">virtual ~wintrust()</div><div class="ttdoc">Destroys the WinTrust context.</div><div class="ttdef"><b>Definition:</b> WinTrust.h:48</div></div>
<div class="ttc" id="agroup___win_std_general_html_ga11254c72ad33a6e0f5de31db708f784c"><div class="ttname"><a href="group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c">WINSTD_NONCOPYABLE</a></div><div class="ttdeci">#define WINSTD_NONCOPYABLE(C)</div><div class="ttdoc">Declares a class as non-copyable.</div><div class="ttdef"><b>Definition:</b> Common.h:74</div></div>
<div class="ttc" id="agroup___win_std_general_html_gac91fa8d79c860b1fdbba65b6a322f760"><div class="ttname"><a href="group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760">WINSTD_NONMOVABLE</a></div><div class="ttdeci">#define WINSTD_NONMOVABLE(C)</div><div class="ttdoc">Declares a class as non-movable.</div><div class="ttdef"><b>Definition:</b> Common.h:82</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -72,7 +72,7 @@ $(function() {
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1actctx__activator.html" target="_self">actctx_activator</a></td><td class="desc">Activates given activation context in constructor and deactivates it in destructor </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1addrinfo.html" target="_self">addrinfo</a></td><td class="desc">SID wrapper class </td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1basic__string__guid.html" target="_self">basic_string_guid</a></td><td class="desc">Base template class to support converting GUID to string </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1basic__string__msg.html" target="_self">basic_string_msg</a></td><td class="desc">Base template class to support string formatting using <code>FormatMessage()</code> style templates </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1basic__string__msg.html" target="_self">basic_string_msg</a></td><td class="desc">Base template class to support string formatting using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style templates </td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1basic__string__printf.html" target="_self">basic_string_printf</a></td><td class="desc">Base template class to support string formatting using <code>printf()</code> style templates </td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1bstr.html" target="_self">bstr</a></td><td class="desc">BSTR string wrapper </td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwinstd_1_1cert__chain__context.html" target="_self">cert_chain_context</a></td><td class="desc">PCCERT_CHAIN_CONTEXT wrapper class </td></tr>
@ -156,7 +156,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -120,7 +120,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -79,7 +79,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -168,7 +168,7 @@ ULONG_PTR&#160;</td><td class="memItemRight" valign="bottom"><b>m_cookie</b></td
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -100,7 +100,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -251,7 +251,7 @@ static const PADDRINFOA&#160;</td><td class="memItemRight" valign="bottom"><b>in
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -77,7 +77,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -148,7 +148,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -83,7 +83,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -74,7 +74,7 @@ $(function() {
</div><!--header-->
<div class="contents">
<p>Base template class to support string formatting using <code>FormatMessage()</code> style templates.
<p>Base template class to support string formatting using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style templates.
<a href="classwinstd_1_1basic__string__msg.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_common_8h_source.html">WinStd/Common.h</a>&gt;</code></p>
@ -88,32 +88,32 @@ Inheritance diagram for winstd::basic_string_msg&lt; _Elem, _Traits, _Ax &gt;:</
<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:a72842f64e4015027811f4f8bd36b86ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#a72842f64e4015027811f4f8bd36b86ee">basic_string_msg</a> (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)</td></tr>
<tr class="memdesc:a72842f64e4015027811f4f8bd36b86ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style. <a href="classwinstd_1_1basic__string__msg.html#a72842f64e4015027811f4f8bd36b86ee">More...</a><br /></td></tr>
<tr class="memdesc:a72842f64e4015027811f4f8bd36b86ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. <a href="classwinstd_1_1basic__string__msg.html#a72842f64e4015027811f4f8bd36b86ee">More...</a><br /></td></tr>
<tr class="separator:a72842f64e4015027811f4f8bd36b86ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b20861e7b0a943c80774b36f77924b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#a0b20861e7b0a943c80774b36f77924b9">basic_string_msg</a> (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)</td></tr>
<tr class="memdesc:a0b20861e7b0a943c80774b36f77924b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style. <a href="classwinstd_1_1basic__string__msg.html#a0b20861e7b0a943c80774b36f77924b9">More...</a><br /></td></tr>
<tr class="memdesc:a0b20861e7b0a943c80774b36f77924b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. <a href="classwinstd_1_1basic__string__msg.html#a0b20861e7b0a943c80774b36f77924b9">More...</a><br /></td></tr>
<tr class="separator:a0b20861e7b0a943c80774b36f77924b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fe77c26d3e41426fae90d6255455403"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#a3fe77c26d3e41426fae90d6255455403">basic_string_msg</a> (DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)</td></tr>
<tr class="memdesc:a3fe77c26d3e41426fae90d6255455403"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style. <a href="classwinstd_1_1basic__string__msg.html#a3fe77c26d3e41426fae90d6255455403">More...</a><br /></td></tr>
<tr class="memdesc:a3fe77c26d3e41426fae90d6255455403"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. <a href="classwinstd_1_1basic__string__msg.html#a3fe77c26d3e41426fae90d6255455403">More...</a><br /></td></tr>
<tr class="separator:a3fe77c26d3e41426fae90d6255455403"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee54bb91aa476ab3e7cd7fd118becf56"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#aee54bb91aa476ab3e7cd7fd118becf56">basic_string_msg</a> (DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)</td></tr>
<tr class="memdesc:aee54bb91aa476ab3e7cd7fd118becf56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style. <a href="classwinstd_1_1basic__string__msg.html#aee54bb91aa476ab3e7cd7fd118becf56">More...</a><br /></td></tr>
<tr class="memdesc:aee54bb91aa476ab3e7cd7fd118becf56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. <a href="classwinstd_1_1basic__string__msg.html#aee54bb91aa476ab3e7cd7fd118becf56">More...</a><br /></td></tr>
<tr class="separator:aee54bb91aa476ab3e7cd7fd118becf56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Initializing string using template in memory</div></td></tr>
<tr class="memitem:a736a3e3559471ede3f8b7144ed908c46"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#a736a3e3559471ede3f8b7144ed908c46">basic_string_msg</a> (const _Elem *format,...)</td></tr>
<tr class="memdesc:a736a3e3559471ede3f8b7144ed908c46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style template. <a href="classwinstd_1_1basic__string__msg.html#a736a3e3559471ede3f8b7144ed908c46">More...</a><br /></td></tr>
<tr class="memdesc:a736a3e3559471ede3f8b7144ed908c46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style template. <a href="classwinstd_1_1basic__string__msg.html#a736a3e3559471ede3f8b7144ed908c46">More...</a><br /></td></tr>
<tr class="separator:a736a3e3559471ede3f8b7144ed908c46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Initializing string using template in resources</div></td></tr>
<tr class="memitem:a9203b643c2070c1954c595e5c6e519d5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#a9203b643c2070c1954c595e5c6e519d5">basic_string_msg</a> (HINSTANCE hInstance, UINT nFormatID,...)</td></tr>
<tr class="memdesc:a9203b643c2070c1954c595e5c6e519d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style template in resources. <a href="classwinstd_1_1basic__string__msg.html#a9203b643c2070c1954c595e5c6e519d5">More...</a><br /></td></tr>
<tr class="memdesc:a9203b643c2070c1954c595e5c6e519d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style template in resources. <a href="classwinstd_1_1basic__string__msg.html#a9203b643c2070c1954c595e5c6e519d5">More...</a><br /></td></tr>
<tr class="separator:a9203b643c2070c1954c595e5c6e519d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6225c3a78cad401124dd7cafdd95ad31"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1basic__string__msg.html#a6225c3a78cad401124dd7cafdd95ad31">basic_string_msg</a> (HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)</td></tr>
<tr class="memdesc:a6225c3a78cad401124dd7cafdd95ad31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code>FormatMessage()</code> style template in resources. <a href="classwinstd_1_1basic__string__msg.html#a6225c3a78cad401124dd7cafdd95ad31">More...</a><br /></td></tr>
<tr class="memdesc:a6225c3a78cad401124dd7cafdd95ad31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style template in resources. <a href="classwinstd_1_1basic__string__msg.html#a6225c3a78cad401124dd7cafdd95ad31">More...</a><br /></td></tr>
<tr class="separator:a6225c3a78cad401124dd7cafdd95ad31"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;class _Elem, class _Traits, class _Ax&gt;<br />
class winstd::basic_string_msg&lt; _Elem, _Traits, _Ax &gt;</div><p >Base template class to support string formatting using <code>FormatMessage()</code> style templates. </p>
class winstd::basic_string_msg&lt; _Elem, _Traits, _Ax &gt;</div><p >Base template class to support string formatting using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style templates. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a736a3e3559471ede3f8b7144ed908c46" name="a736a3e3559471ede3f8b7144ed908c46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a736a3e3559471ede3f8b7144ed908c46">&#9670;&nbsp;</a></span>basic_string_msg() <span class="overload">[1/7]</span></h2>
@ -151,10 +151,10 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style template. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style template. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>String template using <code>FormatMessage()</code> style </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>String template using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style </td></tr>
</table>
</dd>
</dl>
@ -203,11 +203,11 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style template in resources. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style template in resources. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">hInstance</td><td>Resource module handle </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nFormatID</td><td>Resource ID of the string template using <code>FormatMessage()</code> style </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nFormatID</td><td>Resource ID of the string template using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style </td></tr>
</table>
</dd>
</dl>
@ -262,12 +262,12 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style template in resources. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style template in resources. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">hInstance</td><td>Resource module handle </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">wLanguageID</td><td>Resource language </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nFormatID</td><td>Resource ID of the string template using <code>FormatMessage()</code> style </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nFormatID</td><td>Resource ID of the string template using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style </td></tr>
</table>
</dd>
</dl>
@ -328,7 +328,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351.aspx">FormatMessage function</a> </dd></dl>
</div>
@ -387,7 +387,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351.aspx">FormatMessage function</a> </dd></dl>
</div>
@ -434,7 +434,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351.aspx">FormatMessage function</a> </dd></dl>
</div>
@ -481,7 +481,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</table>
</div><div class="memdoc">
<p>Initializes a new string and formats its contents using <code>FormatMessage()</code> style. </p>
<p>Initializes a new string and formats its contents using <code><a class="el" href="group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623" title="Formats a message string.">FormatMessage()</a></code> style. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351.aspx">FormatMessage function</a> </dd></dl>
</div>
@ -492,7 +492,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -79,7 +79,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -267,7 +267,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -113,7 +113,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -368,7 +368,7 @@ static const BSTR&#160;</td><td class="memItemRight" valign="bottom"><b>invalid<
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -109,7 +109,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -325,7 +325,7 @@ static const PCCERT_CHAIN_CONTEXT&#160;</td><td class="memItemRight" valign="bot
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -115,7 +115,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -577,7 +577,7 @@ static const PCCERT_CONTEXT&#160;</td><td class="memItemRight" valign="bottom"><
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -100,7 +100,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -253,7 +253,7 @@ static const HCERTSTORE&#160;</td><td class="memItemRight" valign="bottom"><b>in
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -81,7 +81,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -236,7 +236,7 @@ HRESULT&#160;</td><td class="memItemRight" valign="bottom"><b>m_result</b></td><
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -113,7 +113,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -451,7 +451,7 @@ template&lt;class _Other &gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -83,7 +83,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -221,7 +221,7 @@ typedef HRESULT&#160;</td><td class="memItemRight" valign="bottom"><b>error_type
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -80,7 +80,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -172,7 +172,7 @@ PHANDLER_ROUTINE&#160;</td><td class="memItemRight" valign="bottom"><b>m_handler
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -80,7 +80,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -193,7 +193,7 @@ CRITICAL_SECTION&#160;</td><td class="memItemRight" valign="bottom"><b>m_data</b
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -109,7 +109,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -325,7 +325,7 @@ static const HCRYPTHASH&#160;</td><td class="memItemRight" valign="bottom"><b>in
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -110,7 +110,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -380,7 +380,7 @@ static const HCRYPTKEY&#160;</td><td class="memItemRight" valign="bottom"><b>inv
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -100,7 +100,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -251,7 +251,7 @@ static const HCRYPTPROV&#160;</td><td class="memItemRight" valign="bottom"><b>in
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -86,7 +86,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -136,7 +136,7 @@ BYTE *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> () noexcep
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -100,7 +100,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -250,7 +250,7 @@ static const HDC&#160;</td><td class="memItemRight" valign="bottom"><b>invalid</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -81,7 +81,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -208,7 +208,7 @@ HGDIOBJ&#160;</td><td class="memItemRight" valign="bottom"><b>m_orig</b></td></t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -108,7 +108,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -545,7 +545,7 @@ template&lt;class T , T INVAL&gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -83,7 +83,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -173,7 +173,7 @@ Public Member Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:52 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>

View File

@ -80,7 +80,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -180,7 +180,7 @@ Public Member Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -79,7 +79,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -241,7 +241,7 @@ Public Member Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -111,7 +111,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -352,7 +352,7 @@ static const EapPacket *&#160;</td><td class="memItemRight" valign="bottom"><b>i
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -102,7 +102,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -298,7 +298,7 @@ typedef DWORD&#160;</td><td class="memItemRight" valign="bottom"><b>error_type</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -88,7 +88,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -533,7 +533,7 @@ template&lt;class _Elem , class _Traits , class _Ax &gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -85,7 +85,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -131,7 +131,7 @@ EVENT_DATA_DESCRIPTOR&#160;</td><td class="memItemRight" valign="bottom"><b>m_fn
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -86,7 +86,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -136,7 +136,7 @@ class winstd::event_fn_auto_ret&lt; T &gt;</div><p >Helper template to write an
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -100,7 +100,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -251,7 +251,7 @@ static const HANDLE&#160;</td><td class="memItemRight" valign="bottom"><b>invali
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -108,7 +108,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -680,7 +680,7 @@ static const REGHANDLE&#160;</td><td class="memItemRight" valign="bottom"><b>inv
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -88,7 +88,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -524,7 +524,7 @@ Protected Member Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -111,7 +111,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -684,7 +684,7 @@ static const TRACEHANDLE&#160;</td><td class="memItemRight" valign="bottom"><b>i
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -100,7 +100,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

View File

@ -251,7 +251,7 @@ static const TRACEHANDLE&#160;</td><td class="memItemRight" valign="bottom"><b>i
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2022 15:02:05 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
Generated on Mon Mar 7 2022 09:10:53 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>

Some files were not shown because too many files have changed in this diff Show More