From 93948ce0a8fb9cb247d18cee9f00a8e3e8fdd519 Mon Sep 17 00:00:00 2001 From: rozmansi Date: Mon, 17 Oct 2022 07:17:21 +0000 Subject: [PATCH] deploy: 322ada3dd5aaac2660f780c6b63c968a7d7fd721 --- _c_o_m_8h_source.html | 13 +- _common_8h_source.html | 2 +- _cred_8h_source.html | 2 +- _crypt_8h_source.html | 2 +- _e_a_p_8h_source.html | 2 +- _e_t_w_8h_source.html | 2 +- _g_d_i_8h_source.html | 2 +- _m_s_i_8h_source.html | 2 +- _s_d_d_l_8h_source.html | 2 +- _sec_8h_source.html | 2 +- _setup_a_p_i_8h_source.html | 2 +- _shell_8h_source.html | 2 +- _w_l_a_n_8h_source.html | 2 +- _win_8h_source.html | 3714 +++++++++-------- _win_sock2_8h_source.html | 8 +- _win_trust_8h_source.html | 2 +- annotated.html | 78 +- classes.html | 23 +- classwinstd_1_1actctx__activator-members.html | 2 +- classwinstd_1_1actctx__activator.html | 2 +- classwinstd_1_1addrinfo-members.html | 2 +- classwinstd_1_1addrinfo.html | 6 +- ...winstd_1_1basic__string__guid-members.html | 2 +- classwinstd_1_1basic__string__guid.html | 2 +- ...swinstd_1_1basic__string__msg-members.html | 2 +- classwinstd_1_1basic__string__msg.html | 2 +- ...nstd_1_1basic__string__printf-members.html | 2 +- classwinstd_1_1basic__string__printf.html | 2 +- classwinstd_1_1bstr-members.html | 2 +- classwinstd_1_1bstr.html | 2 +- ...instd_1_1cert__chain__context-members.html | 2 +- classwinstd_1_1cert__chain__context.html | 2 +- classwinstd_1_1cert__context-members.html | 2 +- classwinstd_1_1cert__context.html | 2 +- classwinstd_1_1cert__store-members.html | 2 +- classwinstd_1_1cert__store.html | 2 +- classwinstd_1_1com__initializer-members.html | 2 +- classwinstd_1_1com__initializer.html | 2 +- classwinstd_1_1com__obj-members.html | 2 +- classwinstd_1_1com__obj.html | 2 +- ...winstd_1_1com__runtime__error-members.html | 2 +- classwinstd_1_1com__runtime__error.html | 2 +- ...std_1_1console__ctrl__handler-members.html | 2 +- classwinstd_1_1console__ctrl__handler.html | 2 +- classwinstd_1_1critical__section-members.html | 2 +- classwinstd_1_1critical__section.html | 2 +- classwinstd_1_1crypt__hash-members.html | 2 +- classwinstd_1_1crypt__hash.html | 2 +- classwinstd_1_1crypt__key-members.html | 2 +- classwinstd_1_1crypt__key.html | 2 +- classwinstd_1_1crypt__prov-members.html | 2 +- classwinstd_1_1crypt__prov.html | 2 +- classwinstd_1_1data__blob-members.html | 2 +- classwinstd_1_1data__blob.html | 2 +- classwinstd_1_1dc-members.html | 2 +- classwinstd_1_1dc.html | 2 +- classwinstd_1_1dc__selector-members.html | 2 +- classwinstd_1_1dc__selector.html | 2 +- classwinstd_1_1dplhandle-members.html | 2 +- classwinstd_1_1dplhandle.html | 2 +- classwinstd_1_1eap__attr-members.html | 2 +- classwinstd_1_1eap__attr.html | 2 +- ...d_1_1eap__method__info__array-members.html | 2 +- classwinstd_1_1eap__method__info__array.html | 2 +- classwinstd_1_1eap__method__prop-members.html | 2 +- classwinstd_1_1eap__method__prop.html | 2 +- classwinstd_1_1eap__packet-members.html | 2 +- classwinstd_1_1eap__packet.html | 2 +- ...winstd_1_1eap__runtime__error-members.html | 2 +- classwinstd_1_1eap__runtime__error.html | 2 +- classwinstd_1_1event__data-members.html | 2 +- classwinstd_1_1event__data.html | 2 +- classwinstd_1_1event__fn__auto-members.html | 2 +- classwinstd_1_1event__fn__auto.html | 2 +- ...instd_1_1event__fn__auto__ret-members.html | 2 +- classwinstd_1_1event__fn__auto__ret.html | 2 +- classwinstd_1_1event__log-members.html | 2 +- classwinstd_1_1event__log.html | 2 +- classwinstd_1_1event__provider-members.html | 2 +- classwinstd_1_1event__provider.html | 2 +- classwinstd_1_1event__rec-members.html | 2 +- classwinstd_1_1event__rec.html | 2 +- classwinstd_1_1event__session-members.html | 2 +- classwinstd_1_1event__session.html | 2 +- classwinstd_1_1event__trace-members.html | 2 +- classwinstd_1_1event__trace.html | 2 +- ...nstd_1_1event__trace__enabler-members.html | 2 +- classwinstd_1_1event__trace__enabler.html | 2 +- classwinstd_1_1find__file-members.html | 2 +- classwinstd_1_1find__file.html | 2 +- classwinstd_1_1gdi__handle-members.html | 2 +- classwinstd_1_1gdi__handle.html | 2 +- classwinstd_1_1handle-members.html | 2 +- classwinstd_1_1handle.html | 2 +- classwinstd_1_1heap-members.html | 2 +- classwinstd_1_1heap.html | 2 +- classwinstd_1_1heap__allocator-members.html | 2 +- classwinstd_1_1heap__allocator.html | 2 +- classwinstd_1_1impersonator-members.html | 93 + classwinstd_1_1impersonator.html | 161 + classwinstd_1_1impersonator.png | Bin 0 -> 993 bytes classwinstd_1_1library-members.html | 2 +- classwinstd_1_1library.html | 2 +- ...winstd_1_1num__runtime__error-members.html | 2 +- classwinstd_1_1num__runtime__error.html | 2 +- ...instd_1_1process__information-members.html | 2 +- classwinstd_1_1process__information.html | 2 +- classwinstd_1_1ref__unique__ptr-members.html | 2 +- classwinstd_1_1ref__unique__ptr.html | 2 +- ...01___ty_0f_0e_00_01___dx_01_4-members.html | 2 +- ...__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html | 2 +- classwinstd_1_1reg__key-members.html | 2 +- classwinstd_1_1reg__key.html | 2 +- ...nstd_1_1sanitizing__allocator-members.html | 2 +- classwinstd_1_1sanitizing__allocator.html | 2 +- classwinstd_1_1sanitizing__blob-members.html | 2 +- classwinstd_1_1sanitizing__blob.html | 2 +- classwinstd_1_1sc__handle-members.html | 2 +- classwinstd_1_1sc__handle.html | 2 +- classwinstd_1_1sec__buffer__desc-members.html | 2 +- classwinstd_1_1sec__buffer__desc.html | 2 +- classwinstd_1_1sec__context-members.html | 2 +- classwinstd_1_1sec__context.html | 2 +- classwinstd_1_1sec__credentials-members.html | 2 +- classwinstd_1_1sec__credentials.html | 2 +- ...winstd_1_1sec__runtime__error-members.html | 2 +- classwinstd_1_1sec__runtime__error.html | 2 +- ...instd_1_1security__attributes-members.html | 2 +- classwinstd_1_1security__attributes.html | 2 +- classwinstd_1_1security__id-members.html | 2 +- classwinstd_1_1security__id.html | 2 +- ..._1_1setup__device__info__list-members.html | 2 +- classwinstd_1_1setup__device__info__list.html | 2 +- ...__driver__info__list__builder-members.html | 2 +- ...1_1setup__driver__info__list__builder.html | 2 +- classwinstd_1_1string__guid-members.html | 2 +- classwinstd_1_1string__guid.html | 2 +- ...instd_1_1system__impersonator-members.html | 94 + classwinstd_1_1system__impersonator.html | 136 + classwinstd_1_1system__impersonator.png | Bin 0 -> 711 bytes ...swinstd_1_1user__impersonator-members.html | 8 +- classwinstd_1_1user__impersonator.html | 66 +- classwinstd_1_1user__impersonator.png | Bin 0 -> 684 bytes classwinstd_1_1variant-members.html | 2 +- classwinstd_1_1variant.html | 2 +- classwinstd_1_1vmemory-members.html | 2 +- classwinstd_1_1vmemory.html | 2 +- classwinstd_1_1waddrinfo-members.html | 2 +- classwinstd_1_1waddrinfo.html | 6 +- classwinstd_1_1win__handle-members.html | 2 +- classwinstd_1_1win__handle.html | 2 +- ...winstd_1_1win__runtime__error-members.html | 2 +- classwinstd_1_1win__runtime__error.html | 2 +- classwinstd_1_1window__dc-members.html | 2 +- classwinstd_1_1window__dc.html | 2 +- classwinstd_1_1wintrust-members.html | 2 +- classwinstd_1_1wintrust.html | 2 +- classwinstd_1_1wlan__handle-members.html | 2 +- classwinstd_1_1wlan__handle.html | 2 +- ...winstd_1_1ws2__runtime__error-members.html | 2 +- classwinstd_1_1ws2__runtime__error.html | 2 +- classwinstd_1_1wstring__guid-members.html | 2 +- classwinstd_1_1wstring__guid.html | 2 +- dir_4be4f7b278e009bf0f1906cf31fb73bd.html | 2 +- dir_6f50bb204833d887b928571856c82fbe.html | 2 +- dir_d44c64559bbebec7f509842c48db8b23.html | 2 +- files.html | 2 +- functions.html | 2 +- functions_a.html | 2 +- functions_b.html | 2 +- functions_c.html | 2 +- functions_d.html | 2 +- functions_e.html | 2 +- functions_f.html | 2 +- functions_func.html | 2 +- functions_func_b.html | 2 +- functions_func_c.html | 2 +- functions_func_d.html | 2 +- functions_func_e.html | 2 +- functions_func_f.html | 2 +- functions_func_h.html | 2 +- functions_func_i.html | 3 +- functions_func_l.html | 2 +- functions_func_m.html | 2 +- functions_func_n.html | 2 +- functions_func_o.html | 5 +- functions_func_p.html | 2 +- functions_func_q.html | 2 +- functions_func_r.html | 2 +- functions_func_s.html | 5 +- functions_func_t.html | 2 +- functions_func_u.html | 2 +- functions_func_v.html | 2 +- functions_func_w.html | 2 +- functions_func_~.html | 4 +- functions_h.html | 2 +- functions_i.html | 3 +- functions_l.html | 2 +- functions_m.html | 4 +- functions_n.html | 2 +- functions_o.html | 5 +- functions_p.html | 2 +- functions_q.html | 2 +- functions_r.html | 2 +- functions_s.html | 3 +- functions_t.html | 2 +- functions_type.html | 2 +- functions_u.html | 2 +- functions_v.html | 2 +- functions_vars.html | 4 +- functions_w.html | 2 +- functions_~.html | 4 +- group___setup_a_p_i.html | 2 +- group___win_sock2_a_p_i.html | 8 +- group___win_std_c_o_m.html | 59 +- group___win_std_cred_a_p_i.html | 2 +- group___win_std_crypto_a_p_i.html | 2 +- group___win_std_e_a_p_a_p_i.html | 2 +- group___win_std_e_t_w_a_p_i.html | 2 +- group___win_std_exceptions.html | 2 +- group___win_std_gdi_a_p_i.html | 2 +- group___win_std_general.html | 2 +- group___win_std_m_s_i_a_p_i.html | 2 +- group___win_std_mem_sanitize.html | 2 +- group___win_std_s_d_d_l.html | 2 +- group___win_std_security_a_p_i.html | 2 +- group___win_std_shell_w_a_p_i.html | 2 +- group___win_std_str_format.html | 2 +- group___win_std_sys_handles.html | 2 +- group___win_std_w_l_a_n_a_p_i.html | 2 +- group___win_std_win_a_p_i.html | 170 +- group___win_trust_a_p_i.html | 2 +- hierarchy.html | 64 +- index.html | 2 +- md__s_e_c_u_r_i_t_y.html | 2 +- modules.html | 2 +- pages.html | 2 +- pch_8h_source.html | 2 +- search/all_11.js | 13 +- search/all_16.js | 28 +- search/all_3.js | 82 +- search/all_4.js | 3 +- search/all_9.js | 5 +- search/all_b.js | 2 +- search/all_d.js | 44 +- search/classes_10.js | 13 + search/classes_8.js | 4 +- search/classes_9.js | 8 +- search/classes_a.js | 6 +- search/classes_b.js | 5 +- search/classes_c.js | 16 +- search/classes_d.js | 16 +- search/classes_e.js | 5 +- search/classes_f.js | 12 +- search/functions_10.js | 3 +- search/functions_15.js | 28 +- search/functions_2.js | 64 +- search/functions_3.js | 3 +- search/functions_8.js | 3 +- search/functions_c.js | 40 +- search/searchdata.js | 2 +- search/variables_2.js | 2 +- ..._1_1_co_task_mem_free__delete-members.html | 2 +- ...ctwinstd_1_1_co_task_mem_free__delete.html | 2 +- ...twinstd_1_1_cred_free__delete-members.html | 2 +- structwinstd_1_1_cred_free__delete.html | 2 +- ...ree__delete_3_01___ty_0f_0e_4-members.html | 2 +- ...1_cred_free__delete_3_01___ty_0f_0e_4.html | 2 +- ...t_peer_free_eap_error__delete-members.html | 2 +- ..._eap_host_peer_free_eap_error__delete.html | 2 +- ...eer_free_error_memory__delete-members.html | 2 +- ...p_host_peer_free_error_memory__delete.html | 2 +- ...host_peer_free_memory__delete-members.html | 2 +- ...1_1_eap_host_peer_free_memory__delete.html | 2 +- ...r_free_runtime_memory__delete-members.html | 2 +- ...host_peer_free_runtime_memory__delete.html | 2 +- ...winstd_1_1_local_free__delete-members.html | 2 +- structwinstd_1_1_local_free__delete.html | 2 +- ...ree__delete_3_01___ty_0f_0e_4-members.html | 2 +- ..._local_free__delete_3_01___ty_0f_0e_4.html | 2 +- ..._1_unmap_view_of_file__delete-members.html | 2 +- ...winstd_1_1_unmap_view_of_file__delete.html | 2 +- ...ile__delete_3_01___ty_0f_0e_4-members.html | 2 +- ...iew_of_file__delete_3_01___ty_0f_0e_4.html | 2 +- ..._1_1_wlan_free_memory__delete-members.html | 2 +- ...ctwinstd_1_1_wlan_free_memory__delete.html | 2 +- ...ory__delete_3_01___ty_0f_0e_4-members.html | 2 +- ...free_memory__delete_3_01___ty_0f_0e_4.html | 2 +- ..._1_1heap__allocator_1_1rebind-members.html | 2 +- ...ctwinstd_1_1heap__allocator_1_1rebind.html | 2 +- ...nitizing__allocator_1_1rebind-members.html | 2 +- ...td_1_1sanitizing__allocator_1_1rebind.html | 2 +- 292 files changed, 3236 insertions(+), 2394 deletions(-) create mode 100644 classwinstd_1_1impersonator-members.html create mode 100644 classwinstd_1_1impersonator.html create mode 100644 classwinstd_1_1impersonator.png create mode 100644 classwinstd_1_1system__impersonator-members.html create mode 100644 classwinstd_1_1system__impersonator.html create mode 100644 classwinstd_1_1system__impersonator.png create mode 100644 classwinstd_1_1user__impersonator.png create mode 100644 search/classes_10.js diff --git a/_c_o_m_8h_source.html b/_c_o_m_8h_source.html index 744cde68..18911a75 100644 --- a/_c_o_m_8h_source.html +++ b/_c_o_m_8h_source.html @@ -797,6 +797,16 @@ $(function() {
1081 return hr;
1082}
1083
+
1089template <class T>
+
1090static _Check_return_ HRESULT CoGetObject(_In_ LPCWSTR pszName, _In_opt_ BIND_OPTS* pBindOptions, _In_ REFIID riid, _Inout_ winstd::com_obj<T>& v)
+
1091{
+
1092 T* ppv;
+
1093 HRESULT hr = CoGetObject(pszName, pBindOptions, riid, (LPVOID*)&ppv);
+
1094 if (SUCCEEDED(hr))
+
1095 v.attach(ppv);
+
1096 return hr;
+
1097}
+
1098
BSTR string wrapper.
Definition: COM.h:179
bstr(LPCOLESTR src) noexcept
Constructs BSTR from OLE string.
Definition: COM.h:186
virtual ~bstr()
Destroys the string.
Definition: COM.h:213
@@ -889,6 +899,7 @@ $(function() {
variant & operator=(IDispatch *pSrc)
Copy from IDispatch.
Definition: COM.h:714
variant & operator=(unsigned long *pnSrc) noexcept
Copy from unsigned long reference.
Definition: COM.h:818
variant & operator=(const VARIANT &varSrc)
Copy from another VARIANT.
Definition: COM.h:493
+
static _Check_return_ HRESULT CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, winstd::com_obj< T > &v)
Converts a display name into a moniker that identifies the object named, and then binds to the object...
Definition: COM.h:1090
static _Check_return_ HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, winstd::com_obj< T > &v)
Creates and default-initializes a single object of the class associated with a specified CLSID.
Definition: COM.h:1075
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:66
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition: Common.h:74
@@ -900,7 +911,7 @@ $(function() { diff --git a/_common_8h_source.html b/_common_8h_source.html index 56f1f746..4bfe54c6 100644 --- a/_common_8h_source.html +++ b/_common_8h_source.html @@ -1021,7 +1021,7 @@ $(function() { diff --git a/_cred_8h_source.html b/_cred_8h_source.html index 108e7560..b45b864a 100644 --- a/_cred_8h_source.html +++ b/_cred_8h_source.html @@ -268,7 +268,7 @@ $(function() { diff --git a/_crypt_8h_source.html b/_crypt_8h_source.html index 415a815c..837d1551 100644 --- a/_crypt_8h_source.html +++ b/_crypt_8h_source.html @@ -739,7 +739,7 @@ $(function() { diff --git a/_e_a_p_8h_source.html b/_e_a_p_8h_source.html index 63149e0a..c8dab241 100644 --- a/_e_a_p_8h_source.html +++ b/_e_a_p_8h_source.html @@ -630,7 +630,7 @@ $(function() { diff --git a/_e_t_w_8h_source.html b/_e_t_w_8h_source.html index 73c62dad..31cf4482 100644 --- a/_e_t_w_8h_source.html +++ b/_e_t_w_8h_source.html @@ -996,7 +996,7 @@ $(function() { diff --git a/_g_d_i_8h_source.html b/_g_d_i_8h_source.html index cc159030..344f1cff 100644 --- a/_g_d_i_8h_source.html +++ b/_g_d_i_8h_source.html @@ -229,7 +229,7 @@ $(function() { diff --git a/_m_s_i_8h_source.html b/_m_s_i_8h_source.html index d1a050c3..ea0d0931 100644 --- a/_m_s_i_8h_source.html +++ b/_m_s_i_8h_source.html @@ -384,7 +384,7 @@ $(function() { diff --git a/_s_d_d_l_8h_source.html b/_s_d_d_l_8h_source.html index 3215ce5c..3bf1ad83 100644 --- a/_s_d_d_l_8h_source.html +++ b/_s_d_d_l_8h_source.html @@ -174,7 +174,7 @@ $(function() { diff --git a/_sec_8h_source.html b/_sec_8h_source.html index 895cb549..2f22ca6f 100644 --- a/_sec_8h_source.html +++ b/_sec_8h_source.html @@ -376,7 +376,7 @@ $(function() { diff --git a/_setup_a_p_i_8h_source.html b/_setup_a_p_i_8h_source.html index 14d0f651..b77a85ff 100644 --- a/_setup_a_p_i_8h_source.html +++ b/_setup_a_p_i_8h_source.html @@ -162,7 +162,7 @@ $(function() { diff --git a/_shell_8h_source.html b/_shell_8h_source.html index d61c60f1..47c4620d 100644 --- a/_shell_8h_source.html +++ b/_shell_8h_source.html @@ -114,7 +114,7 @@ $(function() { diff --git a/_w_l_a_n_8h_source.html b/_w_l_a_n_8h_source.html index e2613059..22eab23e 100644 --- a/_w_l_a_n_8h_source.html +++ b/_w_l_a_n_8h_source.html @@ -216,7 +216,7 @@ $(function() { diff --git a/_win_8h_source.html b/_win_8h_source.html index ef3aec9e..cde018c9 100644 --- a/_win_8h_source.html +++ b/_win_8h_source.html @@ -87,1780 +87,1875 @@ $(function() {
9#pragma once
10
11#include "Common.h"
-
12#include <string>
-
13#include <vector>
-
14
-
15#pragma warning(push)
-
16#pragma warning(disable: 4505) // Don't warn on unused code
-
17
-
20
-
22template<class _Traits, class _Ax>
-
23static DWORD GetModuleFileNameA(_In_opt_ HMODULE hModule, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
24{
-
25 assert(0); // TODO: Test this code.
-
26
-
27 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
-
28
-
29 // Try with stack buffer first.
-
30 DWORD dwResult = ::GetModuleFileNameA(hModule, szStackBuffer, _countof(szStackBuffer));
-
31 if (dwResult < _countof(szStackBuffer)) {
-
32 // Copy from stack.
-
33 sValue.assign(szStackBuffer, dwResult);
-
34 return dwResult;
-
35 } else {
-
36 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(char);; dwCapacity *= 2) {
-
37 // Allocate on heap and retry.
-
38 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
-
39 dwResult = ::GetModuleFileNameA(hModule, szBuffer.get(), dwCapacity);
-
40 if (dwResult < dwCapacity) {
-
41 sValue.assign(szBuffer.get(), dwResult);
-
42 return dwResult;
-
43 }
-
44 }
-
45 }
-
46}
-
47
-
53template<class _Traits, class _Ax>
-
54static DWORD GetModuleFileNameW(_In_opt_ HMODULE hModule, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
55{
-
56 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
57
-
58 // Try with stack buffer first.
-
59 DWORD dwResult = ::GetModuleFileNameW(hModule, szStackBuffer, _countof(szStackBuffer));
-
60 if (dwResult < _countof(szStackBuffer)) {
-
61 // Copy from stack.
-
62 sValue.assign(szStackBuffer, dwResult);
-
63 return dwResult;
-
64 } else {
-
65 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t);; dwCapacity *= 2) {
-
66 // Allocate on heap and retry.
-
67 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
-
68 dwResult = ::GetModuleFileNameW(hModule, szBuffer.get(), dwCapacity);
-
69 if (dwResult < dwCapacity) {
-
70 sValue.assign(szBuffer.get(), dwResult);
-
71 return dwResult;
-
72 }
-
73 }
-
74 }
-
75}
-
76
-
78template<class _Traits, class _Ax>
-
79static _Success_(return != 0) int GetWindowTextA(_In_ HWND hWnd, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
80{
-
81 assert(0); // TODO: Test this code.
-
82
-
83 int iResult;
-
84
-
85 // Query the final string length first.
-
86 iResult = ::GetWindowTextLengthA(hWnd);
-
87 if (iResult > 0) {
-
88 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(char)) {
-
89 // Read string data to stack.
-
90 char szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
-
91 iResult = ::GetWindowTextA(hWnd, szBuffer, _countof(szBuffer));
-
92 sValue.assign(szBuffer, iResult);
-
93 } else {
-
94 // Allocate buffer on heap and read the string data into it.
-
95 std::unique_ptr<char[]> szBuffer(new char[++iResult]);
-
96 iResult = ::GetWindowTextA(hWnd, szBuffer.get(), iResult);
-
97 sValue.assign(szBuffer.get(), iResult);
-
98 }
-
99 return iResult;
-
100 }
-
101
-
102 sValue.clear();
-
103 return 0;
-
104}
-
105
-
111template<class _Traits, class _Ax>
-
112static _Success_(return != 0) int GetWindowTextW(_In_ HWND hWnd, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
113{
-
114 assert(0); // TODO: Test this code.
-
115
-
116 int iResult;
-
117
-
118 // Query the final string length first.
-
119 iResult = ::GetWindowTextLengthW(hWnd);
-
120 if (iResult > 0) {
-
121 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)) {
-
122 // Read string data to stack.
-
123 wchar_t szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
124 iResult = ::GetWindowTextW(hWnd, szBuffer, _countof(szBuffer));
-
125 sValue.assign(szBuffer, iResult);
-
126 } else {
-
127 // Allocate buffer on heap and read the string data into it.
-
128 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++iResult]);
-
129 iResult = ::GetWindowTextW(hWnd, szBuffer.get(), iResult);
-
130 sValue.assign(szBuffer.get(), iResult);
-
131 }
-
132 return iResult;
-
133 }
-
134
-
135 sValue.clear();
-
136 return 0;
-
137}
-
138
-
140template<class _Ty, class _Ax>
-
141static _Success_(return != 0) BOOL GetFileVersionInfoA(_In_z_ LPCSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
-
142{
-
143 assert(0); // TODO: Test this code.
-
144
-
145 // Get version info size.
-
146 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeA(lptstrFilename, &dwHandle);
-
147 if (dwVerInfoSize != 0) {
-
148 // Read version info.
-
149 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
150 return ::GetFileVersionInfoA(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
-
151 } else
-
152 return FALSE;
-
153}
-
154
-
160template<class _Ty, class _Ax>
-
161static _Success_(return != 0) BOOL GetFileVersionInfoW(_In_z_ LPCWSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
-
162{
-
163 assert(0); // TODO: Test this code.
-
164
-
165 // Get version info size.
-
166 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeW(lptstrFilename, &dwHandle);
-
167 if (dwVerInfoSize != 0) {
-
168 // Read version info.
-
169 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
170 return ::GetFileVersionInfoW(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
-
171 } else
-
172 return FALSE;
-
173}
-
174
-
176template<class _Traits, class _Ax>
-
177static _Success_(return != 0) DWORD ExpandEnvironmentStringsA(_In_z_ LPCSTR lpSrc, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
178{
-
179 assert(0); // TODO: Test this code.
-
180
-
181 for (DWORD dwSizeOut = (DWORD)strlen(lpSrc) + 0x100;;) {
-
182 DWORD dwSizeIn = dwSizeOut;
-
183 std::unique_ptr<char[]> szBuffer(new char[(size_t)dwSizeIn + 2]); // Note: ANSI version requires one extra char.
-
184 dwSizeOut = ::ExpandEnvironmentStringsA(lpSrc, szBuffer.get(), dwSizeIn);
-
185 if (dwSizeOut == 0) {
-
186 // Error or zero-length input.
-
187 break;
-
188 } else if (dwSizeOut <= dwSizeIn) {
-
189 // The buffer was sufficient.
-
190 sValue.assign(szBuffer.get(), dwSizeOut - 1);
-
191 return dwSizeOut;
-
192 }
-
193 }
-
194
-
195 sValue.clear();
-
196 return 0;
-
197}
-
198
-
204template<class _Traits, class _Ax>
-
205static _Success_(return != 0) DWORD ExpandEnvironmentStringsW(_In_z_ LPCWSTR lpSrc, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
206{
-
207 for (DWORD dwSizeOut = (DWORD)wcslen(lpSrc) + 0x100;;) {
-
208 DWORD dwSizeIn = dwSizeOut;
-
209 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(size_t)dwSizeIn + 1]);
-
210 dwSizeOut = ::ExpandEnvironmentStringsW(lpSrc, szBuffer.get(), dwSizeIn);
-
211 if (dwSizeOut == 0) {
-
212 // Error or zero-length input.
-
213 break;
-
214 } else if (dwSizeOut <= dwSizeIn) {
-
215 // The buffer was sufficient.
-
216 sValue.assign(szBuffer.get(), dwSizeOut - 1);
-
217 return dwSizeOut;
-
218 }
-
219 }
-
220
-
221 sValue.clear();
-
222 return 0;
-
223}
-
224
-
226template<class _Traits, class _Ax>
-
227static VOID GuidToStringA(_In_ LPCGUID lpGuid, _Out_ std::basic_string<char, _Traits, _Ax> &str) noexcept
-
228{
-
229 assert(0); // TODO: Test this code.
-
230
-
231 sprintf(str, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
-
232 lpGuid->Data1,
-
233 lpGuid->Data2,
-
234 lpGuid->Data3,
-
235 lpGuid->Data4[0], lpGuid->Data4[1],
-
236 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
-
237}
-
238
-
245template<class _Traits, class _Ax>
-
246static VOID GuidToStringW(_In_ LPCGUID lpGuid, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str) noexcept
-
247{
-
248 assert(0); // TODO: Test this code.
-
249
-
250 sprintf(str, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
-
251 lpGuid->Data1,
-
252 lpGuid->Data2,
-
253 lpGuid->Data3,
-
254 lpGuid->Data4[0], lpGuid->Data4[1],
-
255 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
-
256}
-
257
-
259#ifdef _UNICODE
-
260#define GuidToString GuidToStringW
-
261#else
-
262#define GuidToString GuidToStringA
-
263#endif
-
264
-
266static _Success_(return) BOOL StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL) noexcept
-
267{
-
268 GUID g;
-
269 LPSTR lpszEnd;
-
270 unsigned long ulTmp;
-
271 unsigned long long ullTmp;
-
272
-
273 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
-
274 lpszGuid++;
-
275
-
276 g.Data1 = strtoul(lpszGuid, &lpszEnd, 16);
-
277 if (errno == ERANGE) return FALSE;
-
278 lpszGuid = lpszEnd;
-
279
-
280 if (*lpszGuid != '-') return FALSE;
-
281 lpszGuid++;
-
282
-
283 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
-
284 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
285 g.Data2 = static_cast<unsigned short>(ulTmp);
-
286 lpszGuid = lpszEnd;
-
287
-
288 if (*lpszGuid != '-') return FALSE;
-
289 lpszGuid++;
-
290
-
291 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
-
292 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
293 g.Data3 = static_cast<unsigned short>(ulTmp);
-
294 lpszGuid = lpszEnd;
-
295
-
296 if (*lpszGuid != '-') return FALSE;
-
297 lpszGuid++;
-
298
-
299 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
-
300 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
301 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
-
302 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
-
303 lpszGuid = lpszEnd;
-
304
-
305 if (*lpszGuid != '-') return FALSE;
-
306 lpszGuid++;
-
307
-
308 ullTmp = _strtoui64(lpszGuid, &lpszEnd, 16);
-
309 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
-
310 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
-
311 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
-
312 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
-
313 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
-
314 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
-
315 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
-
316 lpszGuid = lpszEnd;
-
317
-
318 if (*lpszGuid != '}') return FALSE;
-
319 lpszGuid++;
-
320
-
321 if (lpszGuidEnd)
-
322 *lpszGuidEnd = lpszGuid;
-
323
-
324 *lpGuid = g;
-
325 return TRUE;
-
326}
-
327
-
339static _Success_(return) BOOL StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL) noexcept
-
340{
-
341 GUID g;
-
342 LPWSTR lpszEnd;
-
343 unsigned long ulTmp;
-
344 unsigned long long ullTmp;
-
345
-
346 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
-
347 lpszGuid++;
-
348
-
349 g.Data1 = wcstoul(lpszGuid, &lpszEnd, 16);
-
350 if (errno == ERANGE) return FALSE;
-
351 lpszGuid = lpszEnd;
-
352
-
353 if (*lpszGuid != '-') return FALSE;
-
354 lpszGuid++;
-
355
-
356 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
-
357 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
358 g.Data2 = static_cast<unsigned short>(ulTmp);
-
359 lpszGuid = lpszEnd;
-
360
-
361 if (*lpszGuid != '-') return FALSE;
-
362 lpszGuid++;
-
363
-
364 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
-
365 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
366 g.Data3 = static_cast<unsigned short>(ulTmp);
-
367 lpszGuid = lpszEnd;
-
368
-
369 if (*lpszGuid != '-') return FALSE;
-
370 lpszGuid++;
-
371
-
372 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
-
373 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
374 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
-
375 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
-
376 lpszGuid = lpszEnd;
-
377
-
378 if (*lpszGuid != '-') return FALSE;
-
379 lpszGuid++;
-
380
-
381 ullTmp = _wcstoui64(lpszGuid, &lpszEnd, 16);
-
382 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
-
383 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
-
384 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
-
385 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
-
386 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
-
387 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
-
388 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
-
389 lpszGuid = lpszEnd;
-
390
-
391 if (*lpszGuid != '}') return FALSE;
-
392 lpszGuid++;
-
393
-
394 if (lpszGuidEnd)
-
395 *lpszGuidEnd = lpszGuid;
-
396
-
397 *lpGuid = g;
-
398 return TRUE;
-
399}
-
400
-
402#ifdef _UNICODE
-
403#define StringToGuid StringToGuidW
-
404#else
-
405#define StringToGuid StringToGuidA
-
406#endif
-
407
-
426template<class _Traits, class _Ax>
-
427static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
428{
-
429 LSTATUS lResult;
-
430 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
431 DWORD dwSize = sizeof(aStackBuffer), dwType;
-
432
-
433 // Try with stack buffer first.
-
434 lResult = ::RegQueryValueExA(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
-
435 if (lResult == ERROR_SUCCESS) {
-
436 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
437 // The value is REG_SZ or REG_MULTI_SZ.
-
438 dwSize /= sizeof(CHAR);
-
439 sValue.assign(reinterpret_cast<LPCSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
440 } else if (dwType == REG_EXPAND_SZ) {
-
441 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
-
442 if (::ExpandEnvironmentStringsA(reinterpret_cast<LPCSTR>(aStackBuffer), sValue) == 0)
-
443 lResult = ::GetLastError();
-
444 } else {
-
445 // The value is not a string type.
-
446 lResult = ERROR_INVALID_DATA;
-
447 }
-
448 } else if (lResult == ERROR_MORE_DATA) {
-
449 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
450 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
-
451 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
-
452 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
453 dwSize /= sizeof(CHAR);
-
454 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
455 }
-
456 } else if (dwType == REG_EXPAND_SZ) {
-
457 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
-
458 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
-
459 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
460 if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0)
-
461 lResult = ::GetLastError();
-
462 }
-
463 } else {
-
464 // The value is not a string type.
-
465 lResult = ERROR_INVALID_DATA;
-
466 }
-
467 }
-
468
-
469 return lResult;
-
470}
-
471
-
490template<class _Traits, class _Ax>
-
491static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
492{
-
493 LSTATUS lResult;
-
494 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
495 DWORD dwSize = sizeof(aStackBuffer), dwType;
-
496
-
497 // Try with stack buffer first.
-
498 lResult = ::RegQueryValueExW(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
-
499 if (lResult == ERROR_SUCCESS) {
-
500 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
501 // The value is REG_SZ or REG_MULTI_SZ.
-
502 dwSize /= sizeof(WCHAR);
-
503 sValue.assign(reinterpret_cast<LPCWSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCWSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
504 } else if (dwType == REG_EXPAND_SZ) {
-
505 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
-
506 if (::ExpandEnvironmentStringsW(reinterpret_cast<LPCWSTR>(aStackBuffer), sValue) == 0)
-
507 lResult = ::GetLastError();
-
508 } else {
-
509 // The value is not a string type.
-
510 lResult = ERROR_INVALID_DATA;
-
511 }
-
512 } else if (lResult == ERROR_MORE_DATA) {
-
513 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
514 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
-
515 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
-
516 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
517 dwSize /= sizeof(WCHAR);
-
518 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
519 }
-
520 } else if (dwType == REG_EXPAND_SZ) {
-
521 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
-
522 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
-
523 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
524 if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0)
-
525 lResult = ::GetLastError();
-
526 }
-
527 } else {
-
528 // The value is not a string type.
-
529 lResult = ERROR_INVALID_DATA;
-
530 }
-
531 }
-
532
-
533 return lResult;
-
534}
-
535
-
537template<class _Ty, class _Ax>
-
538static LSTATUS RegQueryValueExA(_In_ HKEY hKey, _In_opt_z_ LPCSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
-
539{
-
540 LSTATUS lResult;
-
541 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
542 DWORD dwSize = sizeof(aStackBuffer);
-
543
-
544 // Try with stack buffer first.
-
545 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
-
546 if (lResult == ERROR_SUCCESS) {
-
547 // Copy from stack buffer.
-
548 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
549 memcpy(aData.data(), aStackBuffer, dwSize);
-
550 } else if (lResult == ERROR_MORE_DATA) {
-
551 // Allocate buffer on heap and retry.
-
552 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
553 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
-
554 }
-
555
-
556 return lResult;
-
557}
-
558
-
564template<class _Ty, class _Ax>
-
565static LSTATUS RegQueryValueExW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
-
566{
-
567 LSTATUS lResult;
-
568 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
569 DWORD dwSize = sizeof(aStackBuffer);
-
570
-
571 // Try with stack buffer first.
-
572 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
-
573 if (lResult == ERROR_SUCCESS) {
-
574 // Copy from stack buffer.
-
575 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
576 memcpy(aData.data(), aStackBuffer, dwSize);
-
577 } else if (lResult == ERROR_MORE_DATA) {
-
578 // Allocate buffer on heap and retry.
-
579 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
580 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
-
581 }
-
582
-
583 return lResult;
-
584}
-
585
-
586#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
-
587
-
589template<class _Traits, class _Ax>
-
590static LSTATUS RegLoadMUIStringA(_In_ HKEY hKey, _In_opt_z_ LPCSTR pszValue, _Out_ std::basic_string<char, _Traits, _Ax> &sOut, _In_ DWORD Flags, _In_opt_z_ LPCSTR pszDirectory) noexcept
-
591{
-
592 // According to "Remarks" section in MSDN documentation of RegLoadMUIString(),
-
593 // this function is defined but not implemented as ANSI variation.
-
594 assert(0);
-
595 return ERROR_CALL_NOT_IMPLEMENTED;
-
596}
-
597
-
603template<class _Traits, class _Ax>
-
604static LSTATUS RegLoadMUIStringW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR pszValue, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sOut, _In_ DWORD Flags, _In_opt_z_ LPCWSTR pszDirectory) noexcept
-
605{
-
606 LSTATUS lResult;
-
607 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
608 DWORD dwSize;
-
609
-
610 Flags &= ~REG_MUI_STRING_TRUNCATE;
-
611
-
612 // Try with stack buffer first.
-
613 lResult = RegLoadMUIStringW(hKey, pszValue, szStackBuffer, sizeof(szStackBuffer), &dwSize, Flags, pszDirectory);
-
614 if (lResult == ERROR_SUCCESS) {
-
615 // Copy from stack buffer.
-
616 sOut.assign(szStackBuffer, wcsnlen(szStackBuffer, dwSize/sizeof(wchar_t)));
-
617 } else if (lResult == ERROR_MORE_DATA) {
-
618 // Allocate buffer on heap and retry.
-
619 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(dwSize + sizeof(wchar_t) - 1)/sizeof(wchar_t)]);
-
620 sOut.assign(szBuffer.get(), (lResult = RegLoadMUIStringW(hKey, pszValue, szBuffer.get(), dwSize, &dwSize, Flags, pszDirectory)) == ERROR_SUCCESS ? wcsnlen(szBuffer.get(), dwSize/sizeof(wchar_t)) : 0);
-
621 }
-
622
-
623 return lResult;
-
624}
-
625
-
626#endif
-
627
-
633template<class _Traits, class _Ax>
-
634static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::basic_string<char, _Traits, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
-
635{
-
636 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
637
-
638 // Try to convert to stack buffer first.
-
639 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
640 if (cch) {
-
641 // Copy from stack. Be careful not to include zero terminator.
-
642 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
643 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
644 // Query the required output size. Allocate buffer. Then convert again.
-
645 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
646 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
647 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
648 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
649 }
-
650
-
651 return cch;
-
652}
-
653
-
659template<class _Ax>
-
660static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::vector<char, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
-
661{
-
662 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
663
-
664 // Try to convert to stack buffer first.
-
665 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
666 if (cch) {
-
667 // Copy from stack.
-
668 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
669 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
670 // Query the required output size. Allocate buffer. Then convert again.
-
671 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
672 sMultiByteStr.resize(cch);
-
673 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
674 }
-
675
-
676 return cch;
-
677}
-
678
-
684template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
685static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ std::basic_string<wchar_t, _Traits1, _Ax1> sWideCharStr, _Out_ std::basic_string<char, _Traits2, _Ax2> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
-
686{
-
687 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
688
-
689 // Try to convert to stack buffer first.
-
690 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
691 if (cch) {
-
692 // Copy from stack.
-
693 sMultiByteStr.assign(szStackBuffer, cch);
-
694 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
695 // Query the required output size. Allocate buffer. Then convert again.
-
696 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
697 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
698 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
699 sMultiByteStr.assign(szBuffer.get(), cch);
-
700 }
-
701
-
702 return cch;
-
703}
-
704
-
712template<class _Traits, class _Ax>
-
713static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::basic_string<char, _Traits, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
-
714{
-
715 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
716
-
717 // Try to convert to stack buffer first.
-
718 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
719 if (cch) {
-
720 // Copy from stack. Be careful not to include zero terminator.
-
721 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
722 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
723 // Query the required output size. Allocate buffer. Then convert again.
-
724 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
725 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
726 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
727 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
728 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
-
729 }
-
730
-
731 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
732
-
733 return cch;
-
734}
-
735
-
743template<class _Ax>
-
744static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::vector<char, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
-
745{
-
746 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
747
-
748 // Try to convert to stack buffer first.
-
749 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
750 if (cch) {
-
751 // Copy from stack.
-
752 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
753 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
754 // Query the required output size. Allocate buffer. Then convert again.
-
755 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
756 sMultiByteStr.resize(cch);
-
757 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
758 }
-
759
-
760 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
761
-
762 return cch;
-
763}
-
764
-
772template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
773static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _Out_ std::basic_string<wchar_t, _Traits1, _Ax1> sWideCharStr, _Out_ std::basic_string<char, _Traits2, _Ax2> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
-
774{
-
775 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
776
-
777 // Try to convert to stack buffer first.
-
778 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
779 if (cch) {
-
780 // Copy from stack.
-
781 sMultiByteStr.assign(szStackBuffer, cch);
-
782 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
783 // Query the required output size. Allocate buffer. Then convert again.
-
784 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
785 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
786 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
787 sMultiByteStr.assign(szBuffer.get(), cch);
-
788 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
-
789 }
-
790
-
791 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
792
-
793 return cch;
-
794}
-
795
-
801template<class _Traits, class _Ax>
-
802static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sWideCharStr) noexcept
-
803{
-
804 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
805
-
806 // Try to convert to stack buffer first.
-
807 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
808 if (cch) {
-
809 // Copy from stack.
-
810 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
811 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
812 // Query the required output size. Allocate buffer. Then convert again.
-
813 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
814 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
815 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
-
816 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
817 }
-
818
-
819 return cch;
-
820}
-
821
-
827template<class _Ax>
-
828static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::vector<wchar_t, _Ax> &sWideCharStr) noexcept
-
829{
-
830 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
831
-
832 // Try to convert to stack buffer first.
-
833 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
834 if (cch) {
-
835 // Copy from stack.
-
836 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
837 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
838 // Query the required output size. Allocate buffer. Then convert again.
-
839 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
840 sWideCharStr.resize(cch);
-
841 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
842 }
-
843
-
844 return cch;
-
845}
-
846
-
852template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
853static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ const std::basic_string<char, _Traits1, _Ax1> &sMultiByteStr, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sWideCharStr) noexcept
-
854{
-
855 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
856
-
857 // Try to convert to stack buffer first.
-
858 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
859 if (cch) {
-
860 // Copy from stack.
-
861 sWideCharStr.assign(szStackBuffer, cch);
-
862 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
863 // Query the required output size. Allocate buffer. Then convert again.
-
864 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
865 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
866 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
-
867 sWideCharStr.assign(szBuffer.get(), cch);
-
868 }
-
869
-
870 return cch;
-
871}
-
872
-
880template<class _Traits, class _Ax>
-
881static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sWideCharStr) noexcept
-
882{
-
883 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
884
-
885 // Try to convert to stack buffer first.
-
886 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
887 if (cch) {
-
888 // Copy from stack.
-
889 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
890 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
891 // Query the required output size. Allocate buffer. Then convert again.
-
892 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
893 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
894 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
-
895 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
896 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
-
897 }
-
898
-
899 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
900
-
901 return cch;
-
902}
-
903
-
911template<class _Ax>
-
912static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::vector<wchar_t, _Ax> &sWideCharStr) noexcept
-
913{
-
914 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
915
-
916 // Try to convert to stack buffer first.
-
917 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
918 if (cch) {
-
919 // Copy from stack.
-
920 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
921 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
922 // Query the required output size. Allocate buffer. Then convert again.
-
923 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
924 sWideCharStr.resize(cch);
-
925 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
926 }
-
927
-
928 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
929
-
930 return cch;
-
931}
-
932
-
940template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
941static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ const std::basic_string<char, _Traits1, _Ax1> &sMultiByteStr, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sWideCharStr) noexcept
-
942{
-
943 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
944
-
945 // Try to convert to stack buffer first.
-
946 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
947 if (cch) {
-
948 // Copy from stack.
-
949 sWideCharStr.assign(szStackBuffer, cch);
-
950 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
951 // Query the required output size. Allocate buffer. Then convert again.
-
952 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
953 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
954 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
-
955 sWideCharStr.assign(szBuffer.get(), cch);
-
956 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
-
957 }
-
958
-
959 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
960
-
961 return cch;
-
962}
-
963
-
969template<class _Traits, class _Ax>
-
970static _Success_(return > 0) int NormalizeString(_In_ NORM_FORM NormForm, _In_ LPCWSTR lpSrcString, _In_ int cwSrcLength, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sDstString) noexcept
-
971{
-
972 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
973
-
974 // Try to convert to stack buffer first.
-
975 int cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szStackBuffer, _countof(szStackBuffer));
-
976 if (cch > 0) {
-
977 // Copy from stack.
-
978 sDstString.assign(szStackBuffer, cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
979 } else {
-
980 switch (::GetLastError()) {
-
981 case ERROR_INSUFFICIENT_BUFFER:
-
982 for (int i = 10; i--;) {
-
983 // Allocate buffer. Then convert again.
-
984 cch = -cch;
-
985 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
986 cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szBuffer.get(), cch);
-
987 if (cch > 0) {
-
988 sDstString.assign(szBuffer.get(), cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
989 break;
-
990 }
-
991 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-
992 sDstString.clear();
-
993 break;
-
994 }
-
995 }
-
996 break;
-
997
-
998 case ERROR_SUCCESS:
-
999 sDstString.clear();
-
1000 break;
-
1001 }
-
1002 }
-
1003
-
1004 return cch;
-
1005}
-
1006
-
1012template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
1013static _Success_(return > 0) int NormalizeString(_In_ NORM_FORM NormForm, _In_ const std::basic_string<wchar_t, _Traits1, _Ax1> &sSrcString, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sDstString) noexcept
-
1014{
-
1015 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
1016
-
1017 // Try to convert to stack buffer first.
-
1018 int cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szStackBuffer, _countof(szStackBuffer));
-
1019 if (cch > 0) {
-
1020 // Copy from stack.
-
1021 sDstString.assign(szStackBuffer, cch);
-
1022 } else {
-
1023 switch (::GetLastError()) {
-
1024 case ERROR_INSUFFICIENT_BUFFER:
-
1025 for (int i = 10; i--;) {
-
1026 // Allocate buffer. Then convert again.
-
1027 cch = -cch;
-
1028 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
1029 cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szBuffer.get(), cch);
-
1030 if (cch > 0) {
-
1031 sDstString.assign(szBuffer.get(), cch);
-
1032 break;
-
1033 }
-
1034 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-
1035 sDstString.clear();
-
1036 break;
-
1037 }
-
1038 }
-
1039 break;
-
1040
-
1041 case ERROR_SUCCESS:
-
1042 sDstString.clear();
-
1043 break;
-
1044 }
-
1045 }
-
1046
-
1047 return cch;
-
1048}
-
1049
-
1051template<class _Traits, class _Ax>
-
1052static _Success_(return != 0) int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<char, _Traits, _Ax> &sBuffer) noexcept
-
1053{
-
1054 // Get read-only pointer to string resource.
-
1055 LPCSTR pszStr;
-
1056 int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0);
-
1057 if (i) {
-
1058 sBuffer.assign(pszStr, i);
-
1059 return i;
-
1060 } else
-
1061 return 0;
-
1062}
-
1063
-
1069template<class _Traits, class _Ax>
-
1070static _Success_(return != 0) int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sBuffer) noexcept
-
1071{
-
1072 // Get read-only pointer to string resource.
-
1073 LPCWSTR pszStr;
-
1074 int i = LoadStringW(hInstance, uID, reinterpret_cast<LPWSTR>(&pszStr), 0);
-
1075 if (i) {
-
1076 sBuffer.assign(pszStr, i);
-
1077 return i;
-
1078 } else
-
1079 return 0;
-
1080}
-
1081
-
1087static VOID OutputDebugStrV(_In_z_ LPCSTR lpOutputString, _In_ va_list arg) noexcept
-
1088{
-
1089 std::string str;
-
1090 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
-
1091 OutputDebugStringA(str.c_str());
-
1092}
-
1093
-
1099static VOID OutputDebugStrV(_In_z_ LPCWSTR lpOutputString, _In_ va_list arg) noexcept
-
1100{
-
1101 std::wstring str;
-
1102 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
-
1103 OutputDebugStringW(str.c_str());
-
1104}
-
1105
-
1111static VOID OutputDebugStr(_In_z_ LPCSTR lpOutputString, ...) noexcept
-
1112{
-
1113 va_list arg;
-
1114 va_start(arg, lpOutputString);
-
1115 OutputDebugStrV(lpOutputString, arg);
-
1116 va_end(arg);
-
1117}
-
1118
-
1124static VOID OutputDebugStr(_In_z_ LPCWSTR lpOutputString, ...) noexcept
-
1125{
-
1126 va_list arg;
-
1127 va_start(arg, lpOutputString);
-
1128 OutputDebugStrV(lpOutputString, arg);
-
1129 va_end(arg);
-
1130}
-
1131
-
1133template<class _Traits, class _Ax>
-
1134static _Success_(return != 0) int GetDateFormatA(_In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_z_ LPCSTR lpFormat, _Out_ std::basic_string<char, _Traits, _Ax> &sDate) noexcept
-
1135{
-
1136 int iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
-
1137 if (iResult) {
-
1138 // Allocate buffer on heap and retry.
-
1139 std::unique_ptr<char[]> szBuffer(new char[iResult]);
-
1140 iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
-
1141 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
-
1142 return iResult;
-
1143 }
-
1144
-
1145 return iResult;
-
1146}
-
1147
-
1153template<class _Traits, class _Ax>
-
1154static _Success_(return != 0) int GetDateFormatW(_In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_z_ LPCWSTR lpFormat, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sDate) noexcept
-
1155{
-
1156 int iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
-
1157 if (iResult) {
-
1158 // Allocate buffer on heap and retry.
-
1159 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[iResult]);
-
1160 iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
-
1161 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
-
1162 return iResult;
-
1163 }
-
1164
-
1165 return iResult;
-
1166}
-
1167
-
1169template<class _Traits, class _Ax>
-
1170static _Success_(return != 0) BOOL LookupAccountSidA(_In_opt_z_ LPCSTR lpSystemName, _In_ PSID lpSid, _Out_opt_ std::basic_string<char, _Traits, _Ax> *sName, _Out_opt_ std::basic_string<char, _Traits, _Ax> *sReferencedDomainName, _Out_ PSID_NAME_USE peUse) noexcept
-
1171{
-
1172 assert(0); // TODO: Test this code.
-
1173
-
1174 DWORD dwNameLen = 0, dwRefDomainLen = 0;
-
1175
-
1176 if (LookupAccountSidA(lpSystemName, lpSid,
-
1177 NULL, &dwNameLen ,
-
1178 NULL, &dwRefDomainLen,
-
1179 peUse))
-
1180 {
-
1181 // Name and domain is blank.
-
1182 if (sName ) sName ->clear();
-
1183 if (sReferencedDomainName) sReferencedDomainName->clear();
-
1184 return TRUE;
-
1185 } else if (GetLastError() == ERROR_MORE_DATA) {
-
1186 // Allocate on heap and retry.
-
1187 std::unique_ptr<char[]> bufName (new char[dwNameLen ]);
-
1188 std::unique_ptr<char[]> bufRefDomain(new char[dwRefDomainLen]);
-
1189 if (LookupAccountSidA(lpSystemName, lpSid,
-
1190 bufName .get(), &dwNameLen ,
-
1191 bufRefDomain.get(), &dwRefDomainLen,
-
1192 peUse))
-
1193 {
-
1194 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
-
1195 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
-
1196 return TRUE;
-
1197 }
-
1198 }
-
1199
-
1200 return FALSE;
-
1201}
-
1202
-
1208template<class _Traits, class _Ax>
-
1209static _Success_(return != 0) BOOL LookupAccountSidW(_In_opt_z_ LPCWSTR lpSystemName, _In_ PSID lpSid, _Out_opt_ std::basic_string<wchar_t, _Traits, _Ax> *sName, _Out_opt_ std::basic_string<wchar_t, _Traits, _Ax> *sReferencedDomainName, _Out_ PSID_NAME_USE peUse) noexcept
-
1210{
-
1211 assert(0); // TODO: Test this code.
-
1212
-
1213 DWORD dwNameLen = 0, dwRefDomainLen = 0;
-
1214
-
1215 if (LookupAccountSidW(lpSystemName, lpSid,
-
1216 NULL, &dwNameLen ,
-
1217 NULL, &dwRefDomainLen,
-
1218 peUse))
-
1219 {
-
1220 // Name and domain is blank.
-
1221 if (sName ) sName ->clear();
-
1222 if (sReferencedDomainName) sReferencedDomainName->clear();
-
1223 return TRUE;
-
1224 } else if (GetLastError() == ERROR_MORE_DATA) {
-
1225 // Allocate on heap and retry.
-
1226 std::unique_ptr<wchar_t[]> bufName (new wchar_t[dwNameLen ]);
-
1227 std::unique_ptr<wchar_t[]> bufRefDomain(new wchar_t[dwRefDomainLen]);
-
1228 if (LookupAccountSidW(lpSystemName, lpSid,
-
1229 bufName .get(), &dwNameLen ,
-
1230 bufRefDomain.get(), &dwRefDomainLen,
-
1231 peUse))
-
1232 {
-
1233 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
-
1234 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
-
1235 return TRUE;
-
1236 }
-
1237 }
-
1238
-
1239 return FALSE;
-
1240}
-
1241
-
1247template<class _Ty>
-
1248static _Success_(return != 0) BOOL GetTokenInformation(_In_ HANDLE TokenHandle, _In_ TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_ std::unique_ptr<_Ty> &TokenInformation) noexcept
+
12#include <tlhelp32.h>
+
13#include <string>
+
14#include <vector>
+
15
+
16#pragma warning(push)
+
17#pragma warning(disable: 4505) // Don't warn on unused code
+
18
+
21
+
23template<class _Traits, class _Ax>
+
24static DWORD GetModuleFileNameA(_In_opt_ HMODULE hModule, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
25{
+
26 assert(0); // TODO: Test this code.
+
27
+
28 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
29
+
30 // Try with stack buffer first.
+
31 DWORD dwResult = ::GetModuleFileNameA(hModule, szStackBuffer, _countof(szStackBuffer));
+
32 if (dwResult < _countof(szStackBuffer)) {
+
33 // Copy from stack.
+
34 sValue.assign(szStackBuffer, dwResult);
+
35 return dwResult;
+
36 } else {
+
37 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(char);; dwCapacity *= 2) {
+
38 // Allocate on heap and retry.
+
39 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
+
40 dwResult = ::GetModuleFileNameA(hModule, szBuffer.get(), dwCapacity);
+
41 if (dwResult < dwCapacity) {
+
42 sValue.assign(szBuffer.get(), dwResult);
+
43 return dwResult;
+
44 }
+
45 }
+
46 }
+
47}
+
48
+
54template<class _Traits, class _Ax>
+
55static DWORD GetModuleFileNameW(_In_opt_ HMODULE hModule, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
56{
+
57 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
58
+
59 // Try with stack buffer first.
+
60 DWORD dwResult = ::GetModuleFileNameW(hModule, szStackBuffer, _countof(szStackBuffer));
+
61 if (dwResult < _countof(szStackBuffer)) {
+
62 // Copy from stack.
+
63 sValue.assign(szStackBuffer, dwResult);
+
64 return dwResult;
+
65 } else {
+
66 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t);; dwCapacity *= 2) {
+
67 // Allocate on heap and retry.
+
68 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
+
69 dwResult = ::GetModuleFileNameW(hModule, szBuffer.get(), dwCapacity);
+
70 if (dwResult < dwCapacity) {
+
71 sValue.assign(szBuffer.get(), dwResult);
+
72 return dwResult;
+
73 }
+
74 }
+
75 }
+
76}
+
77
+
79template<class _Traits, class _Ax>
+
80static _Success_(return != 0) int GetWindowTextA(_In_ HWND hWnd, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
81{
+
82 assert(0); // TODO: Test this code.
+
83
+
84 int iResult;
+
85
+
86 // Query the final string length first.
+
87 iResult = ::GetWindowTextLengthA(hWnd);
+
88 if (iResult > 0) {
+
89 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(char)) {
+
90 // Read string data to stack.
+
91 char szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
92 iResult = ::GetWindowTextA(hWnd, szBuffer, _countof(szBuffer));
+
93 sValue.assign(szBuffer, iResult);
+
94 } else {
+
95 // Allocate buffer on heap and read the string data into it.
+
96 std::unique_ptr<char[]> szBuffer(new char[++iResult]);
+
97 iResult = ::GetWindowTextA(hWnd, szBuffer.get(), iResult);
+
98 sValue.assign(szBuffer.get(), iResult);
+
99 }
+
100 return iResult;
+
101 }
+
102
+
103 sValue.clear();
+
104 return 0;
+
105}
+
106
+
112template<class _Traits, class _Ax>
+
113static _Success_(return != 0) int GetWindowTextW(_In_ HWND hWnd, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
114{
+
115 assert(0); // TODO: Test this code.
+
116
+
117 int iResult;
+
118
+
119 // Query the final string length first.
+
120 iResult = ::GetWindowTextLengthW(hWnd);
+
121 if (iResult > 0) {
+
122 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)) {
+
123 // Read string data to stack.
+
124 wchar_t szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
125 iResult = ::GetWindowTextW(hWnd, szBuffer, _countof(szBuffer));
+
126 sValue.assign(szBuffer, iResult);
+
127 } else {
+
128 // Allocate buffer on heap and read the string data into it.
+
129 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++iResult]);
+
130 iResult = ::GetWindowTextW(hWnd, szBuffer.get(), iResult);
+
131 sValue.assign(szBuffer.get(), iResult);
+
132 }
+
133 return iResult;
+
134 }
+
135
+
136 sValue.clear();
+
137 return 0;
+
138}
+
139
+
141template<class _Ty, class _Ax>
+
142static _Success_(return != 0) BOOL GetFileVersionInfoA(_In_z_ LPCSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
+
143{
+
144 assert(0); // TODO: Test this code.
+
145
+
146 // Get version info size.
+
147 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeA(lptstrFilename, &dwHandle);
+
148 if (dwVerInfoSize != 0) {
+
149 // Read version info.
+
150 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
151 return ::GetFileVersionInfoA(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
+
152 } else
+
153 return FALSE;
+
154}
+
155
+
161template<class _Ty, class _Ax>
+
162static _Success_(return != 0) BOOL GetFileVersionInfoW(_In_z_ LPCWSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
+
163{
+
164 assert(0); // TODO: Test this code.
+
165
+
166 // Get version info size.
+
167 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeW(lptstrFilename, &dwHandle);
+
168 if (dwVerInfoSize != 0) {
+
169 // Read version info.
+
170 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
171 return ::GetFileVersionInfoW(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
+
172 } else
+
173 return FALSE;
+
174}
+
175
+
177template<class _Traits, class _Ax>
+
178static _Success_(return != 0) DWORD ExpandEnvironmentStringsA(_In_z_ LPCSTR lpSrc, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
179{
+
180 assert(0); // TODO: Test this code.
+
181
+
182 for (DWORD dwSizeOut = (DWORD)strlen(lpSrc) + 0x100;;) {
+
183 DWORD dwSizeIn = dwSizeOut;
+
184 std::unique_ptr<char[]> szBuffer(new char[(size_t)dwSizeIn + 2]); // Note: ANSI version requires one extra char.
+
185 dwSizeOut = ::ExpandEnvironmentStringsA(lpSrc, szBuffer.get(), dwSizeIn);
+
186 if (dwSizeOut == 0) {
+
187 // Error or zero-length input.
+
188 break;
+
189 } else if (dwSizeOut <= dwSizeIn) {
+
190 // The buffer was sufficient.
+
191 sValue.assign(szBuffer.get(), dwSizeOut - 1);
+
192 return dwSizeOut;
+
193 }
+
194 }
+
195
+
196 sValue.clear();
+
197 return 0;
+
198}
+
199
+
205template<class _Traits, class _Ax>
+
206static _Success_(return != 0) DWORD ExpandEnvironmentStringsW(_In_z_ LPCWSTR lpSrc, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
207{
+
208 for (DWORD dwSizeOut = (DWORD)wcslen(lpSrc) + 0x100;;) {
+
209 DWORD dwSizeIn = dwSizeOut;
+
210 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(size_t)dwSizeIn + 1]);
+
211 dwSizeOut = ::ExpandEnvironmentStringsW(lpSrc, szBuffer.get(), dwSizeIn);
+
212 if (dwSizeOut == 0) {
+
213 // Error or zero-length input.
+
214 break;
+
215 } else if (dwSizeOut <= dwSizeIn) {
+
216 // The buffer was sufficient.
+
217 sValue.assign(szBuffer.get(), dwSizeOut - 1);
+
218 return dwSizeOut;
+
219 }
+
220 }
+
221
+
222 sValue.clear();
+
223 return 0;
+
224}
+
225
+
227template<class _Traits, class _Ax>
+
228static VOID GuidToStringA(_In_ LPCGUID lpGuid, _Out_ std::basic_string<char, _Traits, _Ax> &str) noexcept
+
229{
+
230 assert(0); // TODO: Test this code.
+
231
+
232 sprintf(str, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+
233 lpGuid->Data1,
+
234 lpGuid->Data2,
+
235 lpGuid->Data3,
+
236 lpGuid->Data4[0], lpGuid->Data4[1],
+
237 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
+
238}
+
239
+
246template<class _Traits, class _Ax>
+
247static VOID GuidToStringW(_In_ LPCGUID lpGuid, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str) noexcept
+
248{
+
249 assert(0); // TODO: Test this code.
+
250
+
251 sprintf(str, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+
252 lpGuid->Data1,
+
253 lpGuid->Data2,
+
254 lpGuid->Data3,
+
255 lpGuid->Data4[0], lpGuid->Data4[1],
+
256 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
+
257}
+
258
+
260#ifdef _UNICODE
+
261#define GuidToString GuidToStringW
+
262#else
+
263#define GuidToString GuidToStringA
+
264#endif
+
265
+
267static _Success_(return) BOOL StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL) noexcept
+
268{
+
269 GUID g;
+
270 LPSTR lpszEnd;
+
271 unsigned long ulTmp;
+
272 unsigned long long ullTmp;
+
273
+
274 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
+
275 lpszGuid++;
+
276
+
277 g.Data1 = strtoul(lpszGuid, &lpszEnd, 16);
+
278 if (errno == ERANGE) return FALSE;
+
279 lpszGuid = lpszEnd;
+
280
+
281 if (*lpszGuid != '-') return FALSE;
+
282 lpszGuid++;
+
283
+
284 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
285 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
286 g.Data2 = static_cast<unsigned short>(ulTmp);
+
287 lpszGuid = lpszEnd;
+
288
+
289 if (*lpszGuid != '-') return FALSE;
+
290 lpszGuid++;
+
291
+
292 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
293 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
294 g.Data3 = static_cast<unsigned short>(ulTmp);
+
295 lpszGuid = lpszEnd;
+
296
+
297 if (*lpszGuid != '-') return FALSE;
+
298 lpszGuid++;
+
299
+
300 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
301 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
302 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
+
303 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
+
304 lpszGuid = lpszEnd;
+
305
+
306 if (*lpszGuid != '-') return FALSE;
+
307 lpszGuid++;
+
308
+
309 ullTmp = _strtoui64(lpszGuid, &lpszEnd, 16);
+
310 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
+
311 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
+
312 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
+
313 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
+
314 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
+
315 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
+
316 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
+
317 lpszGuid = lpszEnd;
+
318
+
319 if (*lpszGuid != '}') return FALSE;
+
320 lpszGuid++;
+
321
+
322 if (lpszGuidEnd)
+
323 *lpszGuidEnd = lpszGuid;
+
324
+
325 *lpGuid = g;
+
326 return TRUE;
+
327}
+
328
+
340static _Success_(return) BOOL StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL) noexcept
+
341{
+
342 GUID g;
+
343 LPWSTR lpszEnd;
+
344 unsigned long ulTmp;
+
345 unsigned long long ullTmp;
+
346
+
347 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
+
348 lpszGuid++;
+
349
+
350 g.Data1 = wcstoul(lpszGuid, &lpszEnd, 16);
+
351 if (errno == ERANGE) return FALSE;
+
352 lpszGuid = lpszEnd;
+
353
+
354 if (*lpszGuid != '-') return FALSE;
+
355 lpszGuid++;
+
356
+
357 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
358 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
359 g.Data2 = static_cast<unsigned short>(ulTmp);
+
360 lpszGuid = lpszEnd;
+
361
+
362 if (*lpszGuid != '-') return FALSE;
+
363 lpszGuid++;
+
364
+
365 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
366 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
367 g.Data3 = static_cast<unsigned short>(ulTmp);
+
368 lpszGuid = lpszEnd;
+
369
+
370 if (*lpszGuid != '-') return FALSE;
+
371 lpszGuid++;
+
372
+
373 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
374 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
375 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
+
376 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
+
377 lpszGuid = lpszEnd;
+
378
+
379 if (*lpszGuid != '-') return FALSE;
+
380 lpszGuid++;
+
381
+
382 ullTmp = _wcstoui64(lpszGuid, &lpszEnd, 16);
+
383 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
+
384 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
+
385 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
+
386 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
+
387 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
+
388 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
+
389 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
+
390 lpszGuid = lpszEnd;
+
391
+
392 if (*lpszGuid != '}') return FALSE;
+
393 lpszGuid++;
+
394
+
395 if (lpszGuidEnd)
+
396 *lpszGuidEnd = lpszGuid;
+
397
+
398 *lpGuid = g;
+
399 return TRUE;
+
400}
+
401
+
403#ifdef _UNICODE
+
404#define StringToGuid StringToGuidW
+
405#else
+
406#define StringToGuid StringToGuidA
+
407#endif
+
408
+
427template<class _Traits, class _Ax>
+
428static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
429{
+
430 LSTATUS lResult;
+
431 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
432 DWORD dwSize = sizeof(aStackBuffer), dwType;
+
433
+
434 // Try with stack buffer first.
+
435 lResult = ::RegQueryValueExA(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
+
436 if (lResult == ERROR_SUCCESS) {
+
437 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
438 // The value is REG_SZ or REG_MULTI_SZ.
+
439 dwSize /= sizeof(CHAR);
+
440 sValue.assign(reinterpret_cast<LPCSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
441 } else if (dwType == REG_EXPAND_SZ) {
+
442 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
+
443 if (::ExpandEnvironmentStringsA(reinterpret_cast<LPCSTR>(aStackBuffer), sValue) == 0)
+
444 lResult = ::GetLastError();
+
445 } else {
+
446 // The value is not a string type.
+
447 lResult = ERROR_INVALID_DATA;
+
448 }
+
449 } else if (lResult == ERROR_MORE_DATA) {
+
450 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
451 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
+
452 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
+
453 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
454 dwSize /= sizeof(CHAR);
+
455 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
456 }
+
457 } else if (dwType == REG_EXPAND_SZ) {
+
458 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
+
459 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
+
460 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
461 if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0)
+
462 lResult = ::GetLastError();
+
463 }
+
464 } else {
+
465 // The value is not a string type.
+
466 lResult = ERROR_INVALID_DATA;
+
467 }
+
468 }
+
469
+
470 return lResult;
+
471}
+
472
+
491template<class _Traits, class _Ax>
+
492static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
493{
+
494 LSTATUS lResult;
+
495 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
496 DWORD dwSize = sizeof(aStackBuffer), dwType;
+
497
+
498 // Try with stack buffer first.
+
499 lResult = ::RegQueryValueExW(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
+
500 if (lResult == ERROR_SUCCESS) {
+
501 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
502 // The value is REG_SZ or REG_MULTI_SZ.
+
503 dwSize /= sizeof(WCHAR);
+
504 sValue.assign(reinterpret_cast<LPCWSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCWSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
505 } else if (dwType == REG_EXPAND_SZ) {
+
506 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
+
507 if (::ExpandEnvironmentStringsW(reinterpret_cast<LPCWSTR>(aStackBuffer), sValue) == 0)
+
508 lResult = ::GetLastError();
+
509 } else {
+
510 // The value is not a string type.
+
511 lResult = ERROR_INVALID_DATA;
+
512 }
+
513 } else if (lResult == ERROR_MORE_DATA) {
+
514 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
515 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
+
516 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
+
517 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
518 dwSize /= sizeof(WCHAR);
+
519 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
520 }
+
521 } else if (dwType == REG_EXPAND_SZ) {
+
522 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
+
523 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
+
524 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
525 if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0)
+
526 lResult = ::GetLastError();
+
527 }
+
528 } else {
+
529 // The value is not a string type.
+
530 lResult = ERROR_INVALID_DATA;
+
531 }
+
532 }
+
533
+
534 return lResult;
+
535}
+
536
+
538template<class _Ty, class _Ax>
+
539static LSTATUS RegQueryValueExA(_In_ HKEY hKey, _In_opt_z_ LPCSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
+
540{
+
541 LSTATUS lResult;
+
542 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
543 DWORD dwSize = sizeof(aStackBuffer);
+
544
+
545 // Try with stack buffer first.
+
546 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
+
547 if (lResult == ERROR_SUCCESS) {
+
548 // Copy from stack buffer.
+
549 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
550 memcpy(aData.data(), aStackBuffer, dwSize);
+
551 } else if (lResult == ERROR_MORE_DATA) {
+
552 // Allocate buffer on heap and retry.
+
553 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
554 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
+
555 }
+
556
+
557 return lResult;
+
558}
+
559
+
565template<class _Ty, class _Ax>
+
566static LSTATUS RegQueryValueExW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
+
567{
+
568 LSTATUS lResult;
+
569 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
570 DWORD dwSize = sizeof(aStackBuffer);
+
571
+
572 // Try with stack buffer first.
+
573 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
+
574 if (lResult == ERROR_SUCCESS) {
+
575 // Copy from stack buffer.
+
576 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
577 memcpy(aData.data(), aStackBuffer, dwSize);
+
578 } else if (lResult == ERROR_MORE_DATA) {
+
579 // Allocate buffer on heap and retry.
+
580 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
581 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
+
582 }
+
583
+
584 return lResult;
+
585}
+
586
+
587#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+
588
+
590template<class _Traits, class _Ax>
+
591static LSTATUS RegLoadMUIStringA(_In_ HKEY hKey, _In_opt_z_ LPCSTR pszValue, _Out_ std::basic_string<char, _Traits, _Ax> &sOut, _In_ DWORD Flags, _In_opt_z_ LPCSTR pszDirectory) noexcept
+
592{
+
593 // According to "Remarks" section in MSDN documentation of RegLoadMUIString(),
+
594 // this function is defined but not implemented as ANSI variation.
+
595 assert(0);
+
596 return ERROR_CALL_NOT_IMPLEMENTED;
+
597}
+
598
+
604template<class _Traits, class _Ax>
+
605static LSTATUS RegLoadMUIStringW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR pszValue, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sOut, _In_ DWORD Flags, _In_opt_z_ LPCWSTR pszDirectory) noexcept
+
606{
+
607 LSTATUS lResult;
+
608 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
609 DWORD dwSize;
+
610
+
611 Flags &= ~REG_MUI_STRING_TRUNCATE;
+
612
+
613 // Try with stack buffer first.
+
614 lResult = RegLoadMUIStringW(hKey, pszValue, szStackBuffer, sizeof(szStackBuffer), &dwSize, Flags, pszDirectory);
+
615 if (lResult == ERROR_SUCCESS) {
+
616 // Copy from stack buffer.
+
617 sOut.assign(szStackBuffer, wcsnlen(szStackBuffer, dwSize/sizeof(wchar_t)));
+
618 } else if (lResult == ERROR_MORE_DATA) {
+
619 // Allocate buffer on heap and retry.
+
620 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(dwSize + sizeof(wchar_t) - 1)/sizeof(wchar_t)]);
+
621 sOut.assign(szBuffer.get(), (lResult = RegLoadMUIStringW(hKey, pszValue, szBuffer.get(), dwSize, &dwSize, Flags, pszDirectory)) == ERROR_SUCCESS ? wcsnlen(szBuffer.get(), dwSize/sizeof(wchar_t)) : 0);
+
622 }
+
623
+
624 return lResult;
+
625}
+
626
+
627#endif
+
628
+
634template<class _Traits, class _Ax>
+
635static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::basic_string<char, _Traits, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
636{
+
637 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
638
+
639 // Try to convert to stack buffer first.
+
640 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
641 if (cch) {
+
642 // Copy from stack. Be careful not to include zero terminator.
+
643 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
644 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
645 // Query the required output size. Allocate buffer. Then convert again.
+
646 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
647 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
648 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
649 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
650 }
+
651
+
652 return cch;
+
653}
+
654
+
660template<class _Ax>
+
661static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::vector<char, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
662{
+
663 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
664
+
665 // Try to convert to stack buffer first.
+
666 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
667 if (cch) {
+
668 // Copy from stack.
+
669 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
670 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
671 // Query the required output size. Allocate buffer. Then convert again.
+
672 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
673 sMultiByteStr.resize(cch);
+
674 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
675 }
+
676
+
677 return cch;
+
678}
+
679
+
685template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
686static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ std::basic_string<wchar_t, _Traits1, _Ax1> sWideCharStr, _Out_ std::basic_string<char, _Traits2, _Ax2> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
687{
+
688 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
689
+
690 // Try to convert to stack buffer first.
+
691 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
692 if (cch) {
+
693 // Copy from stack.
+
694 sMultiByteStr.assign(szStackBuffer, cch);
+
695 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
696 // Query the required output size. Allocate buffer. Then convert again.
+
697 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
698 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
699 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
700 sMultiByteStr.assign(szBuffer.get(), cch);
+
701 }
+
702
+
703 return cch;
+
704}
+
705
+
713template<class _Traits, class _Ax>
+
714static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::basic_string<char, _Traits, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
715{
+
716 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
717
+
718 // Try to convert to stack buffer first.
+
719 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
720 if (cch) {
+
721 // Copy from stack. Be careful not to include zero terminator.
+
722 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
723 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
724 // Query the required output size. Allocate buffer. Then convert again.
+
725 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
726 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
727 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
728 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
729 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
+
730 }
+
731
+
732 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
733
+
734 return cch;
+
735}
+
736
+
744template<class _Ax>
+
745static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::vector<char, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
746{
+
747 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
748
+
749 // Try to convert to stack buffer first.
+
750 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
751 if (cch) {
+
752 // Copy from stack.
+
753 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
754 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
755 // Query the required output size. Allocate buffer. Then convert again.
+
756 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
757 sMultiByteStr.resize(cch);
+
758 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
759 }
+
760
+
761 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
762
+
763 return cch;
+
764}
+
765
+
773template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
774static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _Out_ std::basic_string<wchar_t, _Traits1, _Ax1> sWideCharStr, _Out_ std::basic_string<char, _Traits2, _Ax2> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
775{
+
776 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
777
+
778 // Try to convert to stack buffer first.
+
779 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
780 if (cch) {
+
781 // Copy from stack.
+
782 sMultiByteStr.assign(szStackBuffer, cch);
+
783 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
784 // Query the required output size. Allocate buffer. Then convert again.
+
785 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
786 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
787 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
788 sMultiByteStr.assign(szBuffer.get(), cch);
+
789 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
+
790 }
+
791
+
792 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
793
+
794 return cch;
+
795}
+
796
+
802template<class _Traits, class _Ax>
+
803static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sWideCharStr) noexcept
+
804{
+
805 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
806
+
807 // Try to convert to stack buffer first.
+
808 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
809 if (cch) {
+
810 // Copy from stack.
+
811 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
812 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
813 // Query the required output size. Allocate buffer. Then convert again.
+
814 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
815 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
816 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
+
817 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
818 }
+
819
+
820 return cch;
+
821}
+
822
+
828template<class _Ax>
+
829static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::vector<wchar_t, _Ax> &sWideCharStr) noexcept
+
830{
+
831 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
832
+
833 // Try to convert to stack buffer first.
+
834 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
835 if (cch) {
+
836 // Copy from stack.
+
837 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
838 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
839 // Query the required output size. Allocate buffer. Then convert again.
+
840 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
841 sWideCharStr.resize(cch);
+
842 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
843 }
+
844
+
845 return cch;
+
846}
+
847
+
853template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
854static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ const std::basic_string<char, _Traits1, _Ax1> &sMultiByteStr, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sWideCharStr) noexcept
+
855{
+
856 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
857
+
858 // Try to convert to stack buffer first.
+
859 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
860 if (cch) {
+
861 // Copy from stack.
+
862 sWideCharStr.assign(szStackBuffer, cch);
+
863 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
864 // Query the required output size. Allocate buffer. Then convert again.
+
865 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
866 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
867 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
+
868 sWideCharStr.assign(szBuffer.get(), cch);
+
869 }
+
870
+
871 return cch;
+
872}
+
873
+
881template<class _Traits, class _Ax>
+
882static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sWideCharStr) noexcept
+
883{
+
884 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
885
+
886 // Try to convert to stack buffer first.
+
887 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
888 if (cch) {
+
889 // Copy from stack.
+
890 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
891 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
892 // Query the required output size. Allocate buffer. Then convert again.
+
893 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
894 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
895 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
+
896 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
897 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
+
898 }
+
899
+
900 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
901
+
902 return cch;
+
903}
+
904
+
912template<class _Ax>
+
913static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::vector<wchar_t, _Ax> &sWideCharStr) noexcept
+
914{
+
915 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
916
+
917 // Try to convert to stack buffer first.
+
918 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
919 if (cch) {
+
920 // Copy from stack.
+
921 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
922 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
923 // Query the required output size. Allocate buffer. Then convert again.
+
924 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
925 sWideCharStr.resize(cch);
+
926 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
927 }
+
928
+
929 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
930
+
931 return cch;
+
932}
+
933
+
941template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
942static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ const std::basic_string<char, _Traits1, _Ax1> &sMultiByteStr, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sWideCharStr) noexcept
+
943{
+
944 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
945
+
946 // Try to convert to stack buffer first.
+
947 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
948 if (cch) {
+
949 // Copy from stack.
+
950 sWideCharStr.assign(szStackBuffer, cch);
+
951 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
952 // Query the required output size. Allocate buffer. Then convert again.
+
953 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
954 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
955 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
+
956 sWideCharStr.assign(szBuffer.get(), cch);
+
957 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
+
958 }
+
959
+
960 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
961
+
962 return cch;
+
963}
+
964
+
970template<class _Traits, class _Ax>
+
971static _Success_(return > 0) int NormalizeString(_In_ NORM_FORM NormForm, _In_ LPCWSTR lpSrcString, _In_ int cwSrcLength, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sDstString) noexcept
+
972{
+
973 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
974
+
975 // Try to convert to stack buffer first.
+
976 int cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szStackBuffer, _countof(szStackBuffer));
+
977 if (cch > 0) {
+
978 // Copy from stack.
+
979 sDstString.assign(szStackBuffer, cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
980 } else {
+
981 switch (::GetLastError()) {
+
982 case ERROR_INSUFFICIENT_BUFFER:
+
983 for (int i = 10; i--;) {
+
984 // Allocate buffer. Then convert again.
+
985 cch = -cch;
+
986 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
987 cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szBuffer.get(), cch);
+
988 if (cch > 0) {
+
989 sDstString.assign(szBuffer.get(), cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
990 break;
+
991 }
+
992 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
993 sDstString.clear();
+
994 break;
+
995 }
+
996 }
+
997 break;
+
998
+
999 case ERROR_SUCCESS:
+
1000 sDstString.clear();
+
1001 break;
+
1002 }
+
1003 }
+
1004
+
1005 return cch;
+
1006}
+
1007
+
1013template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
1014static _Success_(return > 0) int NormalizeString(_In_ NORM_FORM NormForm, _In_ const std::basic_string<wchar_t, _Traits1, _Ax1> &sSrcString, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sDstString) noexcept
+
1015{
+
1016 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
1017
+
1018 // Try to convert to stack buffer first.
+
1019 int cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szStackBuffer, _countof(szStackBuffer));
+
1020 if (cch > 0) {
+
1021 // Copy from stack.
+
1022 sDstString.assign(szStackBuffer, cch);
+
1023 } else {
+
1024 switch (::GetLastError()) {
+
1025 case ERROR_INSUFFICIENT_BUFFER:
+
1026 for (int i = 10; i--;) {
+
1027 // Allocate buffer. Then convert again.
+
1028 cch = -cch;
+
1029 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
1030 cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szBuffer.get(), cch);
+
1031 if (cch > 0) {
+
1032 sDstString.assign(szBuffer.get(), cch);
+
1033 break;
+
1034 }
+
1035 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
1036 sDstString.clear();
+
1037 break;
+
1038 }
+
1039 }
+
1040 break;
+
1041
+
1042 case ERROR_SUCCESS:
+
1043 sDstString.clear();
+
1044 break;
+
1045 }
+
1046 }
+
1047
+
1048 return cch;
+
1049}
+
1050
+
1052template<class _Traits, class _Ax>
+
1053static _Success_(return != 0) int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<char, _Traits, _Ax> &sBuffer) noexcept
+
1054{
+
1055 // Get read-only pointer to string resource.
+
1056 LPCSTR pszStr;
+
1057 int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0);
+
1058 if (i) {
+
1059 sBuffer.assign(pszStr, i);
+
1060 return i;
+
1061 } else
+
1062 return 0;
+
1063}
+
1064
+
1070template<class _Traits, class _Ax>
+
1071static _Success_(return != 0) int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sBuffer) noexcept
+
1072{
+
1073 // Get read-only pointer to string resource.
+
1074 LPCWSTR pszStr;
+
1075 int i = LoadStringW(hInstance, uID, reinterpret_cast<LPWSTR>(&pszStr), 0);
+
1076 if (i) {
+
1077 sBuffer.assign(pszStr, i);
+
1078 return i;
+
1079 } else
+
1080 return 0;
+
1081}
+
1082
+
1088static VOID OutputDebugStrV(_In_z_ LPCSTR lpOutputString, _In_ va_list arg) noexcept
+
1089{
+
1090 std::string str;
+
1091 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
1092 OutputDebugStringA(str.c_str());
+
1093}
+
1094
+
1100static VOID OutputDebugStrV(_In_z_ LPCWSTR lpOutputString, _In_ va_list arg) noexcept
+
1101{
+
1102 std::wstring str;
+
1103 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
1104 OutputDebugStringW(str.c_str());
+
1105}
+
1106
+
1112static VOID OutputDebugStr(_In_z_ LPCSTR lpOutputString, ...) noexcept
+
1113{
+
1114 va_list arg;
+
1115 va_start(arg, lpOutputString);
+
1116 OutputDebugStrV(lpOutputString, arg);
+
1117 va_end(arg);
+
1118}
+
1119
+
1125static VOID OutputDebugStr(_In_z_ LPCWSTR lpOutputString, ...) noexcept
+
1126{
+
1127 va_list arg;
+
1128 va_start(arg, lpOutputString);
+
1129 OutputDebugStrV(lpOutputString, arg);
+
1130 va_end(arg);
+
1131}
+
1132
+
1134template<class _Traits, class _Ax>
+
1135static _Success_(return != 0) int GetDateFormatA(_In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_z_ LPCSTR lpFormat, _Out_ std::basic_string<char, _Traits, _Ax> &sDate) noexcept
+
1136{
+
1137 int iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
+
1138 if (iResult) {
+
1139 // Allocate buffer on heap and retry.
+
1140 std::unique_ptr<char[]> szBuffer(new char[iResult]);
+
1141 iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
+
1142 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
+
1143 return iResult;
+
1144 }
+
1145
+
1146 return iResult;
+
1147}
+
1148
+
1154template<class _Traits, class _Ax>
+
1155static _Success_(return != 0) int GetDateFormatW(_In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_z_ LPCWSTR lpFormat, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sDate) noexcept
+
1156{
+
1157 int iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
+
1158 if (iResult) {
+
1159 // Allocate buffer on heap and retry.
+
1160 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[iResult]);
+
1161 iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
+
1162 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
+
1163 return iResult;
+
1164 }
+
1165
+
1166 return iResult;
+
1167}
+
1168
+
1170template<class _Traits, class _Ax>
+
1171static _Success_(return != 0) BOOL LookupAccountSidA(_In_opt_z_ LPCSTR lpSystemName, _In_ PSID lpSid, _Out_opt_ std::basic_string<char, _Traits, _Ax> *sName, _Out_opt_ std::basic_string<char, _Traits, _Ax> *sReferencedDomainName, _Out_ PSID_NAME_USE peUse) noexcept
+
1172{
+
1173 assert(0); // TODO: Test this code.
+
1174
+
1175 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
1176
+
1177 if (LookupAccountSidA(lpSystemName, lpSid,
+
1178 NULL, &dwNameLen ,
+
1179 NULL, &dwRefDomainLen,
+
1180 peUse))
+
1181 {
+
1182 // Name and domain is blank.
+
1183 if (sName ) sName ->clear();
+
1184 if (sReferencedDomainName) sReferencedDomainName->clear();
+
1185 return TRUE;
+
1186 } else if (GetLastError() == ERROR_MORE_DATA) {
+
1187 // Allocate on heap and retry.
+
1188 std::unique_ptr<char[]> bufName (new char[dwNameLen ]);
+
1189 std::unique_ptr<char[]> bufRefDomain(new char[dwRefDomainLen]);
+
1190 if (LookupAccountSidA(lpSystemName, lpSid,
+
1191 bufName .get(), &dwNameLen ,
+
1192 bufRefDomain.get(), &dwRefDomainLen,
+
1193 peUse))
+
1194 {
+
1195 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
+
1196 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
+
1197 return TRUE;
+
1198 }
+
1199 }
+
1200
+
1201 return FALSE;
+
1202}
+
1203
+
1209template<class _Traits, class _Ax>
+
1210static _Success_(return != 0) BOOL LookupAccountSidW(_In_opt_z_ LPCWSTR lpSystemName, _In_ PSID lpSid, _Out_opt_ std::basic_string<wchar_t, _Traits, _Ax> *sName, _Out_opt_ std::basic_string<wchar_t, _Traits, _Ax> *sReferencedDomainName, _Out_ PSID_NAME_USE peUse) noexcept
+
1211{
+
1212 assert(0); // TODO: Test this code.
+
1213
+
1214 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
1215
+
1216 if (LookupAccountSidW(lpSystemName, lpSid,
+
1217 NULL, &dwNameLen ,
+
1218 NULL, &dwRefDomainLen,
+
1219 peUse))
+
1220 {
+
1221 // Name and domain is blank.
+
1222 if (sName ) sName ->clear();
+
1223 if (sReferencedDomainName) sReferencedDomainName->clear();
+
1224 return TRUE;
+
1225 } else if (GetLastError() == ERROR_MORE_DATA) {
+
1226 // Allocate on heap and retry.
+
1227 std::unique_ptr<wchar_t[]> bufName (new wchar_t[dwNameLen ]);
+
1228 std::unique_ptr<wchar_t[]> bufRefDomain(new wchar_t[dwRefDomainLen]);
+
1229 if (LookupAccountSidW(lpSystemName, lpSid,
+
1230 bufName .get(), &dwNameLen ,
+
1231 bufRefDomain.get(), &dwRefDomainLen,
+
1232 peUse))
+
1233 {
+
1234 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
+
1235 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
+
1236 return TRUE;
+
1237 }
+
1238 }
+
1239
+
1240 return FALSE;
+
1241}
+
1242
+
1248static _Success_(return != FALSE) BOOL CreateWellKnownSid(_In_ WELL_KNOWN_SID_TYPE WellKnownSidType, _In_opt_ PSID DomainSid, _Inout_ std::unique_ptr<SID> &Sid)
1249{
-
1250 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(BYTE)];
-
1251 DWORD dwSize;
+
1250 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
1251 DWORD dwSize = sizeof(szStackBuffer);
1252
-
1253 if (GetTokenInformation(TokenHandle, TokenInformationClass, szStackBuffer, sizeof(szStackBuffer), &dwSize)) {
+
1253 if (CreateWellKnownSid(WellKnownSidType, DomainSid, szStackBuffer, &dwSize)) {
1254 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
-
1255 TokenInformation.reset((_Ty*)(new BYTE[dwSize / sizeof(BYTE)]));
-
1256 if (!TokenInformation) {
-
1257 SetLastError(ERROR_OUTOFMEMORY);
-
1258 return FALSE;
-
1259 }
-
1260 memcpy(TokenInformation.get(), szStackBuffer, dwSize);
-
1261 return TRUE;
-
1262 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
1263 // The stack buffer was too small to retrieve complete data. Alloc and retry.
-
1264 TokenInformation.reset((_Ty*)(new BYTE[dwSize / sizeof(BYTE)]));
-
1265 if (!TokenInformation) {
-
1266 SetLastError(ERROR_OUTOFMEMORY);
-
1267 return FALSE;
-
1268 }
-
1269 return GetTokenInformation(TokenHandle, TokenInformationClass, TokenInformation.get(), dwSize, &dwSize);
-
1270 } else
-
1271 return FALSE;
-
1272}
-
1273
-
1279template<class _Traits, class _Ax>
-
1280static _Success_(return != 0) BOOL QueryFullProcessImageNameA(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<char, _Traits, _Ax>& sExeName)
-
1281{
-
1282 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(char)];
-
1283 DWORD dwSize = _countof(szStackBuffer);
-
1284
-
1285 // Try with stack buffer first.
-
1286 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szStackBuffer, &dwSize)) {
-
1287 // Copy from stack.
-
1288 sExeName.assign(szStackBuffer, dwSize);
-
1289 return TRUE;
-
1290 }
-
1291 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(char); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
-
1292 // Allocate on heap and retry.
-
1293 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
-
1294 dwSize = dwCapacity;
-
1295 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
-
1296 sExeName.assign(szBuffer.get(), dwSize);
-
1297 return TRUE;
-
1298 }
-
1299 }
-
1300 return FALSE;
-
1301}
-
1302
-
1308template<class _Traits, class _Ax>
-
1309static _Success_(return != 0) BOOL QueryFullProcessImageNameW(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<wchar_t, _Traits, _Ax>& sExeName)
-
1310{
-
1311 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t)];
-
1312 DWORD dwSize = _countof(szStackBuffer);
-
1313
-
1314 // Try with stack buffer first.
-
1315 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szStackBuffer, &dwSize)) {
-
1316 // Copy from stack.
-
1317 sExeName.assign(szStackBuffer, dwSize);
-
1318 return TRUE;
-
1319 }
-
1320 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
-
1321 // Allocate on heap and retry.
-
1322 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
-
1323 dwSize = dwCapacity;
-
1324 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
-
1325 sExeName.assign(szBuffer.get(), dwSize);
-
1326 return TRUE;
-
1327 }
-
1328 }
-
1329 return FALSE;
-
1330}
-
1331
-
1333
-
1334#pragma warning(pop)
-
1335
-
1336namespace winstd
-
1337{
-
1340
-
1344 template<HANDLE INVALID>
-
1345 class win_handle : public handle<HANDLE, INVALID>
-
1346 {
-
1347 WINSTD_HANDLE_IMPL(win_handle, INVALID)
-
1348
-
1349 public:
-
1355 virtual ~win_handle()
-
1356 {
-
1357 if (m_h != invalid)
-
1358 free_internal();
-
1359 }
-
1360
-
1361 protected:
-
1367 void free_internal() noexcept override
-
1368 {
-
1369 CloseHandle(m_h);
-
1370 }
-
1371 };
-
1372
-
1378 class library : public handle<HMODULE, NULL>
-
1379 {
-
1380 WINSTD_HANDLE_IMPL(library, NULL)
-
1381
-
1382 public:
-
1388 virtual ~library()
-
1389 {
-
1390 if (m_h != invalid)
-
1391 free_internal();
-
1392 }
-
1393
-
1394 protected:
-
1400 void free_internal() noexcept override
-
1401 {
-
1402 FreeLibrary(m_h);
-
1403 }
-
1404 };
-
1405
-
1411 typedef win_handle<NULL> process;
-
1412
-
1418 typedef win_handle<NULL> thread;
-
1419
-
1425 typedef win_handle<INVALID_HANDLE_VALUE> process_snapshot;
-
1426
-
1433 typedef win_handle<INVALID_HANDLE_VALUE> file;
-
1434
-
1440 typedef win_handle<NULL> file_mapping;
-
1441
-
1445 template <class _Ty> struct UnmapViewOfFile_delete
-
1446 {
-
1447 typedef UnmapViewOfFile_delete<_Ty> _Myt;
-
1448
-
1452 UnmapViewOfFile_delete() {}
-
1453
-
1457 template <class _Ty2> UnmapViewOfFile_delete(const UnmapViewOfFile_delete<_Ty2>&) {}
-
1458
-
1462 void operator()(_Ty* _Ptr) const
-
1463 {
-
1464 if (!UnmapViewOfFile(_Ptr))
-
1465 throw win_runtime_error("UnmapViewOfFile failed");
-
1466 }
-
1467 };
-
1468
-
1472 template <class _Ty> struct UnmapViewOfFile_delete<_Ty[]>
-
1473 {
-
1474 typedef UnmapViewOfFile_delete<_Ty> _Myt;
-
1475
-
1479 UnmapViewOfFile_delete() {}
-
1480
-
1484 void operator()(_Ty* _Ptr) const
-
1485 {
-
1486 if (!UnmapViewOfFile(_Ptr))
-
1487 throw win_runtime_error("UnmapViewOfFile failed");
-
1488 }
-
1489
-
1493 template<class _Other>
-
1494 void operator()(_Other*) const
-
1495 {
-
1496 if (!UnmapViewOfFile(_Ptr))
-
1497 throw win_runtime_error("UnmapViewOfFile failed");
-
1498 }
-
1499 };
-
1500
-
1507 typedef win_handle<NULL> event;
-
1508
-
1512 class critical_section
-
1513 {
-
1514 WINSTD_NONCOPYABLE(critical_section)
-
1515 WINSTD_NONMOVABLE(critical_section)
+
1255 Sid.reset((SID*)new BYTE[dwSize]);
+
1256 memcpy(Sid.get(), szStackBuffer, dwSize);
+
1257 return TRUE;
+
1258 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
1259 // The stack buffer was too small to retrieve complete data. Alloc and retry.
+
1260 Sid.reset((SID*)new BYTE[dwSize]);
+
1261 return CreateWellKnownSid(WellKnownSidType, DomainSid, Sid.get(), &dwSize);
+
1262 } else
+
1263 return FALSE;
+
1264}
+
1265
+
1271template<class _Ty>
+
1272static _Success_(return != 0) BOOL GetTokenInformation(_In_ HANDLE TokenHandle, _In_ TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_ std::unique_ptr<_Ty> &TokenInformation) noexcept
+
1273{
+
1274 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
1275 DWORD dwSize;
+
1276
+
1277 if (GetTokenInformation(TokenHandle, TokenInformationClass, szStackBuffer, sizeof(szStackBuffer), &dwSize)) {
+
1278 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
+
1279 TokenInformation.reset((_Ty*)(new BYTE[dwSize]));
+
1280 memcpy(TokenInformation.get(), szStackBuffer, dwSize);
+
1281 return TRUE;
+
1282 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
1283 // The stack buffer was too small to retrieve complete data. Alloc and retry.
+
1284 TokenInformation.reset((_Ty*)(new BYTE[dwSize]));
+
1285 return GetTokenInformation(TokenHandle, TokenInformationClass, TokenInformation.get(), dwSize, &dwSize);
+
1286 } else
+
1287 return FALSE;
+
1288}
+
1289
+
1295template<class _Traits, class _Ax>
+
1296static _Success_(return != 0) BOOL QueryFullProcessImageNameA(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<char, _Traits, _Ax>& sExeName)
+
1297{
+
1298 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(char)];
+
1299 DWORD dwSize = _countof(szStackBuffer);
+
1300
+
1301 // Try with stack buffer first.
+
1302 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szStackBuffer, &dwSize)) {
+
1303 // Copy from stack.
+
1304 sExeName.assign(szStackBuffer, dwSize);
+
1305 return TRUE;
+
1306 }
+
1307 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(char); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
+
1308 // Allocate on heap and retry.
+
1309 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
+
1310 dwSize = dwCapacity;
+
1311 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
+
1312 sExeName.assign(szBuffer.get(), dwSize);
+
1313 return TRUE;
+
1314 }
+
1315 }
+
1316 return FALSE;
+
1317}
+
1318
+
1324template<class _Traits, class _Ax>
+
1325static _Success_(return != 0) BOOL QueryFullProcessImageNameW(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<wchar_t, _Traits, _Ax>& sExeName)
+
1326{
+
1327 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t)];
+
1328 DWORD dwSize = _countof(szStackBuffer);
+
1329
+
1330 // Try with stack buffer first.
+
1331 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szStackBuffer, &dwSize)) {
+
1332 // Copy from stack.
+
1333 sExeName.assign(szStackBuffer, dwSize);
+
1334 return TRUE;
+
1335 }
+
1336 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
+
1337 // Allocate on heap and retry.
+
1338 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
+
1339 dwSize = dwCapacity;
+
1340 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
+
1341 sExeName.assign(szBuffer.get(), dwSize);
+
1342 return TRUE;
+
1343 }
+
1344 }
+
1345 return FALSE;
+
1346}
+
1347
+
1349
+
1350#pragma warning(pop)
+
1351
+
1352namespace winstd
+
1353{
+
1356
+
1360 template<HANDLE INVALID>
+
1361 class win_handle : public handle<HANDLE, INVALID>
+
1362 {
+
1363 WINSTD_HANDLE_IMPL(win_handle, INVALID)
+
1364
+
1365 public:
+
1371 virtual ~win_handle()
+
1372 {
+
1373 if (m_h != invalid)
+
1374 free_internal();
+
1375 }
+
1376
+
1377 protected:
+
1383 void free_internal() noexcept override
+
1384 {
+
1385 CloseHandle(m_h);
+
1386 }
+
1387 };
+
1388
+
1394 class library : public handle<HMODULE, NULL>
+
1395 {
+
1396 WINSTD_HANDLE_IMPL(library, NULL)
+
1397
+
1398 public:
+
1404 virtual ~library()
+
1405 {
+
1406 if (m_h != invalid)
+
1407 free_internal();
+
1408 }
+
1409
+
1410 protected:
+
1416 void free_internal() noexcept override
+
1417 {
+
1418 FreeLibrary(m_h);
+
1419 }
+
1420 };
+
1421
+
1427 typedef win_handle<NULL> process;
+
1428
+
1434 typedef win_handle<NULL> thread;
+
1435
+
1441 typedef win_handle<INVALID_HANDLE_VALUE> process_snapshot;
+
1442
+
1449 typedef win_handle<INVALID_HANDLE_VALUE> file;
+
1450
+
1456 typedef win_handle<NULL> file_mapping;
+
1457
+
1461 template <class _Ty> struct UnmapViewOfFile_delete
+
1462 {
+
1463 typedef UnmapViewOfFile_delete<_Ty> _Myt;
+
1464
+
1468 UnmapViewOfFile_delete() {}
+
1469
+
1473 template <class _Ty2> UnmapViewOfFile_delete(const UnmapViewOfFile_delete<_Ty2>&) {}
+
1474
+
1478 void operator()(_Ty* _Ptr) const
+
1479 {
+
1480 if (!UnmapViewOfFile(_Ptr))
+
1481 throw win_runtime_error("UnmapViewOfFile failed");
+
1482 }
+
1483 };
+
1484
+
1488 template <class _Ty> struct UnmapViewOfFile_delete<_Ty[]>
+
1489 {
+
1490 typedef UnmapViewOfFile_delete<_Ty> _Myt;
+
1491
+
1495 UnmapViewOfFile_delete() {}
+
1496
+
1500 void operator()(_Ty* _Ptr) const
+
1501 {
+
1502 if (!UnmapViewOfFile(_Ptr))
+
1503 throw win_runtime_error("UnmapViewOfFile failed");
+
1504 }
+
1505
+
1509 template<class _Other>
+
1510 void operator()(_Other*) const
+
1511 {
+
1512 if (!UnmapViewOfFile(_Ptr))
+
1513 throw win_runtime_error("UnmapViewOfFile failed");
+
1514 }
+
1515 };
1516
-
1517 public:
-
1523 critical_section() noexcept
-
1524 {
-
1525 InitializeCriticalSection(&m_data);
-
1526 }
-
1527
-
1533 virtual ~critical_section()
-
1534 {
-
1535 DeleteCriticalSection(&m_data);
-
1536 }
-
1537
-
1543 operator LPCRITICAL_SECTION() noexcept
-
1544 {
-
1545 return &m_data;
-
1546 }
-
1547
-
1548 protected:
-
1549 CRITICAL_SECTION m_data;
-
1550 };
-
1551
-
1557 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
-
1558 {
-
1559 WINSTD_HANDLE_IMPL(find_file, INVALID_HANDLE_VALUE)
-
1560
-
1561 public:
-
1567 virtual ~find_file()
-
1568 {
-
1569 if (m_h != invalid)
-
1570 free_internal();
-
1571 }
-
1572
-
1573 protected:
-
1579 void free_internal() noexcept override
-
1580 {
-
1581 FindClose(m_h);
-
1582 }
-
1583 };
-
1584
-
1590 class heap : public handle<HANDLE, NULL>
-
1591 {
-
1592 WINSTD_HANDLE_IMPL(heap, NULL)
-
1593
-
1594 public:
-
1600 virtual ~heap()
-
1601 {
-
1602 if (m_h != invalid)
-
1603 free_internal();
-
1604 }
-
1605
-
1613 bool enumerate() noexcept
-
1614 {
-
1615 assert(m_h != invalid);
-
1616
-
1617 bool found = false;
-
1618
-
1619 // Lock the heap for exclusive access.
-
1620 HeapLock(m_h);
+
1523 typedef win_handle<NULL> event;
+
1524
+
1528 class critical_section
+
1529 {
+
1530 WINSTD_NONCOPYABLE(critical_section)
+
1531 WINSTD_NONMOVABLE(critical_section)
+
1532
+
1533 public:
+
1539 critical_section() noexcept
+
1540 {
+
1541 InitializeCriticalSection(&m_data);
+
1542 }
+
1543
+
1549 virtual ~critical_section()
+
1550 {
+
1551 DeleteCriticalSection(&m_data);
+
1552 }
+
1553
+
1559 operator LPCRITICAL_SECTION() noexcept
+
1560 {
+
1561 return &m_data;
+
1562 }
+
1563
+
1564 protected:
+
1565 CRITICAL_SECTION m_data;
+
1566 };
+
1567
+
1573 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
+
1574 {
+
1575 WINSTD_HANDLE_IMPL(find_file, INVALID_HANDLE_VALUE)
+
1576
+
1577 public:
+
1583 virtual ~find_file()
+
1584 {
+
1585 if (m_h != invalid)
+
1586 free_internal();
+
1587 }
+
1588
+
1589 protected:
+
1595 void free_internal() noexcept override
+
1596 {
+
1597 FindClose(m_h);
+
1598 }
+
1599 };
+
1600
+
1606 class heap : public handle<HANDLE, NULL>
+
1607 {
+
1608 WINSTD_HANDLE_IMPL(heap, NULL)
+
1609
+
1610 public:
+
1616 virtual ~heap()
+
1617 {
+
1618 if (m_h != invalid)
+
1619 free_internal();
+
1620 }
1621
-
1622 PROCESS_HEAP_ENTRY e;
-
1623 e.lpData = NULL;
-
1624 while (HeapWalk(m_h, &e) != FALSE) {
-
1625 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
-
1626 OutputDebugStr(
-
1627 _T("Allocated block%s%s\n")
-
1628 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
-
1629 _T(" Overhead: %d bytes\n Region index: %d\n"),
-
1630 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
-
1631 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
-
1632 e.lpData,
-
1633 e.cbData,
-
1634 e.cbOverhead,
-
1635 e.iRegionIndex);
-
1636
-
1637 found = true;
-
1638 }
-
1639 }
-
1640
-
1641 const DWORD dwResult = GetLastError();
-
1642 if (dwResult != ERROR_NO_MORE_ITEMS)
-
1643 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
-
1644
-
1645 // Unlock the heap.
-
1646 HeapUnlock(m_h);
-
1647
-
1648 return found;
-
1649 }
-
1650
-
1651 protected:
-
1657 void free_internal() noexcept override
-
1658 {
-
1659 enumerate();
-
1660 HeapDestroy(m_h);
-
1661 }
-
1662 };
+
1629 bool enumerate() noexcept
+
1630 {
+
1631 assert(m_h != invalid);
+
1632
+
1633 bool found = false;
+
1634
+
1635 // Lock the heap for exclusive access.
+
1636 HeapLock(m_h);
+
1637
+
1638 PROCESS_HEAP_ENTRY e;
+
1639 e.lpData = NULL;
+
1640 while (HeapWalk(m_h, &e) != FALSE) {
+
1641 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
+
1642 OutputDebugStr(
+
1643 _T("Allocated block%s%s\n")
+
1644 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
+
1645 _T(" Overhead: %d bytes\n Region index: %d\n"),
+
1646 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
+
1647 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
+
1648 e.lpData,
+
1649 e.cbData,
+
1650 e.cbOverhead,
+
1651 e.iRegionIndex);
+
1652
+
1653 found = true;
+
1654 }
+
1655 }
+
1656
+
1657 const DWORD dwResult = GetLastError();
+
1658 if (dwResult != ERROR_NO_MORE_ITEMS)
+
1659 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
+
1660
+
1661 // Unlock the heap.
+
1662 HeapUnlock(m_h);
1663
-
1667 template <class _Ty>
-
1668 class heap_allocator
-
1669 {
-
1670 public:
-
1671 typedef typename _Ty value_type;
-
1672
-
1673 typedef _Ty *pointer;
-
1674 typedef _Ty& reference;
-
1675 typedef const _Ty *const_pointer;
-
1676 typedef const _Ty& const_reference;
-
1677
-
1678 typedef SIZE_T size_type;
-
1679 typedef ptrdiff_t difference_type;
-
1680
-
1684 template <class _Other>
-
1685 struct rebind
-
1686 {
-
1687 typedef heap_allocator<_Other> other;
-
1688 };
-
1689
-
1690 public:
-
1696 heap_allocator(_In_ HANDLE heap) : m_heap(heap)
-
1697 {
-
1698 }
-
1699
-
1705 template <class _Other>
-
1706 heap_allocator(_In_ const heap_allocator<_Other> &other) : m_heap(other.m_heap)
-
1707 {
-
1708 }
-
1709
-
1717 pointer allocate(_In_ size_type count)
-
1718 {
-
1719 assert(m_heap);
-
1720 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
-
1721 }
-
1722
-
1729 void deallocate(_In_ pointer ptr, _In_ size_type size)
-
1730 {
-
1731 UNREFERENCED_PARAMETER(size);
-
1732 assert(m_heap);
-
1733 HeapFree(m_heap, 0, ptr);
-
1734 }
-
1735
-
1742 void construct(_Inout_ pointer ptr, _In_ const _Ty& val)
-
1743 {
-
1744 ::new ((void*)ptr) _Ty(val);
-
1745 }
-
1746
-
1753 void construct(_Inout_ pointer ptr, _Inout_ _Ty&& val)
-
1754 {
-
1755 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
-
1756 }
-
1757
-
1763 void destroy(_Inout_ pointer ptr)
-
1764 {
-
1765 ptr->_Ty::~_Ty();
-
1766 }
-
1767
-
1771 size_type max_size() const
-
1772 {
-
1773 return (SIZE_T)-1;
-
1774 }
-
1775
-
1776 public:
-
1777 HANDLE m_heap;
-
1778 };
-
1779
-
1783 class actctx_activator
-
1784 {
-
1785 WINSTD_NONCOPYABLE(actctx_activator)
-
1786 WINSTD_NONMOVABLE(actctx_activator)
-
1787
-
1788 public:
-
1796 actctx_activator(_In_ HANDLE hActCtx) noexcept
-
1797 {
-
1798 if (!ActivateActCtx(hActCtx, &m_cookie))
-
1799 m_cookie = 0;
-
1800 }
-
1801
-
1807 virtual ~actctx_activator()
-
1808 {
-
1809 if (m_cookie)
-
1810 DeactivateActCtx(0, m_cookie);
-
1811 }
-
1812
-
1813 protected:
-
1814 ULONG_PTR m_cookie;
-
1815 };
-
1816
-
1820 class user_impersonator
-
1821 {
-
1822 WINSTD_NONCOPYABLE(user_impersonator)
-
1823 WINSTD_NONMOVABLE(user_impersonator)
-
1824
-
1825 public:
-
1833 user_impersonator(_In_opt_ HANDLE hToken) noexcept
-
1834 {
-
1835 m_cookie = hToken && ImpersonateLoggedOnUser(hToken);
-
1836 }
-
1837
-
1843 virtual ~user_impersonator()
-
1844 {
-
1845 if (m_cookie)
-
1846 RevertToSelf();
-
1847 }
-
1848
-
1849 protected:
-
1850 BOOL m_cookie;
-
1851 };
-
1852
-
1856 class console_ctrl_handler
-
1857 {
-
1858 WINSTD_NONCOPYABLE(console_ctrl_handler)
-
1859 WINSTD_NONMOVABLE(console_ctrl_handler)
-
1860
-
1861 public:
-
1869 console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept : m_handler(HandlerRoutine)
-
1870 {
-
1871 m_cookie = SetConsoleCtrlHandler(m_handler, TRUE);
-
1872 }
-
1873
-
1879 virtual ~console_ctrl_handler()
-
1880 {
-
1881 if (m_cookie)
-
1882 SetConsoleCtrlHandler(m_handler, FALSE);
+
1664 return found;
+
1665 }
+
1666
+
1667 protected:
+
1673 void free_internal() noexcept override
+
1674 {
+
1675 enumerate();
+
1676 HeapDestroy(m_h);
+
1677 }
+
1678 };
+
1679
+
1683 template <class _Ty>
+
1684 class heap_allocator
+
1685 {
+
1686 public:
+
1687 typedef typename _Ty value_type;
+
1688
+
1689 typedef _Ty *pointer;
+
1690 typedef _Ty& reference;
+
1691 typedef const _Ty *const_pointer;
+
1692 typedef const _Ty& const_reference;
+
1693
+
1694 typedef SIZE_T size_type;
+
1695 typedef ptrdiff_t difference_type;
+
1696
+
1700 template <class _Other>
+
1701 struct rebind
+
1702 {
+
1703 typedef heap_allocator<_Other> other;
+
1704 };
+
1705
+
1706 public:
+
1712 heap_allocator(_In_ HANDLE heap) : m_heap(heap)
+
1713 {
+
1714 }
+
1715
+
1721 template <class _Other>
+
1722 heap_allocator(_In_ const heap_allocator<_Other> &other) : m_heap(other.m_heap)
+
1723 {
+
1724 }
+
1725
+
1733 pointer allocate(_In_ size_type count)
+
1734 {
+
1735 assert(m_heap);
+
1736 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
+
1737 }
+
1738
+
1745 void deallocate(_In_ pointer ptr, _In_ size_type size)
+
1746 {
+
1747 UNREFERENCED_PARAMETER(size);
+
1748 assert(m_heap);
+
1749 HeapFree(m_heap, 0, ptr);
+
1750 }
+
1751
+
1758 void construct(_Inout_ pointer ptr, _In_ const _Ty& val)
+
1759 {
+
1760 ::new ((void*)ptr) _Ty(val);
+
1761 }
+
1762
+
1769 void construct(_Inout_ pointer ptr, _Inout_ _Ty&& val)
+
1770 {
+
1771 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
+
1772 }
+
1773
+
1779 void destroy(_Inout_ pointer ptr)
+
1780 {
+
1781 ptr->_Ty::~_Ty();
+
1782 }
+
1783
+
1787 size_type max_size() const
+
1788 {
+
1789 return (SIZE_T)-1;
+
1790 }
+
1791
+
1792 public:
+
1793 HANDLE m_heap;
+
1794 };
+
1795
+
1799 class actctx_activator
+
1800 {
+
1801 WINSTD_NONCOPYABLE(actctx_activator)
+
1802 WINSTD_NONMOVABLE(actctx_activator)
+
1803
+
1804 public:
+
1812 actctx_activator(_In_ HANDLE hActCtx) noexcept
+
1813 {
+
1814 if (!ActivateActCtx(hActCtx, &m_cookie))
+
1815 m_cookie = 0;
+
1816 }
+
1817
+
1823 virtual ~actctx_activator()
+
1824 {
+
1825 if (m_cookie)
+
1826 DeactivateActCtx(0, m_cookie);
+
1827 }
+
1828
+
1829 protected:
+
1830 ULONG_PTR m_cookie;
+
1831 };
+
1832
+
1836 class impersonator
+
1837 {
+
1838 public:
+
1842 impersonator() noexcept : m_cookie(FALSE) {}
+
1843
+
1849 virtual ~impersonator()
+
1850 {
+
1851 if (m_cookie)
+
1852 RevertToSelf();
+
1853 }
+
1854
+
1858 operator bool () const { return m_cookie; }
+
1859
+
1860 protected:
+
1861 BOOL m_cookie;
+
1862 };
+
1863
+
1867 class user_impersonator : public impersonator
+
1868 {
+
1869 WINSTD_NONCOPYABLE(user_impersonator)
+
1870 WINSTD_NONMOVABLE(user_impersonator)
+
1871
+
1872 public:
+
1880 user_impersonator(_In_opt_ HANDLE hToken) noexcept
+
1881 {
+
1882 m_cookie = hToken && ImpersonateLoggedOnUser(hToken);
1883 }
-
1884
-
1885 protected:
-
1886 BOOL m_cookie;
-
1887 PHANDLER_ROUTINE m_handler;
-
1888 };
-
1889
-
1893 class vmemory : public handle<LPVOID, NULL>
-
1894 {
-
1895 WINSTD_NONCOPYABLE(vmemory)
-
1896
-
1897 public:
-
1901 vmemory() noexcept : m_proc(NULL)
-
1902 {
-
1903 }
+
1884 };
+
1885
+
1889 class system_impersonator : public impersonator
+
1890 {
+
1891 WINSTD_NONCOPYABLE(system_impersonator)
+
1892 WINSTD_NONMOVABLE(system_impersonator)
+
1893
+
1894 public:
+
1898 system_impersonator() noexcept
+
1899 {
+
1900 TOKEN_PRIVILEGES privileges = { 1, {{{ 0, 0 }, SE_PRIVILEGE_ENABLED }} };
+
1901 if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &privileges.Privileges[0].Luid) ||
+
1902 !ImpersonateSelf(SecurityImpersonation))
+
1903 return;
1904
-
1911 vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept :
-
1912 m_proc(proc),
-
1913 handle<LPVOID, NULL>(h)
-
1914 {
-
1915 }
-
1916
-
1922 vmemory(_Inout_ vmemory &&h) noexcept :
-
1923 m_proc(std::move(h.m_proc)),
-
1924 handle<LPVOID, NULL>(std::move(h))
-
1925 {
-
1926 }
-
1927
-
1933 virtual ~vmemory()
-
1934 {
-
1935 if (m_h != invalid)
-
1936 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
-
1937 }
-
1938
-
1944 vmemory& operator=(_Inout_ vmemory &&other) noexcept
-
1945 {
-
1946 if (this != std::addressof(other)) {
-
1947 (handle<handle_type, NULL>&&)*this = std::move(other);
-
1948 m_proc = std::move(other.m_proc);
-
1949 }
-
1950 return *this;
-
1951 }
-
1952
-
1961 void attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
-
1962 {
-
1963 m_proc = proc;
-
1964 if (m_h != invalid)
-
1965 free_internal();
-
1966 m_h = h;
-
1967 }
-
1968
-
1978 bool alloc(
-
1979 _In_ HANDLE hProcess,
-
1980 _In_opt_ LPVOID lpAddress,
-
1981 _In_ SIZE_T dwSize,
-
1982 _In_ DWORD flAllocationType,
-
1983 _In_ DWORD flProtect) noexcept
-
1984 {
-
1985 handle_type h = VirtualAllocEx(hProcess, lpAddress, dwSize, flAllocationType, flProtect);
-
1986 if (h != invalid) {
-
1987 attach(hProcess, h);
-
1988 return true;
-
1989 } else
-
1990 return false;
-
1991 }
-
1992
-
1993 protected:
-
1999 void free_internal() noexcept override
-
2000 {
-
2001 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
-
2002 }
-
2003
-
2004 protected:
-
2005 HANDLE m_proc;
-
2006 };
+
1905 {
+
1906 HANDLE h;
+
1907 if (!OpenThreadToken(GetCurrentThread(), TOKEN_ADJUST_PRIVILEGES, FALSE, &h))
+
1908 goto revert;
+
1909 win_handle<INVALID_HANDLE_VALUE> thread_token(h);
+
1910 if (!AdjustTokenPrivileges(thread_token, FALSE, &privileges, sizeof(privileges), NULL, NULL))
+
1911 goto revert;
+
1912 process_snapshot process_snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+
1913 if (!process_snapshot)
+
1914 goto revert;
+
1915 PROCESSENTRY32 entry = { sizeof(PROCESSENTRY32) };
+
1916 if (!Process32First(process_snapshot, &entry))
+
1917 goto revert;
+
1918 while (_tcsicmp(entry.szExeFile, TEXT("winlogon.exe")) != 0)
+
1919 if (!Process32Next(process_snapshot, &entry))
+
1920 goto revert;
+
1921 process winlogon_process = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, entry.th32ProcessID);
+
1922 if (!winlogon_process)
+
1923 goto revert;
+
1924 if (!OpenProcessToken(winlogon_process, TOKEN_IMPERSONATE | TOKEN_DUPLICATE, &h))
+
1925 goto revert;
+
1926 win_handle<INVALID_HANDLE_VALUE> winlogon_token(h);
+
1927 if (!DuplicateToken(winlogon_token, SecurityImpersonation, &h))
+
1928 goto revert;
+
1929 win_handle<INVALID_HANDLE_VALUE> duplicated_token(h);
+
1930 if (!SetThreadToken(NULL, duplicated_token))
+
1931 goto revert;
+
1932 }
+
1933
+
1934 m_cookie = TRUE;
+
1935 return;
+
1936
+
1937 revert:
+
1938 DWORD dwResult = GetLastError();
+
1939 RevertToSelf();
+
1940 SetLastError(dwResult);
+
1941 }
+
1942 };
+
1943
+
1947 class console_ctrl_handler
+
1948 {
+
1949 WINSTD_NONCOPYABLE(console_ctrl_handler)
+
1950 WINSTD_NONMOVABLE(console_ctrl_handler)
+
1951
+
1952 public:
+
1960 console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept : m_handler(HandlerRoutine)
+
1961 {
+
1962 m_cookie = SetConsoleCtrlHandler(m_handler, TRUE);
+
1963 }
+
1964
+
1970 virtual ~console_ctrl_handler()
+
1971 {
+
1972 if (m_cookie)
+
1973 SetConsoleCtrlHandler(m_handler, FALSE);
+
1974 }
+
1975
+
1976 protected:
+
1977 BOOL m_cookie;
+
1978 PHANDLER_ROUTINE m_handler;
+
1979 };
+
1980
+
1984 class vmemory : public handle<LPVOID, NULL>
+
1985 {
+
1986 WINSTD_NONCOPYABLE(vmemory)
+
1987
+
1988 public:
+
1992 vmemory() noexcept : m_proc(NULL)
+
1993 {
+
1994 }
+
1995
+
2002 vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept :
+
2003 m_proc(proc),
+
2004 handle<LPVOID, NULL>(h)
+
2005 {
+
2006 }
2007
-
2014 class reg_key : public handle<HKEY, NULL>
-
2015 {
-
2016 WINSTD_HANDLE_IMPL(reg_key, NULL)
-
2017
-
2018 public:
-
2024 virtual ~reg_key()
+
2013 vmemory(_Inout_ vmemory &&h) noexcept :
+
2014 m_proc(std::move(h.m_proc)),
+
2015 handle<LPVOID, NULL>(std::move(h))
+
2016 {
+
2017 }
+
2018
+
2024 virtual ~vmemory()
2025 {
2026 if (m_h != invalid)
-
2027 free_internal();
+
2027 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
2028 }
2029
-
2039 bool delete_subkey(_In_z_ LPCTSTR szSubkey)
-
2040 {
-
2041 LSTATUS s;
-
2042
-
2043 s = RegDeleteKey(m_h, szSubkey);
-
2044 if (s == ERROR_SUCCESS || s == ERROR_FILE_NOT_FOUND)
-
2045 return true;
-
2046
-
2047 {
-
2048 reg_key k;
-
2049 handle_type h;
-
2050 s = RegOpenKeyEx(m_h, szSubkey, 0, KEY_ENUMERATE_SUB_KEYS, &h);
-
2051 if (s == ERROR_SUCCESS)
-
2052 k.attach(h);
-
2053 else {
-
2054 SetLastError(s);
-
2055 return false;
-
2056 }
-
2057 for (;;) {
-
2058 TCHAR szName[MAX_PATH];
-
2059 DWORD dwSize = _countof(szName);
-
2060 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
-
2061 if (s == ERROR_SUCCESS)
-
2062 k.delete_subkey(szName);
-
2063 else if (s == ERROR_NO_MORE_ITEMS)
-
2064 break;
-
2065 else {
-
2066 SetLastError(s);
-
2067 return false;
-
2068 }
-
2069 }
-
2070 }
-
2071
-
2072 s = RegDeleteKey(m_h, szSubkey);
-
2073 if (s == ERROR_SUCCESS)
-
2074 return true;
-
2075 else {
-
2076 SetLastError(s);
-
2077 return false;
-
2078 }
-
2079 }
-
2080
-
2081 protected:
-
2087 void free_internal() noexcept override
-
2088 {
-
2089 RegCloseKey(m_h);
-
2090 }
-
2091 };
-
2092
-
2096 class security_id : public handle<PSID, NULL>
-
2097 {
-
2098 WINSTD_HANDLE_IMPL(security_id, NULL)
-
2099
-
2100 public:
-
2106 virtual ~security_id()
-
2107 {
-
2108 if (m_h != invalid)
-
2109 free_internal();
-
2110 }
-
2111
-
2112 protected:
-
2118 void free_internal() noexcept override
-
2119 {
-
2120 FreeSid(m_h);
-
2121 }
-
2122 };
-
2123
-
2127 class process_information : public PROCESS_INFORMATION
-
2128 {
-
2129 WINSTD_NONCOPYABLE(process_information)
-
2130 WINSTD_NONMOVABLE(process_information)
-
2131
-
2132 public:
-
2136 process_information() noexcept
-
2137 {
-
2138 hProcess = INVALID_HANDLE_VALUE;
-
2139 hThread = INVALID_HANDLE_VALUE;
-
2140 dwProcessId = 0;
-
2141 dwThreadId = 0;
-
2142 }
-
2143
-
2147 ~process_information()
-
2148 {
-
2149 #pragma warning(push)
-
2150 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
-
2151
-
2152 if (hProcess != INVALID_HANDLE_VALUE)
-
2153 CloseHandle(hProcess);
-
2154
-
2155 if (hThread != INVALID_HANDLE_VALUE)
-
2156 CloseHandle(hThread);
-
2157
-
2158 #pragma warning(pop)
-
2159 }
-
2160 };
-
2161
-
2167 class event_log : public handle<HANDLE, NULL>
-
2168 {
-
2169 WINSTD_HANDLE_IMPL(event_log, NULL)
-
2170
-
2171 public:
-
2177 virtual ~event_log()
-
2178 {
-
2179 if (m_h != invalid)
-
2180 free_internal();
+
2035 vmemory& operator=(_Inout_ vmemory &&other) noexcept
+
2036 {
+
2037 if (this != std::addressof(other)) {
+
2038 (handle<handle_type, NULL>&&)*this = std::move(other);
+
2039 m_proc = std::move(other.m_proc);
+
2040 }
+
2041 return *this;
+
2042 }
+
2043
+
2052 void attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
+
2053 {
+
2054 m_proc = proc;
+
2055 if (m_h != invalid)
+
2056 free_internal();
+
2057 m_h = h;
+
2058 }
+
2059
+
2069 bool alloc(
+
2070 _In_ HANDLE hProcess,
+
2071 _In_opt_ LPVOID lpAddress,
+
2072 _In_ SIZE_T dwSize,
+
2073 _In_ DWORD flAllocationType,
+
2074 _In_ DWORD flProtect) noexcept
+
2075 {
+
2076 handle_type h = VirtualAllocEx(hProcess, lpAddress, dwSize, flAllocationType, flProtect);
+
2077 if (h != invalid) {
+
2078 attach(hProcess, h);
+
2079 return true;
+
2080 } else
+
2081 return false;
+
2082 }
+
2083
+
2084 protected:
+
2090 void free_internal() noexcept override
+
2091 {
+
2092 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
+
2093 }
+
2094
+
2095 protected:
+
2096 HANDLE m_proc;
+
2097 };
+
2098
+
2105 class reg_key : public handle<HKEY, NULL>
+
2106 {
+
2107 WINSTD_HANDLE_IMPL(reg_key, NULL)
+
2108
+
2109 public:
+
2115 virtual ~reg_key()
+
2116 {
+
2117 if (m_h != invalid)
+
2118 free_internal();
+
2119 }
+
2120
+
2130 bool delete_subkey(_In_z_ LPCTSTR szSubkey)
+
2131 {
+
2132 LSTATUS s;
+
2133
+
2134 s = RegDeleteKey(m_h, szSubkey);
+
2135 if (s == ERROR_SUCCESS || s == ERROR_FILE_NOT_FOUND)
+
2136 return true;
+
2137
+
2138 {
+
2139 reg_key k;
+
2140 handle_type h;
+
2141 s = RegOpenKeyEx(m_h, szSubkey, 0, KEY_ENUMERATE_SUB_KEYS, &h);
+
2142 if (s == ERROR_SUCCESS)
+
2143 k.attach(h);
+
2144 else {
+
2145 SetLastError(s);
+
2146 return false;
+
2147 }
+
2148 for (;;) {
+
2149 TCHAR szName[MAX_PATH];
+
2150 DWORD dwSize = _countof(szName);
+
2151 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
+
2152 if (s == ERROR_SUCCESS)
+
2153 k.delete_subkey(szName);
+
2154 else if (s == ERROR_NO_MORE_ITEMS)
+
2155 break;
+
2156 else {
+
2157 SetLastError(s);
+
2158 return false;
+
2159 }
+
2160 }
+
2161 }
+
2162
+
2163 s = RegDeleteKey(m_h, szSubkey);
+
2164 if (s == ERROR_SUCCESS)
+
2165 return true;
+
2166 else {
+
2167 SetLastError(s);
+
2168 return false;
+
2169 }
+
2170 }
+
2171
+
2172 protected:
+
2178 void free_internal() noexcept override
+
2179 {
+
2180 RegCloseKey(m_h);
2181 }
-
2182
-
2183 protected:
-
2189 void free_internal() noexcept override
-
2190 {
-
2191 DeregisterEventSource(m_h);
-
2192 }
-
2193 };
-
2194
-
2198 class sc_handle : public handle<SC_HANDLE, NULL>
-
2199 {
-
2200 WINSTD_HANDLE_IMPL(sc_handle, NULL)
-
2201
-
2202 public:
-
2208 virtual ~sc_handle()
-
2209 {
-
2210 if (m_h != invalid)
-
2211 free_internal();
+
2182 };
+
2183
+
2187 class security_id : public handle<PSID, NULL>
+
2188 {
+
2189 WINSTD_HANDLE_IMPL(security_id, NULL)
+
2190
+
2191 public:
+
2197 virtual ~security_id()
+
2198 {
+
2199 if (m_h != invalid)
+
2200 free_internal();
+
2201 }
+
2202
+
2203 protected:
+
2209 void free_internal() noexcept override
+
2210 {
+
2211 FreeSid(m_h);
2212 }
-
2213
-
2214 protected:
-
2220 void free_internal() noexcept override
-
2221 {
-
2222 CloseServiceHandle(m_h);
-
2223 }
-
2224 };
-
2225
-
2227}
-
2228
-
2231
-
2232#pragma warning(push)
-
2233#pragma warning(disable: 4505) // Don't warn on unused code
+
2213 };
+
2214
+
2218 class process_information : public PROCESS_INFORMATION
+
2219 {
+
2220 WINSTD_NONCOPYABLE(process_information)
+
2221 WINSTD_NONMOVABLE(process_information)
+
2222
+
2223 public:
+
2227 process_information() noexcept
+
2228 {
+
2229 hProcess = INVALID_HANDLE_VALUE;
+
2230 hThread = INVALID_HANDLE_VALUE;
+
2231 dwProcessId = 0;
+
2232 dwThreadId = 0;
+
2233 }
2234
-
2236static LSTATUS RegCreateKeyExA(
-
2237 _In_ HKEY hKey,
-
2238 _In_ LPCSTR lpSubKey,
-
2239 _Reserved_ DWORD Reserved,
-
2240 _In_opt_ LPSTR lpClass,
-
2241 _In_ DWORD dwOptions,
-
2242 _In_ REGSAM samDesired,
-
2243 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
-
2244 _Inout_ winstd::reg_key &result,
-
2245 _Out_opt_ LPDWORD lpdwDisposition)
-
2246{
-
2247 HKEY h;
-
2248 LSTATUS s = RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
-
2249 if (s == ERROR_SUCCESS)
-
2250 result.attach(h);
-
2251 return s;
-
2252}
-
2253
-
2259static LSTATUS RegCreateKeyExW(
-
2260 _In_ HKEY hKey,
-
2261 _In_ LPCWSTR lpSubKey,
-
2262 _Reserved_ DWORD Reserved,
-
2263 _In_opt_ LPWSTR lpClass,
-
2264 _In_ DWORD dwOptions,
-
2265 _In_ REGSAM samDesired,
-
2266 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
-
2267 _Inout_ winstd::reg_key &result,
-
2268 _Out_opt_ LPDWORD lpdwDisposition)
-
2269{
-
2270 HKEY h;
-
2271 LSTATUS s = RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
-
2272 if (s == ERROR_SUCCESS)
-
2273 result.attach(h);
-
2274 return s;
-
2275}
-
2276
-
2278static LSTATUS RegOpenKeyExA(
-
2279 _In_ HKEY hKey,
-
2280 _In_opt_ LPCSTR lpSubKey,
-
2281 _In_opt_ DWORD ulOptions,
-
2282 _In_ REGSAM samDesired,
-
2283 _Inout_ winstd::reg_key &result)
-
2284{
-
2285 HKEY h;
-
2286 LSTATUS s = RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, &h);
-
2287 if (s == ERROR_SUCCESS)
-
2288 result.attach(h);
-
2289 return s;
-
2290}
-
2291
-
2297static LSTATUS RegOpenKeyExW(
-
2298 _In_ HKEY hKey,
-
2299 _In_opt_ LPCWSTR lpSubKey,
-
2300 _In_opt_ DWORD ulOptions,
-
2301 _In_ REGSAM samDesired,
-
2302 _Inout_ winstd::reg_key &result)
-
2303{
-
2304 HKEY h;
-
2305 LSTATUS s = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, &h);
-
2306 if (s == ERROR_SUCCESS)
-
2307 result.attach(h);
-
2308 return s;
-
2309}
-
2310
-
2311#pragma warning(pop)
-
2312
-
Activates given activation context in constructor and deactivates it in destructor.
Definition: Win.h:1784
-
actctx_activator(HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition: Win.h:1796
-
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition: Win.h:1807
-
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition: Win.h:1814
+
2238 ~process_information()
+
2239 {
+
2240 #pragma warning(push)
+
2241 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
+
2242
+
2243 if (hProcess != INVALID_HANDLE_VALUE)
+
2244 CloseHandle(hProcess);
+
2245
+
2246 if (hThread != INVALID_HANDLE_VALUE)
+
2247 CloseHandle(hThread);
+
2248
+
2249 #pragma warning(pop)
+
2250 }
+
2251 };
+
2252
+
2258 class event_log : public handle<HANDLE, NULL>
+
2259 {
+
2260 WINSTD_HANDLE_IMPL(event_log, NULL)
+
2261
+
2262 public:
+
2268 virtual ~event_log()
+
2269 {
+
2270 if (m_h != invalid)
+
2271 free_internal();
+
2272 }
+
2273
+
2274 protected:
+
2280 void free_internal() noexcept override
+
2281 {
+
2282 DeregisterEventSource(m_h);
+
2283 }
+
2284 };
+
2285
+
2289 class sc_handle : public handle<SC_HANDLE, NULL>
+
2290 {
+
2291 WINSTD_HANDLE_IMPL(sc_handle, NULL)
+
2292
+
2293 public:
+
2299 virtual ~sc_handle()
+
2300 {
+
2301 if (m_h != invalid)
+
2302 free_internal();
+
2303 }
+
2304
+
2305 protected:
+
2311 void free_internal() noexcept override
+
2312 {
+
2313 CloseServiceHandle(m_h);
+
2314 }
+
2315 };
+
2316
+
2318}
+
2319
+
2322
+
2323#pragma warning(push)
+
2324#pragma warning(disable: 4505) // Don't warn on unused code
+
2325
+
2327static LSTATUS RegCreateKeyExA(
+
2328 _In_ HKEY hKey,
+
2329 _In_ LPCSTR lpSubKey,
+
2330 _Reserved_ DWORD Reserved,
+
2331 _In_opt_ LPSTR lpClass,
+
2332 _In_ DWORD dwOptions,
+
2333 _In_ REGSAM samDesired,
+
2334 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+
2335 _Inout_ winstd::reg_key &result,
+
2336 _Out_opt_ LPDWORD lpdwDisposition)
+
2337{
+
2338 HKEY h;
+
2339 LSTATUS s = RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2340 if (s == ERROR_SUCCESS)
+
2341 result.attach(h);
+
2342 return s;
+
2343}
+
2344
+
2350static LSTATUS RegCreateKeyExW(
+
2351 _In_ HKEY hKey,
+
2352 _In_ LPCWSTR lpSubKey,
+
2353 _Reserved_ DWORD Reserved,
+
2354 _In_opt_ LPWSTR lpClass,
+
2355 _In_ DWORD dwOptions,
+
2356 _In_ REGSAM samDesired,
+
2357 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+
2358 _Inout_ winstd::reg_key &result,
+
2359 _Out_opt_ LPDWORD lpdwDisposition)
+
2360{
+
2361 HKEY h;
+
2362 LSTATUS s = RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2363 if (s == ERROR_SUCCESS)
+
2364 result.attach(h);
+
2365 return s;
+
2366}
+
2367
+
2369static LSTATUS RegOpenKeyExA(
+
2370 _In_ HKEY hKey,
+
2371 _In_opt_ LPCSTR lpSubKey,
+
2372 _In_opt_ DWORD ulOptions,
+
2373 _In_ REGSAM samDesired,
+
2374 _Inout_ winstd::reg_key &result)
+
2375{
+
2376 HKEY h;
+
2377 LSTATUS s = RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2378 if (s == ERROR_SUCCESS)
+
2379 result.attach(h);
+
2380 return s;
+
2381}
+
2382
+
2388static LSTATUS RegOpenKeyExW(
+
2389 _In_ HKEY hKey,
+
2390 _In_opt_ LPCWSTR lpSubKey,
+
2391 _In_opt_ DWORD ulOptions,
+
2392 _In_ REGSAM samDesired,
+
2393 _Inout_ winstd::reg_key &result)
+
2394{
+
2395 HKEY h;
+
2396 LSTATUS s = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2397 if (s == ERROR_SUCCESS)
+
2398 result.attach(h);
+
2399 return s;
+
2400}
+
2401
+
2407static BOOL OpenProcessToken(_In_ HANDLE ProcessHandle, _In_ DWORD DesiredAccess, _Inout_ winstd::win_handle<NULL> &TokenHandle)
+
2408{
+
2409 HANDLE h;
+
2410 if (OpenProcessToken(ProcessHandle, DesiredAccess, &h)) {
+
2411 TokenHandle.attach(h);
+
2412 return TRUE;
+
2413 }
+
2414 return FALSE;
+
2415}
+
2416
+
2422static BOOL DuplicateTokenEx(_In_ HANDLE hExistingToken, _In_ DWORD dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpTokenAttributes, _In_ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, _In_ TOKEN_TYPE TokenType, _Inout_ winstd::win_handle<NULL> &NewToken)
+
2423{
+
2424 HANDLE h;
+
2425 if (DuplicateTokenEx(hExistingToken, dwDesiredAccess, lpTokenAttributes, ImpersonationLevel, TokenType, &h)) {
+
2426 NewToken.attach(h);
+
2427 return TRUE;
+
2428 }
+
2429 return FALSE;
+
2430}
+
2431
+
2432#pragma warning(pop)
+
2433
+
Activates given activation context in constructor and deactivates it in destructor.
Definition: Win.h:1800
+
actctx_activator(HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition: Win.h:1812
+
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition: Win.h:1823
+
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition: Win.h:1830
Base template class to support string formatting using printf() style templates.
Definition: Common.h:1080
-
Console control handler stack management.
Definition: Win.h:1857
-
console_ctrl_handler(PHANDLER_ROUTINE HandlerRoutine) noexcept
Construct the console control handler object and pushes the given handler to the console control hand...
Definition: Win.h:1869
-
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition: Win.h:1879
-
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition: Win.h:1887
-
BOOL m_cookie
Did pushing the console control handler succeed?
Definition: Win.h:1886
-
Critical section wrapper.
Definition: Win.h:1513
-
critical_section() noexcept
Construct the object and initializes a critical section object.
Definition: Win.h:1523
-
CRITICAL_SECTION m_data
Critical section struct.
Definition: Win.h:1549
-
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition: Win.h:1533
-
Event log handle wrapper.
Definition: Win.h:2168
-
void free_internal() noexcept override
Closes an event log handle.
Definition: Win.h:2189
-
virtual ~event_log()
Closes an event log handle.
Definition: Win.h:2177
-
Find-file handle wrapper.
Definition: Win.h:1558
-
virtual ~find_file()
Closes a file search handle.
Definition: Win.h:1567
-
void free_internal() noexcept override
Closes a file search handle.
Definition: Win.h:1579
+
Console control handler stack management.
Definition: Win.h:1948
+
console_ctrl_handler(PHANDLER_ROUTINE HandlerRoutine) noexcept
Construct the console control handler object and pushes the given handler to the console control hand...
Definition: Win.h:1960
+
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition: Win.h:1970
+
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition: Win.h:1978
+
BOOL m_cookie
Did pushing the console control handler succeed?
Definition: Win.h:1977
+
Critical section wrapper.
Definition: Win.h:1529
+
critical_section() noexcept
Construct the object and initializes a critical section object.
Definition: Win.h:1539
+
CRITICAL_SECTION m_data
Critical section struct.
Definition: Win.h:1565
+
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition: Win.h:1549
+
Event log handle wrapper.
Definition: Win.h:2259
+
void free_internal() noexcept override
Closes an event log handle.
Definition: Win.h:2280
+
virtual ~event_log()
Closes an event log handle.
Definition: Win.h:2268
+
Find-file handle wrapper.
Definition: Win.h:1574
+
virtual ~find_file()
Closes a file search handle.
Definition: Win.h:1583
+
void free_internal() noexcept override
Closes a file search handle.
Definition: Win.h:1595
Base abstract template class to support generic object handle keeping.
Definition: Common.h:569
LPVOID handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:574
handle_type m_h
Object handle.
Definition: Common.h:823
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:786
-
HeapAlloc allocator.
Definition: Win.h:1669
-
SIZE_T size_type
An unsigned integral type that can represent the length of any sequence that an object of template cl...
Definition: Win.h:1678
-
_Ty value_type
A type that is managed by the allocator.
Definition: Win.h:1671
-
heap_allocator(const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition: Win.h:1706
-
HANDLE m_heap
Heap handle.
Definition: Win.h:1777
-
pointer allocate(size_type count)
Allocates a new memory block.
Definition: Win.h:1717
-
ptrdiff_t difference_type
A signed integral type that can represent the difference between values of pointers to the type of ob...
Definition: Win.h:1679
-
heap_allocator(HANDLE heap)
Constructs allocator.
Definition: Win.h:1696
-
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition: Win.h:1674
-
void construct(pointer ptr, _Ty &&val)
Calls moving constructor for the element.
Definition: Win.h:1753
-
void deallocate(pointer ptr, size_type size)
Frees memory block.
Definition: Win.h:1729
-
size_type max_size() const
Returns maximum memory block size.
Definition: Win.h:1771
-
void construct(pointer ptr, const _Ty &val)
Calls copying constructor for the element.
Definition: Win.h:1742
-
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition: Win.h:1676
-
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition: Win.h:1675
-
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition: Win.h:1673
-
void destroy(pointer ptr)
Calls destructor for the element.
Definition: Win.h:1763
-
Heap handle wrapper.
Definition: Win.h:1591
-
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition: Win.h:1613
-
void free_internal() noexcept override
Destroys the heap.
Definition: Win.h:1657
-
virtual ~heap()
Destroys the heap.
Definition: Win.h:1600
-
Module handle wrapper.
Definition: Win.h:1379
-
void free_internal() noexcept override
Frees the module.
Definition: Win.h:1400
-
virtual ~library()
Frees the module.
Definition: Win.h:1388
-
PROCESS_INFORMATION struct wrapper.
Definition: Win.h:2128
-
~process_information()
Closes process and thread handles.
Definition: Win.h:2147
-
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition: Win.h:2136
-
Registry key wrapper class.
Definition: Win.h:2015
-
void free_internal() noexcept override
Closes a handle to the registry key.
Definition: Win.h:2087
-
bool delete_subkey(LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition: Win.h:2039
-
virtual ~reg_key()
Closes a handle to the registry key.
Definition: Win.h:2024
-
SC_HANDLE wrapper class.
Definition: Win.h:2199
-
void free_internal() noexcept override
Closes an open object handle.
Definition: Win.h:2220
-
virtual ~sc_handle()
Closes an open object handle.
Definition: Win.h:2208
-
SID wrapper class.
Definition: Win.h:2097
-
void free_internal() noexcept override
Closes a handle to the SID.
Definition: Win.h:2118
-
virtual ~security_id()
Closes a handle to the SID.
Definition: Win.h:2106
-
Lets the calling thread impersonate the security context of a logged-on user.
Definition: Win.h:1821
-
BOOL m_cookie
Did impersonation succeed?
Definition: Win.h:1850
-
user_impersonator(HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition: Win.h:1833
-
virtual ~user_impersonator()
Reverts to current user and destructs the impersonator.
Definition: Win.h:1843
-
Memory in virtual address space of a process handle wrapper.
Definition: Win.h:1894
-
vmemory & operator=(vmemory &&other) noexcept
Move assignment.
Definition: Win.h:1944
-
bool alloc(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) noexcept
Reserves, commits, or changes the state of a region of memory within the virtual address space of a s...
Definition: Win.h:1978
-
void free_internal() noexcept override
Frees the memory.
Definition: Win.h:1999
-
void attach(HANDLE proc, handle_type h) noexcept
Sets a new memory handle for the class.
Definition: Win.h:1961
-
virtual ~vmemory()
Frees the memory.
Definition: Win.h:1933
-
vmemory(handle_type h, HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition: Win.h:1911
-
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition: Win.h:1901
-
vmemory(vmemory &&h) noexcept
Move constructor.
Definition: Win.h:1922
-
HANDLE m_proc
Handle of memory's process.
Definition: Win.h:2005
-
Windows HANDLE wrapper class.
Definition: Win.h:1346
-
void free_internal() noexcept override
Closes an open object handle.
Definition: Win.h:1367
-
virtual ~win_handle()
Closes an open object handle.
Definition: Win.h:1355
+
HeapAlloc allocator.
Definition: Win.h:1685
+
SIZE_T size_type
An unsigned integral type that can represent the length of any sequence that an object of template cl...
Definition: Win.h:1694
+
_Ty value_type
A type that is managed by the allocator.
Definition: Win.h:1687
+
heap_allocator(const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition: Win.h:1722
+
HANDLE m_heap
Heap handle.
Definition: Win.h:1793
+
pointer allocate(size_type count)
Allocates a new memory block.
Definition: Win.h:1733
+
ptrdiff_t difference_type
A signed integral type that can represent the difference between values of pointers to the type of ob...
Definition: Win.h:1695
+
heap_allocator(HANDLE heap)
Constructs allocator.
Definition: Win.h:1712
+
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition: Win.h:1690
+
void construct(pointer ptr, _Ty &&val)
Calls moving constructor for the element.
Definition: Win.h:1769
+
void deallocate(pointer ptr, size_type size)
Frees memory block.
Definition: Win.h:1745
+
size_type max_size() const
Returns maximum memory block size.
Definition: Win.h:1787
+
void construct(pointer ptr, const _Ty &val)
Calls copying constructor for the element.
Definition: Win.h:1758
+
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition: Win.h:1692
+
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition: Win.h:1691
+
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition: Win.h:1689
+
void destroy(pointer ptr)
Calls destructor for the element.
Definition: Win.h:1779
+
Heap handle wrapper.
Definition: Win.h:1607
+
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition: Win.h:1629
+
void free_internal() noexcept override
Destroys the heap.
Definition: Win.h:1673
+
virtual ~heap()
Destroys the heap.
Definition: Win.h:1616
+
Base class for thread impersonation of another security context.
Definition: Win.h:1837
+
virtual ~impersonator()
Reverts to current user and destructs the impersonator.
Definition: Win.h:1849
+
impersonator() noexcept
Construct the impersonator.
Definition: Win.h:1842
+
BOOL m_cookie
Did impersonation succeed?
Definition: Win.h:1861
+
Module handle wrapper.
Definition: Win.h:1395
+
void free_internal() noexcept override
Frees the module.
Definition: Win.h:1416
+
virtual ~library()
Frees the module.
Definition: Win.h:1404
+
PROCESS_INFORMATION struct wrapper.
Definition: Win.h:2219
+
~process_information()
Closes process and thread handles.
Definition: Win.h:2238
+
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition: Win.h:2227
+
Registry key wrapper class.
Definition: Win.h:2106
+
void free_internal() noexcept override
Closes a handle to the registry key.
Definition: Win.h:2178
+
bool delete_subkey(LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition: Win.h:2130
+
virtual ~reg_key()
Closes a handle to the registry key.
Definition: Win.h:2115
+
SC_HANDLE wrapper class.
Definition: Win.h:2290
+
void free_internal() noexcept override
Closes an open object handle.
Definition: Win.h:2311
+
virtual ~sc_handle()
Closes an open object handle.
Definition: Win.h:2299
+
SID wrapper class.
Definition: Win.h:2188
+
void free_internal() noexcept override
Closes a handle to the SID.
Definition: Win.h:2209
+
virtual ~security_id()
Closes a handle to the SID.
Definition: Win.h:2197
+
Lets the calling thread impersonate the security context of the SYSTEM user.
Definition: Win.h:1890
+
system_impersonator() noexcept
Construct the impersonator and impersonates the SYSTEM user.
Definition: Win.h:1898
+
Lets the calling thread impersonate the security context of a logged-on user.
Definition: Win.h:1868
+
user_impersonator(HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition: Win.h:1880
+
Memory in virtual address space of a process handle wrapper.
Definition: Win.h:1985
+
vmemory & operator=(vmemory &&other) noexcept
Move assignment.
Definition: Win.h:2035
+
bool alloc(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) noexcept
Reserves, commits, or changes the state of a region of memory within the virtual address space of a s...
Definition: Win.h:2069
+
void free_internal() noexcept override
Frees the memory.
Definition: Win.h:2090
+
void attach(HANDLE proc, handle_type h) noexcept
Sets a new memory handle for the class.
Definition: Win.h:2052
+
virtual ~vmemory()
Frees the memory.
Definition: Win.h:2024
+
vmemory(handle_type h, HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition: Win.h:2002
+
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition: Win.h:1992
+
vmemory(vmemory &&h) noexcept
Move constructor.
Definition: Win.h:2013
+
HANDLE m_proc
Handle of memory's process.
Definition: Win.h:2096
+
Windows HANDLE wrapper class.
Definition: Win.h:1362
+
void free_internal() noexcept override
Closes an open object handle.
Definition: Win.h:1383
+
virtual ~win_handle()
Closes an open object handle.
Definition: Win.h:1371
Windows runtime error.
Definition: Common.h:1013
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:66
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:93
@@ -1869,64 +1964,67 @@ $(function() {
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition: Common.h:284
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:163
static const HANDLE invalid
Invalid handle value.
Definition: Common.h:579
-
static int NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept
Normalizes characters of a text string according to Unicode 4.0 TR#15.
Definition: Win.h:970
-
static int SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition: Win.h:713
-
static DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition: Win.h:177
-
static BOOL StringToGuidA(LPCSTR lpszGuid, LPGUID lpGuid, LPCSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition: Win.h:266
-
static int GetWindowTextA(HWND hWnd, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition: Win.h:79
-
static LSTATUS RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition: Win.h:2259
-
static int WINAPI LoadStringA(HINSTANCE hInstance, UINT uID, std::basic_string< char, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition: Win.h:1052
-
win_handle< INVALID_HANDLE_VALUE > file
File handle wrapper.
Definition: Win.h:1433
-
static BOOL GetFileVersionInfoA(LPCSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition: Win.h:141
-
static int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition: Win.h:802
-
static LSTATUS RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition: Win.h:2236
-
static LSTATUS RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition: Win.h:2278
-
static LSTATUS RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition: Win.h:2297
-
static VOID GuidToStringA(LPCGUID lpGuid, std::basic_string< char, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition: Win.h:227
-
static BOOL StringToGuidW(LPCWSTR lpszGuid, LPGUID lpGuid, LPCWSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition: Win.h:339
-
static LSTATUS RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, std::basic_string< wchar_t, _Traits, _Ax > &sOut, DWORD Flags, LPCWSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition: Win.h:604
-
static BOOL LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, std::basic_string< char, _Traits, _Ax > *sName, std::basic_string< char, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition: Win.h:1170
-
static DWORD GetModuleFileNameW(HMODULE hModule, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition: Win.h:54
-
static BOOL LookupAccountSidW(LPCWSTR lpSystemName, PSID lpSid, std::basic_string< wchar_t, _Traits, _Ax > *sName, std::basic_string< wchar_t, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition: Win.h:1209
-
win_handle< INVALID_HANDLE_VALUE > process_snapshot
Process snapshot handle wrapper.
Definition: Win.h:1425
-
static DWORD GetModuleFileNameA(HMODULE hModule, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition: Win.h:23
-
static int GetDateFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, std::basic_string< wchar_t, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition: Win.h:1154
-
static int WINAPI LoadStringW(HINSTANCE hInstance, UINT uID, std::basic_string< wchar_t, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition: Win.h:1070
-
static BOOL GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, std::unique_ptr< _Ty > &TokenInformation) noexcept
Retrieves a specified type of information about an access token. The calling process must have approp...
Definition: Win.h:1248
-
static LSTATUS RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition: Win.h:565
-
static BOOL GetFileVersionInfoW(LPCWSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition: Win.h:161
-
win_handle< NULL > event
Event handle wrapper.
Definition: Win.h:1507
-
static LSTATUS RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, std::basic_string< char, _Traits, _Ax > &sOut, DWORD Flags, LPCSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition: Win.h:590
-
static VOID OutputDebugStr(LPCSTR lpOutputString,...) noexcept
Formats and sends a string to the debugger for display.
Definition: Win.h:1111
-
static BOOL QueryFullProcessImageNameA(HANDLE hProcess, DWORD dwFlags, std::basic_string< char, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition: Win.h:1280
-
win_handle< NULL > file_mapping
File mapping.
Definition: Win.h:1440
-
static int SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition: Win.h:881
-
static int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition: Win.h:634
-
static BOOL QueryFullProcessImageNameW(HANDLE hProcess, DWORD dwFlags, std::basic_string< wchar_t, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition: Win.h:1309
-
win_handle< NULL > process
Process handle wrapper.
Definition: Win.h:1411
-
static LSTATUS RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition: Win.h:538
-
static LSTATUS RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Queries for a string value in the registry and stores it in a std::string string.
Definition: Win.h:427
-
static int GetWindowTextW(HWND hWnd, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition: Win.h:112
-
static int GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, std::basic_string< char, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition: Win.h:1134
-
static DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition: Win.h:205
-
static VOID GuidToStringW(LPCGUID lpGuid, std::basic_string< wchar_t, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition: Win.h:246
-
static VOID OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept
Formats and sends a string to the debugger for display.
Definition: Win.h:1087
-
win_handle< NULL > thread
Thread handle wrapper.
Definition: Win.h:1418
-
UnmapViewOfFile_delete()
Default construct.
Definition: Win.h:1479
-
void operator()(_Other *) const
Delete a pointer of another type.
Definition: Win.h:1494
-
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: Win.h:1484
-
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition: Win.h:1474
-
Deleter for unique_ptr using UnmapViewOfFile.
Definition: Win.h:1446
-
UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)
Construct from another UnmapViewOfFile_delete.
Definition: Win.h:1457
-
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: Win.h:1462
-
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition: Win.h:1447
-
UnmapViewOfFile_delete()
Default construct.
Definition: Win.h:1452
-
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition: Win.h:1686
-
heap_allocator< _Other > other
Other allocator type.
Definition: Win.h:1687
+
static int NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept
Normalizes characters of a text string according to Unicode 4.0 TR#15.
Definition: Win.h:971
+
static int SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition: Win.h:714
+
static DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition: Win.h:178
+
static BOOL StringToGuidA(LPCSTR lpszGuid, LPGUID lpGuid, LPCSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition: Win.h:267
+
static int GetWindowTextA(HWND hWnd, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition: Win.h:80
+
static LSTATUS RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition: Win.h:2350
+
static int WINAPI LoadStringA(HINSTANCE hInstance, UINT uID, std::basic_string< char, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition: Win.h:1053
+
win_handle< INVALID_HANDLE_VALUE > file
File handle wrapper.
Definition: Win.h:1449
+
static BOOL GetFileVersionInfoA(LPCSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition: Win.h:142
+
static int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition: Win.h:803
+
static LSTATUS RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition: Win.h:2327
+
static LSTATUS RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition: Win.h:2369
+
static LSTATUS RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition: Win.h:2388
+
static VOID GuidToStringA(LPCGUID lpGuid, std::basic_string< char, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition: Win.h:228
+
static BOOL StringToGuidW(LPCWSTR lpszGuid, LPGUID lpGuid, LPCWSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition: Win.h:340
+
static LSTATUS RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, std::basic_string< wchar_t, _Traits, _Ax > &sOut, DWORD Flags, LPCWSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition: Win.h:605
+
static BOOL OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, winstd::win_handle< NULL > &TokenHandle)
Opens the access token associated with a process.
Definition: Win.h:2407
+
static BOOL LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, std::basic_string< char, _Traits, _Ax > *sName, std::basic_string< char, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition: Win.h:1171
+
static DWORD GetModuleFileNameW(HMODULE hModule, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition: Win.h:55
+
static BOOL LookupAccountSidW(LPCWSTR lpSystemName, PSID lpSid, std::basic_string< wchar_t, _Traits, _Ax > *sName, std::basic_string< wchar_t, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition: Win.h:1210
+
win_handle< INVALID_HANDLE_VALUE > process_snapshot
Process snapshot handle wrapper.
Definition: Win.h:1441
+
static DWORD GetModuleFileNameA(HMODULE hModule, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition: Win.h:24
+
static int GetDateFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, std::basic_string< wchar_t, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition: Win.h:1155
+
static BOOL CreateWellKnownSid(WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, std::unique_ptr< SID > &Sid)
Creates a SID for predefined aliases.
Definition: Win.h:1248
+
static int WINAPI LoadStringW(HINSTANCE hInstance, UINT uID, std::basic_string< wchar_t, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition: Win.h:1071
+
static BOOL GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, std::unique_ptr< _Ty > &TokenInformation) noexcept
Retrieves a specified type of information about an access token. The calling process must have approp...
Definition: Win.h:1272
+
static BOOL DuplicateTokenEx(HANDLE hExistingToken, DWORD dwDesiredAccess, LPSECURITY_ATTRIBUTES lpTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, winstd::win_handle< NULL > &NewToken)
Creates a new access token that duplicates an existing token. This function can create either a prima...
Definition: Win.h:2422
+
static LSTATUS RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition: Win.h:566
+
static BOOL GetFileVersionInfoW(LPCWSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition: Win.h:162
+
win_handle< NULL > event
Event handle wrapper.
Definition: Win.h:1523
+
static LSTATUS RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, std::basic_string< char, _Traits, _Ax > &sOut, DWORD Flags, LPCSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition: Win.h:591
+
static VOID OutputDebugStr(LPCSTR lpOutputString,...) noexcept
Formats and sends a string to the debugger for display.
Definition: Win.h:1112
+
static BOOL QueryFullProcessImageNameA(HANDLE hProcess, DWORD dwFlags, std::basic_string< char, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition: Win.h:1296
+
win_handle< NULL > file_mapping
File mapping.
Definition: Win.h:1456
+
static int SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition: Win.h:882
+
static int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition: Win.h:635
+
static BOOL QueryFullProcessImageNameW(HANDLE hProcess, DWORD dwFlags, std::basic_string< wchar_t, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition: Win.h:1325
+
win_handle< NULL > process
Process handle wrapper.
Definition: Win.h:1427
+
static LSTATUS RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition: Win.h:539
+
static LSTATUS RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Queries for a string value in the registry and stores it in a std::string string.
Definition: Win.h:428
+
static int GetWindowTextW(HWND hWnd, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition: Win.h:113
+
static int GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, std::basic_string< char, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition: Win.h:1135
+
static DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition: Win.h:206
+
static VOID GuidToStringW(LPCGUID lpGuid, std::basic_string< wchar_t, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition: Win.h:247
+
static VOID OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept
Formats and sends a string to the debugger for display.
Definition: Win.h:1088
+
win_handle< NULL > thread
Thread handle wrapper.
Definition: Win.h:1434
+
UnmapViewOfFile_delete()
Default construct.
Definition: Win.h:1495
+
void operator()(_Other *) const
Delete a pointer of another type.
Definition: Win.h:1510
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: Win.h:1500
+
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition: Win.h:1490
+
Deleter for unique_ptr using UnmapViewOfFile.
Definition: Win.h:1462
+
UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)
Construct from another UnmapViewOfFile_delete.
Definition: Win.h:1473
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: Win.h:1478
+
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition: Win.h:1463
+
UnmapViewOfFile_delete()
Default construct.
Definition: Win.h:1468
+
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition: Win.h:1702
+
heap_allocator< _Other > other
Other allocator type.
Definition: Win.h:1703
diff --git a/_win_sock2_8h_source.html b/_win_sock2_8h_source.html index 5298faab..03118243 100644 --- a/_win_sock2_8h_source.html +++ b/_win_sock2_8h_source.html @@ -207,7 +207,7 @@ $(function() {
206
207#pragma warning(pop)
208
-
SID wrapper class.
Definition: WinSock2.h:95
+
ADDRINFOA wrapper class.
Definition: WinSock2.h:95
void free_internal() noexcept override
Frees address information.
Definition: WinSock2.h:116
virtual ~addrinfo()
Frees address information.
Definition: WinSock2.h:104
Base abstract template class to support generic object handle keeping.
Definition: Common.h:569
@@ -215,7 +215,7 @@ $(function() {
Numerical runtime error.
Definition: Common.h:968
int error_type
Error number type.
Definition: Common.h:970
error_type m_num
Numeric error code.
Definition: Common.h:1006
-
SID wrapper class.
Definition: WinSock2.h:128
+
ADDRINFOW wrapper class.
Definition: WinSock2.h:128
virtual ~waddrinfo()
Frees address information.
Definition: WinSock2.h:137
void free_internal() noexcept override
Frees address information.
Definition: WinSock2.h:149
WinSock2 runtime error.
Definition: WinSock2.h:25
@@ -224,7 +224,7 @@ $(function() {
ws2_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition: WinSock2.h:33
ws2_runtime_error(const std::string &msg)
Constructs an exception using WSAGetLastError()
Definition: WinSock2.h:52
tstring msg(DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition: WinSock2.h:70
-
addrinfo taddrinfo
Multi-byte / Wide-character SID wrapper class (according to _UNICODE)
Definition: WinSock2.h:161
+
addrinfo taddrinfo
Multi-byte / Wide-character ADDRINFO wrapper class (according to _UNICODE)
Definition: WinSock2.h:161
static INT GetAddrInfoW(PCWSTR pNodeName, PCWSTR pServiceName, const ADDRINFOW *pHints, winstd::waddrinfo &result)
Provides protocol-independent translation from a host name to an address.
Definition: WinSock2.h:194
static INT GetAddrInfoA(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, winstd::addrinfo &result)
Provides protocol-independent translation from a host name to an address.
Definition: WinSock2.h:176
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition: Common.h:338
@@ -235,7 +235,7 @@ $(function() { diff --git a/_win_trust_8h_source.html b/_win_trust_8h_source.html index 98bfc689..8d862ac3 100644 --- a/_win_trust_8h_source.html +++ b/_win_trust_8h_source.html @@ -130,7 +130,7 @@ $(function() { diff --git a/annotated.html b/annotated.html index 72ee5f0e..a190bbf1 100644 --- a/annotated.html +++ b/annotated.html @@ -77,7 +77,7 @@ $(function() {
[detail level 123]
- + @@ -124,48 +124,50 @@ $(function() { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nwinstd
 Cactctx_activatorActivates given activation context in constructor and deactivates it in destructor
 CaddrinfoSID wrapper class
 CaddrinfoADDRINFOA wrapper class
 Cbasic_string_guidBase template class to support converting GUID to string
 Cbasic_string_msgBase template class to support string formatting using FormatMessage() style templates
 Cbasic_string_printfBase template class to support string formatting using printf() style templates
 CheapHeap handle wrapper
 Cheap_allocatorHeapAlloc allocator
 CrebindA structure that enables an allocator for objects of one type to allocate storage for objects of another type
 ClibraryModule handle wrapper
 CLocalFree_deleteDeleter for unique_ptr using LocalFree
 CLocalFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using LocalFree
 Cnum_runtime_errorNumerical runtime error
 Cprocess_informationPROCESS_INFORMATION struct wrapper
 Cref_unique_ptrHelper class for returning pointers to std::unique_ptr
 Cref_unique_ptr< _Ty[], _Dx >Helper class for returning pointers to std::unique_ptr (specialization for arrays)
 Creg_keyRegistry key wrapper class
 Csanitizing_allocatorAn allocator template that sanitizes each memory block before it is destroyed or reallocated
 CrebindConvert this type to sanitizing_allocator<_Other>
 Csanitizing_blobSanitizing BLOB
 Csc_handleSC_HANDLE wrapper class
 Csec_buffer_descSecBufferDesc wrapper class
 Csec_contextPCtxtHandle wrapper class
 Csec_credentialsPCredHandle wrapper class
 Csec_runtime_errorSecurity runtime error
 Csecurity_attributes
 Csecurity_idSID wrapper class
 Csetup_device_info_listHDEVINFO wrapper class
 Csetup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor
 Cstring_guidSingle-byte character implementation of a class to support converting GUID to string
 CUnmapViewOfFile_deleteDeleter for unique_ptr using UnmapViewOfFile
 CUnmapViewOfFile_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using UnmapViewOfFile
 Cuser_impersonatorLets the calling thread impersonate the security context of a logged-on user
 CvariantVARIANT struct wrapper
 CvmemoryMemory in virtual address space of a process handle wrapper
 CwaddrinfoSID wrapper class
 Cwin_handleWindows HANDLE wrapper class
 Cwin_runtime_errorWindows runtime error
 Cwindow_dcDevice context wrapper class
 CwintrustWinTrust engine wrapper class
 Cwlan_handleWLAN handle wrapper
 CWlanFreeMemory_deleteDeleter for unique_ptr using WlanFreeMemory
 CWlanFreeMemory_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using WlanFreeMemory
 Cws2_runtime_errorWinSock2 runtime error
 Cwstring_guidWide character implementation of a class to support converting GUID to string
 CimpersonatorBase class for thread impersonation of another security context
 ClibraryModule handle wrapper
 CLocalFree_deleteDeleter for unique_ptr using LocalFree
 CLocalFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using LocalFree
 Cnum_runtime_errorNumerical runtime error
 Cprocess_informationPROCESS_INFORMATION struct wrapper
 Cref_unique_ptrHelper class for returning pointers to std::unique_ptr
 Cref_unique_ptr< _Ty[], _Dx >Helper class for returning pointers to std::unique_ptr (specialization for arrays)
 Creg_keyRegistry key wrapper class
 Csanitizing_allocatorAn allocator template that sanitizes each memory block before it is destroyed or reallocated
 CrebindConvert this type to sanitizing_allocator<_Other>
 Csanitizing_blobSanitizing BLOB
 Csc_handleSC_HANDLE wrapper class
 Csec_buffer_descSecBufferDesc wrapper class
 Csec_contextPCtxtHandle wrapper class
 Csec_credentialsPCredHandle wrapper class
 Csec_runtime_errorSecurity runtime error
 Csecurity_attributes
 Csecurity_idSID wrapper class
 Csetup_device_info_listHDEVINFO wrapper class
 Csetup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor
 Cstring_guidSingle-byte character implementation of a class to support converting GUID to string
 Csystem_impersonatorLets the calling thread impersonate the security context of the SYSTEM user
 CUnmapViewOfFile_deleteDeleter for unique_ptr using UnmapViewOfFile
 CUnmapViewOfFile_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using UnmapViewOfFile
 Cuser_impersonatorLets the calling thread impersonate the security context of a logged-on user
 CvariantVARIANT struct wrapper
 CvmemoryMemory in virtual address space of a process handle wrapper
 CwaddrinfoADDRINFOW wrapper class
 Cwin_handleWindows HANDLE wrapper class
 Cwin_runtime_errorWindows runtime error
 Cwindow_dcDevice context wrapper class
 CwintrustWinTrust engine wrapper class
 Cwlan_handleWLAN handle wrapper
 CWlanFreeMemory_deleteDeleter for unique_ptr using WlanFreeMemory
 CWlanFreeMemory_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using WlanFreeMemory
 Cws2_runtime_errorWinSock2 runtime error
 Cwstring_guidWide character implementation of a class to support converting GUID to string
diff --git a/classes.html b/classes.html index 0d5c2e2d..b078a89e 100644 --- a/classes.html +++ b/classes.html @@ -73,7 +73,7 @@ $(function() {
Class Index
-
A | B | C | D | E | F | G | H | L | N | P | R | S | U | V | W
+
A | B | C | D | E | F | G | H | I | L | N | P | R | S | U | V | W
A
@@ -100,34 +100,37 @@ $(function() {
H
handle (winstd)
heap (winstd)
heap_allocator (winstd)
+
I
+
impersonator (winstd)
+
L
library (winstd)
LocalFree_delete (winstd)
LocalFree_delete< _Ty[]> (winstd)
-
+
N
num_runtime_error (winstd)
-
+
P
process_information (winstd)
-
+
R
heap_allocator::rebind (winstd)
sanitizing_allocator::rebind (winstd)
ref_unique_ptr (winstd)
ref_unique_ptr< _Ty[], _Dx > (winstd)
reg_key (winstd)
-
-
S
-
sanitizing_allocator (winstd)
sanitizing_blob (winstd)
sc_handle (winstd)
sec_buffer_desc (winstd)
sec_context (winstd)
sec_credentials (winstd)
sec_runtime_error (winstd)
security_attributes (winstd)
security_id (winstd)
setup_device_info_list (winstd)
setup_driver_info_list_builder (winstd)
string_guid (winstd)
+
S
+
sanitizing_allocator (winstd)
sanitizing_blob (winstd)
sc_handle (winstd)
sec_buffer_desc (winstd)
sec_context (winstd)
sec_credentials (winstd)
sec_runtime_error (winstd)
security_attributes (winstd)
security_id (winstd)
setup_device_info_list (winstd)
setup_driver_info_list_builder (winstd)
string_guid (winstd)
system_impersonator (winstd)
+
U
UnmapViewOfFile_delete (winstd)
UnmapViewOfFile_delete< _Ty[]> (winstd)
user_impersonator (winstd)
-
+
V
variant (winstd)
vmemory (winstd)
-
+
W
waddrinfo (winstd)
win_handle (winstd)
win_runtime_error (winstd)
window_dc (winstd)
wintrust (winstd)
wlan_handle (winstd)
WlanFreeMemory_delete (winstd)
WlanFreeMemory_delete< _Ty[]> (winstd)
ws2_runtime_error (winstd)
wstring_guid (winstd)
diff --git a/classwinstd_1_1actctx__activator-members.html b/classwinstd_1_1actctx__activator-members.html index 15ce6f12..c60b1511 100644 --- a/classwinstd_1_1actctx__activator-members.html +++ b/classwinstd_1_1actctx__activator-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classwinstd_1_1actctx__activator.html b/classwinstd_1_1actctx__activator.html index 320a4439..10cb4305 100644 --- a/classwinstd_1_1actctx__activator.html +++ b/classwinstd_1_1actctx__activator.html @@ -175,7 +175,7 @@ ULONG_PTR m_cookie diff --git a/classwinstd_1_1addrinfo-members.html b/classwinstd_1_1addrinfo-members.html index 93022dc2..c1965b77 100644 --- a/classwinstd_1_1addrinfo-members.html +++ b/classwinstd_1_1addrinfo-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1addrinfo.html b/classwinstd_1_1addrinfo.html index 402c7c11..168fb313 100644 --- a/classwinstd_1_1addrinfo.html +++ b/classwinstd_1_1addrinfo.html @@ -82,7 +82,7 @@ $(function() {
-

SID wrapper class. +

ADDRINFOA wrapper class. More...

#include <WinStd/WinSock2.h>

@@ -190,7 +190,7 @@ static const PADDRINFOA in  

Detailed Description

-

SID wrapper class.

+

ADDRINFOA wrapper class.

See also
GetAddrInfoA function

Constructor & Destructor Documentation

@@ -258,7 +258,7 @@ static const PADDRINFOA in
diff --git a/classwinstd_1_1basic__string__guid-members.html b/classwinstd_1_1basic__string__guid-members.html index 8e874599..f577f9b5 100644 --- a/classwinstd_1_1basic__string__guid-members.html +++ b/classwinstd_1_1basic__string__guid-members.html @@ -84,7 +84,7 @@ $(function() {
diff --git a/classwinstd_1_1basic__string__guid.html b/classwinstd_1_1basic__string__guid.html index 75501143..fa7d01f5 100644 --- a/classwinstd_1_1basic__string__guid.html +++ b/classwinstd_1_1basic__string__guid.html @@ -155,7 +155,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classwinstd_1_1basic__string__msg-members.html b/classwinstd_1_1basic__string__msg-members.html index 59b6b007..91e05f50 100644 --- a/classwinstd_1_1basic__string__msg-members.html +++ b/classwinstd_1_1basic__string__msg-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1basic__string__msg.html b/classwinstd_1_1basic__string__msg.html index 9a2b4bc9..8c5b23a1 100644 --- a/classwinstd_1_1basic__string__msg.html +++ b/classwinstd_1_1basic__string__msg.html @@ -499,7 +499,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classwinstd_1_1basic__string__printf-members.html b/classwinstd_1_1basic__string__printf-members.html index 149b6d73..d8debc94 100644 --- a/classwinstd_1_1basic__string__printf-members.html +++ b/classwinstd_1_1basic__string__printf-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classwinstd_1_1basic__string__printf.html b/classwinstd_1_1basic__string__printf.html index 5fdc035c..97e883ec 100644 --- a/classwinstd_1_1basic__string__printf.html +++ b/classwinstd_1_1basic__string__printf.html @@ -274,7 +274,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classwinstd_1_1bstr-members.html b/classwinstd_1_1bstr-members.html index b7477755..8a97e71d 100644 --- a/classwinstd_1_1bstr-members.html +++ b/classwinstd_1_1bstr-members.html @@ -120,7 +120,7 @@ $(function() { diff --git a/classwinstd_1_1bstr.html b/classwinstd_1_1bstr.html index 5c984745..a4fb2331 100644 --- a/classwinstd_1_1bstr.html +++ b/classwinstd_1_1bstr.html @@ -375,7 +375,7 @@ static const T invalid diff --git a/classwinstd_1_1cert__chain__context-members.html b/classwinstd_1_1cert__chain__context-members.html index 7de786a1..04ba212c 100644 --- a/classwinstd_1_1cert__chain__context-members.html +++ b/classwinstd_1_1cert__chain__context-members.html @@ -116,7 +116,7 @@ $(function() { diff --git a/classwinstd_1_1cert__chain__context.html b/classwinstd_1_1cert__chain__context.html index 751d69ae..e404eadc 100644 --- a/classwinstd_1_1cert__chain__context.html +++ b/classwinstd_1_1cert__chain__context.html @@ -332,7 +332,7 @@ static const T invalid diff --git a/classwinstd_1_1cert__context-members.html b/classwinstd_1_1cert__context-members.html index d5108459..42802812 100644 --- a/classwinstd_1_1cert__context-members.html +++ b/classwinstd_1_1cert__context-members.html @@ -122,7 +122,7 @@ $(function() { diff --git a/classwinstd_1_1cert__context.html b/classwinstd_1_1cert__context.html index c8e73ceb..e819b846 100644 --- a/classwinstd_1_1cert__context.html +++ b/classwinstd_1_1cert__context.html @@ -584,7 +584,7 @@ static const T invalid diff --git a/classwinstd_1_1cert__store-members.html b/classwinstd_1_1cert__store-members.html index 8515fcbc..262e0e83 100644 --- a/classwinstd_1_1cert__store-members.html +++ b/classwinstd_1_1cert__store-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1cert__store.html b/classwinstd_1_1cert__store.html index 1c74883d..b4ef1694 100644 --- a/classwinstd_1_1cert__store.html +++ b/classwinstd_1_1cert__store.html @@ -260,7 +260,7 @@ static const HCERTSTORE in diff --git a/classwinstd_1_1com__initializer-members.html b/classwinstd_1_1com__initializer-members.html index bbfa9c49..479c512e 100644 --- a/classwinstd_1_1com__initializer-members.html +++ b/classwinstd_1_1com__initializer-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classwinstd_1_1com__initializer.html b/classwinstd_1_1com__initializer.html index a659e40b..5f599cd9 100644 --- a/classwinstd_1_1com__initializer.html +++ b/classwinstd_1_1com__initializer.html @@ -243,7 +243,7 @@ HRESULT m_result< diff --git a/classwinstd_1_1com__obj-members.html b/classwinstd_1_1com__obj-members.html index 5eb75f1e..d35c1449 100644 --- a/classwinstd_1_1com__obj-members.html +++ b/classwinstd_1_1com__obj-members.html @@ -120,7 +120,7 @@ $(function() { diff --git a/classwinstd_1_1com__obj.html b/classwinstd_1_1com__obj.html index 4ac70927..63be4a9b 100644 --- a/classwinstd_1_1com__obj.html +++ b/classwinstd_1_1com__obj.html @@ -458,7 +458,7 @@ template<class _Other > diff --git a/classwinstd_1_1com__runtime__error-members.html b/classwinstd_1_1com__runtime__error-members.html index d5d7e108..05335639 100644 --- a/classwinstd_1_1com__runtime__error-members.html +++ b/classwinstd_1_1com__runtime__error-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1com__runtime__error.html b/classwinstd_1_1com__runtime__error.html index fe967c21..e61af81c 100644 --- a/classwinstd_1_1com__runtime__error.html +++ b/classwinstd_1_1com__runtime__error.html @@ -228,7 +228,7 @@ typedef HRESULT error_type diff --git a/classwinstd_1_1console__ctrl__handler-members.html b/classwinstd_1_1console__ctrl__handler-members.html index c70f0c6b..a5cdbc11 100644 --- a/classwinstd_1_1console__ctrl__handler-members.html +++ b/classwinstd_1_1console__ctrl__handler-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1console__ctrl__handler.html b/classwinstd_1_1console__ctrl__handler.html index 5ba84bd8..a5d4861b 100644 --- a/classwinstd_1_1console__ctrl__handler.html +++ b/classwinstd_1_1console__ctrl__handler.html @@ -179,7 +179,7 @@ PHANDLER_ROUTINE m_handler diff --git a/classwinstd_1_1critical__section-members.html b/classwinstd_1_1critical__section-members.html index a06405e5..53565b0b 100644 --- a/classwinstd_1_1critical__section-members.html +++ b/classwinstd_1_1critical__section-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1critical__section.html b/classwinstd_1_1critical__section.html index 38678f9f..f2704d30 100644 --- a/classwinstd_1_1critical__section.html +++ b/classwinstd_1_1critical__section.html @@ -200,7 +200,7 @@ CRITICAL_SECTION m_data diff --git a/classwinstd_1_1crypt__hash-members.html b/classwinstd_1_1crypt__hash-members.html index 08d7d4c4..cb86accc 100644 --- a/classwinstd_1_1crypt__hash-members.html +++ b/classwinstd_1_1crypt__hash-members.html @@ -116,7 +116,7 @@ $(function() { diff --git a/classwinstd_1_1crypt__hash.html b/classwinstd_1_1crypt__hash.html index fbfc9dee..773ae58c 100644 --- a/classwinstd_1_1crypt__hash.html +++ b/classwinstd_1_1crypt__hash.html @@ -332,7 +332,7 @@ static const T invalid diff --git a/classwinstd_1_1crypt__key-members.html b/classwinstd_1_1crypt__key-members.html index e629f9a6..02001957 100644 --- a/classwinstd_1_1crypt__key-members.html +++ b/classwinstd_1_1crypt__key-members.html @@ -117,7 +117,7 @@ $(function() { diff --git a/classwinstd_1_1crypt__key.html b/classwinstd_1_1crypt__key.html index fa9dbe20..061aa516 100644 --- a/classwinstd_1_1crypt__key.html +++ b/classwinstd_1_1crypt__key.html @@ -387,7 +387,7 @@ static const T invalid diff --git a/classwinstd_1_1crypt__prov-members.html b/classwinstd_1_1crypt__prov-members.html index 6726d4fe..8f2456e1 100644 --- a/classwinstd_1_1crypt__prov-members.html +++ b/classwinstd_1_1crypt__prov-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1crypt__prov.html b/classwinstd_1_1crypt__prov.html index 454c183d..454fd0ac 100644 --- a/classwinstd_1_1crypt__prov.html +++ b/classwinstd_1_1crypt__prov.html @@ -258,7 +258,7 @@ static const HCRYPTPROV in diff --git a/classwinstd_1_1data__blob-members.html b/classwinstd_1_1data__blob-members.html index 0cd2f247..5265efcb 100644 --- a/classwinstd_1_1data__blob-members.html +++ b/classwinstd_1_1data__blob-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classwinstd_1_1data__blob.html b/classwinstd_1_1data__blob.html index 8fb95b13..c7d94dca 100644 --- a/classwinstd_1_1data__blob.html +++ b/classwinstd_1_1data__blob.html @@ -143,7 +143,7 @@ BYTE * data () noexcep diff --git a/classwinstd_1_1dc-members.html b/classwinstd_1_1dc-members.html index 7be8b2ef..e1dac1f2 100644 --- a/classwinstd_1_1dc-members.html +++ b/classwinstd_1_1dc-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1dc.html b/classwinstd_1_1dc.html index ed6a8713..c463bbe4 100644 --- a/classwinstd_1_1dc.html +++ b/classwinstd_1_1dc.html @@ -257,7 +257,7 @@ static const HDC invalid diff --git a/classwinstd_1_1dc__selector-members.html b/classwinstd_1_1dc__selector-members.html index b767dc34..35dfc717 100644 --- a/classwinstd_1_1dc__selector-members.html +++ b/classwinstd_1_1dc__selector-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classwinstd_1_1dc__selector.html b/classwinstd_1_1dc__selector.html index 5bb74f02..7410a5c1 100644 --- a/classwinstd_1_1dc__selector.html +++ b/classwinstd_1_1dc__selector.html @@ -215,7 +215,7 @@ HGDIOBJ m_orig diff --git a/classwinstd_1_1dplhandle-members.html b/classwinstd_1_1dplhandle-members.html index a0c9b9fc..934639ca 100644 --- a/classwinstd_1_1dplhandle-members.html +++ b/classwinstd_1_1dplhandle-members.html @@ -115,7 +115,7 @@ $(function() { diff --git a/classwinstd_1_1dplhandle.html b/classwinstd_1_1dplhandle.html index 1ef426cd..67d00451 100644 --- a/classwinstd_1_1dplhandle.html +++ b/classwinstd_1_1dplhandle.html @@ -552,7 +552,7 @@ template<class T , T INVAL> diff --git a/classwinstd_1_1eap__attr-members.html b/classwinstd_1_1eap__attr-members.html index df139222..ce92c6df 100644 --- a/classwinstd_1_1eap__attr-members.html +++ b/classwinstd_1_1eap__attr-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1eap__attr.html b/classwinstd_1_1eap__attr.html index 3c6661dd..77bb6551 100644 --- a/classwinstd_1_1eap__attr.html +++ b/classwinstd_1_1eap__attr.html @@ -180,7 +180,7 @@ Public Member Functions diff --git a/classwinstd_1_1eap__method__info__array-members.html b/classwinstd_1_1eap__method__info__array-members.html index 374ce69e..a54cfb4c 100644 --- a/classwinstd_1_1eap__method__info__array-members.html +++ b/classwinstd_1_1eap__method__info__array-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1eap__method__info__array.html b/classwinstd_1_1eap__method__info__array.html index 6f3427f9..f51a6b99 100644 --- a/classwinstd_1_1eap__method__info__array.html +++ b/classwinstd_1_1eap__method__info__array.html @@ -187,7 +187,7 @@ Public Member Functions diff --git a/classwinstd_1_1eap__method__prop-members.html b/classwinstd_1_1eap__method__prop-members.html index 017b2a04..7d72c227 100644 --- a/classwinstd_1_1eap__method__prop-members.html +++ b/classwinstd_1_1eap__method__prop-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classwinstd_1_1eap__method__prop.html b/classwinstd_1_1eap__method__prop.html index a040fae0..02c9353c 100644 --- a/classwinstd_1_1eap__method__prop.html +++ b/classwinstd_1_1eap__method__prop.html @@ -248,7 +248,7 @@ Public Member Functions diff --git a/classwinstd_1_1eap__packet-members.html b/classwinstd_1_1eap__packet-members.html index 2b12eaa2..de525c88 100644 --- a/classwinstd_1_1eap__packet-members.html +++ b/classwinstd_1_1eap__packet-members.html @@ -118,7 +118,7 @@ $(function() { diff --git a/classwinstd_1_1eap__packet.html b/classwinstd_1_1eap__packet.html index 4c5e7be6..cb348e61 100644 --- a/classwinstd_1_1eap__packet.html +++ b/classwinstd_1_1eap__packet.html @@ -359,7 +359,7 @@ static const T invalid diff --git a/classwinstd_1_1eap__runtime__error-members.html b/classwinstd_1_1eap__runtime__error-members.html index 931cadf5..8fb99184 100644 --- a/classwinstd_1_1eap__runtime__error-members.html +++ b/classwinstd_1_1eap__runtime__error-members.html @@ -109,7 +109,7 @@ $(function() { diff --git a/classwinstd_1_1eap__runtime__error.html b/classwinstd_1_1eap__runtime__error.html index 729ef481..564f912b 100644 --- a/classwinstd_1_1eap__runtime__error.html +++ b/classwinstd_1_1eap__runtime__error.html @@ -305,7 +305,7 @@ typedef DWORD error_type diff --git a/classwinstd_1_1event__data-members.html b/classwinstd_1_1event__data-members.html index 6fc23f99..f72d8c31 100644 --- a/classwinstd_1_1event__data-members.html +++ b/classwinstd_1_1event__data-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classwinstd_1_1event__data.html b/classwinstd_1_1event__data.html index 17d9ba7c..72a7b767 100644 --- a/classwinstd_1_1event__data.html +++ b/classwinstd_1_1event__data.html @@ -540,7 +540,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classwinstd_1_1event__fn__auto-members.html b/classwinstd_1_1event__fn__auto-members.html index 26d168ac..3014d63e 100644 --- a/classwinstd_1_1event__fn__auto-members.html +++ b/classwinstd_1_1event__fn__auto-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classwinstd_1_1event__fn__auto.html b/classwinstd_1_1event__fn__auto.html index 87f8d7cd..869595e6 100644 --- a/classwinstd_1_1event__fn__auto.html +++ b/classwinstd_1_1event__fn__auto.html @@ -138,7 +138,7 @@ EVENT_DATA_DESCRIPTOR m_fn diff --git a/classwinstd_1_1event__fn__auto__ret-members.html b/classwinstd_1_1event__fn__auto__ret-members.html index 8801e7e9..c7032966 100644 --- a/classwinstd_1_1event__fn__auto__ret-members.html +++ b/classwinstd_1_1event__fn__auto__ret-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classwinstd_1_1event__fn__auto__ret.html b/classwinstd_1_1event__fn__auto__ret.html index 157fee71..0f3b717d 100644 --- a/classwinstd_1_1event__fn__auto__ret.html +++ b/classwinstd_1_1event__fn__auto__ret.html @@ -143,7 +143,7 @@ class winstd::event_fn_auto_ret< T >

Helper template to write an

diff --git a/classwinstd_1_1event__log-members.html b/classwinstd_1_1event__log-members.html index 20ebe3ac..de16da3d 100644 --- a/classwinstd_1_1event__log-members.html +++ b/classwinstd_1_1event__log-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1event__log.html b/classwinstd_1_1event__log.html index 5f1fbcfd..11638dc5 100644 --- a/classwinstd_1_1event__log.html +++ b/classwinstd_1_1event__log.html @@ -258,7 +258,7 @@ static const HANDLE invali diff --git a/classwinstd_1_1event__provider-members.html b/classwinstd_1_1event__provider-members.html index 525a5111..1b2ddf45 100644 --- a/classwinstd_1_1event__provider-members.html +++ b/classwinstd_1_1event__provider-members.html @@ -115,7 +115,7 @@ $(function() { diff --git a/classwinstd_1_1event__provider.html b/classwinstd_1_1event__provider.html index 154494ed..7f8cb05d 100644 --- a/classwinstd_1_1event__provider.html +++ b/classwinstd_1_1event__provider.html @@ -687,7 +687,7 @@ static const REGHANDLE inv diff --git a/classwinstd_1_1event__rec-members.html b/classwinstd_1_1event__rec-members.html index 487c7758..7ac1998d 100644 --- a/classwinstd_1_1event__rec-members.html +++ b/classwinstd_1_1event__rec-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classwinstd_1_1event__rec.html b/classwinstd_1_1event__rec.html index 6be4abba..82159fa2 100644 --- a/classwinstd_1_1event__rec.html +++ b/classwinstd_1_1event__rec.html @@ -531,7 +531,7 @@ Protected Member Functions diff --git a/classwinstd_1_1event__session-members.html b/classwinstd_1_1event__session-members.html index 0261c26e..7b3b2a65 100644 --- a/classwinstd_1_1event__session-members.html +++ b/classwinstd_1_1event__session-members.html @@ -118,7 +118,7 @@ $(function() { diff --git a/classwinstd_1_1event__session.html b/classwinstd_1_1event__session.html index 84313928..3cb43aa4 100644 --- a/classwinstd_1_1event__session.html +++ b/classwinstd_1_1event__session.html @@ -691,7 +691,7 @@ static const TRACEHANDLE i diff --git a/classwinstd_1_1event__trace-members.html b/classwinstd_1_1event__trace-members.html index 919601f3..3abc6af7 100644 --- a/classwinstd_1_1event__trace-members.html +++ b/classwinstd_1_1event__trace-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1event__trace.html b/classwinstd_1_1event__trace.html index 0a7df9ff..25cd8b0f 100644 --- a/classwinstd_1_1event__trace.html +++ b/classwinstd_1_1event__trace.html @@ -258,7 +258,7 @@ static const TRACEHANDLE i diff --git a/classwinstd_1_1event__trace__enabler-members.html b/classwinstd_1_1event__trace__enabler-members.html index 84620c15..2ea5f908 100644 --- a/classwinstd_1_1event__trace__enabler-members.html +++ b/classwinstd_1_1event__trace__enabler-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classwinstd_1_1event__trace__enabler.html b/classwinstd_1_1event__trace__enabler.html index 419942c1..faea51c5 100644 --- a/classwinstd_1_1event__trace__enabler.html +++ b/classwinstd_1_1event__trace__enabler.html @@ -351,7 +351,7 @@ PEVENT_FILTER_DESCRIPTOR m diff --git a/classwinstd_1_1find__file-members.html b/classwinstd_1_1find__file-members.html index c0a52e8e..d43fba59 100644 --- a/classwinstd_1_1find__file-members.html +++ b/classwinstd_1_1find__file-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1find__file.html b/classwinstd_1_1find__file.html index a515ee46..0534d64e 100644 --- a/classwinstd_1_1find__file.html +++ b/classwinstd_1_1find__file.html @@ -258,7 +258,7 @@ static const HANDLE invali diff --git a/classwinstd_1_1gdi__handle-members.html b/classwinstd_1_1gdi__handle-members.html index 2098ccf3..9871a678 100644 --- a/classwinstd_1_1gdi__handle-members.html +++ b/classwinstd_1_1gdi__handle-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1gdi__handle.html b/classwinstd_1_1gdi__handle.html index 55ea8db3..b3ba3b10 100644 --- a/classwinstd_1_1gdi__handle.html +++ b/classwinstd_1_1gdi__handle.html @@ -262,7 +262,7 @@ template<class T > diff --git a/classwinstd_1_1handle-members.html b/classwinstd_1_1handle-members.html index 405f7e0d..a326026e 100644 --- a/classwinstd_1_1handle-members.html +++ b/classwinstd_1_1handle-members.html @@ -106,7 +106,7 @@ $(function() { diff --git a/classwinstd_1_1handle.html b/classwinstd_1_1handle.html index f2491a3c..aff4d910 100644 --- a/classwinstd_1_1handle.html +++ b/classwinstd_1_1handle.html @@ -850,7 +850,7 @@ template<class T , const T INVAL> diff --git a/classwinstd_1_1heap-members.html b/classwinstd_1_1heap-members.html index 33318a83..c7474af7 100644 --- a/classwinstd_1_1heap-members.html +++ b/classwinstd_1_1heap-members.html @@ -108,7 +108,7 @@ $(function() { diff --git a/classwinstd_1_1heap.html b/classwinstd_1_1heap.html index 87425301..1f447474 100644 --- a/classwinstd_1_1heap.html +++ b/classwinstd_1_1heap.html @@ -293,7 +293,7 @@ static const HANDLE invali diff --git a/classwinstd_1_1heap__allocator-members.html b/classwinstd_1_1heap__allocator-members.html index ae16a777..cf4a2179 100644 --- a/classwinstd_1_1heap__allocator-members.html +++ b/classwinstd_1_1heap__allocator-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classwinstd_1_1heap__allocator.html b/classwinstd_1_1heap__allocator.html index 4328d25c..766feb57 100644 --- a/classwinstd_1_1heap__allocator.html +++ b/classwinstd_1_1heap__allocator.html @@ -461,7 +461,7 @@ template<class _Ty > diff --git a/classwinstd_1_1impersonator-members.html b/classwinstd_1_1impersonator-members.html new file mode 100644 index 00000000..98194909 --- /dev/null +++ b/classwinstd_1_1impersonator-members.html @@ -0,0 +1,93 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
winstd::impersonator Member List
+
+
+ +

This is the complete list of members for winstd::impersonator, including all inherited members.

+ + + + + +
impersonator() noexceptwinstd::impersonatorinline
m_cookiewinstd::impersonatorprotected
operator bool() constwinstd::impersonatorinline
~impersonator()winstd::impersonatorinlinevirtual
+ + + + diff --git a/classwinstd_1_1impersonator.html b/classwinstd_1_1impersonator.html new file mode 100644 index 00000000..73b8f5b1 --- /dev/null +++ b/classwinstd_1_1impersonator.html @@ -0,0 +1,161 @@ + + + + + + + +WinStd: winstd::impersonator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
winstd::impersonator Class Reference
+
+
+ +

Base class for thread impersonation of another security context. + More...

+ +

#include <WinStd/Win.h>

+
+Inheritance diagram for winstd::impersonator:
+
+
+ + +winstd::system_impersonator +winstd::user_impersonator + +
+ + + + + + + + + + + +

+Public Member Functions

impersonator () noexcept
 Construct the impersonator.
 
virtual ~impersonator ()
 Reverts to current user and destructs the impersonator. More...
 
operator bool () const
 Did impersonation succeed?
 
+ + + + +

+Protected Attributes

+BOOL m_cookie
 Did impersonation succeed?
 
+

Detailed Description

+

Base class for thread impersonation of another security context.

+

Constructor & Destructor Documentation

+ +

◆ ~impersonator()

+ +
+
+ + + + + +
+ + + + + + + +
virtual winstd::impersonator::~impersonator ()
+
+inlinevirtual
+
+ +

Reverts to current user and destructs the impersonator.

+
See also
RevertToSelf function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1impersonator.png b/classwinstd_1_1impersonator.png new file mode 100644 index 0000000000000000000000000000000000000000..19f3a1d8c845151f5c527d501b1047f222b1b372 GIT binary patch literal 993 zcmeAS@N?(olHy`uVBq!ia0y~yU`znA12~w0q`;>5bRZ=i;1lBd|Nnm=^TnI5rTvGN zTNr2-NK8NT;=q9eK=I&7msbGgI7@>3f*F8(FfeDDeT9L6Imgq*F{Fa=?c9fxHdzU< zTDNPx-t%8LUNmM>gN|15>%+2h+f-+^+%#+1&)_&E=#(deh5XTN{*GMR-Z}(r$Yr0@ zlxsafB4?Sr@tx%-dL7pr+Ky;E*|d-c1w5yzZ2H!WXc zRcLef_UdWN>g{}HZrgkAI=5b#{Ly)j_10y|uADsWZ|t&M`-jroJCd${v@ng@CX_8E z>wR$B-#PY56*1}6EcfmD=gi+ftMk{^yxZr0`W<|{UG!FbzV6q&jqB$9+wkC5eSXWC z>JMEHmTud+SDAG^_q=)EUan1>K2_pqzqQL&S0CN0Vunwzfh-OOdLi7h?wCkUb)N{& znTbt|Or4h!Zy$&IXi36tJ{8v6WeVw{FoIUT@MuaX^qp4aWo`j#d9>q~ z?_q|(B?%1yLHZ5~K&c5LJOUnEY#b`A%q)|DW_liEXaq_-1Q`IOE3OpmjL}=p{6J++ z(cGmlQ39G!rG-Mi81Ni^7}J(0!S{TQEB~YtuB?MVB4~pO>!c=C%?Tnpo}6^CZSARMcB{+UAIv|yKsJ2)Iq~i1?G7fVS?}4Ky}v3> zd{11}?a1qb0dIpo{K#GXYW-^`@%{1j8@KM*CAfO|-=^|u_sYM$U#@iZW8~Jo53CYX zo9C8K`>DEN)8bsNII&INO!n#hSbAxC_TSD2{;TgQ{`jb28+WvSUZs9k(5>pVYdhcV zy|efH>h`=-YmMWD|Lpnl)BXj>Z>_z?@`&$eQzWrzZgH$N6dIu?JMoa=m`Xmt#u4zjg)-|;!N}O|4t&nJY cDD#K?sNt4aXS>HHz|6?t>FVdQ&MBb@0F=VdB>(^b literal 0 HcmV?d00001 diff --git a/classwinstd_1_1library-members.html b/classwinstd_1_1library-members.html index 76c7dd0b..472c3271 100644 --- a/classwinstd_1_1library-members.html +++ b/classwinstd_1_1library-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1library.html b/classwinstd_1_1library.html index c44e5f85..72852707 100644 --- a/classwinstd_1_1library.html +++ b/classwinstd_1_1library.html @@ -258,7 +258,7 @@ static const HMODULE inval diff --git a/classwinstd_1_1num__runtime__error-members.html b/classwinstd_1_1num__runtime__error-members.html index f0b29678..d8944905 100644 --- a/classwinstd_1_1num__runtime__error-members.html +++ b/classwinstd_1_1num__runtime__error-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classwinstd_1_1num__runtime__error.html b/classwinstd_1_1num__runtime__error.html index 25022822..48225fcc 100644 --- a/classwinstd_1_1num__runtime__error.html +++ b/classwinstd_1_1num__runtime__error.html @@ -225,7 +225,7 @@ template<typename _Tn > diff --git a/classwinstd_1_1process__information-members.html b/classwinstd_1_1process__information-members.html index 3c78dc54..ebe6ebf8 100644 --- a/classwinstd_1_1process__information-members.html +++ b/classwinstd_1_1process__information-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classwinstd_1_1process__information.html b/classwinstd_1_1process__information.html index 1c9ff9b0..7f74bdb4 100644 --- a/classwinstd_1_1process__information.html +++ b/classwinstd_1_1process__information.html @@ -111,7 +111,7 @@ Public Member Functions diff --git a/classwinstd_1_1ref__unique__ptr-members.html b/classwinstd_1_1ref__unique__ptr-members.html index 5ba78110..20eeead7 100644 --- a/classwinstd_1_1ref__unique__ptr-members.html +++ b/classwinstd_1_1ref__unique__ptr-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1ref__unique__ptr.html b/classwinstd_1_1ref__unique__ptr.html index b678dac3..ab037dd6 100644 --- a/classwinstd_1_1ref__unique__ptr.html +++ b/classwinstd_1_1ref__unique__ptr.html @@ -260,7 +260,7 @@ template<class _Ty , class _Dx > diff --git a/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4-members.html b/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4-members.html index a4a8fc89..55959970 100644 --- a/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4-members.html +++ b/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html b/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html index f0d94118..1b214c3f 100644 --- a/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html +++ b/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html @@ -260,7 +260,7 @@ template<class _Ty , class _Dx > diff --git a/classwinstd_1_1reg__key-members.html b/classwinstd_1_1reg__key-members.html index dc148bb4..d24c38c1 100644 --- a/classwinstd_1_1reg__key-members.html +++ b/classwinstd_1_1reg__key-members.html @@ -108,7 +108,7 @@ $(function() { diff --git a/classwinstd_1_1reg__key.html b/classwinstd_1_1reg__key.html index 22efedd8..ec27f063 100644 --- a/classwinstd_1_1reg__key.html +++ b/classwinstd_1_1reg__key.html @@ -302,7 +302,7 @@ static const HKEY invalid< diff --git a/classwinstd_1_1sanitizing__allocator-members.html b/classwinstd_1_1sanitizing__allocator-members.html index d46ff99c..b490647e 100644 --- a/classwinstd_1_1sanitizing__allocator-members.html +++ b/classwinstd_1_1sanitizing__allocator-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classwinstd_1_1sanitizing__allocator.html b/classwinstd_1_1sanitizing__allocator.html index 4b0d6a4c..ecde16f3 100644 --- a/classwinstd_1_1sanitizing__allocator.html +++ b/classwinstd_1_1sanitizing__allocator.html @@ -137,7 +137,7 @@ class winstd::sanitizing_allocator< _Ty >

An allocator template t

diff --git a/classwinstd_1_1sanitizing__blob-members.html b/classwinstd_1_1sanitizing__blob-members.html index dc6b966d..ffaf7aa6 100644 --- a/classwinstd_1_1sanitizing__blob-members.html +++ b/classwinstd_1_1sanitizing__blob-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classwinstd_1_1sanitizing__blob.html b/classwinstd_1_1sanitizing__blob.html index 650d89f2..7798fc52 100644 --- a/classwinstd_1_1sanitizing__blob.html +++ b/classwinstd_1_1sanitizing__blob.html @@ -114,7 +114,7 @@ class winstd::sanitizing_blob< N >

Sanitizing BLOB.

diff --git a/classwinstd_1_1sc__handle-members.html b/classwinstd_1_1sc__handle-members.html index be9b81e5..8ee880ef 100644 --- a/classwinstd_1_1sc__handle-members.html +++ b/classwinstd_1_1sc__handle-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1sc__handle.html b/classwinstd_1_1sc__handle.html index e0c80026..b02fc7b6 100644 --- a/classwinstd_1_1sc__handle.html +++ b/classwinstd_1_1sc__handle.html @@ -257,7 +257,7 @@ static const SC_HANDLE inv diff --git a/classwinstd_1_1sec__buffer__desc-members.html b/classwinstd_1_1sec__buffer__desc-members.html index a99d421d..1cf92aa3 100644 --- a/classwinstd_1_1sec__buffer__desc-members.html +++ b/classwinstd_1_1sec__buffer__desc-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classwinstd_1_1sec__buffer__desc.html b/classwinstd_1_1sec__buffer__desc.html index 842f48a5..caeb1e3c 100644 --- a/classwinstd_1_1sec__buffer__desc.html +++ b/classwinstd_1_1sec__buffer__desc.html @@ -139,7 +139,7 @@ Public Member Functions diff --git a/classwinstd_1_1sec__context-members.html b/classwinstd_1_1sec__context-members.html index 2d39975b..ff5eba6b 100644 --- a/classwinstd_1_1sec__context-members.html +++ b/classwinstd_1_1sec__context-members.html @@ -114,7 +114,7 @@ $(function() { diff --git a/classwinstd_1_1sec__context.html b/classwinstd_1_1sec__context.html index 7b139fd9..9542074a 100644 --- a/classwinstd_1_1sec__context.html +++ b/classwinstd_1_1sec__context.html @@ -489,7 +489,7 @@ static const PCtxtHandle i diff --git a/classwinstd_1_1sec__credentials-members.html b/classwinstd_1_1sec__credentials-members.html index 1d547a1b..1eeb968b 100644 --- a/classwinstd_1_1sec__credentials-members.html +++ b/classwinstd_1_1sec__credentials-members.html @@ -113,7 +113,7 @@ $(function() { diff --git a/classwinstd_1_1sec__credentials.html b/classwinstd_1_1sec__credentials.html index 5e9b1a33..c765121b 100644 --- a/classwinstd_1_1sec__credentials.html +++ b/classwinstd_1_1sec__credentials.html @@ -468,7 +468,7 @@ static const PCredHandle i diff --git a/classwinstd_1_1sec__runtime__error-members.html b/classwinstd_1_1sec__runtime__error-members.html index 6a9be043..c5fe0866 100644 --- a/classwinstd_1_1sec__runtime__error-members.html +++ b/classwinstd_1_1sec__runtime__error-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classwinstd_1_1sec__runtime__error.html b/classwinstd_1_1sec__runtime__error.html index 41bc1e23..39b9c13c 100644 --- a/classwinstd_1_1sec__runtime__error.html +++ b/classwinstd_1_1sec__runtime__error.html @@ -265,7 +265,7 @@ typedef SECURITY_STATUS er diff --git a/classwinstd_1_1security__attributes-members.html b/classwinstd_1_1security__attributes-members.html index bf37f781..c31a299e 100644 --- a/classwinstd_1_1security__attributes-members.html +++ b/classwinstd_1_1security__attributes-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1security__attributes.html b/classwinstd_1_1security__attributes.html index 41577a9d..28dc1a56 100644 --- a/classwinstd_1_1security__attributes.html +++ b/classwinstd_1_1security__attributes.html @@ -112,7 +112,7 @@ Public Member Functions diff --git a/classwinstd_1_1security__id-members.html b/classwinstd_1_1security__id-members.html index e06fba76..3a51caa6 100644 --- a/classwinstd_1_1security__id-members.html +++ b/classwinstd_1_1security__id-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1security__id.html b/classwinstd_1_1security__id.html index a6407f49..76056f39 100644 --- a/classwinstd_1_1security__id.html +++ b/classwinstd_1_1security__id.html @@ -257,7 +257,7 @@ static const PSID invalid< diff --git a/classwinstd_1_1setup__device__info__list-members.html b/classwinstd_1_1setup__device__info__list-members.html index 6962cdbf..c5999f2b 100644 --- a/classwinstd_1_1setup__device__info__list-members.html +++ b/classwinstd_1_1setup__device__info__list-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1setup__device__info__list.html b/classwinstd_1_1setup__device__info__list.html index 9044b5a8..fa74fc98 100644 --- a/classwinstd_1_1setup__device__info__list.html +++ b/classwinstd_1_1setup__device__info__list.html @@ -260,7 +260,7 @@ static const HDEVINFO inva diff --git a/classwinstd_1_1setup__driver__info__list__builder-members.html b/classwinstd_1_1setup__driver__info__list__builder-members.html index c14a4c4b..3d0ccb17 100644 --- a/classwinstd_1_1setup__driver__info__list__builder-members.html +++ b/classwinstd_1_1setup__driver__info__list__builder-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classwinstd_1_1setup__driver__info__list__builder.html b/classwinstd_1_1setup__driver__info__list__builder.html index d0736a34..59894ae0 100644 --- a/classwinstd_1_1setup__driver__info__list__builder.html +++ b/classwinstd_1_1setup__driver__info__list__builder.html @@ -209,7 +209,7 @@ Public Member Functions diff --git a/classwinstd_1_1string__guid-members.html b/classwinstd_1_1string__guid-members.html index 513e79ee..aef6b51c 100644 --- a/classwinstd_1_1string__guid-members.html +++ b/classwinstd_1_1string__guid-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classwinstd_1_1string__guid.html b/classwinstd_1_1string__guid.html index 2fce3a3b..566c9db6 100644 --- a/classwinstd_1_1string__guid.html +++ b/classwinstd_1_1string__guid.html @@ -148,7 +148,7 @@ Public Member Functions diff --git a/classwinstd_1_1system__impersonator-members.html b/classwinstd_1_1system__impersonator-members.html new file mode 100644 index 00000000..2e57ca34 --- /dev/null +++ b/classwinstd_1_1system__impersonator-members.html @@ -0,0 +1,94 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
winstd::system_impersonator Member List
+
+
+ +

This is the complete list of members for winstd::system_impersonator, including all inherited members.

+ + + + + + +
impersonator() noexceptwinstd::impersonatorinline
m_cookiewinstd::impersonatorprotected
operator bool() constwinstd::impersonatorinline
system_impersonator() noexceptwinstd::system_impersonatorinline
~impersonator()winstd::impersonatorinlinevirtual
+ + + + diff --git a/classwinstd_1_1system__impersonator.html b/classwinstd_1_1system__impersonator.html new file mode 100644 index 00000000..9822221f --- /dev/null +++ b/classwinstd_1_1system__impersonator.html @@ -0,0 +1,136 @@ + + + + + + + +WinStd: winstd::system_impersonator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
winstd::system_impersonator Class Reference
+
+
+ +

Lets the calling thread impersonate the security context of the SYSTEM user. + More...

+ +

#include <WinStd/Win.h>

+
+Inheritance diagram for winstd::system_impersonator:
+
+
+ + +winstd::impersonator + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

system_impersonator () noexcept
 Construct the impersonator and impersonates the SYSTEM user.
 
- Public Member Functions inherited from winstd::impersonator
impersonator () noexcept
 Construct the impersonator.
 
virtual ~impersonator ()
 Reverts to current user and destructs the impersonator. More...
 
operator bool () const
 Did impersonation succeed?
 
+ + + + + +

+Additional Inherited Members

- Protected Attributes inherited from winstd::impersonator
+BOOL m_cookie
 Did impersonation succeed?
 
+

Detailed Description

+

Lets the calling thread impersonate the security context of the SYSTEM user.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1system__impersonator.png b/classwinstd_1_1system__impersonator.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d2b97f1b05c5590c03db877ee2fa6b94db76e9 GIT binary patch literal 711 zcmeAS@N?(olHy`uVBq!ia0vp^tARLxgBeH$CYOE$QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Ns>JY5_^Dj46+eLJaHfyXs} zo$=f~|Ap6cJ&n%Jy(OEr>FEP5#{LPH_D4)hoynr3V#)f>YtpwJ+Mc(HuZDU|Q@ywR z*|zyA>kDh2+%3(G_536kw(hn~|%uP}3UT`hF@)pxB~pG1D@&fa+UjOM0OjDfn|ar2V`Hd?YP zR{nXpMm5&`{jF!KS4>mgAMiSA>$BN!-_OeKSkr#pKev2AIq&>iYxkb_o?W)<((WDW zzLsw*lYQb)&i5r>W7Wi#dwpvTbLP4^ zB8KcqIg&pwzQ1<+v7KFO{_c7FxA!|(=Ks6?_1KF4(cz(2This is the complete list of members for winstd::user_impersonator, including all inherited members.

- + + + - +
m_cookiewinstd::user_impersonatorprotected
impersonator() noexceptwinstd::impersonatorinline
m_cookiewinstd::impersonatorprotected
operator bool() constwinstd::impersonatorinline
user_impersonator(HANDLE hToken) noexceptwinstd::user_impersonatorinline
~user_impersonator()winstd::user_impersonatorinlinevirtual
~impersonator()winstd::impersonatorinlinevirtual
diff --git a/classwinstd_1_1user__impersonator.html b/classwinstd_1_1user__impersonator.html index 019c5670..00e5b216 100644 --- a/classwinstd_1_1user__impersonator.html +++ b/classwinstd_1_1user__impersonator.html @@ -76,7 +76,6 @@ $(function() {
winstd::user_impersonator Class Reference
@@ -86,22 +85,41 @@ $(function() { More...

#include <WinStd/Win.h>

+
+Inheritance diagram for winstd::user_impersonator:
+
+
+ + +winstd::impersonator + +
- - - + + + + + + + + + +

Public Member Functions

 user_impersonator (HANDLE hToken) noexcept
 Construct the impersonator and impersonates the given user. More...
 
virtual ~user_impersonator ()
 Reverts to current user and destructs the impersonator. More...
 
- Public Member Functions inherited from winstd::impersonator
impersonator () noexcept
 Construct the impersonator.
 
virtual ~impersonator ()
 Reverts to current user and destructs the impersonator. More...
 
operator bool () const
 Did impersonation succeed?
 
- - + + - - + +

-Protected Attributes

+

+Additional Inherited Members

- Protected Attributes inherited from winstd::impersonator
BOOL m_cookie
 Did impersonation succeed?
 
 Did impersonation succeed?
 

Detailed Description

Lets the calling thread impersonate the security context of a logged-on user.

@@ -139,34 +157,6 @@ BOOL m_cookie
See also
ImpersonateLoggedOnUser function
-
- - -

◆ ~user_impersonator()

- -
-
- - - - - -
- - - - - - - -
virtual winstd::user_impersonator::~user_impersonator ()
-
-inlinevirtual
-
- -

Reverts to current user and destructs the impersonator.

-
See also
RevertToSelf function
-

The documentation for this class was generated from the following file:
    @@ -175,7 +165,7 @@ BOOL m_cookie diff --git a/classwinstd_1_1user__impersonator.png b/classwinstd_1_1user__impersonator.png new file mode 100644 index 0000000000000000000000000000000000000000..6ade770abbfed48b1c6c7b311a9b4d6d5032ff4e GIT binary patch literal 684 zcmV;d0#p5oP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006v zNklCWpQ3`B>CRL%Q8@y$xGNjEp2gmm3<$bxYW5Zb?(rfC`%Oe8rfsYjAg zQja8~yw@uv+p=HR+rFJ7KjVX*-_M@cBgq&)=q+70=6bHyR7+j9%FNy#)CO*c^?q~5 zw4c=;Ns^Aw^a|-qAfjxWBf#K z`5ZCz%p~&jOp+J8(A&ON$6vpiW;aonhp=AT)1*7!y$ikmp;xQ^H+uUz)ty_&uDG3B z-}-a4_r={~+engh-21O_!;c}!rlcN8M!8pyByT14NHR+5kz|xvZd zW9vO0L;H=bH`|TuH@IHzTmXoZdH@h5^#CAB>H$EM)B}JhsRsa2QV#&4q#gi7Nj(6F zl6n9TCG`LxO6mbXl>bbxlv2h8MUqA(^&}}u>Pb?RUhm2E$D@c3_oCq+ffBlnQ)VA}U2ZK5-(y<^(X>dbeoS0rEB3l*KEajkmmV@a@AcZKdS)Kv=egJ0 zzE;Oy`zfet-p-!gWmfNEal4({52{FKF|U3<&rkIFsH;_v=^g8L?A)Ve+g5H*KAF8f z%I@5{xO=S2_qYEVKj*$rZ+-upADF@PB*`Pb?R)RUwrvtB8s49h diff --git a/classwinstd_1_1variant.html b/classwinstd_1_1variant.html index 07d14366..c126782d 100644 --- a/classwinstd_1_1variant.html +++ b/classwinstd_1_1variant.html @@ -614,7 +614,7 @@ virtual ~variant () diff --git a/classwinstd_1_1vmemory-members.html b/classwinstd_1_1vmemory-members.html index b592ce72..47d0381f 100644 --- a/classwinstd_1_1vmemory-members.html +++ b/classwinstd_1_1vmemory-members.html @@ -114,7 +114,7 @@ $(function() { diff --git a/classwinstd_1_1vmemory.html b/classwinstd_1_1vmemory.html index 4236371d..1985b258 100644 --- a/classwinstd_1_1vmemory.html +++ b/classwinstd_1_1vmemory.html @@ -505,7 +505,7 @@ static const LPVOID invali diff --git a/classwinstd_1_1waddrinfo-members.html b/classwinstd_1_1waddrinfo-members.html index a59a130a..9386fd3e 100644 --- a/classwinstd_1_1waddrinfo-members.html +++ b/classwinstd_1_1waddrinfo-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1waddrinfo.html b/classwinstd_1_1waddrinfo.html index 4b7d46af..5855d8da 100644 --- a/classwinstd_1_1waddrinfo.html +++ b/classwinstd_1_1waddrinfo.html @@ -82,7 +82,7 @@ $(function() {
    -

    SID wrapper class. +

    ADDRINFOW wrapper class. More...

    #include <WinStd/WinSock2.h>

    @@ -190,7 +190,7 @@ static const PADDRINFOW in  

    Detailed Description

    -

    SID wrapper class.

    +

    ADDRINFOW wrapper class.

    See also
    GetAddrInfoW function

    Constructor & Destructor Documentation

    @@ -258,7 +258,7 @@ static const PADDRINFOW in
    diff --git a/classwinstd_1_1win__handle-members.html b/classwinstd_1_1win__handle-members.html index 78140318..c317bffe 100644 --- a/classwinstd_1_1win__handle-members.html +++ b/classwinstd_1_1win__handle-members.html @@ -107,7 +107,7 @@ $(function() {
    diff --git a/classwinstd_1_1win__handle.html b/classwinstd_1_1win__handle.html index 0bda12ea..a3b9713e 100644 --- a/classwinstd_1_1win__handle.html +++ b/classwinstd_1_1win__handle.html @@ -262,7 +262,7 @@ template<HANDLE INVALID> diff --git a/classwinstd_1_1win__runtime__error-members.html b/classwinstd_1_1win__runtime__error-members.html index 6b07cf8b..0ecf6a7f 100644 --- a/classwinstd_1_1win__runtime__error-members.html +++ b/classwinstd_1_1win__runtime__error-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classwinstd_1_1win__runtime__error.html b/classwinstd_1_1win__runtime__error.html index 6e04fcc0..b4cb81c7 100644 --- a/classwinstd_1_1win__runtime__error.html +++ b/classwinstd_1_1win__runtime__error.html @@ -335,7 +335,7 @@ typedef DWORD error_type diff --git a/classwinstd_1_1window__dc-members.html b/classwinstd_1_1window__dc-members.html index 16b82954..b89b29da 100644 --- a/classwinstd_1_1window__dc-members.html +++ b/classwinstd_1_1window__dc-members.html @@ -112,7 +112,7 @@ $(function() { diff --git a/classwinstd_1_1window__dc.html b/classwinstd_1_1window__dc.html index 9aec3a40..d1b99aff 100644 --- a/classwinstd_1_1window__dc.html +++ b/classwinstd_1_1window__dc.html @@ -281,7 +281,7 @@ static const HDC invalid diff --git a/classwinstd_1_1wintrust-members.html b/classwinstd_1_1wintrust-members.html index c51898f4..03b68346 100644 --- a/classwinstd_1_1wintrust-members.html +++ b/classwinstd_1_1wintrust-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classwinstd_1_1wintrust.html b/classwinstd_1_1wintrust.html index 54cf3f62..f0ff6f20 100644 --- a/classwinstd_1_1wintrust.html +++ b/classwinstd_1_1wintrust.html @@ -105,7 +105,7 @@ virtual ~wintrust () diff --git a/classwinstd_1_1wlan__handle-members.html b/classwinstd_1_1wlan__handle-members.html index 9aaea658..171c6a7a 100644 --- a/classwinstd_1_1wlan__handle-members.html +++ b/classwinstd_1_1wlan__handle-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classwinstd_1_1wlan__handle.html b/classwinstd_1_1wlan__handle.html index f0e9dc28..4d3a2e3d 100644 --- a/classwinstd_1_1wlan__handle.html +++ b/classwinstd_1_1wlan__handle.html @@ -258,7 +258,7 @@ static const HANDLE invali diff --git a/classwinstd_1_1ws2__runtime__error-members.html b/classwinstd_1_1ws2__runtime__error-members.html index baf78c6f..0c975722 100644 --- a/classwinstd_1_1ws2__runtime__error-members.html +++ b/classwinstd_1_1ws2__runtime__error-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classwinstd_1_1ws2__runtime__error.html b/classwinstd_1_1ws2__runtime__error.html index 7bc41371..6bb0e6fd 100644 --- a/classwinstd_1_1ws2__runtime__error.html +++ b/classwinstd_1_1ws2__runtime__error.html @@ -334,7 +334,7 @@ typedef int error_type diff --git a/classwinstd_1_1wstring__guid-members.html b/classwinstd_1_1wstring__guid-members.html index c0e8ab9f..a024b6b6 100644 --- a/classwinstd_1_1wstring__guid-members.html +++ b/classwinstd_1_1wstring__guid-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classwinstd_1_1wstring__guid.html b/classwinstd_1_1wstring__guid.html index 4d01e500..103e9b20 100644 --- a/classwinstd_1_1wstring__guid.html +++ b/classwinstd_1_1wstring__guid.html @@ -148,7 +148,7 @@ Public Member Functions diff --git a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html index e58c5dc8..6d570887 100644 --- a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html +++ b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html @@ -86,7 +86,7 @@ Files diff --git a/dir_6f50bb204833d887b928571856c82fbe.html b/dir_6f50bb204833d887b928571856c82fbe.html index 13731619..d1fb75ca 100644 --- a/dir_6f50bb204833d887b928571856c82fbe.html +++ b/dir_6f50bb204833d887b928571856c82fbe.html @@ -116,7 +116,7 @@ Files diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index 3ce3141e..cc20aaf8 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -86,7 +86,7 @@ Directories diff --git a/files.html b/files.html index 57cf5232..e2407637 100644 --- a/files.html +++ b/files.html @@ -100,7 +100,7 @@ $(function() { diff --git a/functions.html b/functions.html index 0c93cb28..4c28c207 100644 --- a/functions.html +++ b/functions.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_a.html b/functions_a.html index db87be94..94983f20 100644 --- a/functions_a.html +++ b/functions_a.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_b.html b/functions_b.html index a3bd19f3..dc3eccb0 100644 --- a/functions_b.html +++ b/functions_b.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_c.html b/functions_c.html index a8302012..71d7ac22 100644 --- a/functions_c.html +++ b/functions_c.html @@ -91,7 +91,7 @@ $(function() { diff --git a/functions_d.html b/functions_d.html index 05a96e31..5b6ec621 100644 --- a/functions_d.html +++ b/functions_d.html @@ -89,7 +89,7 @@ $(function() { diff --git a/functions_e.html b/functions_e.html index 6693ab55..a5b825fa 100644 --- a/functions_e.html +++ b/functions_e.html @@ -95,7 +95,7 @@ $(function() { diff --git a/functions_f.html b/functions_f.html index a8ce655a..25fbcbae 100644 --- a/functions_f.html +++ b/functions_f.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func.html b/functions_func.html index b535c18c..c966b58b 100644 --- a/functions_func.html +++ b/functions_func.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_func_b.html b/functions_func_b.html index 989d8308..2cbe95e6 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_c.html b/functions_func_c.html index 2828d8a9..cc5f0063 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -89,7 +89,7 @@ $(function() { diff --git a/functions_func_d.html b/functions_func_d.html index 1afc732e..d643e678 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -88,7 +88,7 @@ $(function() { diff --git a/functions_func_e.html b/functions_func_e.html index eee50048..cf6eb6b0 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -94,7 +94,7 @@ $(function() { diff --git a/functions_func_f.html b/functions_func_f.html index 0bdaf7a8..262bc036 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_h.html b/functions_func_h.html index a367fb5c..28639a7b 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_i.html b/functions_func_i.html index 5058f261..02abc10e 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -73,12 +73,13 @@ $(function() {  

    - i -

    diff --git a/functions_func_l.html b/functions_func_l.html index fd946e31..452a8e27 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_m.html b/functions_func_m.html index 5d2afb5f..5f01ce13 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_n.html b/functions_func_n.html index 5a33eb8d..d72137c0 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_o.html b/functions_func_o.html index f358ecc8..94bf4dd4 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -73,6 +73,7 @@ $(function() {  

    - o -

    diff --git a/functions_func_t.html b/functions_func_t.html index c60dd670..c51edfac 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_func_u.html b/functions_func_u.html index 0ac947c0..27a013d8 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_v.html b/functions_func_v.html index ec7b63cb..584621ad 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_w.html b/functions_func_w.html index 8b30d0d1..9cc1f424 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_func_~.html b/functions_func_~.html index 0e97edc8..74d4fade 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -103,6 +103,7 @@ $(function() {
  • ~find_file() : winstd::find_file
  • ~gdi_handle() : winstd::gdi_handle< T >
  • ~heap() : winstd::heap
  • +
  • ~impersonator() : winstd::impersonator
  • ~library() : winstd::library
  • ~process_information() : winstd::process_information
  • ~ref_unique_ptr() : winstd::ref_unique_ptr< _Ty, _Dx >, winstd::ref_unique_ptr< _Ty[], _Dx >
  • @@ -116,7 +117,6 @@ $(function() {
  • ~security_id() : winstd::security_id
  • ~setup_device_info_list() : winstd::setup_device_info_list
  • ~setup_driver_info_list_builder() : winstd::setup_driver_info_list_builder
  • -
  • ~user_impersonator() : winstd::user_impersonator
  • ~variant() : winstd::variant
  • ~vmemory() : winstd::vmemory
  • ~waddrinfo() : winstd::waddrinfo
  • @@ -128,7 +128,7 @@ $(function() { diff --git a/functions_h.html b/functions_h.html index fd963381..e85a162b 100644 --- a/functions_h.html +++ b/functions_h.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_i.html b/functions_i.html index 0e034430..e49e0c73 100644 --- a/functions_i.html +++ b/functions_i.html @@ -73,13 +73,14 @@ $(function() {
    Here is a list of all documented class members with links to the class documentation for each member:

    - i -

    diff --git a/functions_l.html b/functions_l.html index c728ecb0..0bd44b12 100644 --- a/functions_l.html +++ b/functions_l.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_m.html b/functions_m.html index 35c684fc..3daa26b3 100644 --- a/functions_m.html +++ b/functions_m.html @@ -74,7 +74,7 @@ $(function() {

    - m -

    • m_attrib : winstd::sec_context
    • -
    • m_cookie : winstd::actctx_activator, winstd::console_ctrl_handler, winstd::user_impersonator
    • +
    • m_cookie : winstd::actctx_activator, winstd::console_ctrl_handler, winstd::impersonator
    • m_data : winstd::critical_section, winstd::sanitizing_blob< N >
    • m_desc : winstd::event_fn_auto_ret< T >
    • m_enable_filter_desc : winstd::event_trace_enabler
    • @@ -115,7 +115,7 @@ $(function() { diff --git a/functions_n.html b/functions_n.html index 16a8b54d..d93c2f4d 100644 --- a/functions_n.html +++ b/functions_n.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_o.html b/functions_o.html index c63c9be1..41d6363d 100644 --- a/functions_o.html +++ b/functions_o.html @@ -73,6 +73,7 @@ $(function() {
      Here is a list of all documented class members with links to the class documentation for each member:

      - o -

      diff --git a/functions_t.html b/functions_t.html index 2ba9d038..fef3a72d 100644 --- a/functions_t.html +++ b/functions_t.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_type.html b/functions_type.html index f65325b8..7a0d9d15 100644 --- a/functions_type.html +++ b/functions_type.html @@ -87,7 +87,7 @@ $(function() { diff --git a/functions_u.html b/functions_u.html index 5e2e9c2e..cf4e9351 100644 --- a/functions_u.html +++ b/functions_u.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_v.html b/functions_v.html index 41946e6d..d5d925ec 100644 --- a/functions_v.html +++ b/functions_v.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_vars.html b/functions_vars.html index c36f68f7..37b6d905 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -79,7 +79,7 @@ $(function() {

      - m -

      • m_attrib : winstd::sec_context
      • -
      • m_cookie : winstd::actctx_activator, winstd::console_ctrl_handler, winstd::user_impersonator
      • +
      • m_cookie : winstd::actctx_activator, winstd::console_ctrl_handler, winstd::impersonator
      • m_data : winstd::critical_section, winstd::sanitizing_blob< N >
      • m_desc : winstd::event_fn_auto_ret< T >
      • m_enable_filter_desc : winstd::event_trace_enabler
      • @@ -118,7 +118,7 @@ $(function() { diff --git a/functions_w.html b/functions_w.html index 1770dbd3..35386770 100644 --- a/functions_w.html +++ b/functions_w.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index fe879d4f..97c2600c 100644 --- a/functions_~.html +++ b/functions_~.html @@ -103,6 +103,7 @@ $(function() {
      • ~find_file() : winstd::find_file
      • ~gdi_handle() : winstd::gdi_handle< T >
      • ~heap() : winstd::heap
      • +
      • ~impersonator() : winstd::impersonator
      • ~library() : winstd::library
      • ~process_information() : winstd::process_information
      • ~ref_unique_ptr() : winstd::ref_unique_ptr< _Ty, _Dx >, winstd::ref_unique_ptr< _Ty[], _Dx >
      • @@ -116,7 +117,6 @@ $(function() {
      • ~security_id() : winstd::security_id
      • ~setup_device_info_list() : winstd::setup_device_info_list
      • ~setup_driver_info_list_builder() : winstd::setup_driver_info_list_builder
      • -
      • ~user_impersonator() : winstd::user_impersonator
      • ~variant() : winstd::variant
      • ~vmemory() : winstd::vmemory
      • ~waddrinfo() : winstd::waddrinfo
      • @@ -128,7 +128,7 @@ $(function() { diff --git a/group___setup_a_p_i.html b/group___setup_a_p_i.html index 0e5df646..d27966a1 100644 --- a/group___setup_a_p_i.html +++ b/group___setup_a_p_i.html @@ -89,7 +89,7 @@ Classes diff --git a/group___win_sock2_a_p_i.html b/group___win_sock2_a_p_i.html index da09e64b..5cebb086 100644 --- a/group___win_sock2_a_p_i.html +++ b/group___win_sock2_a_p_i.html @@ -84,17 +84,17 @@ Classes  WinSock2 runtime error. More...
          class  winstd::addrinfo - SID wrapper class. More...
        + ADDRINFOA wrapper class. More...
          class  winstd::waddrinfo - SID wrapper class. More...
        + ADDRINFOW wrapper class. More...
          - +

        Typedefs

        typedef addrinfo winstd::taddrinfo
         Multi-byte / Wide-character SID wrapper class (according to _UNICODE)
         Multi-byte / Wide-character ADDRINFO wrapper class (according to _UNICODE)
         
        diff --git a/group___win_std_c_o_m.html b/group___win_std_c_o_m.html index a27242fc..31234719 100644 --- a/group___win_std_c_o_m.html +++ b/group___win_std_c_o_m.html @@ -101,6 +101,10 @@ Functions + + + +

        @@ -213,7 +213,7 @@ Functions

        static _Check_return_ HRESULT CoCreateInstance (REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, winstd::com_obj< T > &v)
         Creates and default-initializes a single object of the class associated with a specified CLSID. More...
         
        template<class T >
        static _Check_return_ HRESULT CoGetObject (LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, winstd::com_obj< T > &v)
         Converts a display name into a moniker that identifies the object named, and then binds to the object identified by the moniker. More...
         

        Detailed Description

        Function Documentation

        @@ -155,12 +159,65 @@ template<class T >

        Creates and default-initializes a single object of the class associated with a specified CLSID.

        See also
        CoCreateInstance function
        + + + +

        ◆ CoGetObject()

        + +
        +
        +
        +template<class T >
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        static _Check_return_ HRESULT CoGetObject (LPCWSTR pszName,
        BIND_OPTS * pBindOptions,
        REFIID riid,
        winstd::com_obj< T > & v 
        )
        +
        +static
        +
        + +

        Converts a display name into a moniker that identifies the object named, and then binds to the object identified by the moniker.

        +
        See also
        CoGetObject function
        +
        diff --git a/group___win_std_cred_a_p_i.html b/group___win_std_cred_a_p_i.html index 01837f77..63e1dd0b 100644 --- a/group___win_std_cred_a_p_i.html +++ b/group___win_std_cred_a_p_i.html @@ -442,7 +442,7 @@ template<class _Traits , class _Ax > diff --git a/group___win_std_crypto_a_p_i.html b/group___win_std_crypto_a_p_i.html index 12ebcf30..f5450703 100644 --- a/group___win_std_crypto_a_p_i.html +++ b/group___win_std_crypto_a_p_i.html @@ -1195,7 +1195,7 @@ template<class T > diff --git a/group___win_std_e_a_p_a_p_i.html b/group___win_std_e_a_p_a_p_i.html index 0824e853..4ab59e93 100644 --- a/group___win_std_e_a_p_a_p_i.html +++ b/group___win_std_e_a_p_a_p_i.html @@ -344,7 +344,7 @@ static const EAP_ATTRIBUTE  diff --git a/group___win_std_e_t_w_a_p_i.html b/group___win_std_e_t_w_a_p_i.html index bf0c817b..49d9d612 100644 --- a/group___win_std_e_t_w_a_p_i.html +++ b/group___win_std_e_t_w_a_p_i.html @@ -291,7 +291,7 @@ template<class _Ty , class _Ax > diff --git a/group___win_std_exceptions.html b/group___win_std_exceptions.html index a5e3eadb..ed3e4452 100644 --- a/group___win_std_exceptions.html +++ b/group___win_std_exceptions.html @@ -98,7 +98,7 @@ Classes diff --git a/group___win_std_gdi_a_p_i.html b/group___win_std_gdi_a_p_i.html index f629e070..4a02008b 100644 --- a/group___win_std_gdi_a_p_i.html +++ b/group___win_std_gdi_a_p_i.html @@ -95,7 +95,7 @@ Classes diff --git a/group___win_std_general.html b/group___win_std_general.html index 1b4da112..c1f0a32b 100644 --- a/group___win_std_general.html +++ b/group___win_std_general.html @@ -284,7 +284,7 @@ template<class _Ty , class _Dx > diff --git a/group___win_std_m_s_i_a_p_i.html b/group___win_std_m_s_i_a_p_i.html index 7ae24d8e..d0667f43 100644 --- a/group___win_std_m_s_i_a_p_i.html +++ b/group___win_std_m_s_i_a_p_i.html @@ -645,7 +645,7 @@ template<class _Ty , class _Ax > diff --git a/group___win_std_mem_sanitize.html b/group___win_std_mem_sanitize.html index 587163b1..a4816315 100644 --- a/group___win_std_mem_sanitize.html +++ b/group___win_std_mem_sanitize.html @@ -138,7 +138,7 @@ typedef diff --git a/group___win_std_s_d_d_l.html b/group___win_std_s_d_d_l.html index 3db248c9..e917930e 100644 --- a/group___win_std_s_d_d_l.html +++ b/group___win_std_s_d_d_l.html @@ -198,7 +198,7 @@ Functions diff --git a/group___win_std_security_a_p_i.html b/group___win_std_security_a_p_i.html index 57cb9d00..69496cad 100644 --- a/group___win_std_security_a_p_i.html +++ b/group___win_std_security_a_p_i.html @@ -92,7 +92,7 @@ Classes diff --git a/group___win_std_shell_w_a_p_i.html b/group___win_std_shell_w_a_p_i.html index b1e12bdd..333b2dd9 100644 --- a/group___win_std_shell_w_a_p_i.html +++ b/group___win_std_shell_w_a_p_i.html @@ -174,7 +174,7 @@ template<class _Traits , class _Ax > diff --git a/group___win_std_str_format.html b/group___win_std_str_format.html index 51cfc954..46134801 100644 --- a/group___win_std_str_format.html +++ b/group___win_std_str_format.html @@ -566,7 +566,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/group___win_std_sys_handles.html b/group___win_std_sys_handles.html index 2fb420f7..1aa90737 100644 --- a/group___win_std_sys_handles.html +++ b/group___win_std_sys_handles.html @@ -184,7 +184,7 @@ static const T winstd::han diff --git a/group___win_std_w_l_a_n_a_p_i.html b/group___win_std_w_l_a_n_a_p_i.html index 24534209..29ecc8e8 100644 --- a/group___win_std_w_l_a_n_a_p_i.html +++ b/group___win_std_w_l_a_n_a_p_i.html @@ -203,7 +203,7 @@ template<class _Traits , class _Ax > diff --git a/group___win_std_win_a_p_i.html b/group___win_std_win_a_p_i.html index dcfc1af7..1831a945 100644 --- a/group___win_std_win_a_p_i.html +++ b/group___win_std_win_a_p_i.html @@ -108,9 +108,15 @@ Classes class  winstd::actctx_activator  Activates given activation context in constructor and deactivates it in destructor. More...
          +class  winstd::impersonator + Base class for thread impersonation of another security context. More...
        +  class  winstd::user_impersonator  Lets the calling thread impersonate the security context of a logged-on user. More...
          +class  winstd::system_impersonator + Lets the calling thread impersonate the security context of the SYSTEM user. More...
        +  class  winstd::console_ctrl_handler  Console control handler stack management. More...
          @@ -327,6 +333,9 @@ Functions static BOOL LookupAccountSidW (LPCWSTR lpSystemName, PSID lpSid, std::basic_string< wchar_t, _Traits, _Ax > *sName, std::basic_string< wchar_t, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept  Retrieves the name of the account for this SID and the name of the first domain on which this SID is found. More...
          +static BOOL CreateWellKnownSid (WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, std::unique_ptr< SID > &Sid) + Creates a SID for predefined aliases. More...
        +  template<class _Ty > static BOOL GetTokenInformation (HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, std::unique_ptr< _Ty > &TokenInformation) noexcept  Retrieves a specified type of information about an access token. The calling process must have appropriate access rights to obtain the information. More...
        @@ -351,6 +360,12 @@ Functions static LSTATUS RegOpenKeyExW (HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)  Opens the specified registry key. More...
          +static BOOL OpenProcessToken (HANDLE ProcessHandle, DWORD DesiredAccess, winstd::win_handle< NULL > &TokenHandle) + Opens the access token associated with a process. More...
        +  +static BOOL DuplicateTokenEx (HANDLE hExistingToken, DWORD dwDesiredAccess, LPSECURITY_ATTRIBUTES lpTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, winstd::win_handle< NULL > &NewToken) + Creates a new access token that duplicates an existing token. This function can create either a primary token or an impersonation token. More...

        Detailed Description

        Macro Definition Documentation

        @@ -514,6 +529,114 @@ Functions

        Function Documentation

        + +

        ◆ CreateWellKnownSid()

        + +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        static BOOL CreateWellKnownSid (WELL_KNOWN_SID_TYPE WellKnownSidType,
        PSID DomainSid,
        std::unique_ptr< SID > & Sid 
        )
        +
        +static
        +
        + +

        Creates a SID for predefined aliases.

        +
        See also
        CreateWellKnownSid function
        + +
        +
        + +

        ◆ DuplicateTokenEx()

        + +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        static BOOL DuplicateTokenEx (HANDLE hExistingToken,
        DWORD dwDesiredAccess,
        LPSECURITY_ATTRIBUTES lpTokenAttributes,
        SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
        TOKEN_TYPE TokenType,
        winstd::win_handle< NULL > & NewToken 
        )
        +
        +static
        +
        + +

        Creates a new access token that duplicates an existing token. This function can create either a primary token or an impersonation token.

        +
        See also
        DuplicateTokenEx function
        + +
        +

        ◆ ExpandEnvironmentStringsA()

        @@ -1594,6 +1717,51 @@ template<class _Traits , class _Ax >

        Normalizes characters of a text string according to Unicode 4.0 TR#15.

        See also
        NormalizeString function
        + + + +

        ◆ OpenProcessToken()

        + +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        static BOOL OpenProcessToken (HANDLE ProcessHandle,
        DWORD DesiredAccess,
        winstd::win_handle< NULL > & TokenHandle 
        )
        +
        +static
        +
        + +

        Opens the access token associated with a process.

        +
        See also
        OpenProcessToken function
        +
        @@ -3196,7 +3364,7 @@ template<class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 > diff --git a/group___win_trust_a_p_i.html b/group___win_trust_a_p_i.html index d28e1141..e3ca3958 100644 --- a/group___win_trust_a_p_i.html +++ b/group___win_trust_a_p_i.html @@ -86,7 +86,7 @@ Classes diff --git a/hierarchy.html b/hierarchy.html index 0eb6205f..8ee1ae18 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -156,9 +156,9 @@ $(function() {  Cwinstd::handle< LPVOID, NULL >  Cwinstd::vmemoryMemory in virtual address space of a process handle wrapper  Cwinstd::handle< PADDRINFOA, NULL > - Cwinstd::addrinfoSID wrapper class + Cwinstd::addrinfoADDRINFOA wrapper class  Cwinstd::handle< PADDRINFOW, NULL > - Cwinstd::waddrinfoSID wrapper class + Cwinstd::waddrinfoADDRINFOW wrapper class  Cwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >  Cwinstd::handle< PCCERT_CONTEXT, INVAL >  Cwinstd::handle< PCredHandle, NULL > @@ -179,34 +179,36 @@ $(function() {  Cwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >  Cwinstd::event_traceETW trace  Cwinstd::heap_allocator< _Ty >HeapAlloc allocator - Cwinstd::LocalFree_delete< _Ty >Deleter for unique_ptr using LocalFree - Cwinstd::LocalFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using LocalFree - CPROCESS_INFORMATION - Cwinstd::process_informationPROCESS_INFORMATION struct wrapper - Cwinstd::heap_allocator< _Ty >::rebind< _Other >A structure that enables an allocator for objects of one type to allocate storage for objects of another type - Cwinstd::sanitizing_allocator< _Ty >::rebind< _Other >Convert this type to sanitizing_allocator<_Other> - Cwinstd::ref_unique_ptr< _Ty, _Dx >Helper class for returning pointers to std::unique_ptr - Cwinstd::ref_unique_ptr< _Ty[], _Dx >Helper class for returning pointers to std::unique_ptr (specialization for arrays) - Cstd::runtime_error - Cwinstd::num_runtime_error< HRESULT > - Cwinstd::com_runtime_errorCOM runtime error - Cwinstd::num_runtime_error< SECURITY_STATUS > - Cwinstd::sec_runtime_errorSecurity runtime error - Cwinstd::num_runtime_error< DWORD > - Cwinstd::win_runtime_errorWindows runtime error - Cwinstd::eap_runtime_errorEapHost runtime error - Cwinstd::num_runtime_error< int > - Cwinstd::ws2_runtime_errorWinSock2 runtime error - Cwinstd::num_runtime_error< _Tn >Numerical runtime error - Cwinstd::sanitizing_blob< N >Sanitizing BLOB - CSecBufferDesc - Cwinstd::sec_buffer_descSecBufferDesc wrapper class - CSECURITY_ATTRIBUTES - Cwinstd::security_attributes - Cwinstd::setup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor - Cwinstd::UnmapViewOfFile_delete< _Ty >Deleter for unique_ptr using UnmapViewOfFile - Cwinstd::UnmapViewOfFile_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using UnmapViewOfFile - Cwinstd::user_impersonatorLets the calling thread impersonate the security context of a logged-on user + Cwinstd::impersonatorBase class for thread impersonation of another security context + Cwinstd::system_impersonatorLets the calling thread impersonate the security context of the SYSTEM user + Cwinstd::user_impersonatorLets the calling thread impersonate the security context of a logged-on user + Cwinstd::LocalFree_delete< _Ty >Deleter for unique_ptr using LocalFree + Cwinstd::LocalFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using LocalFree + CPROCESS_INFORMATION + Cwinstd::process_informationPROCESS_INFORMATION struct wrapper + Cwinstd::heap_allocator< _Ty >::rebind< _Other >A structure that enables an allocator for objects of one type to allocate storage for objects of another type + Cwinstd::sanitizing_allocator< _Ty >::rebind< _Other >Convert this type to sanitizing_allocator<_Other> + Cwinstd::ref_unique_ptr< _Ty, _Dx >Helper class for returning pointers to std::unique_ptr + Cwinstd::ref_unique_ptr< _Ty[], _Dx >Helper class for returning pointers to std::unique_ptr (specialization for arrays) + Cstd::runtime_error + Cwinstd::num_runtime_error< HRESULT > + Cwinstd::com_runtime_errorCOM runtime error + Cwinstd::num_runtime_error< SECURITY_STATUS > + Cwinstd::sec_runtime_errorSecurity runtime error + Cwinstd::num_runtime_error< DWORD > + Cwinstd::win_runtime_errorWindows runtime error + Cwinstd::eap_runtime_errorEapHost runtime error + Cwinstd::num_runtime_error< int > + Cwinstd::ws2_runtime_errorWinSock2 runtime error + Cwinstd::num_runtime_error< _Tn >Numerical runtime error + Cwinstd::sanitizing_blob< N >Sanitizing BLOB + CSecBufferDesc + Cwinstd::sec_buffer_descSecBufferDesc wrapper class + CSECURITY_ATTRIBUTES + Cwinstd::security_attributes + Cwinstd::setup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor + Cwinstd::UnmapViewOfFile_delete< _Ty >Deleter for unique_ptr using UnmapViewOfFile + Cwinstd::UnmapViewOfFile_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using UnmapViewOfFile  CVARIANT  Cwinstd::variantVARIANT struct wrapper  Cwinstd::wintrustWinTrust engine wrapper class @@ -217,7 +219,7 @@ $(function() { diff --git a/index.html b/index.html index 67e0ec2e..b40538de 100644 --- a/index.html +++ b/index.html @@ -143,7 +143,7 @@ Usage diff --git a/md__s_e_c_u_r_i_t_y.html b/md__s_e_c_u_r_i_t_y.html index 2c540ad4..f864b222 100644 --- a/md__s_e_c_u_r_i_t_y.html +++ b/md__s_e_c_u_r_i_t_y.html @@ -89,7 +89,7 @@ Reporting a Vulnerability diff --git a/modules.html b/modules.html index b870399e..e5ba142d 100644 --- a/modules.html +++ b/modules.html @@ -100,7 +100,7 @@ $(function() { diff --git a/pages.html b/pages.html index cfc3af77..43d3e44b 100644 --- a/pages.html +++ b/pages.html @@ -81,7 +81,7 @@ $(function() { diff --git a/pch_8h_source.html b/pch_8h_source.html index c4a45c7f..b2187086 100644 --- a/pch_8h_source.html +++ b/pch_8h_source.html @@ -107,7 +107,7 @@ $(function() { diff --git a/search/all_11.js b/search/all_11.js index 13da7097..332c0555 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -8,9 +8,9 @@ var searchData= ['sc_5fhandle_5',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], ['sddl_6',['SDDL',['../group___win_std_s_d_d_l.html',1,'']]], ['sec_5fbuffer_5fdesc_7',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5',1,'winstd::sec_buffer_desc::sec_buffer_desc()'],['../classwinstd_1_1sec__buffer__desc.html',1,'winstd::sec_buffer_desc']]], - ['sec_5fcontext_8',['sec_context',['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e',1,'winstd::sec_context::sec_context(sec_context &&h) noexcept'],['../classwinstd_1_1sec__context.html',1,'winstd::sec_context']]], - ['sec_5fcredentials_9',['sec_credentials',['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba',1,'winstd::sec_credentials::sec_credentials(sec_credentials &&h) noexcept'],['../classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946',1,'winstd::sec_credentials::sec_credentials(handle_type h, const TimeStamp expires)'],['../classwinstd_1_1sec__credentials.html',1,'winstd::sec_credentials']]], - ['sec_5fruntime_5ferror_10',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)'],['../classwinstd_1_1sec__runtime__error.html',1,'winstd::sec_runtime_error']]], + ['sec_5fcontext_8',['sec_context',['../classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e',1,'winstd::sec_context::sec_context(sec_context &&h) noexcept'],['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html',1,'winstd::sec_context']]], + ['sec_5fcredentials_9',['sec_credentials',['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946',1,'winstd::sec_credentials::sec_credentials(handle_type h, const TimeStamp expires)'],['../classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba',1,'winstd::sec_credentials::sec_credentials(sec_credentials &&h) noexcept'],['../classwinstd_1_1sec__credentials.html',1,'winstd::sec_credentials']]], + ['sec_5fruntime_5ferror_10',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)'],['../classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html',1,'winstd::sec_runtime_error']]], ['securemultibytetowidechar_11',['SecureMultiByteToWideChar',['../group___win_std_win_a_p_i.html#ga9aaaa6113374b6cbad241626819d06c9',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gaa15c8edc525c24109fafea640cdedfcb',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gab02484a16fea41e3d9a5c64c2ee1da1a',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Win.h']]], ['securewidechartomultibyte_12',['SecureWideCharToMultiByte',['../group___win_std_win_a_p_i.html#ga1a0accb3a54ae0ed34944fd483e0c329',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga04f5e27a0e2066c85d7a421fe4e4c462',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga05ac1b43a241f1bbcbf1440cf26c6335',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h']]], ['security_20api_13',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], @@ -25,11 +25,11 @@ var searchData= ['setup_5fdevice_5finfo_5flist_22',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], ['setup_5fdriver_5finfo_5flist_5fbuilder_23',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f',1,'winstd::setup_driver_info_list_builder::setup_driver_info_list_builder()'],['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd::setup_driver_info_list_builder']]], ['shell_20api_24',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], - ['size_25',['size',['../classwinstd_1_1eap__packet.html#a2534ad15ae47e2d46354d9f535f4031f',1,'winstd::eap_packet::size()'],['../classwinstd_1_1data__blob.html#ab2ad06e271e8503d7158408773054d23',1,'winstd::data_blob::size()']]], + ['size_25',['size',['../classwinstd_1_1data__blob.html#ab2ad06e271e8503d7158408773054d23',1,'winstd::data_blob::size()'],['../classwinstd_1_1eap__packet.html#a2534ad15ae47e2d46354d9f535f4031f',1,'winstd::eap_packet::size()']]], ['size_5ftype_26',['size_type',['../classwinstd_1_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator']]], ['sprintf_27',['sprintf',['../group___win_std_str_format.html#gac397f655a858a069b3e521940af64331',1,'Common.h']]], ['start_28',['start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aea2b2676c28c0db26d39331a336c6b92',1,'winstd']]], - ['status_29',['status',['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()'],['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()']]], + ['status_29',['status',['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()'],['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()']]], ['string_20formatting_30',['String Formatting',['../group___win_std_str_format.html',1,'']]], ['string_5fguid_31',['string_guid',['../classwinstd_1_1string__guid.html#a507ceea48ffeccc4179239dfb5f4cdb2',1,'winstd::string_guid::string_guid()'],['../classwinstd_1_1string__guid.html',1,'winstd::string_guid']]], ['string_5fmsg_32',['string_msg',['../group___win_std_str_format.html#gae63195e25e08e2b3d9a9b9c2987f5740',1,'winstd']]], @@ -37,5 +37,6 @@ var searchData= ['stringtoguid_34',['StringToGuid',['../group___win_std_win_a_p_i.html#gab9c35127ac48f8d941a5354b1a1b7abe',1,'Win.h']]], ['stringtoguida_35',['StringToGuidA',['../group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c',1,'Win.h']]], ['stringtoguidw_36',['StringToGuidW',['../group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa',1,'Win.h']]], - ['system_20handles_37',['System Handles',['../group___win_std_sys_handles.html',1,'']]] + ['system_20handles_37',['System Handles',['../group___win_std_sys_handles.html',1,'']]], + ['system_5fimpersonator_38',['system_impersonator',['../classwinstd_1_1system__impersonator.html#a5e46322f6b3a64e74b6e711cc9dd059b',1,'winstd::system_impersonator::system_impersonator()'],['../classwinstd_1_1system__impersonator.html',1,'winstd::system_impersonator']]] ]; diff --git a/search/all_16.js b/search/all_16.js index 0aa5ae51..016dc9ff 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -30,20 +30,20 @@ var searchData= ['_7efind_5ffile_27',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], ['_7egdi_5fhandle_28',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], ['_7eheap_29',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], - ['_7elibrary_30',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], - ['_7eprocess_5finformation_31',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], - ['_7eref_5funique_5fptr_32',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], - ['_7ereg_5fkey_33',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], - ['_7esanitizing_5fblob_34',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], - ['_7esc_5fhandle_35',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], - ['_7esec_5fbuffer_5fdesc_36',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], - ['_7esec_5fcontext_37',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], - ['_7esec_5fcredentials_38',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], - ['_7esecurity_5fattributes_39',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], - ['_7esecurity_5fid_40',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], - ['_7esetup_5fdevice_5finfo_5flist_41',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], - ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_42',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], - ['_7euser_5fimpersonator_43',['~user_impersonator',['../classwinstd_1_1user__impersonator.html#a986ca1cabf89b994f1634feb911c26a6',1,'winstd::user_impersonator']]], + ['_7eimpersonator_30',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], + ['_7elibrary_31',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], + ['_7eprocess_5finformation_32',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_33',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], + ['_7ereg_5fkey_34',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esanitizing_5fblob_35',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esc_5fhandle_36',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], + ['_7esec_5fbuffer_5fdesc_37',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_38',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_39',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fattributes_40',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], + ['_7esecurity_5fid_41',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_42',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_43',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], ['_7evariant_44',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], ['_7evmemory_45',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], ['_7ewaddrinfo_46',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], diff --git a/search/all_3.js b/search/all_3.js index b7fc4863..11c2f1c7 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -9,44 +9,46 @@ var searchData= ['certgetnamestringw_6',['CertGetNameStringW',['../group___win_std_crypto_a_p_i.html#ga2a0de58b33f5eb080e3b6ba9a7fe1e53',1,'Crypt.h']]], ['change_5ftype_7',['change_type',['../classwinstd_1_1variant.html#a499d38db49d577c816e447c6a3875ff5',1,'winstd::variant']]], ['cocreateinstance_8',['CoCreateInstance',['../group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965',1,'COM.h']]], - ['com_20object_20management_9',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]], - ['com_5finitializer_10',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept'],['../classwinstd_1_1com__initializer.html',1,'winstd::com_initializer']]], - ['com_5fobj_11',['com_obj',['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)'],['../classwinstd_1_1com__obj.html',1,'winstd::com_obj< T >']]], - ['com_5fruntime_5ferror_12',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1com__runtime__error.html',1,'winstd::com_runtime_error']]], - ['console_5fctrl_5fhandler_13',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler::console_ctrl_handler()'],['../classwinstd_1_1console__ctrl__handler.html',1,'winstd::console_ctrl_handler']]], - ['const_5fpointer_14',['const_pointer',['../classwinstd_1_1heap__allocator.html#adc56ad9f2484d7d34299bef73709ef9c',1,'winstd::heap_allocator']]], - ['const_5freference_15',['const_reference',['../classwinstd_1_1heap__allocator.html#ad98c7e8fc3e14da42a8dfc897e75a790',1,'winstd::heap_allocator']]], - ['construct_16',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], - ['convertstringsecuritydescriptortosecuritydescriptora_17',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], - ['convertstringsecuritydescriptortosecuritydescriptorw_18',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], - ['cotaskmemfree_5fdelete_19',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete::CoTaskMemFree_delete()'],['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd::CoTaskMemFree_delete']]], - ['create_20',['create',['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()']]], - ['create_5fexp1_21',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], - ['create_5fms_5fmppe_5fkey_22',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], - ['credentials_20api_23',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], - ['credenumeratea_24',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], - ['credenumeratew_25',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], - ['credfree_5fdelete_26',['CredFree_delete',['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html',1,'winstd::CredFree_delete< _Ty >']]], - ['credfree_5fdelete_3c_20_5fty_5b_5d_3e_27',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], - ['credprotecta_28',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], - ['credprotectw_29',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], - ['credunprotecta_30',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], - ['credunprotectw_31',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], - ['critical_5fsection_32',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section::critical_section()'],['../classwinstd_1_1critical__section.html',1,'winstd::critical_section']]], - ['crypt_5fhash_33',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], - ['crypt_5fkey_34',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], - ['crypt_5fprov_35',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]], - ['cryptacquirecontexta_36',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], - ['cryptacquirecontextw_37',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], - ['cryptcreatehash_38',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], - ['cryptdecrypt_39',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], - ['cryptderivekey_40',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], - ['cryptencrypt_41',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], - ['cryptexportkey_42',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], - ['cryptgenkey_43',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], - ['cryptgethashparam_44',['CryptGetHashParam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptgetkeyparam_45',['CryptGetKeyParam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptimportkey_46',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], - ['cryptimportpublickeyinfo_47',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]], - ['cryptography_20api_48',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] + ['cogetobject_9',['CoGetObject',['../group___win_std_c_o_m.html#ga825b73e9a34b1f496c577a951441b6f1',1,'COM.h']]], + ['com_20object_20management_10',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]], + ['com_5finitializer_11',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept'],['../classwinstd_1_1com__initializer.html',1,'winstd::com_initializer']]], + ['com_5fobj_12',['com_obj',['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)'],['../classwinstd_1_1com__obj.html',1,'winstd::com_obj< T >']]], + ['com_5fruntime_5ferror_13',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1com__runtime__error.html',1,'winstd::com_runtime_error']]], + ['console_5fctrl_5fhandler_14',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler::console_ctrl_handler()'],['../classwinstd_1_1console__ctrl__handler.html',1,'winstd::console_ctrl_handler']]], + ['const_5fpointer_15',['const_pointer',['../classwinstd_1_1heap__allocator.html#adc56ad9f2484d7d34299bef73709ef9c',1,'winstd::heap_allocator']]], + ['const_5freference_16',['const_reference',['../classwinstd_1_1heap__allocator.html#ad98c7e8fc3e14da42a8dfc897e75a790',1,'winstd::heap_allocator']]], + ['construct_17',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], + ['convertstringsecuritydescriptortosecuritydescriptora_18',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], + ['convertstringsecuritydescriptortosecuritydescriptorw_19',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], + ['cotaskmemfree_5fdelete_20',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete::CoTaskMemFree_delete()'],['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd::CoTaskMemFree_delete']]], + ['create_21',['create',['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()']]], + ['create_5fexp1_22',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], + ['create_5fms_5fmppe_5fkey_23',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], + ['createwellknownsid_24',['CreateWellKnownSid',['../group___win_std_win_a_p_i.html#ga6b1c9ae28988d31bb03abefb32af5642',1,'Win.h']]], + ['credentials_20api_25',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], + ['credenumeratea_26',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], + ['credenumeratew_27',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], + ['credfree_5fdelete_28',['CredFree_delete',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html',1,'winstd::CredFree_delete< _Ty >']]], + ['credfree_5fdelete_3c_20_5fty_5b_5d_3e_29',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['credprotecta_30',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], + ['credprotectw_31',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], + ['credunprotecta_32',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], + ['credunprotectw_33',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], + ['critical_5fsection_34',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section::critical_section()'],['../classwinstd_1_1critical__section.html',1,'winstd::critical_section']]], + ['crypt_5fhash_35',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], + ['crypt_5fkey_36',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], + ['crypt_5fprov_37',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]], + ['cryptacquirecontexta_38',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], + ['cryptacquirecontextw_39',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], + ['cryptcreatehash_40',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], + ['cryptdecrypt_41',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], + ['cryptderivekey_42',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], + ['cryptencrypt_43',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], + ['cryptexportkey_44',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], + ['cryptgenkey_45',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], + ['cryptgethashparam_46',['CryptGetHashParam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptgetkeyparam_47',['CryptGetKeyParam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptimportkey_48',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], + ['cryptimportpublickeyinfo_49',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]], + ['cryptography_20api_50',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] ]; diff --git a/search/all_4.js b/search/all_4.js index d731bfcc..c009d620 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -19,5 +19,6 @@ var searchData= ['dplhandle_3c_20pccert_5fcontext_2c_20null_20_3e_16',['dplhandle< PCCERT_CONTEXT, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], ['dplhandle_3c_20t_20_2a_2c_20null_20_3e_17',['dplhandle< T *, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], ['duplicate_18',['duplicate',['../classwinstd_1_1dplhandle.html#a48e66c8979560019e339867de944a265',1,'winstd::dplhandle']]], - ['duplicate_5finternal_19',['duplicate_internal',['../classwinstd_1_1com__obj.html#a1460be29bd94af55d27b5179e971b3b4',1,'winstd::com_obj::duplicate_internal()'],['../classwinstd_1_1bstr.html#a4a9986fac6bf82d8a8887a7cb80e6351',1,'winstd::bstr::duplicate_internal()'],['../classwinstd_1_1dplhandle.html#aa6ec5fd1ce258a3dd66da1cfb4d6dfb8',1,'winstd::dplhandle::duplicate_internal()'],['../classwinstd_1_1cert__context.html#a3d0ee01002ccef041ffb164151cab14b',1,'winstd::cert_context::duplicate_internal()'],['../classwinstd_1_1cert__chain__context.html#a1cded78d368c01b0513364f00be26385',1,'winstd::cert_chain_context::duplicate_internal()'],['../classwinstd_1_1crypt__hash.html#af6b7999d5e29f1caaecb5b0bde90b76e',1,'winstd::crypt_hash::duplicate_internal()'],['../classwinstd_1_1crypt__key.html#aa9983160147883cf7526e9df1889b7bf',1,'winstd::crypt_key::duplicate_internal()'],['../classwinstd_1_1eap__packet.html#a5c5bc551e5c467e814e13f6d05d17ac2',1,'winstd::eap_packet::duplicate_internal()']]] + ['duplicate_5finternal_19',['duplicate_internal',['../classwinstd_1_1com__obj.html#a1460be29bd94af55d27b5179e971b3b4',1,'winstd::com_obj::duplicate_internal()'],['../classwinstd_1_1bstr.html#a4a9986fac6bf82d8a8887a7cb80e6351',1,'winstd::bstr::duplicate_internal()'],['../classwinstd_1_1dplhandle.html#aa6ec5fd1ce258a3dd66da1cfb4d6dfb8',1,'winstd::dplhandle::duplicate_internal()'],['../classwinstd_1_1cert__context.html#a3d0ee01002ccef041ffb164151cab14b',1,'winstd::cert_context::duplicate_internal()'],['../classwinstd_1_1cert__chain__context.html#a1cded78d368c01b0513364f00be26385',1,'winstd::cert_chain_context::duplicate_internal()'],['../classwinstd_1_1crypt__hash.html#af6b7999d5e29f1caaecb5b0bde90b76e',1,'winstd::crypt_hash::duplicate_internal()'],['../classwinstd_1_1crypt__key.html#aa9983160147883cf7526e9df1889b7bf',1,'winstd::crypt_key::duplicate_internal()'],['../classwinstd_1_1eap__packet.html#a5c5bc551e5c467e814e13f6d05d17ac2',1,'winstd::eap_packet::duplicate_internal()']]], + ['duplicatetokenex_20',['DuplicateTokenEx',['../group___win_std_win_a_p_i.html#ga760bb977738a422eabd9a226eb5acdb4',1,'Win.h']]] ]; diff --git a/search/all_9.js b/search/all_9.js index e26f657b..4b96e219 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,6 +1,7 @@ var searchData= [ ['identity_0',['identity',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aff483d1ff591898a9942916050d2ca3f',1,'winstd']]], - ['initialize_1',['initialize',['../classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21',1,'winstd::sec_context']]], - ['invalid_2',['invalid',['../group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c',1,'winstd::handle']]] + ['impersonator_1',['impersonator',['../classwinstd_1_1impersonator.html#a6d6a8f6446fd2f5bc2120318164f0eac',1,'winstd::impersonator::impersonator()'],['../classwinstd_1_1impersonator.html',1,'winstd::impersonator']]], + ['initialize_2',['initialize',['../classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21',1,'winstd::sec_context']]], + ['invalid_3',['invalid',['../group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c',1,'winstd::handle']]] ]; diff --git a/search/all_b.js b/search/all_b.js index cdd9923b..847c47d0 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,7 +1,7 @@ var searchData= [ ['m_5fattrib_0',['m_attrib',['../classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f',1,'winstd::sec_context']]], - ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie()'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie()'],['../classwinstd_1_1user__impersonator.html#a28b0a9c7d1759b2be3ae3deb960a287c',1,'winstd::user_impersonator::m_cookie()']]], + ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie()'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie()'],['../classwinstd_1_1impersonator.html#acf82d1c062fce491af05b7e89c09d3f2',1,'winstd::impersonator::m_cookie()']]], ['m_5fdata_2',['m_data',['../classwinstd_1_1sanitizing__blob.html#a38187ccd591a6a7cfa4a9d0a6f6f7701',1,'winstd::sanitizing_blob::m_data()'],['../classwinstd_1_1critical__section.html#a55b9b9e7f38b94cd5c3fc15a319a6719',1,'winstd::critical_section::m_data()']]], ['m_5fdesc_3',['m_desc',['../classwinstd_1_1event__fn__auto__ret.html#a23fa88c6a7aea86536cc0e4bee2746cf',1,'winstd::event_fn_auto_ret']]], ['m_5fenable_5ffilter_5fdesc_4',['m_enable_filter_desc',['../classwinstd_1_1event__trace__enabler.html#a358d20e2dbbc7dcaccbe8d3d303cc3c4',1,'winstd::event_trace_enabler']]], diff --git a/search/all_d.js b/search/all_d.js index 9f6319f5..52779319 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,24 +1,26 @@ var searchData= [ - ['operator_20const_20event_5ftrace_5fproperties_20_2a_0',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], - ['operator_20handle_5ftype_1',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], - ['operator_20lpcritical_5fsection_2',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], - ['operator_20typename_20_5fty_20_2a_26_3',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], - ['operator_20typename_20_5fty_20_2a_2a_4',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], - ['operator_21_5',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], - ['operator_21_3d_6',['operator!=',['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=(handle_type h) const']]], - ['operator_26_7',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], - ['operator_28_29_8',['operator()',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a8a44a95dd279b699a8f3ff2c5f8dd31a',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aa9bfce548f756da75283fb781ea2da75',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_unmap_view_of_file__delete.html#aa3611bebc2deaf9acaed4e09e193032d',1,'winstd::UnmapViewOfFile_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abf0ecfcfbb58493103f7e0905272d8d8',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], - ['operator_2a_9',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], - ['operator_2d_3e_10',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], - ['operator_3c_11',['operator<',['../classwinstd_1_1handle.html#a4c4515d0d1071cab5c675e926aa2dc92',1,'winstd::handle::operator<()'],['../classwinstd_1_1cert__context.html#a92881d07b0b41b81c4119ed8d8868c3b',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#ac03c0c14bb91f7511425946ef7f3e725',1,'winstd::variant::operator<(const VARIANT &varSrc) const noexcept']]], - ['operator_3c_3d_12',['operator<=',['../classwinstd_1_1variant.html#a02366b97c9a937f57806640dc942ecaf',1,'winstd::variant::operator<=()'],['../classwinstd_1_1handle.html#af9e9538d58b952799db4a1c68b0184b9',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a042240321d22636cddc379b198c7fd84',1,'winstd::cert_context::operator<=()']]], - ['operator_3d_13',['operator=',['../classwinstd_1_1eap__method__info__array.html#aea48aefd91b676cdbeb9511640108f2a',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1variant.html#a1df6086270e7799b83ee2889e2b88d9e',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#a242766666ce3cbb83429ddd0eaeb9cc6',1,'winstd::eap_attr::operator=(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#aa5909d52c15557908ff584f4712eea05',1,'winstd::eap_attr::operator=(const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1data__blob.html#a637b625d29bacc0875d543c69da351c2',1,'winstd::data_blob::operator=(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#ac818a3116ab5fc0af960f82aa505b6ae',1,'winstd::data_blob::operator=(const DATA_BLOB &other)'],['../classwinstd_1_1dplhandle.html#a546f1f737bc3da0c9b19967d849776d3',1,'winstd::dplhandle::operator=(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#abcccb97671b96da3623f700a93bb5c39',1,'winstd::dplhandle::operator=(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a31cec3cdf4ee749b1aef4b4cd7652fb7',1,'winstd::dplhandle::operator=(handle_type h) noexcept'],['../classwinstd_1_1handle.html#a6326bbc54ec3441e41f30bc1ec4d6a6c',1,'winstd::handle::operator=(handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html#a591e006af92e4d088fb9c1ed974c0923',1,'winstd::handle::operator=(handle_type h) noexcept'],['../classwinstd_1_1variant.html#a39d9e97b57c37f3d876574cc2fd6e0a5',1,'winstd::variant::operator=(const SAFEARRAY *pSrc) noexcept'],['../classwinstd_1_1variant.html#a2ea74c1b7a770188f7f59d7eb6923dbe',1,'winstd::variant::operator=(double *pfSrc) noexcept'],['../classwinstd_1_1event__rec.html#aa5287b5572575d440f881c1d8c17bac3',1,'winstd::event_rec::operator=(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a41f64986df27cea4fdaa8ee8ce2d3875',1,'winstd::event_rec::operator=(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a22ab332b9c7e3c21e6107e909703da0f',1,'winstd::event_rec::operator=(event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#a4e436a74c83a75aab21800bc9d954228',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#acb8dddbdd22399d26d4c5db2998afc1d',1,'winstd::event_fn_auto::operator=(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#ab64dd267c58d816b4ef5549e704a8949',1,'winstd::event_fn_auto::operator=(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a6bb69bf1ac97231ef47c2aed99921bc9',1,'winstd::event_fn_auto_ret::operator=(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ade4fd767e5e743649480b93cd0a5ba69',1,'winstd::event_fn_auto_ret::operator=(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b',1,'winstd::window_dc::operator=()'],['../classwinstd_1_1security__attributes.html#a85cc5cc2ce94a8876e888ee6646779d7',1,'winstd::security_attributes::operator=()'],['../classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a17a902c8f0ce17d3f06b69ec3e01a331',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#af5e22f4158921eb49c2207335d7c7593',1,'winstd::variant::operator=(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#ad0ef65b5a3f40b1a812ac78ca5e5eb50',1,'winstd::variant::operator=(long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aff536ecc3c3a074fea648b7c60522a83',1,'winstd::variant::operator=(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#aeec12d33002777506b59d73f2c43421c',1,'winstd::variant::operator=(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a355fecf0ce80d31377c9395f2ed1aada',1,'winstd::variant::operator=(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a63e75ec57af2d8f59830b029afeb3b68',1,'winstd::variant::operator=(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a602751a752d5a7442ade0f4437646231',1,'winstd::variant::operator=(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a5886220d7a2ff006d29cd4448a2a33ac',1,'winstd::variant::operator=(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a5c2733a19c37248f69a07771b8e939f1',1,'winstd::variant::operator=(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a71fb3ee2710ad470329e0b5c4f7f5ba4',1,'winstd::variant::operator=(int nSrc) noexcept'],['../classwinstd_1_1variant.html#a05ad6d2f51763b24d7528078a2c30e49',1,'winstd::variant::operator=(unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a360da15526269bd64a2fb670e9e280ff',1,'winstd::variant::operator=(long nSrc) noexcept'],['../classwinstd_1_1variant.html#a07980ff84773ac25807d0713dd05090a',1,'winstd::variant::operator=(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#af1898a82e4199d1f34924d448867f68f',1,'winstd::variant::operator=(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aebabfcb503a43abecc9f3c07629f591f',1,'winstd::variant::operator=(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aa01c928f87788c505b818b7930c0f3a0',1,'winstd::variant::operator=(unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#ad4a0fd8999d8d526bb232ebf70c18887',1,'winstd::variant::operator=(unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a1786d099ef012c301c0774f98af0f13a',1,'winstd::variant::operator=(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#af86e9a10fd9dbe6e18b33a59d04f3b44',1,'winstd::variant::operator=(unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa321e1785731055f02abcf7789383912',1,'winstd::variant::operator=(long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a30ba85931db8557713e5ee32d48ceecc',1,'winstd::variant::operator=(int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#accf863f76609d78946f51ec07a52690e',1,'winstd::variant::operator=(unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa8c701dc6deac688a83d04ed9afdd4b5',1,'winstd::variant::operator=(short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a5bc092e989de74c42d92de5647248a57',1,'winstd::variant::operator=(unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#a55f962bb7a077f87aaa4a6bec03c10da',1,'winstd::variant::operator=(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a984b2e054639678f06a40e3f57abf4d7',1,'winstd::variant::operator=(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#a935f6cff8004781f60d66b04a01c2330',1,'winstd::variant::operator=(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a6fa877e7a098dba125c6342bd5e1c896',1,'winstd::variant::operator=(double dblSrc) noexcept']]], - ['operator_3d_3d_14',['operator==',['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==()'],['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h']]], - ['operator_3e_15',['operator>',['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()'],['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>()']]], - ['operator_3e_3d_16',['operator>=',['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()'],['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()']]], - ['other_17',['other',['../structwinstd_1_1sanitizing__allocator_1_1rebind.html#a6a195ba8f7b42d8e82304efb08e18679',1,'winstd::sanitizing_allocator::rebind::other()'],['../structwinstd_1_1heap__allocator_1_1rebind.html#a7916519ada01914c23461a64334ff331',1,'winstd::heap_allocator::rebind::other()']]], - ['otp_18',['otp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d',1,'winstd']]], - ['outputdebugstr_19',['OutputDebugStr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], - ['outputdebugstrv_20',['OutputDebugStrV',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] + ['openprocesstoken_0',['OpenProcessToken',['../group___win_std_win_a_p_i.html#ga44eef1254def39a039cf838e1035c724',1,'Win.h']]], + ['operator_20bool_1',['operator bool',['../classwinstd_1_1impersonator.html#a0c295840090719079dbf5e5b691e6c3e',1,'winstd::impersonator']]], + ['operator_20const_20event_5ftrace_5fproperties_20_2a_2',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], + ['operator_20handle_5ftype_3',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], + ['operator_20lpcritical_5fsection_4',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], + ['operator_20typename_20_5fty_20_2a_26_5',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], + ['operator_20typename_20_5fty_20_2a_2a_6',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], + ['operator_21_7',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], + ['operator_21_3d_8',['operator!=',['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=()'],['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()']]], + ['operator_26_9',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], + ['operator_28_29_10',['operator()',['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a8a44a95dd279b699a8f3ff2c5f8dd31a',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aa9bfce548f756da75283fb781ea2da75',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_unmap_view_of_file__delete.html#aa3611bebc2deaf9acaed4e09e193032d',1,'winstd::UnmapViewOfFile_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abf0ecfcfbb58493103f7e0905272d8d8',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], + ['operator_2a_11',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], + ['operator_2d_3e_12',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], + ['operator_3c_13',['operator<',['../classwinstd_1_1handle.html#a4c4515d0d1071cab5c675e926aa2dc92',1,'winstd::handle::operator<()'],['../classwinstd_1_1cert__context.html#a92881d07b0b41b81c4119ed8d8868c3b',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#ac03c0c14bb91f7511425946ef7f3e725',1,'winstd::variant::operator<()']]], + ['operator_3c_3d_14',['operator<=',['../classwinstd_1_1handle.html#af9e9538d58b952799db4a1c68b0184b9',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a042240321d22636cddc379b198c7fd84',1,'winstd::cert_context::operator<=()'],['../classwinstd_1_1variant.html#a02366b97c9a937f57806640dc942ecaf',1,'winstd::variant::operator<=()']]], + ['operator_3d_15',['operator=',['../classwinstd_1_1eap__method__info__array.html#aea48aefd91b676cdbeb9511640108f2a',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1variant.html#a2ea74c1b7a770188f7f59d7eb6923dbe',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#a242766666ce3cbb83429ddd0eaeb9cc6',1,'winstd::eap_attr::operator=(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#aa5909d52c15557908ff584f4712eea05',1,'winstd::eap_attr::operator=(const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1data__blob.html#a637b625d29bacc0875d543c69da351c2',1,'winstd::data_blob::operator=(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#ac818a3116ab5fc0af960f82aa505b6ae',1,'winstd::data_blob::operator=(const DATA_BLOB &other)'],['../classwinstd_1_1dplhandle.html#a546f1f737bc3da0c9b19967d849776d3',1,'winstd::dplhandle::operator=(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#abcccb97671b96da3623f700a93bb5c39',1,'winstd::dplhandle::operator=(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a31cec3cdf4ee749b1aef4b4cd7652fb7',1,'winstd::dplhandle::operator=(handle_type h) noexcept'],['../classwinstd_1_1handle.html#a6326bbc54ec3441e41f30bc1ec4d6a6c',1,'winstd::handle::operator=(handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html#a591e006af92e4d088fb9c1ed974c0923',1,'winstd::handle::operator=(handle_type h) noexcept'],['../classwinstd_1_1variant.html#a39d9e97b57c37f3d876574cc2fd6e0a5',1,'winstd::variant::operator=()'],['../classwinstd_1_1event__rec.html#aa5287b5572575d440f881c1d8c17bac3',1,'winstd::event_rec::operator=(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a41f64986df27cea4fdaa8ee8ce2d3875',1,'winstd::event_rec::operator=(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a22ab332b9c7e3c21e6107e909703da0f',1,'winstd::event_rec::operator=(event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#a4e436a74c83a75aab21800bc9d954228',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#acb8dddbdd22399d26d4c5db2998afc1d',1,'winstd::event_fn_auto::operator=(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#ab64dd267c58d816b4ef5549e704a8949',1,'winstd::event_fn_auto::operator=(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a6bb69bf1ac97231ef47c2aed99921bc9',1,'winstd::event_fn_auto_ret::operator=(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ade4fd767e5e743649480b93cd0a5ba69',1,'winstd::event_fn_auto_ret::operator=(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b',1,'winstd::window_dc::operator=()'],['../classwinstd_1_1security__attributes.html#a85cc5cc2ce94a8876e888ee6646779d7',1,'winstd::security_attributes::operator=()'],['../classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a17a902c8f0ce17d3f06b69ec3e01a331',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#af5e22f4158921eb49c2207335d7c7593',1,'winstd::variant::operator=(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#ad4a0fd8999d8d526bb232ebf70c18887',1,'winstd::variant::operator=(unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aff536ecc3c3a074fea648b7c60522a83',1,'winstd::variant::operator=(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#aeec12d33002777506b59d73f2c43421c',1,'winstd::variant::operator=(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a355fecf0ce80d31377c9395f2ed1aada',1,'winstd::variant::operator=(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a63e75ec57af2d8f59830b029afeb3b68',1,'winstd::variant::operator=(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a602751a752d5a7442ade0f4437646231',1,'winstd::variant::operator=(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a5886220d7a2ff006d29cd4448a2a33ac',1,'winstd::variant::operator=(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a5c2733a19c37248f69a07771b8e939f1',1,'winstd::variant::operator=(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a71fb3ee2710ad470329e0b5c4f7f5ba4',1,'winstd::variant::operator=(int nSrc) noexcept'],['../classwinstd_1_1variant.html#a05ad6d2f51763b24d7528078a2c30e49',1,'winstd::variant::operator=(unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a360da15526269bd64a2fb670e9e280ff',1,'winstd::variant::operator=(long nSrc) noexcept'],['../classwinstd_1_1variant.html#a07980ff84773ac25807d0713dd05090a',1,'winstd::variant::operator=(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#af1898a82e4199d1f34924d448867f68f',1,'winstd::variant::operator=(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aebabfcb503a43abecc9f3c07629f591f',1,'winstd::variant::operator=(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aa01c928f87788c505b818b7930c0f3a0',1,'winstd::variant::operator=(unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#ad0ef65b5a3f40b1a812ac78ca5e5eb50',1,'winstd::variant::operator=(long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a1df6086270e7799b83ee2889e2b88d9e',1,'winstd::variant::operator=(float *pfSrc) noexcept'],['../classwinstd_1_1variant.html#a1786d099ef012c301c0774f98af0f13a',1,'winstd::variant::operator=(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#af86e9a10fd9dbe6e18b33a59d04f3b44',1,'winstd::variant::operator=(unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa321e1785731055f02abcf7789383912',1,'winstd::variant::operator=(long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a30ba85931db8557713e5ee32d48ceecc',1,'winstd::variant::operator=(int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#accf863f76609d78946f51ec07a52690e',1,'winstd::variant::operator=(unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa8c701dc6deac688a83d04ed9afdd4b5',1,'winstd::variant::operator=(short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a5bc092e989de74c42d92de5647248a57',1,'winstd::variant::operator=(unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#a55f962bb7a077f87aaa4a6bec03c10da',1,'winstd::variant::operator=(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a984b2e054639678f06a40e3f57abf4d7',1,'winstd::variant::operator=(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#a935f6cff8004781f60d66b04a01c2330',1,'winstd::variant::operator=(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a6fa877e7a098dba125c6342bd5e1c896',1,'winstd::variant::operator=(double dblSrc) noexcept']]], + ['operator_3d_3d_16',['operator==',['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==()'],['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h']]], + ['operator_3e_17',['operator>',['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()'],['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>(handle_type h) const']]], + ['operator_3e_3d_18',['operator>=',['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()'],['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()']]], + ['other_19',['other',['../structwinstd_1_1sanitizing__allocator_1_1rebind.html#a6a195ba8f7b42d8e82304efb08e18679',1,'winstd::sanitizing_allocator::rebind::other()'],['../structwinstd_1_1heap__allocator_1_1rebind.html#a7916519ada01914c23461a64334ff331',1,'winstd::heap_allocator::rebind::other()']]], + ['otp_20',['otp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d',1,'winstd']]], + ['outputdebugstr_21',['OutputDebugStr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], + ['outputdebugstrv_22',['OutputDebugStrV',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] ]; diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 00000000..d3c79417 --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['waddrinfo_0',['waddrinfo',['../classwinstd_1_1waddrinfo.html',1,'winstd']]], + ['win_5fhandle_1',['win_handle',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fruntime_5ferror_2',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html',1,'winstd']]], + ['window_5fdc_3',['window_dc',['../classwinstd_1_1window__dc.html',1,'winstd']]], + ['wintrust_4',['wintrust',['../classwinstd_1_1wintrust.html',1,'winstd']]], + ['wlan_5fhandle_5',['wlan_handle',['../classwinstd_1_1wlan__handle.html',1,'winstd']]], + ['wlanfreememory_5fdelete_6',['WlanFreeMemory_delete',['../structwinstd_1_1_wlan_free_memory__delete.html',1,'winstd']]], + ['wlanfreememory_5fdelete_3c_20_5fty_5b_5d_3e_7',['WlanFreeMemory_delete< _Ty[]>',['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['ws2_5fruntime_5ferror_8',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html',1,'winstd']]], + ['wstring_5fguid_9',['wstring_guid',['../classwinstd_1_1wstring__guid.html',1,'winstd']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js index 6e503681..04eeb2be 100644 --- a/search/classes_8.js +++ b/search/classes_8.js @@ -1,6 +1,4 @@ var searchData= [ - ['library_0',['library',['../classwinstd_1_1library.html',1,'winstd']]], - ['localfree_5fdelete_1',['LocalFree_delete',['../structwinstd_1_1_local_free__delete.html',1,'winstd']]], - ['localfree_5fdelete_3c_20_5fty_5b_5d_3e_2',['LocalFree_delete< _Ty[]>',['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]] + ['impersonator_0',['impersonator',['../classwinstd_1_1impersonator.html',1,'winstd']]] ]; diff --git a/search/classes_9.js b/search/classes_9.js index a739449a..6e503681 100644 --- a/search/classes_9.js +++ b/search/classes_9.js @@ -1,8 +1,6 @@ var searchData= [ - ['num_5fruntime_5ferror_0',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20dword_20_3e_1',['num_runtime_error< DWORD >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20hresult_20_3e_2',['num_runtime_error< HRESULT >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20int_20_3e_3',['num_runtime_error< int >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20security_5fstatus_20_3e_4',['num_runtime_error< SECURITY_STATUS >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]] + ['library_0',['library',['../classwinstd_1_1library.html',1,'winstd']]], + ['localfree_5fdelete_1',['LocalFree_delete',['../structwinstd_1_1_local_free__delete.html',1,'winstd']]], + ['localfree_5fdelete_3c_20_5fty_5b_5d_3e_2',['LocalFree_delete< _Ty[]>',['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]] ]; diff --git a/search/classes_a.js b/search/classes_a.js index 3c1e65d5..a739449a 100644 --- a/search/classes_a.js +++ b/search/classes_a.js @@ -1,4 +1,8 @@ var searchData= [ - ['process_5finformation_0',['process_information',['../classwinstd_1_1process__information.html',1,'winstd']]] + ['num_5fruntime_5ferror_0',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20dword_20_3e_1',['num_runtime_error< DWORD >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20hresult_20_3e_2',['num_runtime_error< HRESULT >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20int_20_3e_3',['num_runtime_error< int >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20security_5fstatus_20_3e_4',['num_runtime_error< SECURITY_STATUS >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]] ]; diff --git a/search/classes_b.js b/search/classes_b.js index 3be41f51..3c1e65d5 100644 --- a/search/classes_b.js +++ b/search/classes_b.js @@ -1,7 +1,4 @@ var searchData= [ - ['rebind_0',['rebind',['../structwinstd_1_1heap__allocator_1_1rebind.html',1,'winstd::heap_allocator< _Ty >::rebind< _Other >'],['../structwinstd_1_1sanitizing__allocator_1_1rebind.html',1,'winstd::sanitizing_allocator< _Ty >::rebind< _Other >']]], - ['ref_5funique_5fptr_1',['ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html',1,'winstd']]], - ['ref_5funique_5fptr_3c_20_5fty_5b_5d_2c_20_5fdx_20_3e_2',['ref_unique_ptr< _Ty[], _Dx >',['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html',1,'winstd']]], - ['reg_5fkey_3',['reg_key',['../classwinstd_1_1reg__key.html',1,'winstd']]] + ['process_5finformation_0',['process_information',['../classwinstd_1_1process__information.html',1,'winstd']]] ]; diff --git a/search/classes_c.js b/search/classes_c.js index 6f790428..3be41f51 100644 --- a/search/classes_c.js +++ b/search/classes_c.js @@ -1,15 +1,7 @@ var searchData= [ - ['sanitizing_5fallocator_0',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html',1,'winstd']]], - ['sanitizing_5fblob_1',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html',1,'winstd']]], - ['sc_5fhandle_2',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], - ['sec_5fbuffer_5fdesc_3',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html',1,'winstd']]], - ['sec_5fcontext_4',['sec_context',['../classwinstd_1_1sec__context.html',1,'winstd']]], - ['sec_5fcredentials_5',['sec_credentials',['../classwinstd_1_1sec__credentials.html',1,'winstd']]], - ['sec_5fruntime_5ferror_6',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html',1,'winstd']]], - ['security_5fattributes_7',['security_attributes',['../classwinstd_1_1security__attributes.html',1,'winstd']]], - ['security_5fid_8',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], - ['setup_5fdevice_5finfo_5flist_9',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], - ['setup_5fdriver_5finfo_5flist_5fbuilder_10',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd']]], - ['string_5fguid_11',['string_guid',['../classwinstd_1_1string__guid.html',1,'winstd']]] + ['rebind_0',['rebind',['../structwinstd_1_1heap__allocator_1_1rebind.html',1,'winstd::heap_allocator< _Ty >::rebind< _Other >'],['../structwinstd_1_1sanitizing__allocator_1_1rebind.html',1,'winstd::sanitizing_allocator< _Ty >::rebind< _Other >']]], + ['ref_5funique_5fptr_1',['ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html',1,'winstd']]], + ['ref_5funique_5fptr_3c_20_5fty_5b_5d_2c_20_5fdx_20_3e_2',['ref_unique_ptr< _Ty[], _Dx >',['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html',1,'winstd']]], + ['reg_5fkey_3',['reg_key',['../classwinstd_1_1reg__key.html',1,'winstd']]] ]; diff --git a/search/classes_d.js b/search/classes_d.js index 29cf84d4..6677a55a 100644 --- a/search/classes_d.js +++ b/search/classes_d.js @@ -1,6 +1,16 @@ var searchData= [ - ['unmapviewoffile_5fdelete_0',['UnmapViewOfFile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html',1,'winstd']]], - ['unmapviewoffile_5fdelete_3c_20_5fty_5b_5d_3e_1',['UnmapViewOfFile_delete< _Ty[]>',['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], - ['user_5fimpersonator_2',['user_impersonator',['../classwinstd_1_1user__impersonator.html',1,'winstd']]] + ['sanitizing_5fallocator_0',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html',1,'winstd']]], + ['sanitizing_5fblob_1',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html',1,'winstd']]], + ['sc_5fhandle_2',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], + ['sec_5fbuffer_5fdesc_3',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html',1,'winstd']]], + ['sec_5fcontext_4',['sec_context',['../classwinstd_1_1sec__context.html',1,'winstd']]], + ['sec_5fcredentials_5',['sec_credentials',['../classwinstd_1_1sec__credentials.html',1,'winstd']]], + ['sec_5fruntime_5ferror_6',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html',1,'winstd']]], + ['security_5fattributes_7',['security_attributes',['../classwinstd_1_1security__attributes.html',1,'winstd']]], + ['security_5fid_8',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], + ['setup_5fdevice_5finfo_5flist_9',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], + ['setup_5fdriver_5finfo_5flist_5fbuilder_10',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd']]], + ['string_5fguid_11',['string_guid',['../classwinstd_1_1string__guid.html',1,'winstd']]], + ['system_5fimpersonator_12',['system_impersonator',['../classwinstd_1_1system__impersonator.html',1,'winstd']]] ]; diff --git a/search/classes_e.js b/search/classes_e.js index 030753f1..29cf84d4 100644 --- a/search/classes_e.js +++ b/search/classes_e.js @@ -1,5 +1,6 @@ var searchData= [ - ['variant_0',['variant',['../classwinstd_1_1variant.html',1,'winstd']]], - ['vmemory_1',['vmemory',['../classwinstd_1_1vmemory.html',1,'winstd']]] + ['unmapviewoffile_5fdelete_0',['UnmapViewOfFile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html',1,'winstd']]], + ['unmapviewoffile_5fdelete_3c_20_5fty_5b_5d_3e_1',['UnmapViewOfFile_delete< _Ty[]>',['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['user_5fimpersonator_2',['user_impersonator',['../classwinstd_1_1user__impersonator.html',1,'winstd']]] ]; diff --git a/search/classes_f.js b/search/classes_f.js index d3c79417..030753f1 100644 --- a/search/classes_f.js +++ b/search/classes_f.js @@ -1,13 +1,5 @@ var searchData= [ - ['waddrinfo_0',['waddrinfo',['../classwinstd_1_1waddrinfo.html',1,'winstd']]], - ['win_5fhandle_1',['win_handle',['../classwinstd_1_1win__handle.html',1,'winstd']]], - ['win_5fruntime_5ferror_2',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html',1,'winstd']]], - ['window_5fdc_3',['window_dc',['../classwinstd_1_1window__dc.html',1,'winstd']]], - ['wintrust_4',['wintrust',['../classwinstd_1_1wintrust.html',1,'winstd']]], - ['wlan_5fhandle_5',['wlan_handle',['../classwinstd_1_1wlan__handle.html',1,'winstd']]], - ['wlanfreememory_5fdelete_6',['WlanFreeMemory_delete',['../structwinstd_1_1_wlan_free_memory__delete.html',1,'winstd']]], - ['wlanfreememory_5fdelete_3c_20_5fty_5b_5d_3e_7',['WlanFreeMemory_delete< _Ty[]>',['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], - ['ws2_5fruntime_5ferror_8',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html',1,'winstd']]], - ['wstring_5fguid_9',['wstring_guid',['../classwinstd_1_1wstring__guid.html',1,'winstd']]] + ['variant_0',['variant',['../classwinstd_1_1variant.html',1,'winstd']]], + ['vmemory_1',['vmemory',['../classwinstd_1_1vmemory.html',1,'winstd']]] ]; diff --git a/search/functions_10.js b/search/functions_10.js index 05bd85b0..81daca05 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -19,5 +19,6 @@ var searchData= ['status_16',['status',['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()'],['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()']]], ['string_5fguid_17',['string_guid',['../classwinstd_1_1string__guid.html#a507ceea48ffeccc4179239dfb5f4cdb2',1,'winstd::string_guid']]], ['stringtoguida_18',['StringToGuidA',['../group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c',1,'Win.h']]], - ['stringtoguidw_19',['StringToGuidW',['../group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa',1,'Win.h']]] + ['stringtoguidw_19',['StringToGuidW',['../group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa',1,'Win.h']]], + ['system_5fimpersonator_20',['system_impersonator',['../classwinstd_1_1system__impersonator.html#a5e46322f6b3a64e74b6e711cc9dd059b',1,'winstd::system_impersonator']]] ]; diff --git a/search/functions_15.js b/search/functions_15.js index 0aa5ae51..016dc9ff 100644 --- a/search/functions_15.js +++ b/search/functions_15.js @@ -30,20 +30,20 @@ var searchData= ['_7efind_5ffile_27',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], ['_7egdi_5fhandle_28',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], ['_7eheap_29',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], - ['_7elibrary_30',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], - ['_7eprocess_5finformation_31',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], - ['_7eref_5funique_5fptr_32',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], - ['_7ereg_5fkey_33',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], - ['_7esanitizing_5fblob_34',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], - ['_7esc_5fhandle_35',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], - ['_7esec_5fbuffer_5fdesc_36',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], - ['_7esec_5fcontext_37',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], - ['_7esec_5fcredentials_38',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], - ['_7esecurity_5fattributes_39',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], - ['_7esecurity_5fid_40',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], - ['_7esetup_5fdevice_5finfo_5flist_41',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], - ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_42',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], - ['_7euser_5fimpersonator_43',['~user_impersonator',['../classwinstd_1_1user__impersonator.html#a986ca1cabf89b994f1634feb911c26a6',1,'winstd::user_impersonator']]], + ['_7eimpersonator_30',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], + ['_7elibrary_31',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], + ['_7eprocess_5finformation_32',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_33',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], + ['_7ereg_5fkey_34',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esanitizing_5fblob_35',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esc_5fhandle_36',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], + ['_7esec_5fbuffer_5fdesc_37',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_38',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_39',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fattributes_40',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], + ['_7esecurity_5fid_41',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_42',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_43',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], ['_7evariant_44',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], ['_7evmemory_45',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], ['_7ewaddrinfo_46',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], diff --git a/search/functions_2.js b/search/functions_2.js index 927bff76..a271e254 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -6,35 +6,37 @@ var searchData= ['certgetnamestringw_3',['CertGetNameStringW',['../group___win_std_crypto_a_p_i.html#ga2a0de58b33f5eb080e3b6ba9a7fe1e53',1,'Crypt.h']]], ['change_5ftype_4',['change_type',['../classwinstd_1_1variant.html#a499d38db49d577c816e447c6a3875ff5',1,'winstd::variant']]], ['cocreateinstance_5',['CoCreateInstance',['../group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965',1,'COM.h']]], - ['com_5finitializer_6',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept']]], - ['com_5fobj_7',['com_obj',['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)']]], - ['com_5fruntime_5ferror_8',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)']]], - ['console_5fctrl_5fhandler_9',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler']]], - ['construct_10',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], - ['convertstringsecuritydescriptortosecuritydescriptora_11',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], - ['convertstringsecuritydescriptortosecuritydescriptorw_12',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], - ['cotaskmemfree_5fdelete_13',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete']]], - ['create_14',['create',['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()']]], - ['create_5fexp1_15',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], - ['create_5fms_5fmppe_5fkey_16',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], - ['credenumeratea_17',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], - ['credenumeratew_18',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], - ['credfree_5fdelete_19',['CredFree_delete',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()']]], - ['credprotecta_20',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], - ['credprotectw_21',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], - ['credunprotecta_22',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], - ['credunprotectw_23',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], - ['critical_5fsection_24',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section']]], - ['cryptacquirecontexta_25',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], - ['cryptacquirecontextw_26',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], - ['cryptcreatehash_27',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], - ['cryptdecrypt_28',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], - ['cryptderivekey_29',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], - ['cryptencrypt_30',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], - ['cryptexportkey_31',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], - ['cryptgenkey_32',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], - ['cryptgethashparam_33',['CryptGetHashParam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptgetkeyparam_34',['CryptGetKeyParam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptimportkey_35',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], - ['cryptimportpublickeyinfo_36',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]] + ['cogetobject_6',['CoGetObject',['../group___win_std_c_o_m.html#ga825b73e9a34b1f496c577a951441b6f1',1,'COM.h']]], + ['com_5finitializer_7',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept']]], + ['com_5fobj_8',['com_obj',['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)']]], + ['com_5fruntime_5ferror_9',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)']]], + ['console_5fctrl_5fhandler_10',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler']]], + ['construct_11',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], + ['convertstringsecuritydescriptortosecuritydescriptora_12',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], + ['convertstringsecuritydescriptortosecuritydescriptorw_13',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], + ['cotaskmemfree_5fdelete_14',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete']]], + ['create_15',['create',['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()']]], + ['create_5fexp1_16',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], + ['create_5fms_5fmppe_5fkey_17',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], + ['createwellknownsid_18',['CreateWellKnownSid',['../group___win_std_win_a_p_i.html#ga6b1c9ae28988d31bb03abefb32af5642',1,'Win.h']]], + ['credenumeratea_19',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], + ['credenumeratew_20',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], + ['credfree_5fdelete_21',['CredFree_delete',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()']]], + ['credprotecta_22',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], + ['credprotectw_23',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], + ['credunprotecta_24',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], + ['credunprotectw_25',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], + ['critical_5fsection_26',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section']]], + ['cryptacquirecontexta_27',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], + ['cryptacquirecontextw_28',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], + ['cryptcreatehash_29',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], + ['cryptdecrypt_30',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], + ['cryptderivekey_31',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], + ['cryptencrypt_32',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], + ['cryptexportkey_33',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], + ['cryptgenkey_34',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], + ['cryptgethashparam_35',['CryptGetHashParam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptgetkeyparam_36',['CryptGetKeyParam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptimportkey_37',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], + ['cryptimportpublickeyinfo_38',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]] ]; diff --git a/search/functions_3.js b/search/functions_3.js index b89461cc..6a7fa982 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -10,5 +10,6 @@ var searchData= ['disable_5ftrace_7',['disable_trace',['../classwinstd_1_1event__session.html#a86ff12521bc1c863ea685b8a689fd81b',1,'winstd::event_session']]], ['dplhandle_8',['dplhandle',['../classwinstd_1_1dplhandle.html#ac95cbfb481c0d5e6c60d130f3c270b59',1,'winstd::dplhandle::dplhandle() noexcept'],['../classwinstd_1_1dplhandle.html#ac1aa19e060402006d8ff8404be6b07c3',1,'winstd::dplhandle::dplhandle(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#a726938d9b7df787204025f6c36a04507',1,'winstd::dplhandle::dplhandle(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#ab1ac74d5f212fddc217d1a8190a01177',1,'winstd::dplhandle::dplhandle(handle_type h) noexcept']]], ['duplicate_9',['duplicate',['../classwinstd_1_1dplhandle.html#a48e66c8979560019e339867de944a265',1,'winstd::dplhandle']]], - ['duplicate_5finternal_10',['duplicate_internal',['../classwinstd_1_1com__obj.html#a1460be29bd94af55d27b5179e971b3b4',1,'winstd::com_obj::duplicate_internal()'],['../classwinstd_1_1bstr.html#a4a9986fac6bf82d8a8887a7cb80e6351',1,'winstd::bstr::duplicate_internal()'],['../classwinstd_1_1dplhandle.html#aa6ec5fd1ce258a3dd66da1cfb4d6dfb8',1,'winstd::dplhandle::duplicate_internal()'],['../classwinstd_1_1cert__context.html#a3d0ee01002ccef041ffb164151cab14b',1,'winstd::cert_context::duplicate_internal()'],['../classwinstd_1_1cert__chain__context.html#a1cded78d368c01b0513364f00be26385',1,'winstd::cert_chain_context::duplicate_internal()'],['../classwinstd_1_1crypt__hash.html#af6b7999d5e29f1caaecb5b0bde90b76e',1,'winstd::crypt_hash::duplicate_internal()'],['../classwinstd_1_1crypt__key.html#aa9983160147883cf7526e9df1889b7bf',1,'winstd::crypt_key::duplicate_internal()'],['../classwinstd_1_1eap__packet.html#a5c5bc551e5c467e814e13f6d05d17ac2',1,'winstd::eap_packet::duplicate_internal()']]] + ['duplicate_5finternal_10',['duplicate_internal',['../classwinstd_1_1com__obj.html#a1460be29bd94af55d27b5179e971b3b4',1,'winstd::com_obj::duplicate_internal()'],['../classwinstd_1_1bstr.html#a4a9986fac6bf82d8a8887a7cb80e6351',1,'winstd::bstr::duplicate_internal()'],['../classwinstd_1_1dplhandle.html#aa6ec5fd1ce258a3dd66da1cfb4d6dfb8',1,'winstd::dplhandle::duplicate_internal()'],['../classwinstd_1_1cert__context.html#a3d0ee01002ccef041ffb164151cab14b',1,'winstd::cert_context::duplicate_internal()'],['../classwinstd_1_1cert__chain__context.html#a1cded78d368c01b0513364f00be26385',1,'winstd::cert_chain_context::duplicate_internal()'],['../classwinstd_1_1crypt__hash.html#af6b7999d5e29f1caaecb5b0bde90b76e',1,'winstd::crypt_hash::duplicate_internal()'],['../classwinstd_1_1crypt__key.html#aa9983160147883cf7526e9df1889b7bf',1,'winstd::crypt_key::duplicate_internal()'],['../classwinstd_1_1eap__packet.html#a5c5bc551e5c467e814e13f6d05d17ac2',1,'winstd::eap_packet::duplicate_internal()']]], + ['duplicatetokenex_11',['DuplicateTokenEx',['../group___win_std_win_a_p_i.html#ga760bb977738a422eabd9a226eb5acdb4',1,'Win.h']]] ]; diff --git a/search/functions_8.js b/search/functions_8.js index 36044ce9..dc1b7065 100644 --- a/search/functions_8.js +++ b/search/functions_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['initialize_0',['initialize',['../classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21',1,'winstd::sec_context']]] + ['impersonator_0',['impersonator',['../classwinstd_1_1impersonator.html#a6d6a8f6446fd2f5bc2120318164f0eac',1,'winstd::impersonator']]], + ['initialize_1',['initialize',['../classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21',1,'winstd::sec_context']]] ]; diff --git a/search/functions_c.js b/search/functions_c.js index 69b8614c..af7b3652 100644 --- a/search/functions_c.js +++ b/search/functions_c.js @@ -1,22 +1,24 @@ var searchData= [ - ['operator_20const_20event_5ftrace_5fproperties_20_2a_0',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], - ['operator_20handle_5ftype_1',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], - ['operator_20lpcritical_5fsection_2',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], - ['operator_20typename_20_5fty_20_2a_26_3',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], - ['operator_20typename_20_5fty_20_2a_2a_4',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], - ['operator_21_5',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], - ['operator_21_3d_6',['operator!=',['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=(handle_type h) const']]], - ['operator_26_7',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], - ['operator_28_29_8',['operator()',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a8a44a95dd279b699a8f3ff2c5f8dd31a',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aa9bfce548f756da75283fb781ea2da75',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_unmap_view_of_file__delete.html#aa3611bebc2deaf9acaed4e09e193032d',1,'winstd::UnmapViewOfFile_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abf0ecfcfbb58493103f7e0905272d8d8',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], - ['operator_2a_9',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], - ['operator_2d_3e_10',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], - ['operator_3c_11',['operator<',['../classwinstd_1_1handle.html#a4c4515d0d1071cab5c675e926aa2dc92',1,'winstd::handle::operator<()'],['../classwinstd_1_1cert__context.html#a92881d07b0b41b81c4119ed8d8868c3b',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#ac03c0c14bb91f7511425946ef7f3e725',1,'winstd::variant::operator<(const VARIANT &varSrc) const noexcept']]], - ['operator_3c_3d_12',['operator<=',['../classwinstd_1_1variant.html#a02366b97c9a937f57806640dc942ecaf',1,'winstd::variant::operator<=()'],['../classwinstd_1_1handle.html#af9e9538d58b952799db4a1c68b0184b9',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a042240321d22636cddc379b198c7fd84',1,'winstd::cert_context::operator<=()']]], - ['operator_3d_13',['operator=',['../classwinstd_1_1eap__method__info__array.html#aea48aefd91b676cdbeb9511640108f2a',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1variant.html#a1df6086270e7799b83ee2889e2b88d9e',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#a242766666ce3cbb83429ddd0eaeb9cc6',1,'winstd::eap_attr::operator=(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#aa5909d52c15557908ff584f4712eea05',1,'winstd::eap_attr::operator=(const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1data__blob.html#a637b625d29bacc0875d543c69da351c2',1,'winstd::data_blob::operator=(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#ac818a3116ab5fc0af960f82aa505b6ae',1,'winstd::data_blob::operator=(const DATA_BLOB &other)'],['../classwinstd_1_1dplhandle.html#a546f1f737bc3da0c9b19967d849776d3',1,'winstd::dplhandle::operator=(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#abcccb97671b96da3623f700a93bb5c39',1,'winstd::dplhandle::operator=(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a31cec3cdf4ee749b1aef4b4cd7652fb7',1,'winstd::dplhandle::operator=(handle_type h) noexcept'],['../classwinstd_1_1handle.html#a6326bbc54ec3441e41f30bc1ec4d6a6c',1,'winstd::handle::operator=(handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html#a591e006af92e4d088fb9c1ed974c0923',1,'winstd::handle::operator=(handle_type h) noexcept'],['../classwinstd_1_1variant.html#a39d9e97b57c37f3d876574cc2fd6e0a5',1,'winstd::variant::operator=(const SAFEARRAY *pSrc) noexcept'],['../classwinstd_1_1variant.html#a2ea74c1b7a770188f7f59d7eb6923dbe',1,'winstd::variant::operator=(double *pfSrc) noexcept'],['../classwinstd_1_1event__rec.html#aa5287b5572575d440f881c1d8c17bac3',1,'winstd::event_rec::operator=(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a41f64986df27cea4fdaa8ee8ce2d3875',1,'winstd::event_rec::operator=(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a22ab332b9c7e3c21e6107e909703da0f',1,'winstd::event_rec::operator=(event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#a4e436a74c83a75aab21800bc9d954228',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#acb8dddbdd22399d26d4c5db2998afc1d',1,'winstd::event_fn_auto::operator=(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#ab64dd267c58d816b4ef5549e704a8949',1,'winstd::event_fn_auto::operator=(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a6bb69bf1ac97231ef47c2aed99921bc9',1,'winstd::event_fn_auto_ret::operator=(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ade4fd767e5e743649480b93cd0a5ba69',1,'winstd::event_fn_auto_ret::operator=(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b',1,'winstd::window_dc::operator=()'],['../classwinstd_1_1security__attributes.html#a85cc5cc2ce94a8876e888ee6646779d7',1,'winstd::security_attributes::operator=()'],['../classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a17a902c8f0ce17d3f06b69ec3e01a331',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#a984b2e054639678f06a40e3f57abf4d7',1,'winstd::variant::operator=(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ad0ef65b5a3f40b1a812ac78ca5e5eb50',1,'winstd::variant::operator=(long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aff536ecc3c3a074fea648b7c60522a83',1,'winstd::variant::operator=(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#aeec12d33002777506b59d73f2c43421c',1,'winstd::variant::operator=(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a355fecf0ce80d31377c9395f2ed1aada',1,'winstd::variant::operator=(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a63e75ec57af2d8f59830b029afeb3b68',1,'winstd::variant::operator=(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a602751a752d5a7442ade0f4437646231',1,'winstd::variant::operator=(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a5886220d7a2ff006d29cd4448a2a33ac',1,'winstd::variant::operator=(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a5c2733a19c37248f69a07771b8e939f1',1,'winstd::variant::operator=(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a71fb3ee2710ad470329e0b5c4f7f5ba4',1,'winstd::variant::operator=(int nSrc) noexcept'],['../classwinstd_1_1variant.html#a05ad6d2f51763b24d7528078a2c30e49',1,'winstd::variant::operator=(unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a360da15526269bd64a2fb670e9e280ff',1,'winstd::variant::operator=(long nSrc) noexcept'],['../classwinstd_1_1variant.html#a07980ff84773ac25807d0713dd05090a',1,'winstd::variant::operator=(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#af1898a82e4199d1f34924d448867f68f',1,'winstd::variant::operator=(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aebabfcb503a43abecc9f3c07629f591f',1,'winstd::variant::operator=(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a6fa877e7a098dba125c6342bd5e1c896',1,'winstd::variant::operator=(double dblSrc) noexcept'],['../classwinstd_1_1variant.html#a935f6cff8004781f60d66b04a01c2330',1,'winstd::variant::operator=(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#af5e22f4158921eb49c2207335d7c7593',1,'winstd::variant::operator=(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#a55f962bb7a077f87aaa4a6bec03c10da',1,'winstd::variant::operator=(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a5bc092e989de74c42d92de5647248a57',1,'winstd::variant::operator=(unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#aa8c701dc6deac688a83d04ed9afdd4b5',1,'winstd::variant::operator=(short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#accf863f76609d78946f51ec07a52690e',1,'winstd::variant::operator=(unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a30ba85931db8557713e5ee32d48ceecc',1,'winstd::variant::operator=(int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa01c928f87788c505b818b7930c0f3a0',1,'winstd::variant::operator=(unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa321e1785731055f02abcf7789383912',1,'winstd::variant::operator=(long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af86e9a10fd9dbe6e18b33a59d04f3b44',1,'winstd::variant::operator=(unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a1786d099ef012c301c0774f98af0f13a',1,'winstd::variant::operator=(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#ad4a0fd8999d8d526bb232ebf70c18887',1,'winstd::variant::operator=(unsigned long long *pnSrc) noexcept']]], - ['operator_3d_3d_14',['operator==',['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h'],['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()'],['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==(const VARIANT &varSrc) const noexcept']]], - ['operator_3e_15',['operator>',['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>()'],['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()']]], - ['operator_3e_3d_16',['operator>=',['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()'],['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()']]], - ['outputdebugstr_17',['OutputDebugStr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], - ['outputdebugstrv_18',['OutputDebugStrV',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] + ['openprocesstoken_0',['OpenProcessToken',['../group___win_std_win_a_p_i.html#ga44eef1254def39a039cf838e1035c724',1,'Win.h']]], + ['operator_20bool_1',['operator bool',['../classwinstd_1_1impersonator.html#a0c295840090719079dbf5e5b691e6c3e',1,'winstd::impersonator']]], + ['operator_20const_20event_5ftrace_5fproperties_20_2a_2',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], + ['operator_20handle_5ftype_3',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], + ['operator_20lpcritical_5fsection_4',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], + ['operator_20typename_20_5fty_20_2a_26_5',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], + ['operator_20typename_20_5fty_20_2a_2a_6',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], + ['operator_21_7',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], + ['operator_21_3d_8',['operator!=',['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=()'],['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()']]], + ['operator_26_9',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], + ['operator_28_29_10',['operator()',['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a8a44a95dd279b699a8f3ff2c5f8dd31a',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aa9bfce548f756da75283fb781ea2da75',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_unmap_view_of_file__delete.html#aa3611bebc2deaf9acaed4e09e193032d',1,'winstd::UnmapViewOfFile_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abf0ecfcfbb58493103f7e0905272d8d8',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], + ['operator_2a_11',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], + ['operator_2d_3e_12',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], + ['operator_3c_13',['operator<',['../classwinstd_1_1handle.html#a4c4515d0d1071cab5c675e926aa2dc92',1,'winstd::handle::operator<()'],['../classwinstd_1_1cert__context.html#a92881d07b0b41b81c4119ed8d8868c3b',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#ac03c0c14bb91f7511425946ef7f3e725',1,'winstd::variant::operator<()']]], + ['operator_3c_3d_14',['operator<=',['../classwinstd_1_1handle.html#af9e9538d58b952799db4a1c68b0184b9',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a042240321d22636cddc379b198c7fd84',1,'winstd::cert_context::operator<=()'],['../classwinstd_1_1variant.html#a02366b97c9a937f57806640dc942ecaf',1,'winstd::variant::operator<=()']]], + ['operator_3d_15',['operator=',['../classwinstd_1_1eap__method__info__array.html#aea48aefd91b676cdbeb9511640108f2a',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1variant.html#a2ea74c1b7a770188f7f59d7eb6923dbe',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#a242766666ce3cbb83429ddd0eaeb9cc6',1,'winstd::eap_attr::operator=(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#aa5909d52c15557908ff584f4712eea05',1,'winstd::eap_attr::operator=(const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1data__blob.html#a637b625d29bacc0875d543c69da351c2',1,'winstd::data_blob::operator=(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#ac818a3116ab5fc0af960f82aa505b6ae',1,'winstd::data_blob::operator=(const DATA_BLOB &other)'],['../classwinstd_1_1dplhandle.html#a546f1f737bc3da0c9b19967d849776d3',1,'winstd::dplhandle::operator=(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#abcccb97671b96da3623f700a93bb5c39',1,'winstd::dplhandle::operator=(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a31cec3cdf4ee749b1aef4b4cd7652fb7',1,'winstd::dplhandle::operator=(handle_type h) noexcept'],['../classwinstd_1_1handle.html#a6326bbc54ec3441e41f30bc1ec4d6a6c',1,'winstd::handle::operator=(handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html#a591e006af92e4d088fb9c1ed974c0923',1,'winstd::handle::operator=(handle_type h) noexcept'],['../classwinstd_1_1variant.html#a39d9e97b57c37f3d876574cc2fd6e0a5',1,'winstd::variant::operator=()'],['../classwinstd_1_1event__rec.html#aa5287b5572575d440f881c1d8c17bac3',1,'winstd::event_rec::operator=(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a41f64986df27cea4fdaa8ee8ce2d3875',1,'winstd::event_rec::operator=(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a22ab332b9c7e3c21e6107e909703da0f',1,'winstd::event_rec::operator=(event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#a4e436a74c83a75aab21800bc9d954228',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#acb8dddbdd22399d26d4c5db2998afc1d',1,'winstd::event_fn_auto::operator=(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#ab64dd267c58d816b4ef5549e704a8949',1,'winstd::event_fn_auto::operator=(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a6bb69bf1ac97231ef47c2aed99921bc9',1,'winstd::event_fn_auto_ret::operator=(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ade4fd767e5e743649480b93cd0a5ba69',1,'winstd::event_fn_auto_ret::operator=(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b',1,'winstd::window_dc::operator=()'],['../classwinstd_1_1security__attributes.html#a85cc5cc2ce94a8876e888ee6646779d7',1,'winstd::security_attributes::operator=()'],['../classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a17a902c8f0ce17d3f06b69ec3e01a331',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#a984b2e054639678f06a40e3f57abf4d7',1,'winstd::variant::operator=(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ad4a0fd8999d8d526bb232ebf70c18887',1,'winstd::variant::operator=(unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aff536ecc3c3a074fea648b7c60522a83',1,'winstd::variant::operator=(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#aeec12d33002777506b59d73f2c43421c',1,'winstd::variant::operator=(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a355fecf0ce80d31377c9395f2ed1aada',1,'winstd::variant::operator=(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a63e75ec57af2d8f59830b029afeb3b68',1,'winstd::variant::operator=(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a602751a752d5a7442ade0f4437646231',1,'winstd::variant::operator=(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a5886220d7a2ff006d29cd4448a2a33ac',1,'winstd::variant::operator=(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a5c2733a19c37248f69a07771b8e939f1',1,'winstd::variant::operator=(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a71fb3ee2710ad470329e0b5c4f7f5ba4',1,'winstd::variant::operator=(int nSrc) noexcept'],['../classwinstd_1_1variant.html#a05ad6d2f51763b24d7528078a2c30e49',1,'winstd::variant::operator=(unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a360da15526269bd64a2fb670e9e280ff',1,'winstd::variant::operator=(long nSrc) noexcept'],['../classwinstd_1_1variant.html#a07980ff84773ac25807d0713dd05090a',1,'winstd::variant::operator=(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#af1898a82e4199d1f34924d448867f68f',1,'winstd::variant::operator=(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aebabfcb503a43abecc9f3c07629f591f',1,'winstd::variant::operator=(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a6fa877e7a098dba125c6342bd5e1c896',1,'winstd::variant::operator=(double dblSrc) noexcept'],['../classwinstd_1_1variant.html#a935f6cff8004781f60d66b04a01c2330',1,'winstd::variant::operator=(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#af5e22f4158921eb49c2207335d7c7593',1,'winstd::variant::operator=(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#a55f962bb7a077f87aaa4a6bec03c10da',1,'winstd::variant::operator=(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a5bc092e989de74c42d92de5647248a57',1,'winstd::variant::operator=(unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#aa8c701dc6deac688a83d04ed9afdd4b5',1,'winstd::variant::operator=(short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#accf863f76609d78946f51ec07a52690e',1,'winstd::variant::operator=(unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a30ba85931db8557713e5ee32d48ceecc',1,'winstd::variant::operator=(int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa01c928f87788c505b818b7930c0f3a0',1,'winstd::variant::operator=(unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa321e1785731055f02abcf7789383912',1,'winstd::variant::operator=(long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af86e9a10fd9dbe6e18b33a59d04f3b44',1,'winstd::variant::operator=(unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a1df6086270e7799b83ee2889e2b88d9e',1,'winstd::variant::operator=(float *pfSrc) noexcept'],['../classwinstd_1_1variant.html#a1786d099ef012c301c0774f98af0f13a',1,'winstd::variant::operator=(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#ad0ef65b5a3f40b1a812ac78ca5e5eb50',1,'winstd::variant::operator=(long long *pnSrc) noexcept']]], + ['operator_3d_3d_16',['operator==',['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h'],['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==()']]], + ['operator_3e_17',['operator>',['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()'],['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>(const VARIANT &varSrc) const noexcept']]], + ['operator_3e_3d_18',['operator>=',['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()'],['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()']]], + ['outputdebugstr_19',['OutputDebugStr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], + ['outputdebugstrv_20',['OutputDebugStrV',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] ]; diff --git a/search/searchdata.js b/search/searchdata.js index f926619c..67175f98 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -1,7 +1,7 @@ var indexSectionsWithContent = { 0: "_abcdefghilmnopqrstuvw~", - 1: "abcdefghlnprsuvw", + 1: "abcdefghilnprsuvw", 2: "abcdefghilmnopqrstuvw~", 3: "bim", 4: "_cdefhoprstvw", diff --git a/search/variables_2.js b/search/variables_2.js index 7319838d..231713cc 100644 --- a/search/variables_2.js +++ b/search/variables_2.js @@ -1,7 +1,7 @@ var searchData= [ ['m_5fattrib_0',['m_attrib',['../classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f',1,'winstd::sec_context']]], - ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie()'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie()'],['../classwinstd_1_1user__impersonator.html#a28b0a9c7d1759b2be3ae3deb960a287c',1,'winstd::user_impersonator::m_cookie()']]], + ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie()'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie()'],['../classwinstd_1_1impersonator.html#acf82d1c062fce491af05b7e89c09d3f2',1,'winstd::impersonator::m_cookie()']]], ['m_5fdata_2',['m_data',['../classwinstd_1_1sanitizing__blob.html#a38187ccd591a6a7cfa4a9d0a6f6f7701',1,'winstd::sanitizing_blob::m_data()'],['../classwinstd_1_1critical__section.html#a55b9b9e7f38b94cd5c3fc15a319a6719',1,'winstd::critical_section::m_data()']]], ['m_5fdesc_3',['m_desc',['../classwinstd_1_1event__fn__auto__ret.html#a23fa88c6a7aea86536cc0e4bee2746cf',1,'winstd::event_fn_auto_ret']]], ['m_5fenable_5ffilter_5fdesc_4',['m_enable_filter_desc',['../classwinstd_1_1event__trace__enabler.html#a358d20e2dbbc7dcaccbe8d3d303cc3c4',1,'winstd::event_trace_enabler']]], diff --git a/structwinstd_1_1_co_task_mem_free__delete-members.html b/structwinstd_1_1_co_task_mem_free__delete-members.html index 99c26410..41445c0a 100644 --- a/structwinstd_1_1_co_task_mem_free__delete-members.html +++ b/structwinstd_1_1_co_task_mem_free__delete-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structwinstd_1_1_co_task_mem_free__delete.html b/structwinstd_1_1_co_task_mem_free__delete.html index 59b8f6be..a1807ebb 100644 --- a/structwinstd_1_1_co_task_mem_free__delete.html +++ b/structwinstd_1_1_co_task_mem_free__delete.html @@ -137,7 +137,7 @@ template<class _T > diff --git a/structwinstd_1_1_cred_free__delete-members.html b/structwinstd_1_1_cred_free__delete-members.html index e182a886..dc295d01 100644 --- a/structwinstd_1_1_cred_free__delete-members.html +++ b/structwinstd_1_1_cred_free__delete-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_cred_free__delete.html b/structwinstd_1_1_cred_free__delete.html index 25acb62f..efdb0179 100644 --- a/structwinstd_1_1_cred_free__delete.html +++ b/structwinstd_1_1_cred_free__delete.html @@ -150,7 +150,7 @@ template<class _Ty > diff --git a/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4-members.html b/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4-members.html index 3a2e8719..3b1afa2d 100644 --- a/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4-members.html +++ b/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html b/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html index dbc67a6a..35a8ad71 100644 --- a/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html +++ b/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html @@ -182,7 +182,7 @@ template<class _Ty > diff --git a/structwinstd_1_1_eap_host_peer_free_eap_error__delete-members.html b/structwinstd_1_1_eap_host_peer_free_eap_error__delete-members.html index 2c009a74..5125317a 100644 --- a/structwinstd_1_1_eap_host_peer_free_eap_error__delete-members.html +++ b/structwinstd_1_1_eap_host_peer_free_eap_error__delete-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structwinstd_1_1_eap_host_peer_free_eap_error__delete.html b/structwinstd_1_1_eap_host_peer_free_eap_error__delete.html index fb250f36..5f633b54 100644 --- a/structwinstd_1_1_eap_host_peer_free_eap_error__delete.html +++ b/structwinstd_1_1_eap_host_peer_free_eap_error__delete.html @@ -134,7 +134,7 @@ Public Member Functions diff --git a/structwinstd_1_1_eap_host_peer_free_error_memory__delete-members.html b/structwinstd_1_1_eap_host_peer_free_error_memory__delete-members.html index 70bbec93..b74e9c36 100644 --- a/structwinstd_1_1_eap_host_peer_free_error_memory__delete-members.html +++ b/structwinstd_1_1_eap_host_peer_free_error_memory__delete-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structwinstd_1_1_eap_host_peer_free_error_memory__delete.html b/structwinstd_1_1_eap_host_peer_free_error_memory__delete.html index 9bcf4e93..ab4e874c 100644 --- a/structwinstd_1_1_eap_host_peer_free_error_memory__delete.html +++ b/structwinstd_1_1_eap_host_peer_free_error_memory__delete.html @@ -134,7 +134,7 @@ Public Member Functions diff --git a/structwinstd_1_1_eap_host_peer_free_memory__delete-members.html b/structwinstd_1_1_eap_host_peer_free_memory__delete-members.html index ceb8e127..34921e87 100644 --- a/structwinstd_1_1_eap_host_peer_free_memory__delete-members.html +++ b/structwinstd_1_1_eap_host_peer_free_memory__delete-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structwinstd_1_1_eap_host_peer_free_memory__delete.html b/structwinstd_1_1_eap_host_peer_free_memory__delete.html index 18f33bbe..94fd4eff 100644 --- a/structwinstd_1_1_eap_host_peer_free_memory__delete.html +++ b/structwinstd_1_1_eap_host_peer_free_memory__delete.html @@ -137,7 +137,7 @@ template<class _T > diff --git a/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete-members.html b/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete-members.html index 639d8e9a..3be6535f 100644 --- a/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete-members.html +++ b/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html b/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html index e32dba55..6cf98964 100644 --- a/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html +++ b/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html @@ -106,7 +106,7 @@ template<class _T > diff --git a/structwinstd_1_1_local_free__delete-members.html b/structwinstd_1_1_local_free__delete-members.html index 30baa0f0..87f555bb 100644 --- a/structwinstd_1_1_local_free__delete-members.html +++ b/structwinstd_1_1_local_free__delete-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_local_free__delete.html b/structwinstd_1_1_local_free__delete.html index 743c2ccc..3f98d21c 100644 --- a/structwinstd_1_1_local_free__delete.html +++ b/structwinstd_1_1_local_free__delete.html @@ -150,7 +150,7 @@ template<class _Ty > diff --git a/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4-members.html b/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4-members.html index b9360f6c..3e42a15c 100644 --- a/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4-members.html +++ b/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html b/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html index 46ce654f..0a1edf2a 100644 --- a/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html +++ b/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html @@ -152,7 +152,7 @@ template<class _Other > diff --git a/structwinstd_1_1_unmap_view_of_file__delete-members.html b/structwinstd_1_1_unmap_view_of_file__delete-members.html index 3cfe6d52..ca9f4a9c 100644 --- a/structwinstd_1_1_unmap_view_of_file__delete-members.html +++ b/structwinstd_1_1_unmap_view_of_file__delete-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_unmap_view_of_file__delete.html b/structwinstd_1_1_unmap_view_of_file__delete.html index 86e2d86a..d7ee2080 100644 --- a/structwinstd_1_1_unmap_view_of_file__delete.html +++ b/structwinstd_1_1_unmap_view_of_file__delete.html @@ -119,7 +119,7 @@ struct winstd::UnmapViewOfFile_delete< _Ty >

        Deleter for unique_p

        diff --git a/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4-members.html b/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4-members.html index 924734c6..9354f58b 100644 --- a/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4-members.html +++ b/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html b/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html index c909fae5..f1491688 100644 --- a/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html +++ b/structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html @@ -119,7 +119,7 @@ struct winstd::UnmapViewOfFile_delete< _Ty[]>

        Deleter for unique_

        diff --git a/structwinstd_1_1_wlan_free_memory__delete-members.html b/structwinstd_1_1_wlan_free_memory__delete-members.html index 6f09ec8d..b5544c27 100644 --- a/structwinstd_1_1_wlan_free_memory__delete-members.html +++ b/structwinstd_1_1_wlan_free_memory__delete-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_wlan_free_memory__delete.html b/structwinstd_1_1_wlan_free_memory__delete.html index 55d35090..cc67ddd6 100644 --- a/structwinstd_1_1_wlan_free_memory__delete.html +++ b/structwinstd_1_1_wlan_free_memory__delete.html @@ -119,7 +119,7 @@ struct winstd::WlanFreeMemory_delete< _Ty >

        Deleter for unique_pt

        diff --git a/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4-members.html b/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4-members.html index 9772face..a374e963 100644 --- a/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4-members.html +++ b/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html b/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html index 49a246cf..9e2150e6 100644 --- a/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html +++ b/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html @@ -119,7 +119,7 @@ struct winstd::WlanFreeMemory_delete< _Ty[]>

        Deleter for unique_p

        diff --git a/structwinstd_1_1heap__allocator_1_1rebind-members.html b/structwinstd_1_1heap__allocator_1_1rebind-members.html index ff92b979..342ef876 100644 --- a/structwinstd_1_1heap__allocator_1_1rebind-members.html +++ b/structwinstd_1_1heap__allocator_1_1rebind-members.html @@ -84,7 +84,7 @@ $(function() { diff --git a/structwinstd_1_1heap__allocator_1_1rebind.html b/structwinstd_1_1heap__allocator_1_1rebind.html index 0feb810b..bcc2433e 100644 --- a/structwinstd_1_1heap__allocator_1_1rebind.html +++ b/structwinstd_1_1heap__allocator_1_1rebind.html @@ -103,7 +103,7 @@ struct winstd::heap_allocator< _Ty >::rebind< _Other >

        A st

        diff --git a/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html b/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html index 0a5fbe7d..cb6ae29f 100644 --- a/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html +++ b/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html @@ -84,7 +84,7 @@ $(function() { diff --git a/structwinstd_1_1sanitizing__allocator_1_1rebind.html b/structwinstd_1_1sanitizing__allocator_1_1rebind.html index 20346210..475d0001 100644 --- a/structwinstd_1_1sanitizing__allocator_1_1rebind.html +++ b/structwinstd_1_1sanitizing__allocator_1_1rebind.html @@ -103,7 +103,7 @@ struct winstd::sanitizing_allocator< _Ty >::rebind< _Other >