From a4f475492275f4ec544437fba93b75e1bfeb1240 Mon Sep 17 00:00:00 2001 From: rozmansi Date: Tue, 9 Jan 2024 21:02:08 +0000 Subject: [PATCH] deploy: f5de1accadc4061aa0994376e7079911bd0546c3 --- _c_o_m_8h_source.html | 14 +- _common_8h_source.html | 2584 +++++++++-------- _cred_8h_source.html | 4 +- _crypt_8h_source.html | 18 +- _e_a_p_8h_source.html | 16 +- _e_t_w_8h_source.html | 18 +- _g_d_i_8h_source.html | 10 +- _m_s_i_8h_source.html | 2 +- _s_d_d_l_8h_source.html | 4 +- _sec_8h_source.html | 14 +- _setup_a_p_i_8h_source.html | 10 +- _shell_8h_source.html | 2 +- _w_l_a_n_8h_source.html | 12 +- _win_8h_source.html | 1697 +++++------ _win_h_t_t_p_8h_source.html | 10 +- _win_sock2_8h_source.html | 18 +- _win_trust_8h_source.html | 6 +- annotated.html | 73 +- classes.html | 19 +- classwinstd_1_1actctx__activator-members.html | 2 +- classwinstd_1_1actctx__activator.html | 2 +- classwinstd_1_1addrinfo-members.html | 2 +- classwinstd_1_1addrinfo.html | 2 +- ...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_1clipboard__opener-members.html | 2 +- classwinstd_1_1clipboard__opener.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 +- ...winstd_1_1globalmem__accessor-members.html | 2 +- classwinstd_1_1globalmem__accessor.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_1http-members.html | 2 +- classwinstd_1_1http.html | 2 +- classwinstd_1_1icon-members.html | 2 +- classwinstd_1_1icon.html | 2 +- classwinstd_1_1impersonator-members.html | 2 +- classwinstd_1_1impersonator.html | 2 +- classwinstd_1_1library-members.html | 2 +- classwinstd_1_1library.html | 2 +- classwinstd_1_1mutex__locker-members.html | 94 + classwinstd_1_1mutex__locker.html | 186 ++ ...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 +- classwinstd_1_1safearray-members.html | 2 +- classwinstd_1_1safearray.html | 2 +- ...winstd_1_1safearray__accessor-members.html | 2 +- classwinstd_1_1safearray__accessor.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 | 2 +- classwinstd_1_1system__impersonator.html | 2 +- ...swinstd_1_1user__impersonator-members.html | 2 +- classwinstd_1_1user__impersonator.html | 2 +- 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 | 2 +- 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 +- doxygen_crawl.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_g.html | 2 +- functions_func_h.html | 2 +- functions_func_i.html | 2 +- functions_func_l.html | 2 +- functions_func_m.html | 3 +- functions_func_n.html | 2 +- functions_func_o.html | 2 +- functions_func_p.html | 2 +- functions_func_q.html | 2 +- functions_func_r.html | 2 +- functions_func_s.html | 2 +- functions_func_t.html | 2 +- functions_func_u.html | 2 +- functions_func_v.html | 2 +- functions_func_w.html | 2 +- functions_func_~.html | 3 +- functions_g.html | 2 +- functions_h.html | 2 +- functions_i.html | 2 +- functions_l.html | 2 +- functions_m.html | 3 +- functions_n.html | 2 +- functions_o.html | 2 +- functions_p.html | 2 +- functions_q.html | 2 +- functions_r.html | 2 +- functions_s.html | 2 +- functions_t.html | 2 +- functions_type.html | 2 +- functions_u.html | 2 +- functions_v.html | 2 +- functions_vars.html | 2 +- functions_w.html | 2 +- functions_~.html | 3 +- group___setup_a_p_i.html | 2 +- group___win_sock2_a_p_i.html | 2 +- group___win_std_c_o_m.html | 2 +- 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 | 73 +- 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 | 5 +- group___win_std_win_h_t_t_p.html | 2 +- group___win_trust_a_p_i.html | 2 +- hierarchy.html | 63 +- index.html | 8 +- md__s_e_c_u_r_i_t_y.html | 2 +- pages.html | 2 +- pch_8h_source.html | 2 +- search/all_14.js | 2 +- search/all_16.js | 43 +- search/all_b.js | 3 +- search/classes_10.js | 12 +- search/classes_11.js | 13 + search/classes_a.js | 6 +- search/classes_b.js | 6 +- search/classes_c.js | 5 +- search/classes_d.js | 19 +- search/classes_e.js | 17 +- search/classes_f.js | 4 +- search/functions_13.js | 2 +- search/functions_15.js | 43 +- search/functions_a.js | 3 +- search/searchdata.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 +- ...instd_1_1_global_free__delete-members.html | 2 +- structwinstd_1_1_global_free__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 +- ..._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 +- topics.html | 2 +- 299 files changed, 3036 insertions(+), 2626 deletions(-) create mode 100644 classwinstd_1_1mutex__locker-members.html create mode 100644 classwinstd_1_1mutex__locker.html create mode 100644 search/classes_11.js diff --git a/_c_o_m_8h_source.html b/_c_o_m_8h_source.html index c9ec7abf..8ba85c3f 100644 --- a/_c_o_m_8h_source.html +++ b/_c_o_m_8h_source.html @@ -1108,11 +1108,11 @@ $(function() { codefold.init(0); });
COM runtime error.
Definition COM.h:26
com_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition COM.h:34
com_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition COM.h:43
-
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1262
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1004
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
Numerical runtime error.
Definition Common.h:1456
-
HRESULT error_type
Error number type.
Definition Common.h:1458
+
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1287
+
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1029
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
Numerical runtime error.
Definition Common.h:1481
+
HRESULT error_type
Error number type.
Definition Common.h:1483
Context scope automatic SAFEARRAY (un)access.
Definition COM.h:1091
safearray_accessor(SAFEARRAY *psa)
Increments the lock count of an array, and retrieves a pointer to the array data.
Definition COM.h:1101
T HUGEP * data() const noexcept
Return SAFEARRAY data pointer.
Definition COM.h:1121
@@ -1190,14 +1190,14 @@ $(function() { codefold.init(0); });
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:75
#define WINSTD_DPLHANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:176
-
static const T invalid
Invalid handle value.
Definition Common.h:1009
+
static const T invalid
Invalid handle value.
Definition Common.h:1034
Deleter for unique_ptr using CoTaskMemFree.
Definition COM.h:56
void operator()(_T *_Ptr) const
Delete a pointer.
Definition COM.h:68
CoTaskMemFree_delete() noexcept
Default constructor.
Definition COM.h:60
diff --git a/_common_8h_source.html b/_common_8h_source.html index 2c9677ee..f0a0b15a 100644 --- a/_common_8h_source.html +++ b/_common_8h_source.html @@ -253,1421 +253,1441 @@ $(function() { codefold.init(0); });
241#endif
242
245
-
247static inline int __vsnprintf(_Out_z_cap_(capacity) char* str, _In_ size_t capacity, _In_z_ _Printf_format_string_params_(2) const char* format, _In_ va_list arg)
-
248{
-
249#pragma warning(suppress: 4996)
-
250 return _vsnprintf(str, capacity, format, arg);
-
251}
-
252
-
253static inline int __vsnprintf(_Out_z_cap_(capacity) wchar_t* str, _In_ size_t capacity, _In_z_ _Printf_format_string_params_(2) const wchar_t* format, _In_ va_list arg)
-
254{
-
255#pragma warning(suppress: 4996)
-
256 return _vsnwprintf(str, capacity, format, arg);
-
257}
+
255template<class _Traits, class _Ax>
+
+
256static int vsprintf(_Inout_ std::basic_string<char, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const char *format, _In_ va_list arg)
+
257{
+
258 char buf[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
259
-
269template<class _Elem, class _Traits, class _Ax>
-
-
270static int vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, _In_ va_list arg)
-
271{
-
272 _Elem buf[WINSTD_STACK_BUFFER_BYTES/sizeof(_Elem)];
-
273
-
274 // Try with stack buffer first.
-
275 int count = __vsnprintf(buf, _countof(buf), format, arg);
-
276 if (0 <= count && count < _countof(buf)) {
-
277 // Copy from stack.
-
278 str.append(buf, count);
-
279 return count;
-
280 }
-
281 if (count < 0) {
-
282 switch (errno) {
-
283 case 0:
-
284 count = __vsnprintf(NULL, 0, format, arg);
-
285 assert(count >= 0);
-
286 break;
-
287 case EINVAL: throw std::invalid_argument("invalid vsnprintf arguments");
-
288 case EILSEQ: throw std::runtime_error("encoding error");
-
289 default: throw std::runtime_error("failed to format string");
-
290 }
-
291 }
-
292 size_t offset = str.size();
-
293 str.resize(offset + count);
-
294 if (__vsnprintf(&str[offset], count + 1, format, arg) != count)
-
295 throw std::runtime_error("failed to format string");
-
296 return count;
-
297}
+
260 // Try with stack buffer first.
+
261 int count = _vsnprintf(buf, _countof(buf), format, arg);
+
262 if (0 <= count && count < _countof(buf)) {
+
263 // Copy from stack.
+
264 str.append(buf, count);
+
265 return count;
+
266 }
+
267 if (count < 0) {
+
268 switch (errno) {
+
269 case 0:
+
270 count = _vsnprintf(NULL, 0, format, arg);
+
271 assert(count >= 0);
+
272 break;
+
273 case EINVAL: throw std::invalid_argument("invalid vsnprintf arguments");
+
274 case EILSEQ: throw std::runtime_error("encoding error");
+
275 default: throw std::runtime_error("failed to format string");
+
276 }
+
277 }
+
278 size_t offset = str.size();
+
279 str.resize(offset + count);
+
280 if (_vsnprintf(&str[offset], count + 1, format, arg) != count)
+
281 throw std::runtime_error("failed to format string");
+
282 return count;
+
283}
+
284
+
294template<class _Traits, class _Ax>
+
+
295static int vsprintf(_Inout_ std::basic_string<wchar_t, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const wchar_t *format, _In_ va_list arg)
+
296{
+
297 wchar_t buf[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
298
-
307template<class _Elem, class _Traits, class _Ax>
-
-
308static int sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
-
309{
-
310 va_list arg;
-
311 va_start(arg, format);
-
312 const int res = vsprintf(str, format, arg);
-
313 va_end(arg);
-
314 return res;
-
315}
+
299 // Try with stack buffer first.
+
300 int count = _vsnwprintf(buf, _countof(buf), format, arg);
+
301 if (0 <= count && count < _countof(buf)) {
+
302 // Copy from stack.
+
303 str.append(buf, count);
+
304 return count;
+
305 }
+
306 if (count < 0) {
+
307 switch (errno) {
+
308 case 0:
+
309 count = _vsnwprintf(NULL, 0, format, arg);
+
310 assert(count >= 0);
+
311 break;
+
312 case EINVAL: throw std::invalid_argument("invalid vsnprintf arguments");
+
313 case EILSEQ: throw std::runtime_error("encoding error");
+
314 default: throw std::runtime_error("failed to format string");
+
315 }
+
316 }
+
317 size_t offset = str.size();
+
318 str.resize(offset + count);
+
319 if (_vsnwprintf(&str[offset], count + 1, format, arg) != count)
+
320 throw std::runtime_error("failed to format string");
+
321 return count;
+
322}
-
316
-
322template<class _Traits, class _Ax>
-
-
323static _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
-
324{
-
325 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
326
-
327 // Try to convert to stack buffer first.
-
328 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
329 if (cch) {
-
330 // Copy from stack. Be careful not to include zero terminator.
-
331 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
332 }
-
333 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
334 // Query the required output size. Allocate buffer. Then convert again.
-
335 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
336 sMultiByteStr.resize(cch);
-
337 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
338 sMultiByteStr.resize(cchWideChar != -1 ? strnlen(&sMultiByteStr[0], cch) : (size_t)cch - 1);
-
339 }
-
340
-
341 return cch;
-
342}
+
323
+
332template<class _Elem, class _Traits, class _Ax>
+
+
333static int sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
+
334{
+
335 va_list arg;
+
336 va_start(arg, format);
+
337 const int res = vsprintf(str, format, arg);
+
338 va_end(arg);
+
339 return res;
+
340}
-
343
-
349template<class _Ax>
-
-
350static _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
-
351{
-
352 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
353
-
354 // Try to convert to stack buffer first.
-
355 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
356 if (cch) {
-
357 // Copy from stack.
-
358 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
359 }
-
360 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
361 // Query the required output size. Allocate buffer. Then convert again.
-
362 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
363 sMultiByteStr.resize(cch);
-
364 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
365 }
-
366
-
367 return cch;
-
368}
+
341
+
347template<class _Traits, class _Ax>
+
+
348static _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
+
349{
+
350 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
351
+
352 // Try to convert to stack buffer first.
+
353 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
354 if (cch) {
+
355 // Copy from stack. Be careful not to include zero terminator.
+
356 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
357 }
+
358 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
359 // Query the required output size. Allocate buffer. Then convert again.
+
360 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
361 sMultiByteStr.resize(cch);
+
362 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
+
363 sMultiByteStr.resize(cchWideChar != -1 ? strnlen(&sMultiByteStr[0], cch) : (size_t)cch - 1);
+
364 }
+
365
+
366 return cch;
+
367}
-
369
-
375template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
376static _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
-
377{
-
378 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
379
-
380 // Try to convert to stack buffer first.
-
381 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
382 if (cch) {
-
383 // Copy from stack.
-
384 sMultiByteStr.assign(szStackBuffer, cch);
-
385 }
-
386 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
387 // Query the required output size. Allocate buffer. Then convert again.
-
388 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
389 sMultiByteStr.resize(cch);
-
390 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
391 }
-
392
-
393 return cch;
-
394}
+
368
+
374template<class _Ax>
+
+
375static _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
+
376{
+
377 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
378
+
379 // Try to convert to stack buffer first.
+
380 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
381 if (cch) {
+
382 // Copy from stack.
+
383 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
384 }
+
385 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
386 // Query the required output size. Allocate buffer. Then convert again.
+
387 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
388 sMultiByteStr.resize(cch);
+
389 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
390 }
+
391
+
392 return cch;
+
393}
-
395
-
403template<class _Traits, class _Ax>
-
-
404static _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
-
405{
-
406 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
407
-
408 // Try to convert to stack buffer first.
-
409 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
410 if (cch) {
-
411 // Copy from stack. Be careful not to include zero terminator.
-
412 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
413 }
-
414 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
415 // Query the required output size. Allocate buffer. Then convert again.
-
416 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
417 sMultiByteStr.resize(cch);
-
418 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
419 sMultiByteStr.resize(cchWideChar != -1 ? strnlen(&sMultiByteStr[0], cch) : (size_t)cch - 1);
-
420 }
-
421
-
422 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
423
-
424 return cch;
-
425}
+
394
+
400template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
401static _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
+
402{
+
403 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
404
+
405 // Try to convert to stack buffer first.
+
406 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
407 if (cch) {
+
408 // Copy from stack.
+
409 sMultiByteStr.assign(szStackBuffer, cch);
+
410 }
+
411 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
412 // Query the required output size. Allocate buffer. Then convert again.
+
413 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
414 sMultiByteStr.resize(cch);
+
415 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
+
416 }
+
417
+
418 return cch;
+
419}
+
+
420
+
428template<class _Traits, class _Ax>
+
+
429static _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
+
430{
+
431 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
432
+
433 // Try to convert to stack buffer first.
+
434 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
435 if (cch) {
+
436 // Copy from stack. Be careful not to include zero terminator.
+
437 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
438 }
+
439 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
440 // Query the required output size. Allocate buffer. Then convert again.
+
441 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
442 sMultiByteStr.resize(cch);
+
443 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
+
444 sMultiByteStr.resize(cchWideChar != -1 ? strnlen(&sMultiByteStr[0], cch) : (size_t)cch - 1);
+
445 }
+
446
+
447 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
448
+
449 return cch;
+
450}
-
426
-
434template<class _Ax>
-
-
435static _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
-
436{
-
437 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
438
-
439 // Try to convert to stack buffer first.
-
440 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
441 if (cch) {
-
442 // Copy from stack.
-
443 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
444 }
-
445 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
446 // Query the required output size. Allocate buffer. Then convert again.
-
447 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
448 sMultiByteStr.resize(cch);
-
449 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
450 }
451
-
452 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
453
-
454 return cch;
-
455}
+
459template<class _Ax>
+
+
460static _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
+
461{
+
462 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
463
+
464 // Try to convert to stack buffer first.
+
465 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
466 if (cch) {
+
467 // Copy from stack.
+
468 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
469 }
+
470 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
471 // Query the required output size. Allocate buffer. Then convert again.
+
472 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
473 sMultiByteStr.resize(cch);
+
474 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
475 }
+
476
+
477 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
478
+
479 return cch;
+
480}
-
456
-
464template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
465static _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
-
466{
-
467 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
468
-
469 // Try to convert to stack buffer first.
-
470 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
471 if (cch) {
-
472 // Copy from stack.
-
473 sMultiByteStr.assign(szStackBuffer, cch);
-
474 }
-
475 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
476 // Query the required output size. Allocate buffer. Then convert again.
-
477 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
478 sMultiByteStr.resize(cch);
-
479 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
480 }
481
-
482 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
483
-
484 return cch;
-
485}
+
489template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
490static _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
+
491{
+
492 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
493
+
494 // Try to convert to stack buffer first.
+
495 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
496 if (cch) {
+
497 // Copy from stack.
+
498 sMultiByteStr.assign(szStackBuffer, cch);
+
499 }
+
500 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
501 // Query the required output size. Allocate buffer. Then convert again.
+
502 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
503 sMultiByteStr.resize(cch);
+
504 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
+
505 }
+
506
+
507 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
508
+
509 return cch;
+
510}
-
486
-
492template<class _Traits, class _Ax>
-
-
493static _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
-
494{
-
495 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
496
-
497 // Try to convert to stack buffer first.
-
498 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
499 if (cch) {
-
500 // Copy from stack.
-
501 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
502 }
-
503 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
504 // Query the required output size. Allocate buffer. Then convert again.
-
505 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
506 sWideCharStr.resize(cch);
-
507 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, &sWideCharStr[0], cch);
-
508 sWideCharStr.resize(cbMultiByte != -1 ? wcsnlen(&sWideCharStr[0], cch) : (size_t)cch - 1);
-
509 }
-
510
-
511 return cch;
-
512}
+
511
+
517template<class _Traits, class _Ax>
+
+
518static _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
+
519{
+
520 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
521
+
522 // Try to convert to stack buffer first.
+
523 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
524 if (cch) {
+
525 // Copy from stack.
+
526 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
527 }
+
528 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
529 // Query the required output size. Allocate buffer. Then convert again.
+
530 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
531 sWideCharStr.resize(cch);
+
532 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, &sWideCharStr[0], cch);
+
533 sWideCharStr.resize(cbMultiByte != -1 ? wcsnlen(&sWideCharStr[0], cch) : (size_t)cch - 1);
+
534 }
+
535
+
536 return cch;
+
537}
-
513
-
519template<class _Ax>
-
-
520static _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
-
521{
-
522 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
523
-
524 // Try to convert to stack buffer first.
-
525 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
526 if (cch) {
-
527 // Copy from stack.
-
528 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
529 }
-
530 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
531 // Query the required output size. Allocate buffer. Then convert again.
-
532 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
533 sWideCharStr.resize(cch);
-
534 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
535 }
-
536
-
537 return cch;
-
538}
+
538
+
544template<class _Ax>
+
+
545static _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
+
546{
+
547 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
548
+
549 // Try to convert to stack buffer first.
+
550 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
551 if (cch) {
+
552 // Copy from stack.
+
553 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
554 }
+
555 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
556 // Query the required output size. Allocate buffer. Then convert again.
+
557 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
558 sWideCharStr.resize(cch);
+
559 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
560 }
+
561
+
562 return cch;
+
563}
-
539
-
545template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
546static _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
-
547{
-
548 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
549
-
550 // Try to convert to stack buffer first.
-
551 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
552 if (cch) {
-
553 // Copy from stack.
-
554 sWideCharStr.assign(szStackBuffer, cch);
-
555 }
-
556 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
557 // Query the required output size. Allocate buffer. Then convert again.
-
558 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
559 sWideCharStr.resize(cch);
-
560 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), &sWideCharStr[0], cch);
-
561 }
-
562
-
563 return cch;
-
564}
+
564
+
570template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
571static _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
+
572{
+
573 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
574
+
575 // Try to convert to stack buffer first.
+
576 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
577 if (cch) {
+
578 // Copy from stack.
+
579 sWideCharStr.assign(szStackBuffer, cch);
+
580 }
+
581 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
582 // Query the required output size. Allocate buffer. Then convert again.
+
583 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
584 sWideCharStr.resize(cch);
+
585 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), &sWideCharStr[0], cch);
+
586 }
+
587
+
588 return cch;
+
589}
-
565
-
573template<class _Traits, class _Ax>
-
-
574static _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
-
575{
-
576 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
577
-
578 // Try to convert to stack buffer first.
-
579 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
580 if (cch) {
-
581 // Copy from stack.
-
582 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
583 }
-
584 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
585 // Query the required output size. Allocate buffer. Then convert again.
-
586 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
587 sWideCharStr.resize(cch);
-
588 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, &sWideCharStr[0], cch);
-
589 sWideCharStr.resize(cbMultiByte != -1 ? wcsnlen(&sWideCharStr[0], cch) : (size_t)cch - 1);
-
590 }
-
591
-
592 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
593
-
594 return cch;
-
595}
+
590
+
598template<class _Traits, class _Ax>
+
+
599static _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
+
600{
+
601 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
602
+
603 // Try to convert to stack buffer first.
+
604 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
605 if (cch) {
+
606 // Copy from stack.
+
607 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
608 }
+
609 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
610 // Query the required output size. Allocate buffer. Then convert again.
+
611 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
612 sWideCharStr.resize(cch);
+
613 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, &sWideCharStr[0], cch);
+
614 sWideCharStr.resize(cbMultiByte != -1 ? wcsnlen(&sWideCharStr[0], cch) : (size_t)cch - 1);
+
615 }
+
616
+
617 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
618
+
619 return cch;
+
620}
-
596
-
604template<class _Ax>
-
-
605static _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
-
606{
-
607 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
608
-
609 // Try to convert to stack buffer first.
-
610 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
611 if (cch) {
-
612 // Copy from stack.
-
613 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
614 }
-
615 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
616 // Query the required output size. Allocate buffer. Then convert again.
-
617 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
618 sWideCharStr.resize(cch);
-
619 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
620 }
621
-
622 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
623
-
624 return cch;
-
625}
+
629template<class _Ax>
+
+
630static _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
+
631{
+
632 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
633
+
634 // Try to convert to stack buffer first.
+
635 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
636 if (cch) {
+
637 // Copy from stack.
+
638 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
639 }
+
640 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
641 // Query the required output size. Allocate buffer. Then convert again.
+
642 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
643 sWideCharStr.resize(cch);
+
644 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
645 }
+
646
+
647 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
648
+
649 return cch;
+
650}
-
626
-
634template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
635static _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
-
636{
-
637 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
638
-
639 // Try to convert to stack buffer first.
-
640 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
641 if (cch) {
-
642 // Copy from stack.
-
643 sWideCharStr.assign(szStackBuffer, cch);
-
644 }
-
645 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
646 // Query the required output size. Allocate buffer. Then convert again.
-
647 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
648 sWideCharStr.resize(cch);
-
649 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), &sWideCharStr[0], cch);
-
650 }
651
-
652 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
653
-
654 return cch;
-
655}
+
659template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
660static _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
+
661{
+
662 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
663
+
664 // Try to convert to stack buffer first.
+
665 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
666 if (cch) {
+
667 // Copy from stack.
+
668 sWideCharStr.assign(szStackBuffer, cch);
+
669 }
+
670 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
671 // Query the required output size. Allocate buffer. Then convert again.
+
672 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
673 sWideCharStr.resize(cch);
+
674 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), &sWideCharStr[0], cch);
+
675 }
+
676
+
677 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
678
+
679 return cch;
+
680}
-
656
-
662template<class _Traits, class _Ax>
-
-
663static DWORD FormatMessageA(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Inout_ std::basic_string<char, _Traits, _Ax> &str, _In_opt_ va_list *Arguments)
-
664{
-
665 std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
-
666 DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>((LPSTR*)get_ptr(lpBuffer)), 0, Arguments);
-
667 if (dwResult)
-
668 str.assign(lpBuffer.get(), dwResult);
-
669 return dwResult;
-
670}
+
681
+
687template<class _Traits, class _Ax>
+
+
688static DWORD FormatMessageA(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Inout_ std::basic_string<char, _Traits, _Ax> &str, _In_opt_ va_list *Arguments)
+
689{
+
690 std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
+
691 DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>((LPSTR*)get_ptr(lpBuffer)), 0, Arguments);
+
692 if (dwResult)
+
693 str.assign(lpBuffer.get(), dwResult);
+
694 return dwResult;
+
695}
-
671
-
677template<class _Traits, class _Ax>
-
-
678static DWORD FormatMessageW(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &str, _In_opt_ va_list *Arguments)
-
679{
-
680 std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
-
681 DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>((LPWSTR*)get_ptr(lpBuffer)), 0, Arguments);
-
682 if (dwResult)
-
683 str.assign(lpBuffer.get(), dwResult);
-
684 return dwResult;
-
685}
+
696
+
702template<class _Traits, class _Ax>
+
+
703static DWORD FormatMessageW(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &str, _In_opt_ va_list *Arguments)
+
704{
+
705 std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
+
706 DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>((LPWSTR*)get_ptr(lpBuffer)), 0, Arguments);
+
707 if (dwResult)
+
708 str.assign(lpBuffer.get(), dwResult);
+
709 return dwResult;
+
710}
-
686
-
688
-
689#pragma warning(pop)
-
690
-
691namespace winstd
-
692{
-
695
-
699#ifdef _UNICODE
-
700 typedef std::wstring tstring;
-
701#else
-
702 typedef std::string tstring;
-
703#endif
-
704
-
708 template <class _Ty>
-
- -
710 {
- -
712
- -
717
-
721 template <class _Ty2> LocalFree_delete(const LocalFree_delete<_Ty2>&) {}
-
722
-
-
728 void operator()(_Ty *_Ptr) const
-
729 {
-
730 LocalFree(_Ptr);
-
731 }
+
711
+
713
+
714#pragma warning(pop)
+
715
+
716namespace winstd
+
717{
+
720
+
724#ifdef _UNICODE
+
725 typedef std::wstring tstring;
+
726#else
+
727 typedef std::string tstring;
+
728#endif
+
729
+
733 template <class _Ty>
+
+ +
735 {
+ +
737
+ +
742
+
746 template <class _Ty2> LocalFree_delete(const LocalFree_delete<_Ty2>&) {}
+
747
+
+
753 void operator()(_Ty *_Ptr) const
+
754 {
+
755 LocalFree(_Ptr);
+
756 }
-
732 };
-
-
733
-
737 template <class _Ty>
-
-
738 struct LocalFree_delete<_Ty[]>
-
739 {
- -
741
-
745 LocalFree_delete() noexcept {}
-
746
-
-
750 void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
-
751 {
-
752 LocalFree(_Ptr);
-
753 }
-
-
754
-
760 template<class _Other>
-
-
761 void operator()(_Other *) const
-
762 {
-
763 LocalFree(_Ptr);
-
764 }
-
-
765 };
+
757 };
+
758
+
762 template <class _Ty>
+
+
763 struct LocalFree_delete<_Ty[]>
+
764 {
+
766
-
- -
771 {
- -
776
-
-
782 void operator()(HGLOBAL _Ptr) const
-
783 {
-
784 GlobalFree(_Ptr);
-
785 }
+
770 LocalFree_delete() noexcept {}
+
771
+
+
775 void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
+
776 {
+
777 LocalFree(_Ptr);
+
778 }
-
786 };
+
779
+
785 template<class _Other>
+
+
786 void operator()(_Other *) const
+
787 {
+
788 LocalFree(_Ptr);
+
789 }
-
787
-
791 template <class T>
-
- -
793 {
- - -
796
-
797 public:
-
-
803 globalmem_accessor(_In_ HGLOBAL hMem) : m_h(hMem)
-
804 {
-
805 m_data = reinterpret_cast<T*>(GlobalLock(hMem));
-
806 if (!m_data)
-
807 throw win_runtime_error("GlobalLock failed");
-
808 }
+
790 };
-
809
-
- -
816 {
-
817 GlobalUnlock(m_h);
-
818 }
+
791
+
+ +
796 {
+ +
801
+
+
807 void operator()(HGLOBAL _Ptr) const
+
808 {
+
809 GlobalFree(_Ptr);
+
810 }
-
819
-
-
823 T* data() const noexcept
-
824 {
-
825 return m_data;
-
826 }
+
811 };
-
827
-
828 protected:
-
829 HGLOBAL m_h;
- -
831 };
+
812
+
816 template <class T>
+
+ +
818 {
+ + +
821
+
822 public:
+
+
828 globalmem_accessor(_In_ HGLOBAL hMem) : m_h(hMem)
+
829 {
+
830 m_data = reinterpret_cast<T*>(GlobalLock(hMem));
+
831 if (!m_data)
+
832 throw win_runtime_error("GlobalLock failed");
+
833 }
-
832
-
836 template<class _Ty, class _Dx>
-
- -
838 {
-
839 public:
-
-
845 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) :
-
846 m_own(owner),
-
847 m_ptr(owner.release())
-
848 {}
+
834
+
+ +
841 {
+
842 GlobalUnlock(m_h);
+
843 }
-
849
-
- -
856 m_own(other.m_own),
-
857 m_ptr(other.m_ptr)
-
858 {
-
859 other.m_ptr = nullptr;
-
860 }
+
844
+
+
848 T* data() const noexcept
+
849 {
+
850 return m_data;
+
851 }
-
861
-
- -
866 {
-
867 if (m_ptr != nullptr)
-
868 m_own.reset(m_ptr);
-
869 }
+
852
+
853 protected:
+
854 HGLOBAL m_h;
+ +
856 };
-
870
-
-
876 operator typename _Ty**()
-
877 {
-
878 return &m_ptr;
-
879 }
+
857
+
861 template<class _Ty, class _Dx>
+
+ +
863 {
+
864 public:
+
+
870 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) :
+
871 m_own(owner),
+
872 m_ptr(owner.release())
+
873 {}
-
880
-
-
886 operator typename _Ty*&()
-
887 {
-
888 return m_ptr;
-
889 }
+
874
+
+ +
881 m_own(other.m_own),
+
882 m_ptr(other.m_ptr)
+
883 {
+
884 other.m_ptr = nullptr;
+
885 }
-
890
-
891 protected:
-
892 std::unique_ptr<_Ty, _Dx> &m_own;
-
893 _Ty *m_ptr;
-
894 };
+
886
+
+ +
891 {
+
892 if (m_ptr != nullptr)
+
893 m_own.reset(m_ptr);
+
894 }
895
-
903 template<class _Ty, class _Dx>
-
-
904 ref_unique_ptr<_Ty, _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) noexcept
-
905 {
- -
907 }
+
+
901 operator typename _Ty**()
+
902 {
+
903 return &m_ptr;
+
904 }
-
908
-
913 template<class _Ty, class _Dx>
-
- -
915 {
-
916 public:
-
-
922 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept :
-
923 m_own(owner),
-
924 m_ptr(owner.release())
-
925 {}
+
905
+
+
911 operator typename _Ty*&()
+
912 {
+
913 return m_ptr;
+
914 }
-
926
-
- -
933 m_own(other.m_own),
-
934 m_ptr(other.m_ptr)
-
935 {
-
936 other.m_ptr = nullptr;
-
937 }
+
915
+
916 protected:
+
917 std::unique_ptr<_Ty, _Dx> &m_own;
+
918 _Ty *m_ptr;
+
919 };
-
938
-
- -
943 {
-
944 if (m_ptr != nullptr)
-
945 m_own.reset(m_ptr);
-
946 }
+
920
+
928 template<class _Ty, class _Dx>
+
+
929 ref_unique_ptr<_Ty, _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) noexcept
+
930 {
+ +
932 }
-
947
-
-
953 operator typename _Ty**() noexcept
-
954 {
-
955 return &m_ptr;
-
956 }
+
933
+
938 template<class _Ty, class _Dx>
+
+ +
940 {
+
941 public:
+
+
947 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept :
+
948 m_own(owner),
+
949 m_ptr(owner.release())
+
950 {}
-
957
-
-
963 operator typename _Ty*&()
-
964 {
-
965 return m_ptr;
-
966 }
+
951
+
+ +
958 m_own(other.m_own),
+
959 m_ptr(other.m_ptr)
+
960 {
+
961 other.m_ptr = nullptr;
+
962 }
-
967
-
968 protected:
-
969 std::unique_ptr<_Ty[], _Dx> &m_own;
- -
971 };
+
963
+
+ +
968 {
+
969 if (m_ptr != nullptr)
+
970 m_own.reset(m_ptr);
+
971 }
972
-
981 template<class _Ty, class _Dx>
-
-
982 ref_unique_ptr<_Ty[], _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx>& owner) noexcept
-
983 {
- -
985 }
+
+
978 operator typename _Ty**() noexcept
+
979 {
+
980 return &m_ptr;
+
981 }
-
986
-
988
-
991
-
997 template <class T, const T INVAL>
-
-
998 class handle
-
999 {
-
1000 public:
- -
1005
-
1009 static const T invalid;
-
1010
-
- -
1015 {}
+
982
+
+
988 operator typename _Ty*&()
+
989 {
+
990 return m_ptr;
+
991 }
+
992
+
993 protected:
+
994 std::unique_ptr<_Ty[], _Dx> &m_own;
+ +
996 };
+
+
997
+
1006 template<class _Ty, class _Dx>
+
+ +
1008 {
+ +
1010 }
+
+
1011
+
1013
1016
-
- -
1023 {}
+
1022 template <class T, const T INVAL>
+
+ +
1024 {
+
1025 public:
+ +
1030
+
1034 static const T invalid;
+
1035
+
+ +
1040 {}
-
1024
-
- -
1031 {
-
1032 // Transfer handle.
-
1033 m_h = h.m_h;
-
1034 h.m_h = invalid;
-
1035 }
-
-
1036
-
1037 private:
-
1038 // This class is noncopyable.
-
1039 handle(_In_ const handle<handle_type, INVAL> &h) noexcept {};
-
1040 handle<handle_type, INVAL>& operator=(_In_ const handle<handle_type, INVAL> &h) noexcept {};
1041
-
1042 public:
-
- -
1049 {
-
1050 attach(h);
-
1051 return *this;
-
1052 }
+ -
1053
-
1059 #pragma warning(suppress: 26432) // Move constructor is also present, but not detected by code analysis somehow.
-
- -
1061 {
-
1062 if (this != std::addressof(h)) {
-
1063 // Transfer handle.
-
1064 if (m_h != invalid)
-
1065 free_internal();
-
1066 m_h = h.m_h;
-
1067 h.m_h = invalid;
-
1068 }
-
1069 return *this;
-
1070 }
+
1049
+
+ +
1056 {
+
1057 // Transfer handle.
+
1058 m_h = h.m_h;
+
1059 h.m_h = invalid;
+
1060 }
-
1071
-
-
1077 operator handle_type() const
-
1078 {
-
1079 return m_h;
-
1080 }
+
1061
+
1062 private:
+
1063 // This class is noncopyable.
+
1064 handle(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
1065 handle<handle_type, INVAL>& operator=(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
1066
+
1067 public:
+
+ +
1074 {
+
1075 attach(h);
+
1076 return *this;
+
1077 }
-
1081
-
- -
1088 {
-
1089 assert(m_h != invalid);
-
1090 return *m_h;
-
1091 }
+
1078
+
1084 #pragma warning(suppress: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+
+ +
1086 {
+
1087 if (this != std::addressof(h)) {
+
1088 // Transfer handle.
+
1089 if (m_h != invalid)
+
1090 free_internal();
+
1091 m_h = h.m_h;
+
1092 h.m_h = invalid;
+
1093 }
+
1094 return *this;
+
1095 }
-
1092
-
- -
1098 {
-
1099 assert(m_h == invalid);
-
1100 return &m_h;
-
1101 }
+
1096
+
+
1102 operator handle_type() const
+
1103 {
+
1104 return m_h;
+
1105 }
-
1102
-
- -
1109 {
-
1110 assert(m_h != invalid);
-
1111 return m_h;
-
1112 }
+
1106
+
+ +
1113 {
+
1114 assert(m_h != invalid);
+
1115 return *m_h;
+
1116 }
-
1113
-
-
1124 bool operator!() const
-
1125 {
-
1126 return m_h == invalid;
-
1127 }
+
1117
+
+ +
1123 {
+
1124 assert(m_h == invalid);
+
1125 return &m_h;
+
1126 }
-
1128
-
- -
1138 {
-
1139 return m_h < h;
-
1140 }
+
1127
+
+ +
1134 {
+
1135 assert(m_h != invalid);
+
1136 return m_h;
+
1137 }
-
1141
-
- -
1151 {
-
1152 return !operator>(h);
-
1153 }
+
1138
+
+
1149 bool operator!() const
+
1150 {
+
1151 return m_h == invalid;
+
1152 }
-
1154
-
- -
1164 {
-
1165 return !operator<(h);
-
1166 }
+
1153
+
+ +
1163 {
+
1164 return m_h < h;
+
1165 }
-
1167
-
- -
1177 {
-
1178 return h < m_h;
-
1179 }
+
1166
+
+ +
1176 {
+
1177 return !operator>(h);
+
1178 }
-
1180
-
- -
1190 {
-
1191 return !operator==(h);
-
1192 }
+
1179
+
+ +
1189 {
+
1190 return !operator<(h);
+
1191 }
-
1193
-
- -
1203 {
-
1204 return m_h == h;
-
1205 }
+
1192
+
+ +
1202 {
+
1203 return h < m_h;
+
1204 }
-
1206
+
1205
- -
1215 {
-
1216 if (m_h != invalid)
-
1217 free_internal();
-
1218 m_h = h;
-
1219 }
+ +
1215 {
+
1216 return !operator==(h);
+
1217 }
-
1220
-
- -
1227 {
-
1228 handle_type h = m_h;
-
1229 m_h = invalid;
-
1230 return h;
-
1231 }
+
1218
+
+ +
1228 {
+
1229 return m_h == h;
+
1230 }
-
1232
-
-
1236 void free()
-
1237 {
-
1238 if (m_h != invalid) {
-
1239 free_internal();
-
1240 m_h = invalid;
-
1241 }
-
1242 }
+
1231
+
+ +
1240 {
+
1241 if (m_h != invalid)
+
1242 free_internal();
+
1243 m_h = h;
+
1244 }
-
1243
-
1244 protected:
-
1248 virtual void free_internal() noexcept = 0;
-
1249
-
1250 protected:
- -
1252 };
+
1245
+
+ +
1252 {
+
1253 handle_type h = m_h;
+
1254 m_h = invalid;
+
1255 return h;
+
1256 }
-
1253
- - -
1256
- -
- -
1262 {
-
1263 public:
-
- -
1268 {}
+
1257
+
+
1261 void free()
+
1262 {
+
1263 if (m_h != invalid) {
+
1264 free_internal();
+
1265 m_h = invalid;
+
1266 }
+
1267 }
-
1269
-
- -
1276 {}
+
1268
+
1269 protected:
+
1273 virtual void free_internal() noexcept = 0;
+
1274
+
1275 protected:
+ +
1277 };
-
1277
- -
1284 {}
-
1285
-
1291 dplhandle<handle_type, INVAL>(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept : handle<handle_type, INVAL>(std::move(h))
-
1292 {}
-
1293
-
- -
1300 {
- -
1302 return *this;
-
1303 }
+
1278
+ + +
1281
+ +
+ +
1287 {
+
1288 public:
+
+ +
1293 {}
-
1304
-
- -
1311 {
-
1312 if (this != std::addressof(h)) {
-
1313 if (h.m_h != invalid) {
-
1314 handle_type h_new = duplicate_internal(h.m_h);
-
1315
-
1316 if (m_h != invalid)
-
1317 free_internal();
+
1294
+ +
1302
+ +
1309 {}
+
1310
+
1316 dplhandle<handle_type, INVAL>(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept : handle<handle_type, INVAL>(std::move(h))
+
1317 {}
1318
-
1319 m_h = h_new;
-
1320 } else {
-
1321 if (m_h != invalid)
-
1322 free_internal();
-
1323
-
1324 m_h = invalid;
-
1325 }
-
1326 }
+
1329
-
1335 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
-
- -
1337 {
- -
1339 return *this;
-
1340 }
+
+ +
1336 {
+
1337 if (this != std::addressof(h)) {
+
1338 if (h.m_h != invalid) {
+
1339 handle_type h_new = duplicate_internal(h.m_h);
+
1340
+
1341 if (m_h != invalid)
+
1342 free_internal();
+
1343
+
1344 m_h = h_new;
+
1345 } else {
+
1346 if (m_h != invalid)
+
1347 free_internal();
+
1348
+
1349 m_h = invalid;
+
1350 }
+
1351 }
+
1352 return *this;
+
1353 }
-
1341
-
- -
1348 {
-
1349 return m_h != invalid ? duplicate_internal(m_h) : invalid;
-
1350 }
+
1354
+
1360 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+
+ +
1362 {
+ +
1364 return *this;
+
1365 }
-
1351
-
- -
1358 {
-
1359 if (m_h != invalid)
-
1360 free_internal();
-
1361
-
1362 m_h = h != invalid ? duplicate_internal(h) : invalid;
-
1363 }
-
-
1364
-
1365 protected:
- -
1375 };
+
1366
+
+ +
1373 {
+
1374 return m_h != invalid ? duplicate_internal(m_h) : invalid;
+
1375 }
1376
-
1378
-
1381
-
- -
1392 {
-
1393 std::string sResult;
- -
1395 if (hFoundRes) {
- -
1397 if (dwSize) {
- -
1399 if (hLoadedRes) {
-
1400 LPCWSTR szMessage = reinterpret_cast<LPCWSTR>(LockResource(hLoadedRes));
-
1401 if (szMessage) {
- -
1403 return sResult;
-
1404 } else
- -
1406 }
-
1407 }
-
1408 }
-
1409 sprintf(sResult, "msg %u", nId);
-
1410 return sResult;
-
1411 }
+
+ +
1383 {
+
1384 if (m_h != invalid)
+
1385 free_internal();
+
1386
+
1387 m_h = h != invalid ? duplicate_internal(h) : invalid;
+
1388 }
-
1412
-
- -
1423 {
-
1424 std::string sResult;
- -
1426 if (hFoundRes) {
- -
1428 if (dwSize) {
- -
1430 if (hLoadedRes) {
-
1431 LPCWSTR szFormat = reinterpret_cast<LPCWSTR>(LockResource(hLoadedRes));
-
1432 if (szFormat) {
-
1433 dwSize /= sizeof(*szFormat);
-
1434 assert(wcsnlen(szFormat, dwSize) < dwSize); // Resource strings must be zero-terminated to make strings directly usable with sprintf.
-
1435 va_list arg;
- -
1437 std::wstring sMessage;
- -
1439 va_end(arg);
- -
1441 return sResult;
-
1442 } else
- -
1444 }
-
1445 }
-
1446 }
-
1447 sprintf(sResult, "msg %u", nId);
-
1448 return sResult;
-
1449 }
+
1389
+
1390 protected:
+ +
1400 };
-
1450
-
1454 template <typename _Tn>
-
-
1455 class num_runtime_error : public std::runtime_error
-
1456 {
-
1457 public:
-
1458 typedef _Tn error_type;
-
1459
-
1460 public:
-
- -
1468 m_num(num),
-
1469 runtime_error(msg)
-
1470 {}
+
1401
+
1403
+
1406
+
+ +
1417 {
+
1418 std::string sResult;
+ +
1420 if (hFoundRes) {
+ +
1422 if (dwSize) {
+ +
1424 if (hLoadedRes) {
+
1425 LPCWSTR szMessage = reinterpret_cast<LPCWSTR>(LockResource(hLoadedRes));
+
1426 if (szMessage) {
+ +
1428 return sResult;
+
1429 } else
+ +
1431 }
+
1432 }
+
1433 }
+
1434 sprintf(sResult, "msg %u", nId);
+
1435 return sResult;
+
1436 }
-
1471
-
- -
1479 m_num(num),
-
1480 runtime_error(msg)
-
1481 {}
+
1437
+
+ +
1448 {
+
1449 std::string sResult;
+ +
1451 if (hFoundRes) {
+ +
1453 if (dwSize) {
+ +
1455 if (hLoadedRes) {
+
1456 LPCWSTR szFormat = reinterpret_cast<LPCWSTR>(LockResource(hLoadedRes));
+
1457 if (szFormat) {
+
1458 dwSize /= sizeof(*szFormat);
+
1459 assert(wcsnlen(szFormat, dwSize) < dwSize); // Resource strings must be zero-terminated to make strings directly usable with sprintf.
+
1460 va_list arg;
+ +
1462 std::wstring sMessage;
+ +
1464 va_end(arg);
+ +
1466 return sResult;
+
1467 } else
+ +
1469 }
+
1470 }
+
1471 }
+
1472 sprintf(sResult, "msg %u", nId);
+
1473 return sResult;
+
1474 }
-
1482
-
- -
1487 {
-
1488 return m_num;
-
1489 }
+
1475
+
1479 template <typename _Tn>
+
+
1480 class num_runtime_error : public std::runtime_error
+
1481 {
+
1482 public:
+
1483 typedef _Tn error_type;
+
1484
+
1485 public:
+
+ +
1493 m_num(num),
+
1494 runtime_error(msg)
+
1495 {}
-
1490
-
1491 protected:
- -
1493 };
+
1496
+
+ +
1504 m_num(num),
+
1505 runtime_error(msg)
+
1506 {}
-
1494
-
- -
1499 {
-
1500 public:
-
- -
1507 {}
+
1507
+
+ +
1512 {
+
1513 return m_num;
+
1514 }
-
1508
-
-
1515 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg + ": " + message(num))
-
1516 {}
+
1515
+
1516 protected:
+ +
1518 };
-
1517
-
- -
1525 {}
+
1519
+
+ +
1524 {
+
1525 public:
+ -
1526
-
- -
1531 {}
+
1533
+
+
1540 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg + ": " + message(num))
+
1541 {}
-
1532
-
-
1538 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg + ": " + message(GetLastError()))
-
1539 {}
+
1542
+
+ +
1550 {}
-
1540
-
- -
1547 {}
+
1551
+ -
1548
-
1549 protected:
-
- -
1557 {
- -
1559 std::wstring wstr;
- -
1561 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
-
1562 wstr.erase(wstr.find_last_not_of(L" \t\n\r\f\v") + 1);
-
1563 } else
-
1564 sprintf(wstr, num >= 0x10000 ? L"Error 0x%X" : L"Error %u", num);
-
1565 std::string str;
- - -
1568 return str;
-
1569 }
+
1557
+
+
1563 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg + ": " + message(GetLastError()))
+
1564 {}
-
1570 };
+
1565
+
+ +
1572 {}
-
1571
1573
-
1576
-
1580 template<class _Elem, class _Traits, class _Ax>
-
-
1581 class basic_string_printf : public std::basic_string<_Elem, _Traits, _Ax>
-
1582 {
-
1583 public:
-
1586
-
- -
1593 {
-
1594 va_list arg;
- -
1596 vsprintf(*this, format, arg);
-
1597 va_end(arg);
-
1598 }
+
1574 protected:
+
+ +
1582 {
+ +
1584 std::wstring wstr;
+ +
1586 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
+
1587 wstr.erase(wstr.find_last_not_of(L" \t\n\r\f\v") + 1);
+
1588 } else
+
1589 sprintf(wstr, num >= 0x10000 ? L"Error 0x%X" : L"Error %u", num);
+
1590 std::string str;
+ + +
1593 return str;
+
1594 }
-
1599
+
1595 };
+
+
1596
+
1598
1601
-
1604
-
- -
1612 {
-
1613 _Myt format;
-
1614 ATLENSURE(format.LoadString(hInstance, nFormatID));
-
1615
-
1616 va_list arg;
- -
1618 vsprintf(*this, format, arg);
-
1619 va_end(arg);
-
1620 }
+
1605 template<class _Elem, class _Traits, class _Ax>
+
+
1606 class basic_string_printf : public std::basic_string<_Elem, _Traits, _Ax>
+
1607 {
+
1608 public:
+
1611
+
+ +
1618 {
+
1619 va_list arg;
+ +
1621 vsprintf(*this, format, arg);
+
1622 va_end(arg);
+
1623 }
-
1621
-
- -
1630 {
-
1631 _Myt format;
- -
1633
-
1634 va_list arg;
- -
1636 vsprintf(*this, format, arg);
-
1637 va_end(arg);
-
1638 }
+
1624
+
1626
+
1629
+
+ +
1637 {
+
1638 _Myt format;
+
1639 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1640
+
1641 va_list arg;
+ +
1643 vsprintf(*this, format, arg);
+
1644 va_end(arg);
+
1645 }
-
1639
-
1641 };
+
1646
+
+ +
1655 {
+
1656 _Myt format;
+ +
1658
+
1659 va_list arg;
+ +
1661 vsprintf(*this, format, arg);
+
1662 va_end(arg);
+
1663 }
-
1642
- -
1647
- -
1652
-
1656#ifdef _UNICODE
- -
1658#else
- -
1660#endif
-
1661
-
1665 template<class _Elem, class _Traits, class _Ax>
-
-
1666 class basic_string_msg : public std::basic_string<_Elem, _Traits, _Ax>
-
1667 {
-
1668 public:
-
1671
-
- -
1678 {
-
1679 va_list arg;
- - -
1682 va_end(arg);
-
1683 }
+
1664
+
1666 };
-
1684
+
1667
+ +
1672
+ +
1677
+
1681#ifdef _UNICODE
+ +
1683#else
+ +
1685#endif
1686
-
1689
-
- -
1697 {
-
1698 _Myt format(GetManager());
-
1699 ATLENSURE(format.LoadString(hInstance, nFormatID));
-
1700
-
1701 va_list arg;
- - -
1704 va_end(arg);
-
1705 }
+
1690 template<class _Elem, class _Traits, class _Ax>
+
+
1691 class basic_string_msg : public std::basic_string<_Elem, _Traits, _Ax>
+
1692 {
+
1693 public:
+
1696
+
+ +
1703 {
+
1704 va_list arg;
+ + +
1707 va_end(arg);
+
1708 }
-
1706
-
- -
1715 {
-
1716 _Myt format(GetManager());
- -
1718
-
1719 va_list arg;
- - -
1722 va_end(arg);
-
1723 }
+
1709
+
1711
+
1714
+
+ +
1722 {
+
1723 _Myt format(GetManager());
+
1724 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1725
+
1726 va_list arg;
+ + +
1729 va_end(arg);
+
1730 }
-
1724
-
1726
-
- -
1733 {
- -
1735 }
+
1731
+
+ +
1740 {
+
1741 _Myt format(GetManager());
+ +
1743
+
1744 va_list arg;
+ + +
1747 va_end(arg);
+
1748 }
-
1736
-
- -
1743 {
- -
1745 }
+
1749
+
1751
+ -
1746
-
- -
1753 {
- -
1755 }
+
1761
+ -
1756
-
- -
1763 {
- -
1765 }
+
1771
+ -
1766 };
+
1781
+ -
1767
- -
1772
- -
1777
-
1781#ifdef _UNICODE
-
1782 typedef wstring_msg tstring_msg;
-
1783#else
- -
1785#endif
-
1786
-
1790 template<class _Elem, class _Traits, class _Ax>
-
-
1791 class basic_string_guid : public std::basic_string<_Elem, _Traits, _Ax>
-
1792 {
-
1793 public:
-
1796
-
- -
1804 {
- -
1806 guid.Data1,
-
1807 guid.Data2,
-
1808 guid.Data3,
-
1809 guid.Data4[0], guid.Data4[1],
-
1810 guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
-
1811 }
+
1791 };
-
1812
-
1814 };
+
1792
+ +
1797
+ +
1802
+
1806#ifdef _UNICODE
+
1807 typedef wstring_msg tstring_msg;
+
1808#else
+ +
1810#endif
+
1811
+
1815 template<class _Elem, class _Traits, class _Ax>
+
+
1816 class basic_string_guid : public std::basic_string<_Elem, _Traits, _Ax>
+
1817 {
+
1818 public:
+
1821
+
+ +
1829 {
+ +
1831 guid.Data1,
+
1832 guid.Data2,
+
1833 guid.Data3,
+
1834 guid.Data4[0], guid.Data4[1],
+
1835 guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
+
1836 }
-
1815
-
-
1819 class string_guid : public basic_string_guid<char, std::char_traits<char>, std::allocator<char> >
-
1820 {
-
1821 public:
-
1824
-
- -
1831 basic_string_guid<char, std::char_traits<char>, std::allocator<char> >(guid, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
-
1832 {}
+
1837
+
1839 };
-
1833
-
1835 };
+
1840
+
+
1844 class string_guid : public basic_string_guid<char, std::char_traits<char>, std::allocator<char> >
+
1845 {
+
1846 public:
+
1849
+
+ +
1856 basic_string_guid<char, std::char_traits<char>, std::allocator<char> >(guid, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
+
1857 {}
-
1836
-
-
1840 class wstring_guid : public basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
-
1841 {
-
1842 public:
-
1845
-
- -
1852 basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(guid, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
-
1853 {}
+
1858
+
1860 };
-
1854
-
1856 };
+
1861
+
+
1865 class wstring_guid : public basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
+
1866 {
+
1867 public:
+
1870
+
+ +
1877 basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(guid, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
+
1878 {}
-
1857
-
1861#ifdef _UNICODE
-
1862 typedef wstring_guid tstring_guid;
-
1863#else
- -
1865#endif
-
1866
-
1868
-
1871
-
1872 // winstd::sanitizing_allocator::destroy() member generates _Ptr parameter not used warning for primitive datatypes _Ty.
-
1873 #pragma warning(push)
-
1874 #pragma warning(disable: 4100)
-
1875
-
1883 template<class _Ty>
-
-
1884 class sanitizing_allocator : public std::allocator<_Ty>
-
1885 {
-
1886 public:
-
1887 typedef std::allocator<_Ty> _Mybase;
-
1888
-
1892 template<class _Other>
-
-
1893 struct rebind
-
1894 {
- -
1896 };
+
1879
+
1881 };
-
1897
-
- -
1902 {}
+
1882
+
1886#ifdef _UNICODE
+
1887 typedef wstring_guid tstring_guid;
+
1888#else
+ +
1890#endif
+
1891
+
1893
+
1896
+
1897 // winstd::sanitizing_allocator::destroy() member generates _Ptr parameter not used warning for primitive datatypes _Ty.
+
1898 #pragma warning(push)
+
1899 #pragma warning(disable: 4100)
+
1900
+
1908 template<class _Ty>
+
+
1909 class sanitizing_allocator : public std::allocator<_Ty>
+
1910 {
+
1911 public:
+
1912 typedef std::allocator<_Ty> _Mybase;
+
1913
+
1917 template<class _Other>
+
+
1918 struct rebind
+
1919 {
+ +
1921 };
-
1903
-
- -
1908 {}
+
1922
+ -
1909
-
1913 template<class _Other>
-
- -
1915 {}
+
1928
+ -
1916
-
-
1920 void deallocate(_In_ _Ty* const _Ptr, _In_ const std::size_t _Count)
-
1921 {
-
1922 // Sanitize then free.
-
1923 SecureZeroMemory(_Ptr, sizeof(_Ty) * _Count);
-
1924 _Mybase::deallocate(_Ptr, _Count);
-
1925 }
+
1934
+
1938 template<class _Other>
+ -
1926 };
+
1941
+
+
1945 void deallocate(_In_ _Ty* const _Ptr, _In_ const std::size_t _Count)
+
1946 {
+
1947 // Sanitize then free.
+
1948 SecureZeroMemory(_Ptr, sizeof(_Ty) * _Count);
+
1949 _Mybase::deallocate(_Ptr, _Count);
+
1950 }
-
1927
-
1928 #pragma warning(pop)
-
1929
-
1937 typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > sanitizing_string;
-
1938
-
1946 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > sanitizing_wstring;
-
1947
-
1951#ifdef _UNICODE
- -
1953#else
- -
1955#endif
-
1956
-
1960 template<size_t N>
-
- -
1962 {
-
1963 public:
-
- -
1968 {
-
1969 ZeroMemory(m_data, N);
-
1970 }
+
1951 };
-
1971
-
- -
1976 {
-
1977 SecureZeroMemory(m_data, N);
-
1978 }
+
1952
+
1953 #pragma warning(pop)
+
1954
+
1962 typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > sanitizing_string;
+
1963
+
1971 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > sanitizing_wstring;
+
1972
+
1976#ifdef _UNICODE
+ +
1978#else
+ +
1980#endif
+
1981
+
1985 template<size_t N>
+
+ +
1987 {
+
1988 public:
+
+ +
1993 {
+
1994 ZeroMemory(m_data, N);
+
1995 }
-
1979
-
1980 public:
-
1981 unsigned char m_data[N];
-
1982 };
+
1996
+
+ +
2001 {
+
2002 SecureZeroMemory(m_data, N);
+
2003 }
-
1983
-
1985}
-
Base template class to support converting GUID to string.
Definition Common.h:1792
-
basic_string_guid(const GUID &guid, const _Elem *format)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1803
-
Base template class to support string formatting using FormatMessage() style templates.
Definition Common.h:1667
-
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1742
-
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1752
-
basic_string_msg(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1714
-
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1732
-
basic_string_msg(const _Elem *format,...)
Initializes a new string and formats its contents using FormatMessage() style template.
Definition Common.h:1677
-
basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1696
-
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1762
-
Base template class to support string formatting using printf() style templates.
Definition Common.h:1582
-
basic_string_printf(const _Elem *format,...)
Initializes a new string and formats its contents using printf() style template.
Definition Common.h:1592
-
basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1629
-
basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1611
-
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1262
+
2004
+
2005 public:
+
2006 unsigned char m_data[N];
+
2007 };
+
+
2008
+
2010}
+
Base template class to support converting GUID to string.
Definition Common.h:1817
+
basic_string_guid(const GUID &guid, const _Elem *format)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1828
+
Base template class to support string formatting using FormatMessage() style templates.
Definition Common.h:1692
+
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1767
+
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1777
+
basic_string_msg(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1739
+
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1757
+
basic_string_msg(const _Elem *format,...)
Initializes a new string and formats its contents using FormatMessage() style template.
Definition Common.h:1702
+
basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1721
+
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1787
+
Base template class to support string formatting using printf() style templates.
Definition Common.h:1607
+
basic_string_printf(const _Elem *format,...)
Initializes a new string and formats its contents using printf() style template.
Definition Common.h:1617
+
basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1654
+
basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1636
+
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1287
virtual handle_type duplicate_internal(handle_type h) const =0
Abstract member function that must be implemented by child classes to do the actual object handle dup...
-
dplhandle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1299
-
handle_type duplicate() const
Duplicates and returns a new object handle.
Definition Common.h:1347
-
dplhandle< handle_type, INVAL > & operator=(dplhandle< handle_type, INVAL > &&h) noexcept
Moves the object.
Definition Common.h:1336
-
void attach_duplicated(handle_type h)
Duplicates an object handle and sets a new object handle.
Definition Common.h:1357
-
dplhandle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1275
-
dplhandle< handle_type, INVAL > & operator=(const dplhandle< handle_type, INVAL > &h) noexcept
Duplicates the object.
Definition Common.h:1310
-
dplhandle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1267
-
Context scope automatic GlobalAlloc (un)access.
Definition Common.h:793
-
HGLOBAL m_h
memory handle
Definition Common.h:829
-
virtual ~globalmem_accessor()
Decrements the lock count associated with a memory object.
Definition Common.h:815
-
T * m_data
memory pointer
Definition Common.h:830
-
T * data() const noexcept
Return data pointer.
Definition Common.h:823
-
globalmem_accessor(HGLOBAL hMem)
Locks a global memory object and returns a pointer to the first byte of the object's memory block.
Definition Common.h:803
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type *& operator*() const
Returns the object handle value when the object handle is a pointer to a value (class,...
Definition Common.h:1087
+
dplhandle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1324
+
handle_type duplicate() const
Duplicates and returns a new object handle.
Definition Common.h:1372
+
dplhandle< handle_type, INVAL > & operator=(dplhandle< handle_type, INVAL > &&h) noexcept
Moves the object.
Definition Common.h:1361
+
void attach_duplicated(handle_type h)
Duplicates an object handle and sets a new object handle.
Definition Common.h:1382
+
dplhandle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1300
+
dplhandle< handle_type, INVAL > & operator=(const dplhandle< handle_type, INVAL > &h) noexcept
Duplicates the object.
Definition Common.h:1335
+
dplhandle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1292
+
Context scope automatic GlobalAlloc (un)access.
Definition Common.h:818
+
HGLOBAL m_h
memory handle
Definition Common.h:854
+
virtual ~globalmem_accessor()
Decrements the lock count associated with a memory object.
Definition Common.h:840
+
T * m_data
memory pointer
Definition Common.h:855
+
T * data() const noexcept
Return data pointer.
Definition Common.h:848
+
globalmem_accessor(HGLOBAL hMem)
Locks a global memory object and returns a pointer to the first byte of the object's memory block.
Definition Common.h:828
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type *& operator*() const
Returns the object handle value when the object handle is a pointer to a value (class,...
Definition Common.h:1112
virtual void free_internal() noexcept=0
Abstract member function that must be implemented by child classes to do the actual object destructio...
-
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1014
-
bool operator>=(handle_type h) const
Is handle greater than or equal to?
Definition Common.h:1163
-
handle_type operator->() const
Provides object handle member access when the object handle is a pointer to a class or struct.
Definition Common.h:1108
-
handle_type * operator&()
Returns the object handle reference.
Definition Common.h:1097
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1004
-
handle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1022
-
bool operator<(handle_type h) const
Is handle less than?
Definition Common.h:1137
-
handle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1048
-
bool operator!() const
Tests if the object handle is invalid.
Definition Common.h:1124
-
handle< handle_type, INVAL > & operator=(handle< handle_type, INVAL > &&h) noexcept
Move assignment.
Definition Common.h:1060
-
bool operator!=(handle_type h) const
Is handle not equal to?
Definition Common.h:1189
-
void free()
Destroys the object.
Definition Common.h:1236
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1214
-
bool operator==(handle_type h) const
Is handle equal to?
Definition Common.h:1202
-
handle(handle< handle_type, INVAL > &&h) noexcept
Move constructor.
Definition Common.h:1030
-
handle_type detach()
Dismisses the object handle from this class.
Definition Common.h:1226
-
bool operator>(handle_type h) const
Is handle greater than?
Definition Common.h:1176
-
bool operator<=(handle_type h) const
Is handle less than or equal to?
Definition Common.h:1150
-
Numerical runtime error.
Definition Common.h:1456
-
num_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Common.h:1478
-
num_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1467
-
error_type number() const
Returns the error number.
Definition Common.h:1486
-
_Tn error_type
Error number type.
Definition Common.h:1458
-
error_type m_num
Numeric error code.
Definition Common.h:1492
-
std::unique_ptr< _Ty[], _Dx > & m_own
Original owner of the pointer.
Definition Common.h:969
-
ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition Common.h:932
-
virtual ~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:942
-
ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition Common.h:922
-
_Ty * m_ptr
Pointer.
Definition Common.h:970
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
-
std::unique_ptr< _Ty, _Dx > & m_own
Original owner of the pointer.
Definition Common.h:892
-
_Ty * m_ptr
Pointer.
Definition Common.h:893
-
ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)
Moves object.
Definition Common.h:855
-
~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:865
-
ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)
Takes ownership of the pointer.
Definition Common.h:845
-
An allocator template that sanitizes each memory block before it is destroyed or reallocated.
Definition Common.h:1885
-
sanitizing_allocator(const sanitizing_allocator< _Ty > &_Othr)
Construct by copying.
Definition Common.h:1907
-
sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept
Construct from a related allocator.
Definition Common.h:1914
-
void deallocate(_Ty *const _Ptr, const std::size_t _Count)
Deallocate object at _Ptr sanitizing its content first.
Definition Common.h:1920
-
std::allocator< _Ty > _Mybase
Base type.
Definition Common.h:1887
-
sanitizing_allocator() noexcept
Construct default allocator.
Definition Common.h:1901
-
Sanitizing BLOB.
Definition Common.h:1962
-
sanitizing_blob()
Constructs uninitialized BLOB.
Definition Common.h:1967
-
~sanitizing_blob()
Sanitizes BLOB.
Definition Common.h:1975
-
Single-byte character implementation of a class to support converting GUID to string.
Definition Common.h:1820
-
string_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1830
-
Windows runtime error.
Definition Common.h:1499
-
win_runtime_error(const char *msg)
Constructs an exception using GetLastError()
Definition Common.h:1546
-
win_runtime_error(error_type num, const char *msg)
Constructs an exception.
Definition Common.h:1524
-
win_runtime_error(error_type num)
Constructs an exception.
Definition Common.h:1506
-
win_runtime_error()
Constructs an exception using GetLastError()
Definition Common.h:1530
-
static std::string message(error_type num, DWORD dwLanguageId=0)
Returns a user-readable Windows error message. As std::exception messages may only be char*,...
Definition Common.h:1556
-
win_runtime_error(const std::string &msg)
Constructs an exception using GetLastError()
Definition Common.h:1538
-
win_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1515
-
Wide character implementation of a class to support converting GUID to string.
Definition Common.h:1841
-
wstring_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1851
-
std::string load_msg_from_res(HMODULE hModule, UINT nId, WORD wLanguage)
Loads exception message string from resources and converts it to UTF-8.
Definition Common.h:1391
-
std::string fmt_msg_from_res(HMODULE hModule, UINT nId, WORD wLanguage,...)
Loads exception message sprintf template from resources, formats it and converts it to UTF-8.
Definition Common.h:1422
+
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1039
+
bool operator>=(handle_type h) const
Is handle greater than or equal to?
Definition Common.h:1188
+
handle_type operator->() const
Provides object handle member access when the object handle is a pointer to a class or struct.
Definition Common.h:1133
+
handle_type * operator&()
Returns the object handle reference.
Definition Common.h:1122
+
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1029
+
handle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1047
+
bool operator<(handle_type h) const
Is handle less than?
Definition Common.h:1162
+
handle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1073
+
bool operator!() const
Tests if the object handle is invalid.
Definition Common.h:1149
+
handle< handle_type, INVAL > & operator=(handle< handle_type, INVAL > &&h) noexcept
Move assignment.
Definition Common.h:1085
+
bool operator!=(handle_type h) const
Is handle not equal to?
Definition Common.h:1214
+
void free()
Destroys the object.
Definition Common.h:1261
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1239
+
bool operator==(handle_type h) const
Is handle equal to?
Definition Common.h:1227
+
handle(handle< handle_type, INVAL > &&h) noexcept
Move constructor.
Definition Common.h:1055
+
handle_type detach()
Dismisses the object handle from this class.
Definition Common.h:1251
+
bool operator>(handle_type h) const
Is handle greater than?
Definition Common.h:1201
+
bool operator<=(handle_type h) const
Is handle less than or equal to?
Definition Common.h:1175
+
Numerical runtime error.
Definition Common.h:1481
+
num_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Common.h:1503
+
num_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1492
+
error_type number() const
Returns the error number.
Definition Common.h:1511
+
_Tn error_type
Error number type.
Definition Common.h:1483
+
error_type m_num
Numeric error code.
Definition Common.h:1517
+
std::unique_ptr< _Ty[], _Dx > & m_own
Original owner of the pointer.
Definition Common.h:994
+
ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition Common.h:957
+
virtual ~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:967
+
ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition Common.h:947
+
_Ty * m_ptr
Pointer.
Definition Common.h:995
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
+
std::unique_ptr< _Ty, _Dx > & m_own
Original owner of the pointer.
Definition Common.h:917
+
_Ty * m_ptr
Pointer.
Definition Common.h:918
+
ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)
Moves object.
Definition Common.h:880
+
~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:890
+
ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)
Takes ownership of the pointer.
Definition Common.h:870
+
An allocator template that sanitizes each memory block before it is destroyed or reallocated.
Definition Common.h:1910
+
sanitizing_allocator(const sanitizing_allocator< _Ty > &_Othr)
Construct by copying.
Definition Common.h:1932
+
sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept
Construct from a related allocator.
Definition Common.h:1939
+
void deallocate(_Ty *const _Ptr, const std::size_t _Count)
Deallocate object at _Ptr sanitizing its content first.
Definition Common.h:1945
+
std::allocator< _Ty > _Mybase
Base type.
Definition Common.h:1912
+
sanitizing_allocator() noexcept
Construct default allocator.
Definition Common.h:1926
+
Sanitizing BLOB.
Definition Common.h:1987
+
sanitizing_blob()
Constructs uninitialized BLOB.
Definition Common.h:1992
+
~sanitizing_blob()
Sanitizes BLOB.
Definition Common.h:2000
+
Single-byte character implementation of a class to support converting GUID to string.
Definition Common.h:1845
+
string_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1855
+
Windows runtime error.
Definition Common.h:1524
+
win_runtime_error(const char *msg)
Constructs an exception using GetLastError()
Definition Common.h:1571
+
win_runtime_error(error_type num, const char *msg)
Constructs an exception.
Definition Common.h:1549
+
win_runtime_error(error_type num)
Constructs an exception.
Definition Common.h:1531
+
win_runtime_error()
Constructs an exception using GetLastError()
Definition Common.h:1555
+
static std::string message(error_type num, DWORD dwLanguageId=0)
Returns a user-readable Windows error message. As std::exception messages may only be char*,...
Definition Common.h:1581
+
win_runtime_error(const std::string &msg)
Constructs an exception using GetLastError()
Definition Common.h:1563
+
win_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1540
+
Wide character implementation of a class to support converting GUID to string.
Definition Common.h:1866
+
wstring_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1876
+
std::string load_msg_from_res(HMODULE hModule, UINT nId, WORD wLanguage)
Loads exception message string from resources and converts it to UTF-8.
Definition Common.h:1416
+
std::string fmt_msg_from_res(HMODULE hModule, UINT nId, WORD wLanguage,...)
Loads exception message sprintf template from resources, formats it and converts it to UTF-8.
Definition Common.h:1447
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:94
-
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition Common.h:702
-
ref_unique_ptr< _Ty, _Dx > get_ptr(std::unique_ptr< _Ty, _Dx > &owner) noexcept
Helper function template for returning pointers to std::unique_ptr.
Definition Common.h:904
+
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition Common.h:727
+
ref_unique_ptr< _Ty, _Dx > get_ptr(std::unique_ptr< _Ty, _Dx > &owner) noexcept
Helper function template for returning pointers to std::unique_ptr.
Definition Common.h:929
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:75
-
std::basic_string< wchar_t, std::char_traits< wchar_t >, sanitizing_allocator< wchar_t > > sanitizing_wstring
A sanitizing variant of std::wstring.
Definition Common.h:1946
-
sanitizing_string sanitizing_tstring
Multi-byte / Wide-character sanitizing string (according to _UNICODE)
Definition Common.h:1954
-
std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > sanitizing_string
A sanitizing variant of std::string.
Definition Common.h:1937
-
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 Common.h:404
-
basic_string_printf< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > wstring_printf
Wide character implementation of a class to support string formatting using printf() style templates.
Definition Common.h:1651
-
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 Common.h:493
-
static DWORD FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:678
-
static DWORD FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:663
-
string_guid tstring_guid
Multi-byte / Wide-character string GUID (according to _UNICODE)
Definition Common.h:1864
-
basic_string_msg< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > wstring_msg
Wide character implementation of a class to support string formatting using FormatMessage() style tem...
Definition Common.h:1776
-
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:270
-
basic_string_printf< char, std::char_traits< char >, std::allocator< char > > string_printf
Single-byte character implementation of a class to support string formatting using printf() style tem...
Definition Common.h:1646
-
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 Common.h:574
-
string_printf tstring_printf
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1659
-
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 Common.h:323
-
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:308
-
basic_string_msg< char, std::char_traits< char >, std::allocator< char > > string_msg
Single-byte character implementation of a class to support string formatting using FormatMessage() st...
Definition Common.h:1771
-
string_msg tstring_msg
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1784
-
static const T invalid
Invalid handle value.
Definition Common.h:1009
-
Deleter for unique_ptr using GlobalFree.
Definition Common.h:771
-
GlobalFree_delete()
Default construct.
Definition Common.h:775
-
void operator()(HGLOBAL _Ptr) const
Delete a pointer.
Definition Common.h:782
-
LocalFree_delete() noexcept
Default construct.
Definition Common.h:745
-
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:740
-
void operator()(_Other *) const
Delete a pointer of another type.
Definition Common.h:761
-
void operator()(_Ty *_Ptr) const noexcept
Delete a pointer.
Definition Common.h:750
-
Deleter for unique_ptr using LocalFree.
Definition Common.h:710
-
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:711
-
LocalFree_delete(const LocalFree_delete< _Ty2 > &)
Construct from another LocalFree_delete.
Definition Common.h:721
-
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Common.h:728
-
LocalFree_delete()
Default construct.
Definition Common.h:716
-
Convert this type to sanitizing_allocator<_Other>
Definition Common.h:1894
-
sanitizing_allocator< _Other > other
Other type.
Definition Common.h:1895
+
std::basic_string< wchar_t, std::char_traits< wchar_t >, sanitizing_allocator< wchar_t > > sanitizing_wstring
A sanitizing variant of std::wstring.
Definition Common.h:1971
+
sanitizing_string sanitizing_tstring
Multi-byte / Wide-character sanitizing string (according to _UNICODE)
Definition Common.h:1979
+
std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > sanitizing_string
A sanitizing variant of std::string.
Definition Common.h:1962
+
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 Common.h:429
+
basic_string_printf< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > wstring_printf
Wide character implementation of a class to support string formatting using printf() style templates.
Definition Common.h:1676
+
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 Common.h:518
+
static DWORD FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:703
+
static DWORD FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:688
+
string_guid tstring_guid
Multi-byte / Wide-character string GUID (according to _UNICODE)
Definition Common.h:1889
+
basic_string_msg< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > wstring_msg
Wide character implementation of a class to support string formatting using FormatMessage() style tem...
Definition Common.h:1801
+
basic_string_printf< char, std::char_traits< char >, std::allocator< char > > string_printf
Single-byte character implementation of a class to support string formatting using printf() style tem...
Definition Common.h:1671
+
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 Common.h:599
+
string_printf tstring_printf
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1684
+
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 Common.h:348
+
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:333
+
static int vsprintf(std::basic_string< char, _Traits, _Ax > &str, const char *format, va_list arg)
Formats string using printf().
Definition Common.h:256
+
basic_string_msg< char, std::char_traits< char >, std::allocator< char > > string_msg
Single-byte character implementation of a class to support string formatting using FormatMessage() st...
Definition Common.h:1796
+
string_msg tstring_msg
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1809
+
static const T invalid
Invalid handle value.
Definition Common.h:1034
+
Deleter for unique_ptr using GlobalFree.
Definition Common.h:796
+
GlobalFree_delete()
Default construct.
Definition Common.h:800
+
void operator()(HGLOBAL _Ptr) const
Delete a pointer.
Definition Common.h:807
+
LocalFree_delete() noexcept
Default construct.
Definition Common.h:770
+
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:765
+
void operator()(_Other *) const
Delete a pointer of another type.
Definition Common.h:786
+
void operator()(_Ty *_Ptr) const noexcept
Delete a pointer.
Definition Common.h:775
+
Deleter for unique_ptr using LocalFree.
Definition Common.h:735
+
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:736
+
LocalFree_delete(const LocalFree_delete< _Ty2 > &)
Construct from another LocalFree_delete.
Definition Common.h:746
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Common.h:753
+
LocalFree_delete()
Default construct.
Definition Common.h:741
+
Convert this type to sanitizing_allocator<_Other>
Definition Common.h:1919
+
sanitizing_allocator< _Other > other
Other type.
Definition Common.h:1920
diff --git a/_cred_8h_source.html b/_cred_8h_source.html index 6c29a541..ef003621 100644 --- a/_cred_8h_source.html +++ b/_cred_8h_source.html @@ -270,7 +270,7 @@ $(function() { codefold.init(0); });
219
220#pragma warning(pop)
221
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
static BOOL CredUnprotectA(BOOL fAsSelf, LPCSTR pszProtectedCredentials, DWORD cchCredentials, std::basic_string< char, _Traits, _Ax > &sCredentials)
Decrypts credentials that were previously encrypted by using the CredProtect function.
Definition Cred.h:68
static BOOL CredProtectA(BOOL fAsSelf, LPCSTR pszCredentials, DWORD cchCredentials, std::basic_string< char, _Traits, _Ax > &sProtectedCredentials, CRED_PROTECTION_TYPE *ProtectionType)
Encrypts the specified credentials so that only the current security context can decrypt them.
Definition Cred.h:20
static BOOL CredEnumerateA(LPCSTR Filter, DWORD Flags, DWORD *Count, std::unique_ptr< PCREDENTIALA[], winstd::CredFree_delete< PCREDENTIALA[]> > &cCredentials) noexcept
Enumerates the credentials from the user's credential set. The credential set used is the one associa...
Definition Cred.h:193
@@ -290,7 +290,7 @@ $(function() { codefold.init(0); });
diff --git a/_crypt_8h_source.html b/_crypt_8h_source.html index 9f47f159..15e9cb9a 100644 --- a/_crypt_8h_source.html +++ b/_crypt_8h_source.html @@ -843,13 +843,13 @@ $(function() { codefold.init(0); });
data_blob(BYTE *data, DWORD size) noexcept
Initializes a BLOB from existing data.
Definition Crypt.h:692
DWORD size() const noexcept
Get BLOB size.
Definition Crypt.h:772
data_blob & operator=(const DATA_BLOB &other)
Copy an existing BLOB.
Definition Crypt.h:735
-
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1262
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1004
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1214
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
-
Windows runtime error.
Definition Common.h:1499
+
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1287
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1029
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1239
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
+
Windows runtime error.
Definition Common.h:1524
static bool CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, winstd::crypt_key &key)
Imports the public key.
Definition Crypt.h:889
static BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, std::vector< _Ty, _Ax > &aData)
Retrieves the information contained in an extended property of a certificate context.
Definition Crypt.h:55
static BOOL CertGetCertificateChain(HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, winstd::cert_chain_context &ctx)
The CertGetCertificateChain function builds a certificate chain context starting from an end certific...
Definition Crypt.h:809
@@ -869,11 +869,11 @@ $(function() { codefold.init(0); });
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:94
#define WINSTD_DPLHANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:176
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const T invalid
Invalid handle value.
Definition Common.h:1009
+
static const T invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_e_a_p_8h_source.html b/_e_a_p_8h_source.html index d87423a0..0e7349e2 100644 --- a/_e_a_p_8h_source.html +++ b/_e_a_p_8h_source.html @@ -642,7 +642,7 @@ $(function() { codefold.init(0); });
699}
700
701#pragma warning(pop)
-
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1262
+
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1287
EAP_ATTRIBUTE wrapper class.
Definition EAP.h:213
eap_attr() noexcept
Initializes a new EAP attribute set to eatReserved.
Definition EAP.h:218
eap_attr(eap_attr &&a) noexcept
Moves an existing EAP attribute.
Definition EAP.h:242
@@ -684,11 +684,11 @@ $(function() { codefold.init(0); });
std::wstring m_root_cause_desc
A localized and readable string that describes the root cause of the error.
Definition EAP.h:690
const GUID & help_link_id() const noexcept
Returns help_link ID.
Definition EAP.h:679
DWORD m_reason
The reason code for the error.
Definition EAP.h:687
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1004
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1214
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
-
Windows runtime error.
Definition Common.h:1499
+
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1029
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1239
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
+
Windows runtime error.
Definition Common.h:1524
std::unique_ptr< EAP_ERROR, EapHostPeerFreeEapError_delete > eap_error_runtime
EAP_ERROR wrapper class.
Definition EAP.h:205
std::unique_ptr< BYTE[], EapHostPeerFreeMemory_delete > eap_blob
EapHost BLOB wrapper class.
Definition EAP.h:128
static bool operator==(const EAP_METHOD_TYPE &a, const EAP_METHOD_TYPE &b) noexcept
Are EAP method types equal?
Definition EAP.h:39
@@ -718,7 +718,7 @@ $(function() { codefold.init(0); });
@ identity
Identity.
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_DPLHANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:176
-
static const T invalid
Invalid handle value.
Definition Common.h:1009
+
static const T invalid
Invalid handle value.
Definition Common.h:1034
Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError.
Definition EAP.h:185
EapHostPeerFreeEapError_delete() noexcept
Default constructor.
Definition EAP.h:189
void operator()(EAP_ERROR *_Ptr) const noexcept
Delete a pointer.
Definition EAP.h:196
@@ -734,7 +734,7 @@ $(function() { codefold.init(0); });
diff --git a/_e_t_w_8h_source.html b/_e_t_w_8h_source.html index 5e4e0182..a986c1a1 100644 --- a/_e_t_w_8h_source.html +++ b/_e_t_w_8h_source.html @@ -589,7 +589,7 @@ $(function() { codefold.init(0); });
668
669 // Format message.
- +
672 va_end(arg);
673
674 // Write string event.
@@ -1133,24 +1133,24 @@ $(function() { codefold.init(0); });
ETW trace.
Definition ETW.h:904
virtual ~event_trace()
Closes the trace.
Definition ETW.h:913
void free_internal() noexcept override
Closes the trace.
Definition ETW.h:925
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1014
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1214
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1039
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1239
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
static ULONG TdhGetEventInformation(PEVENT_RECORD pEvent, ULONG TdhContextCount, PTDH_CONTEXT pTdhContext, std::unique_ptr< TRACE_EVENT_INFO > &info)
Retrieves metadata about an event.
Definition ETW.h:58
static ULONG TdhGetProperty(PEVENT_RECORD pEvent, ULONG TdhContextCount, PTDH_CONTEXT pTdhContext, ULONG PropertyDataCount, PPROPERTY_DATA_DESCRIPTOR pPropertyData, std::vector< _Ty, _Ax > &aData)
Retrieves a property value from the event data.
Definition ETW.h:33
static ULONG TdhGetEventMapInformation(PEVENT_RECORD pEvent, LPWSTR pMapName, std::unique_ptr< EVENT_MAP_INFO > &info)
Retrieves information about the event map contained in the event.
Definition ETW.h:84
static const event_data blank_event_data
Blank event data used as terminator.
Definition ETW.h:291
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:94
-
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:270
+
static int vsprintf(std::basic_string< char, _Traits, _Ax > &str, const char *format, va_list arg)
Formats string using printf().
Definition Common.h:256
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const REGHANDLE invalid
Invalid handle value.
Definition Common.h:1009
+
static const REGHANDLE invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_g_d_i_8h_source.html b/_g_d_i_8h_source.html index fbde170c..544c15fb 100644 --- a/_g_d_i_8h_source.html +++ b/_g_d_i_8h_source.html @@ -275,12 +275,12 @@ $(function() { codefold.init(0); });
Windows HGDIOBJ wrapper class.
Definition GDI.h:22
void free_internal() noexcept override
Closes an open object handle.
Definition GDI.h:43
virtual ~gdi_handle()
Closes an open object handle.
Definition GDI.h:31
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
Windows HICON wrapper class.
Definition GDI.h:53
void free_internal() noexcept override
Closes an open object handle.
Definition GDI.h:74
virtual ~icon()
Closes an open object handle.
Definition GDI.h:62
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
Device context wrapper class.
Definition GDI.h:115
HWND m_hwnd
Window handle.
Definition GDI.h:176
window_dc(handle_type h, HWND hwnd) noexcept
Initializes a device context from existing data.
Definition GDI.h:127
@@ -292,11 +292,11 @@ $(function() { codefold.init(0); });
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:75
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const T invalid
Invalid handle value.
Definition Common.h:1009
+
static const T invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_m_s_i_8h_source.html b/_m_s_i_8h_source.html index ca34e78a..6e8d5b52 100644 --- a/_m_s_i_8h_source.html +++ b/_m_s_i_8h_source.html @@ -393,7 +393,7 @@ $(function() { codefold.init(0); });
diff --git a/_s_d_d_l_8h_source.html b/_s_d_d_l_8h_source.html index 6225347b..12836d3a 100644 --- a/_s_d_d_l_8h_source.html +++ b/_s_d_d_l_8h_source.html @@ -184,7 +184,7 @@ $(function() { codefold.init(0); });
108
109#pragma warning(pop)
110
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
Definition SDDL.h:19
security_attributes(security_attributes &&a) noexcept
Moves an existing SECURITY_ATTRIBUTES.
Definition SDDL.h:36
~security_attributes()
Destroys the SECURITY_ATTRIBUTES.
Definition SDDL.h:47
@@ -196,7 +196,7 @@ $(function() { codefold.init(0); });
diff --git a/_sec_8h_source.html b/_sec_8h_source.html index cbcbc47f..902aae71 100644 --- a/_sec_8h_source.html +++ b/_sec_8h_source.html @@ -377,11 +377,11 @@ $(function() { codefold.init(0); });
379
381}
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1214
-
Numerical runtime error.
Definition Common.h:1456
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1239
+
Numerical runtime error.
Definition Common.h:1481
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
SecBufferDesc wrapper class.
Definition Sec.h:314
virtual ~sec_buffer_desc()
Frees the security buffer descriptor.
Definition Sec.h:331
sec_buffer_desc(PSecBuffer buf, ULONG count, ULONG version=SECBUFFER_VERSION)
Initializes security buffer descriptor.
Definition Sec.h:319
@@ -410,11 +410,11 @@ $(function() { codefold.init(0); });
sec_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Sec.h:359
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:94
-
static const PCredHandle invalid
Invalid handle value.
Definition Common.h:1009
+
static const PCredHandle invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_setup_a_p_i_8h_source.html b/_setup_a_p_i_8h_source.html index 8933dcb4..0ce4c6b5 100644 --- a/_setup_a_p_i_8h_source.html +++ b/_setup_a_p_i_8h_source.html @@ -167,9 +167,9 @@ $(function() { codefold.init(0); });
107
109}
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
HDEVINFO wrapper class.
Definition SetupAPI.h:26
virtual ~setup_device_info_list()
Frees the device information set.
Definition SetupAPI.h:35
void free_internal() noexcept override
Frees the device information set.
Definition SetupAPI.h:47
@@ -180,11 +180,11 @@ $(function() { codefold.init(0); });
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:75
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const HDEVINFO invalid
Invalid handle value.
Definition Common.h:1009
+
static const HDEVINFO invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_shell_8h_source.html b/_shell_8h_source.html index 475dbfe3..42fc7f0c 100644 --- a/_shell_8h_source.html +++ b/_shell_8h_source.html @@ -171,7 +171,7 @@ $(function() { codefold.init(0); });
diff --git a/_w_l_a_n_8h_source.html b/_w_l_a_n_8h_source.html index 9410a6cb..8fb9c13d 100644 --- a/_w_l_a_n_8h_source.html +++ b/_w_l_a_n_8h_source.html @@ -115,7 +115,7 @@ $(function() { codefold.init(0); });
42 // Increment size and allocate buffer.
43 sSize = SIZETAdd(sSize, 1024);
44 if (sSize > DWORD_MAX)
-
45 throw std::runtime_exception("Data too big");
+
45 throw std::runtime_error("Data too big");
46 sValue.resize(sSize - 1);
47
48 // Try!
@@ -224,14 +224,14 @@ $(function() { codefold.init(0); });
183}
184
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
WLAN handle wrapper.
Definition WLAN.h:133
virtual ~wlan_handle()
Closes a connection to the server.
Definition WLAN.h:142
void free_internal() noexcept override
Closes a connection to the server.
Definition WLAN.h:154
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const HANDLE invalid
Invalid handle value.
Definition Common.h:1009
+
static const HANDLE invalid
Invalid handle value.
Definition Common.h:1034
static DWORD WlanOpenHandle(DWORD dwClientVersion, PVOID pReserved, PDWORD pdwNegotiatedVersion, winstd::wlan_handle &handle)
Opens a connection to the server.
Definition WLAN.h:172
static DWORD WlanReasonCodeToString(DWORD dwReasonCode, std::basic_string< wchar_t, _Traits, _Ax > &sValue, __reserved PVOID pReserved)
Retrieves a string that describes a specified reason code and stores it in a std::wstring string.
Definition WLAN.h:34
WlanFreeMemory_delete()
Default construct.
Definition WLAN.h:107
@@ -246,7 +246,7 @@ $(function() { codefold.init(0); });
diff --git a/_win_8h_source.html b/_win_8h_source.html index 9212de83..2ed5e0b1 100644 --- a/_win_8h_source.html +++ b/_win_8h_source.html @@ -756,7 +756,7 @@ $(function() { codefold.init(0); });
742static VOID OutputDebugStrV(_In_z_ LPCSTR lpOutputString, _In_ va_list arg) noexcept
743{
744 std::string str;
-
745 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
745 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
746 OutputDebugStringA(str.c_str());
747}
@@ -765,7 +765,7 @@ $(function() { codefold.init(0); });
754static VOID OutputDebugStrV(_In_z_ LPCWSTR lpOutputString, _In_ va_list arg) noexcept
755{
756 std::wstring str;
-
757 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
757 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
758 OutputDebugStringW(str.c_str());
759}
@@ -1048,970 +1048,1007 @@ $(function() { codefold.init(0); });
1092
1099
- +
+ +
1104 {
+ +
1107
- -
1114
-
- -
1119 {
-
-
1123 void operator()(void* _Ptr) const
-
1124 {
-
1125 if (!UnmapViewOfFile(_Ptr))
-
1126 throw win_runtime_error("UnmapViewOfFile failed");
-
1127 }
-
-
1128 };
+
1108 public:
+
+ +
1118 {
+
1119 switch (WaitForSingleObject(m_h, dwMilliseconds)) {
+
1120 case WAIT_OBJECT_0:
+
1121 case WAIT_ABANDONED:
+
1122 return;
+
1123 case WAIT_TIMEOUT:
+
1124 throw std::runtime_error("timeout");
+
1125 case WAIT_FAILED:
+
1126 throw win_runtime_error("WaitForSingleObject failed");
+
1127 }
+
1128 }
1129
- -
1137
-
- -
1142 {
- - -
1145
-
1146 public:
-
- -
1153 {
- -
1155 }
+
+ +
1136 {
+
1137 ReleaseMutex(m_h);
+
1138 }
-
1156
-
- -
1163 {
- -
1165 }
+
1139
+
1140 protected:
+
1141 HANDLE m_h;
+
1142 };
-
1166
-
- -
1173 {
-
1174 return &m_data;
-
1175 }
+
1143
+ +
1151
+ +
1158
+
+ +
1163 {
+
+
1167 void operator()(void* _Ptr) const
+
1168 {
+
1169 if (!UnmapViewOfFile(_Ptr))
+
1170 throw win_runtime_error("UnmapViewOfFile failed");
+
1171 }
-
1176
-
1177 protected:
- -
1179 };
+
1172 };
-
1180
-
-
1186 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
-
1187 {
- +
1173
+ +
1181
+
+ +
1186 {
+ +
1189
1190 public:
-
1196 virtual ~find_file()
+
1197 {
-
1198 if (m_h != invalid)
-
1199 free_internal();
-
1200 }
+ +
1199 }
-
1201
-
1202 protected:
-
-
1208 void free_internal() noexcept override
-
1209 {
-
1210 FindClose(m_h);
-
1211 }
+
1200
+
+ +
1207 {
+ +
1209 }
-
1212 };
+
1210
+
+ +
1217 {
+
1218 return &m_data;
+
1219 }
-
1213
-
-
1219 class heap : public handle<HANDLE, NULL>
-
1220 {
- -
1222
-
1223 public:
-
-
1229 virtual ~heap()
-
1230 {
-
1231 if (m_h != invalid)
-
1232 free_internal();
-
1233 }
+
1220
+
1221 protected:
+ +
1223 };
+
+
1224
+
+
1230 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
+
1231 {
+ +
1233
+
1234 public:
+
+
1240 virtual ~find_file()
+
1241 {
+
1242 if (m_h != invalid)
+
1243 free_internal();
+
1244 }
-
1234
-
- -
1243 {
-
1244 assert(m_h != invalid);
1245
-
1246 bool found = false;
-
1247
-
1248 // Lock the heap for exclusive access.
-
1249 HeapLock(m_h);
-
1250
- -
1252 e.lpData = NULL;
-
1253 while (HeapWalk(m_h, &e) != FALSE) {
-
1254 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
- -
1256 _T("Allocated block%s%s\n")
-
1257 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
-
1258 _T(" Overhead: %d bytes\n Region index: %d\n"),
-
1259 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
-
1260 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
-
1261 e.lpData,
-
1262 e.cbData,
-
1263 e.cbOverhead,
-
1264 e.iRegionIndex);
-
1265
-
1266 found = true;
-
1267 }
-
1268 }
-
1269
-
1270 const DWORD dwResult = GetLastError();
- -
1272 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
-
1273
-
1274 // Unlock the heap.
-
1275 HeapUnlock(m_h);
-
1276
-
1277 return found;
-
1278 }
+
1246 protected:
+
+
1252 void free_internal() noexcept override
+
1253 {
+
1254 FindClose(m_h);
+
1255 }
-
1279
-
1280 protected:
+
1256 };
+
+
1257
+
+
1263 class heap : public handle<HANDLE, NULL>
+
1264 {
+ +
1266
+
1267 public:
+
+
1273 virtual ~heap()
+
1274 {
+
1275 if (m_h != invalid)
+
1276 free_internal();
+
1277 }
+
+
1278
-
1286 void free_internal() noexcept override
-
1287 {
-
1288 enumerate();
- -
1290 }
-
-
1291 };
-
-
1292
-
1296 template <class _Ty>
-
- -
1298 {
-
1299 public:
-
1300 typedef typename _Ty value_type;
-
1301
-
1302 typedef _Ty *pointer;
-
1303 typedef _Ty& reference;
-
1304 typedef const _Ty *const_pointer;
-
1305 typedef const _Ty& const_reference;
-
1306
- - + +
1287 {
+
1288 assert(m_h != invalid);
+
1289
+
1290 bool found = false;
+
1291
+
1292 // Lock the heap for exclusive access.
+
1293 HeapLock(m_h);
+
1294
+ +
1296 e.lpData = NULL;
+
1297 while (HeapWalk(m_h, &e) != FALSE) {
+
1298 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
+ +
1300 _T("Allocated block%s%s\n")
+
1301 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
+
1302 _T(" Overhead: %d bytes\n Region index: %d\n"),
+
1303 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
+
1304 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
+
1305 e.lpData,
+
1306 e.cbData,
+
1307 e.cbOverhead,
+
1308 e.iRegionIndex);
1309
-
1313 template <class _Other>
-
-
1314 struct rebind
-
1315 {
- -
1317 };
+
1310 found = true;
+
1311 }
+
1312 }
+
1313
+
1314 const DWORD dwResult = GetLastError();
+ +
1316 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
+
1317
+
1318 // Unlock the heap.
+
1319 HeapUnlock(m_h);
+
1320
+
1321 return found;
+
1322 }
-
1318
-
1319 public:
-
- -
1326 {}
+
1323
+
1324 protected:
+
+
1330 void free_internal() noexcept override
+
1331 {
+
1332 enumerate();
+ +
1334 }
-
1327
-
1333 template <class _Other>
-
- -
1335 {}
+
1335 };
1336
-
- -
1345 {
-
1346 assert(m_heap);
-
1347 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
-
1348 }
-
-
1349
-
- -
1357 {
- -
1359 assert(m_heap);
-
1360 HeapFree(m_heap, 0, ptr);
-
1361 }
+
1340 template <class _Ty>
+
+ +
1342 {
+
1343 public:
+
1344 typedef typename _Ty value_type;
+
1345
+
1346 typedef _Ty *pointer;
+
1347 typedef _Ty& reference;
+
1348 typedef const _Ty *const_pointer;
+
1349 typedef const _Ty& const_reference;
+
1350
+ + +
1353
+
1357 template <class _Other>
+
+
1358 struct rebind
+
1359 {
+ +
1361 };
1362
+
1363 public:
- -
1370 {
-
1371 ::new ((void*)ptr) _Ty(val);
-
1372 }
+ +
1370 {}
-
1373
-
- -
1381 {
-
1382 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
-
1383 }
+
1371
+
1377 template <class _Other>
+
+ +
1379 {}
-
1384
-
- -
1391 {
-
1392 ptr->_Ty::~_Ty();
-
1393 }
+
1380
+
+ +
1389 {
+
1390 assert(m_heap);
+
1391 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
+
1392 }
-
1394
-
- -
1399 {
-
1400 return (SIZE_T)-1;
-
1401 }
-
-
1402
-
1403 public:
- -
1405 };
+
1393
+
+ +
1401 {
+ +
1403 assert(m_heap);
+
1404 HeapFree(m_heap, 0, ptr);
+
1405 }
1406
-
- -
1411 {
- - -
1414
-
1415 public:
-
- -
1424 {
- -
1426 m_cookie = 0;
+
+ +
1414 {
+
1415 ::new ((void*)ptr) _Ty(val);
+
1416 }
+
+
1417
+
+ +
1425 {
+
1426 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
1427 }
1428
- +
1435 {
-
1436 if (m_cookie)
- -
1438 }
+
1436 ptr->_Ty::~_Ty();
+
1437 }
-
1439
-
1440 protected:
- -
1442 };
+
1438
+
+ +
1443 {
+
1444 return (SIZE_T)-1;
+
1445 }
-
1443
-
- -
1448 {
-
1449 public:
- -
1454
-
- -
1461 {
-
1462 if (m_cookie)
-
1463 RevertToSelf();
-
1464 }
+
1446
+
1447 public:
+ +
1449 };
-
1465
-
1469 operator bool () const { return m_cookie; }
-
1470
-
1471 protected:
- -
1473 };
+
1450
+
+ +
1455 {
+ + +
1458
+
1459 public:
+
+ +
1468 {
+ +
1470 m_cookie = 0;
+
1471 }
-
1474
-
- -
1479 {
- - -
1482
-
1483 public:
-
- -
1492 {
- -
1494 }
+
1472
+
+ +
1479 {
+
1480 if (m_cookie)
+ +
1482 }
-
1495 };
+
1483
+
1484 protected:
+ +
1486 };
-
1496
-
- -
1501 {
- - -
1504
-
1505 public:
-
- -
1510 {
-
1511 TOKEN_PRIVILEGES privileges = { 1, {{{ 0, 0 }, SE_PRIVILEGE_ENABLED }} };
-
1512 if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &privileges.Privileges[0].Luid) ||
- -
1514 return;
-
1515
-
1516 {
-
1517 HANDLE h;
- -
1519 goto revert;
- - -
1522 goto revert;
- -
1524 if (!process_snapshot)
-
1525 goto revert;
-
1526 PROCESSENTRY32 entry = { sizeof(PROCESSENTRY32) };
- -
1528 goto revert;
-
1529 while (_tcsicmp(entry.szExeFile, TEXT("winlogon.exe")) != 0)
- -
1531 goto revert;
- -
1533 if (!winlogon_process)
-
1534 goto revert;
- -
1536 goto revert;
- - -
1539 goto revert;
- - -
1542 goto revert;
-
1543 }
-
1544
-
1545 m_cookie = TRUE;
-
1546 return;
-
1547
-
1548 revert:
- -
1550 RevertToSelf();
- -
1552 }
+
1487
+
+ +
1492 {
+
1493 public:
+ +
1498
+
+ +
1505 {
+
1506 if (m_cookie)
+
1507 RevertToSelf();
+
1508 }
-
1553 };
+
1509
+
1513 operator bool () const { return m_cookie; }
+
1514
+
1515 protected:
+ +
1517 };
-
1554
-
- -
1559 {
-
1560 public:
-
- -
1567 {
- -
1569 throw win_runtime_error("OpenClipboard failed");
-
1570 }
+
1518
+
+ +
1523 {
+ + +
1526
+
1527 public:
+ -
1571
-
- -
1578 {
- -
1580 }
+
1539 };
-
1581 };
+
1540
+
+ +
1545 {
+ + +
1548
+
1549 public:
+
+ +
1554 {
+
1555 TOKEN_PRIVILEGES privileges = { 1, {{{ 0, 0 }, SE_PRIVILEGE_ENABLED }} };
+
1556 if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &privileges.Privileges[0].Luid) ||
+ +
1558 return;
+
1559
+
1560 {
+
1561 HANDLE h;
+ +
1563 goto revert;
+ + +
1566 goto revert;
+ +
1568 if (!process_snapshot)
+
1569 goto revert;
+
1570 PROCESSENTRY32 entry = { sizeof(PROCESSENTRY32) };
+ +
1572 goto revert;
+
1573 while (_tcsicmp(entry.szExeFile, TEXT("winlogon.exe")) != 0)
+ +
1575 goto revert;
+ +
1577 if (!winlogon_process)
+
1578 goto revert;
+ +
1580 goto revert;
+ + +
1583 goto revert;
+ + +
1586 goto revert;
+
1587 }
+
1588
+
1589 m_cookie = TRUE;
+
1590 return;
+
1591
+
1592 revert:
+ +
1594 RevertToSelf();
+ +
1596 }
-
1582
-
- -
1587 {
- - -
1590
-
1591 public:
- -
1603
-
- -
1610 {
-
1611 if (m_cookie)
- -
1613 }
+
1598
+
+ +
1603 {
+
1604 public:
+
+ +
1611 {
+ +
1613 throw win_runtime_error("OpenClipboard failed");
+
1614 }
-
1614
-
1615 protected:
- - -
1618 };
+
1615
+
+ +
1622 {
+ +
1624 }
+
+
1625 };
-
1619
-
-
1623 class vmemory : public handle<LPVOID, NULL>
-
1624 {
-
1626
-
1627 public:
-
- -
1632 {}
+
+ +
1631 {
+ + +
1634
+
1635 public:
+ -
1633
-
- -
1641 m_proc(proc),
- -
1643 {}
+
1647
+
+ +
1654 {
+
1655 if (m_cookie)
+ +
1657 }
-
1644
-
- -
1651 m_proc(std::move(h.m_proc)),
-
1652 handle<LPVOID, NULL>(std::move(h))
-
1653 {}
+
1658
+
1659 protected:
+ + +
1662 };
-
1654
-
-
1660 virtual ~vmemory()
-
1661 {
-
1662 if (m_h != invalid)
- -
1664 }
+
1663
+
+
1667 class vmemory : public handle<LPVOID, NULL>
+
1668 {
+ +
1670
+
1671 public:
+
+ +
1676 {}
-
1665
-
- -
1672 {
-
1673 if (this != std::addressof(other)) {
-
1674 (handle<handle_type, NULL>&&)*this = std::move(other);
-
1675 m_proc = std::move(other.m_proc);
-
1676 }
-
1677 return *this;
-
1678 }
+
1677
+ -
1679
-
- -
1689 {
-
1690 m_proc = proc;
-
1691 if (m_h != invalid)
-
1692 free_internal();
-
1693 m_h = h;
-
1694 }
+
1688
+
+ +
1695 m_proc(std::move(h.m_proc)),
+
1696 handle<LPVOID, NULL>(std::move(h))
+
1697 {}
-
1695
-
-
1705 bool alloc(
- - - - -
1710 _In_ DWORD flProtect) noexcept
-
1711 {
- -
1713 if (h != invalid) {
-
1714 attach(hProcess, h);
-
1715 return true;
-
1716 } else
-
1717 return false;
-
1718 }
+
1698
+
+
1704 virtual ~vmemory()
+
1705 {
+
1706 if (m_h != invalid)
+ +
1708 }
-
1719
-
1720 protected:
-
-
1726 void free_internal() noexcept override
-
1727 {
- -
1729 }
+
1709
+
+ +
1716 {
+
1717 if (this != std::addressof(other)) {
+
1718 (handle<handle_type, NULL>&&)*this = std::move(other);
+
1719 m_proc = std::move(other.m_proc);
+
1720 }
+
1721 return *this;
+
1722 }
-
1730
-
1731 protected:
- -
1733 };
+
1723
+
+ +
1733 {
+
1734 m_proc = proc;
+
1735 if (m_h != invalid)
+
1736 free_internal();
+
1737 m_h = h;
+
1738 }
-
1734
-
-
1741 class reg_key : public handle<HKEY, NULL>
-
1742 {
- -
1744
-
1745 public:
-
-
1751 virtual ~reg_key()
-
1752 {
-
1753 if (m_h != invalid)
-
1754 free_internal();
-
1755 }
+
1739
+
+
1749 bool alloc(
+ + + + +
1754 _In_ DWORD flProtect) noexcept
+
1755 {
+ +
1757 if (h != invalid) {
+
1758 attach(hProcess, h);
+
1759 return true;
+
1760 } else
+
1761 return false;
+
1762 }
-
1756
-
- -
1767 {
-
1768 LSTATUS s;
-
1769
- - -
1772 return true;
-
1773
-
1774 {
-
1775 reg_key k;
-
1776 handle_type h;
- -
1778 if (s == ERROR_SUCCESS)
-
1779 k.attach(h);
-
1780 else {
-
1781 SetLastError(s);
-
1782 return false;
-
1783 }
-
1784 for (;;) {
- - -
1787 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
-
1788 if (s == ERROR_SUCCESS)
-
1789 k.delete_subkey(szName);
-
1790 else if (s == ERROR_NO_MORE_ITEMS)
-
1791 break;
-
1792 else {
-
1793 SetLastError(s);
-
1794 return false;
-
1795 }
-
1796 }
-
1797 }
-
1798
- -
1800 if (s == ERROR_SUCCESS)
-
1801 return true;
-
1802 else {
-
1803 SetLastError(s);
-
1804 return false;
-
1805 }
-
1806 }
+
1763
+
1764 protected:
+
+
1770 void free_internal() noexcept override
+
1771 {
+ +
1773 }
-
1807
-
1808 protected:
-
-
1814 void free_internal() noexcept override
-
1815 {
- -
1817 }
+
1774
+
1775 protected:
+ +
1777 };
-
1818 };
+
1778
+
+
1785 class reg_key : public handle<HKEY, NULL>
+
1786 {
+ +
1788
+
1789 public:
+
+
1795 virtual ~reg_key()
+
1796 {
+
1797 if (m_h != invalid)
+
1798 free_internal();
+
1799 }
-
1819
-
-
1823 class security_id : public handle<PSID, NULL>
-
1824 {
- -
1826
-
1827 public:
-
- -
1834 {
-
1835 if (m_h != invalid)
-
1836 free_internal();
-
1837 }
+
1800
+
+ +
1811 {
+
1812 LSTATUS s;
+
1813
+ + +
1816 return true;
+
1817
+
1818 {
+
1819 reg_key k;
+
1820 handle_type h;
+ +
1822 if (s == ERROR_SUCCESS)
+
1823 k.attach(h);
+
1824 else {
+
1825 SetLastError(s);
+
1826 return false;
+
1827 }
+
1828 for (;;) {
+ + +
1831 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
+
1832 if (s == ERROR_SUCCESS)
+
1833 k.delete_subkey(szName);
+
1834 else if (s == ERROR_NO_MORE_ITEMS)
+
1835 break;
+
1836 else {
+
1837 SetLastError(s);
+
1838 return false;
+
1839 }
+
1840 }
+
1841 }
+
1842
+ +
1844 if (s == ERROR_SUCCESS)
+
1845 return true;
+
1846 else {
+
1847 SetLastError(s);
+
1848 return false;
+
1849 }
+
1850 }
-
1838
-
1839 protected:
-
-
1845 void free_internal() noexcept override
-
1846 {
-
1847 FreeSid(m_h);
-
1848 }
+
1851
+
1852 protected:
+
+
1858 void free_internal() noexcept override
+
1859 {
+ +
1861 }
-
1849 };
-
-
1850
-
-
1854 class process_information : public PROCESS_INFORMATION
-
1855 {
- - -
1858
-
1859 public:
-
- -
1864 {
- - -
1867 dwProcessId = 0;
-
1868 dwThreadId = 0;
-
1869 }
+
1862 };
+
1863
+
+
1867 class security_id : public handle<PSID, NULL>
+
1868 {
+
1870
-
- -
1875 {
-
1876 #pragma warning(push)
-
1877 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
-
1878
- - -
1881
- - -
1884
-
1885 #pragma warning(pop)
-
1886 }
+
1871 public:
+
+ +
1878 {
+
1879 if (m_h != invalid)
+
1880 free_internal();
+
1881 }
-
1887 };
+
1882
+
1883 protected:
+
+
1889 void free_internal() noexcept override
+
1890 {
+
1891 FreeSid(m_h);
+
1892 }
-
1888
-
-
1894 class event_log : public handle<HANDLE, NULL>
-
1895 {
- -
1897
-
1898 public:
-
-
1904 virtual ~event_log()
-
1905 {
-
1906 if (m_h != invalid)
-
1907 free_internal();
-
1908 }
+
1893 };
-
1909
-
1910 protected:
-
-
1916 void free_internal() noexcept override
-
1917 {
- -
1919 }
+
1894
+
+
1898 class process_information : public PROCESS_INFORMATION
+
1899 {
+ + +
1902
+
1903 public:
+
+ +
1908 {
+ + +
1911 dwProcessId = 0;
+
1912 dwThreadId = 0;
+
1913 }
-
1920 };
-
-
1921
-
-
1925 class sc_handle : public handle<SC_HANDLE, NULL>
-
1926 {
- +
1914
+
+ +
1919 {
+
1920 #pragma warning(push)
+
1921 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
+
1922
+ + +
1925
+ +
1928
-
1929 public:
-
-
1935 virtual ~sc_handle()
-
1936 {
-
1937 if (m_h != invalid)
-
1938 free_internal();
-
1939 }
+
1929 #pragma warning(pop)
+
1930 }
-
1940
-
1941 protected:
-
-
1947 void free_internal() noexcept override
-
1948 {
- -
1950 }
+
1931 };
-
1951 };
+
1932
+
+
1938 class event_log : public handle<HANDLE, NULL>
+
1939 {
+ +
1941
+
1942 public:
+
+
1948 virtual ~event_log()
+
1949 {
+
1950 if (m_h != invalid)
+
1951 free_internal();
+
1952 }
-
1952
-
1954}
-
1955
-
1958
-
1959#pragma warning(push)
-
1960#pragma warning(disable: 4505) // Don't warn on unused code
-
1961
-
-
1963static LSTATUS RegCreateKeyExA(
-
1964 _In_ HKEY hKey,
-
1965 _In_ LPCSTR lpSubKey,
-
1966 _Reserved_ DWORD Reserved,
-
1967 _In_opt_ LPSTR lpClass,
-
1968 _In_ DWORD dwOptions,
-
1969 _In_ REGSAM samDesired,
-
1970 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
-
1971 _Inout_ winstd::reg_key &result,
-
1972 _Out_opt_ LPDWORD lpdwDisposition)
-
1973{
-
1974 HKEY h;
-
1975 LSTATUS s = RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
-
1976 if (s == ERROR_SUCCESS)
-
1977 result.attach(h);
-
1978 return s;
-
1979}
+
1953
+
1954 protected:
+
+
1960 void free_internal() noexcept override
+
1961 {
+ +
1963 }
-
1980
-
-
1986static LSTATUS RegCreateKeyExW(
-
1987 _In_ HKEY hKey,
-
1988 _In_ LPCWSTR lpSubKey,
-
1989 _Reserved_ DWORD Reserved,
-
1990 _In_opt_ LPWSTR lpClass,
-
1991 _In_ DWORD dwOptions,
-
1992 _In_ REGSAM samDesired,
-
1993 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
-
1994 _Inout_ winstd::reg_key &result,
-
1995 _Out_opt_ LPDWORD lpdwDisposition)
-
1996{
-
1997 HKEY h;
-
1998 LSTATUS s = RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
-
1999 if (s == ERROR_SUCCESS)
-
2000 result.attach(h);
-
2001 return s;
-
2002}
+
1964 };
-
2003
-
-
2005static LSTATUS RegOpenKeyExA(
-
2006 _In_ HKEY hKey,
-
2007 _In_opt_ LPCSTR lpSubKey,
-
2008 _In_opt_ DWORD ulOptions,
-
2009 _In_ REGSAM samDesired,
-
2010 _Inout_ winstd::reg_key &result)
-
2011{
-
2012 HKEY h;
-
2013 LSTATUS s = RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, &h);
-
2014 if (s == ERROR_SUCCESS)
-
2015 result.attach(h);
-
2016 return s;
-
2017}
+
1965
+
+
1969 class sc_handle : public handle<SC_HANDLE, NULL>
+
1970 {
+ +
1972
+
1973 public:
+
+
1979 virtual ~sc_handle()
+
1980 {
+
1981 if (m_h != invalid)
+
1982 free_internal();
+
1983 }
-
2018
-
-
2024static LSTATUS RegOpenKeyExW(
-
2025 _In_ HKEY hKey,
-
2026 _In_opt_ LPCWSTR lpSubKey,
-
2027 _In_opt_ DWORD ulOptions,
-
2028 _In_ REGSAM samDesired,
-
2029 _Inout_ winstd::reg_key &result)
-
2030{
-
2031 HKEY h;
-
2032 LSTATUS s = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, &h);
-
2033 if (s == ERROR_SUCCESS)
-
2034 result.attach(h);
-
2035 return s;
-
2036}
+
1984
+
1985 protected:
+
+
1991 void free_internal() noexcept override
+
1992 {
+ +
1994 }
-
2037
-
-
2043static BOOL OpenProcessToken(_In_ HANDLE ProcessHandle, _In_ DWORD DesiredAccess, _Inout_ winstd::win_handle<NULL> &TokenHandle)
-
2044{
-
2045 HANDLE h;
-
2046 if (OpenProcessToken(ProcessHandle, DesiredAccess, &h)) {
-
2047 TokenHandle.attach(h);
-
2048 return TRUE;
-
2049 }
-
2050 return FALSE;
-
2051}
+
1995 };
-
2052
-
-
2058static 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)
-
2059{
-
2060 HANDLE h;
-
2061 if (DuplicateTokenEx(hExistingToken, dwDesiredAccess, lpTokenAttributes, ImpersonationLevel, TokenType, &h)) {
-
2062 NewToken.attach(h);
-
2063 return TRUE;
-
2064 }
-
2065 return FALSE;
-
2066}
+
1996
+
1998}
+
1999
+
2002
+
2003#pragma warning(push)
+
2004#pragma warning(disable: 4505) // Don't warn on unused code
+
2005
+
+
2007static LSTATUS RegCreateKeyExA(
+
2008 _In_ HKEY hKey,
+
2009 _In_ LPCSTR lpSubKey,
+
2010 _Reserved_ DWORD Reserved,
+
2011 _In_opt_ LPSTR lpClass,
+
2012 _In_ DWORD dwOptions,
+
2013 _In_ REGSAM samDesired,
+
2014 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+
2015 _Inout_ winstd::reg_key &result,
+
2016 _Out_opt_ LPDWORD lpdwDisposition)
+
2017{
+
2018 HKEY h;
+
2019 LSTATUS s = RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2020 if (s == ERROR_SUCCESS)
+
2021 result.attach(h);
+
2022 return s;
+
2023}
-
2067
-
-
2073static BOOL AllocateAndInitializeSid(_In_ PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, _In_ BYTE nSubAuthorityCount, _In_ DWORD nSubAuthority0, _In_ DWORD nSubAuthority1, _In_ DWORD nSubAuthority2, _In_ DWORD nSubAuthority3, _In_ DWORD nSubAuthority4, _In_ DWORD nSubAuthority5, _In_ DWORD nSubAuthority6, _In_ DWORD nSubAuthority7, _Inout_ winstd::security_id& Sid)
+
2024
+
+
2030static LSTATUS RegCreateKeyExW(
+
2031 _In_ HKEY hKey,
+
2032 _In_ LPCWSTR lpSubKey,
+
2033 _Reserved_ DWORD Reserved,
+
2034 _In_opt_ LPWSTR lpClass,
+
2035 _In_ DWORD dwOptions,
+
2036 _In_ REGSAM samDesired,
+
2037 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+
2038 _Inout_ winstd::reg_key &result,
+
2039 _Out_opt_ LPDWORD lpdwDisposition)
+
2040{
+
2041 HKEY h;
+
2042 LSTATUS s = RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2043 if (s == ERROR_SUCCESS)
+
2044 result.attach(h);
+
2045 return s;
+
2046}
+
+
2047
+
+
2049static LSTATUS RegOpenKeyExA(
+
2050 _In_ HKEY hKey,
+
2051 _In_opt_ LPCSTR lpSubKey,
+
2052 _In_opt_ DWORD ulOptions,
+
2053 _In_ REGSAM samDesired,
+
2054 _Inout_ winstd::reg_key &result)
+
2055{
+
2056 HKEY h;
+
2057 LSTATUS s = RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2058 if (s == ERROR_SUCCESS)
+
2059 result.attach(h);
+
2060 return s;
+
2061}
+
+
2062
+
+
2068static LSTATUS RegOpenKeyExW(
+
2069 _In_ HKEY hKey,
+
2070 _In_opt_ LPCWSTR lpSubKey,
+
2071 _In_opt_ DWORD ulOptions,
+
2072 _In_ REGSAM samDesired,
+
2073 _Inout_ winstd::reg_key &result)
2074{
-
2075 PSID h;
-
2076 if (AllocateAndInitializeSid(pIdentifierAuthority, nSubAuthorityCount, nSubAuthority0, nSubAuthority1, nSubAuthority2, nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6, nSubAuthority7, &h)) {
-
2077 Sid.attach(h);
-
2078 return TRUE;
-
2079 }
-
2080 return FALSE;
-
2081}
+
2075 HKEY h;
+
2076 LSTATUS s = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2077 if (s == ERROR_SUCCESS)
+
2078 result.attach(h);
+
2079 return s;
+
2080}
-
2082
-
-
2084static DWORD SetEntriesInAclA(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_A pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
-
2085{
-
2086 PACL h;
-
2087 DWORD dwResult = SetEntriesInAclA(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
-
2088 if (dwResult == ERROR_SUCCESS)
-
2089 Acl.reset(h);
-
2090 return ERROR_SUCCESS;
-
2091}
+
2081
+
+
2087static BOOL OpenProcessToken(_In_ HANDLE ProcessHandle, _In_ DWORD DesiredAccess, _Inout_ winstd::win_handle<NULL> &TokenHandle)
+
2088{
+
2089 HANDLE h;
+
2090 if (OpenProcessToken(ProcessHandle, DesiredAccess, &h)) {
+
2091 TokenHandle.attach(h);
+
2092 return TRUE;
+
2093 }
+
2094 return FALSE;
+
2095}
-
2092
-
-
2098static DWORD SetEntriesInAclW(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_W pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
-
2099{
-
2100 PACL h;
-
2101 DWORD dwResult = SetEntriesInAclW(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
-
2102 if (dwResult == ERROR_SUCCESS)
-
2103 Acl.reset(h);
-
2104 return ERROR_SUCCESS;
-
2105}
+
2096
+
+
2102static 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)
+
2103{
+
2104 HANDLE h;
+
2105 if (DuplicateTokenEx(hExistingToken, dwDesiredAccess, lpTokenAttributes, ImpersonationLevel, TokenType, &h)) {
+
2106 NewToken.attach(h);
+
2107 return TRUE;
+
2108 }
+
2109 return FALSE;
+
2110}
-
2106
-
2112template<class _Traits, class _Ax>
-
-
2113_Success_(return != 0) BOOL GetThreadPreferredUILanguages(_In_ DWORD dwFlags, _Out_ PULONG pulNumLanguages, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
-
2114{
-
2115 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
2116 ULONG ulSize = _countof(szStackBuffer);
-
2117
-
2118 // Try with stack buffer first.
-
2119 if (GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, szStackBuffer, &ulSize)) {
-
2120 // Copy from stack.
-
2121 sValue.assign(szStackBuffer, ulSize - 1);
+
2111
+
+
2117static BOOL AllocateAndInitializeSid(_In_ PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, _In_ BYTE nSubAuthorityCount, _In_ DWORD nSubAuthority0, _In_ DWORD nSubAuthority1, _In_ DWORD nSubAuthority2, _In_ DWORD nSubAuthority3, _In_ DWORD nSubAuthority4, _In_ DWORD nSubAuthority5, _In_ DWORD nSubAuthority6, _In_ DWORD nSubAuthority7, _Inout_ winstd::security_id& Sid)
+
2118{
+
2119 PSID h;
+
2120 if (AllocateAndInitializeSid(pIdentifierAuthority, nSubAuthorityCount, nSubAuthority0, nSubAuthority1, nSubAuthority2, nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6, nSubAuthority7, &h)) {
+
2121 Sid.attach(h);
2122 return TRUE;
-
2123 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
2124 // Query required size.
-
2125 ulSize = 0;
-
2126 GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, NULL, &ulSize);
-
2127 // Allocate on heap and retry.
-
2128 sValue.resize(ulSize - 1);
-
2129 if (GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, &sValue[0], &ulSize))
-
2130 return TRUE;
-
2131 }
-
2132 return FALSE;
-
2133}
+
2123 }
+
2124 return FALSE;
+
2125}
+
+
2126
+
+
2128static DWORD SetEntriesInAclA(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_A pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
+
2129{
+
2130 PACL h;
+
2131 DWORD dwResult = SetEntriesInAclA(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
+
2132 if (dwResult == ERROR_SUCCESS)
+
2133 Acl.reset(h);
+
2134 return ERROR_SUCCESS;
+
2135}
-
2134
-
2135#pragma warning(pop)
2136
-
Activates given activation context in constructor and deactivates it in destructor.
Definition Win.h:1411
-
actctx_activator(HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition Win.h:1423
-
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition Win.h:1434
-
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition Win.h:1441
-
Clipboard management.
Definition Win.h:1559
-
virtual ~clipboard_opener()
Closes the clipboard.
Definition Win.h:1577
-
clipboard_opener(HWND hWndNewOwner=NULL)
Opens the clipboard for examination and prevents other applications from modifying the clipboard cont...
Definition Win.h:1566
-
Console control handler stack management.
Definition Win.h:1587
-
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:1599
-
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition Win.h:1609
-
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition Win.h:1617
-
BOOL m_cookie
Did pushing the console control handler succeed?
Definition Win.h:1616
-
Critical section wrapper.
Definition Win.h:1142
-
critical_section() noexcept
Construct the object and initializes a critical section object.
Definition Win.h:1152
-
CRITICAL_SECTION m_data
Critical section struct.
Definition Win.h:1178
-
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition Win.h:1162
-
Event log handle wrapper.
Definition Win.h:1895
-
void free_internal() noexcept override
Closes an event log handle.
Definition Win.h:1916
-
virtual ~event_log()
Closes an event log handle.
Definition Win.h:1904
-
Find-file handle wrapper.
Definition Win.h:1187
-
virtual ~find_file()
Closes a file search handle.
Definition Win.h:1196
-
void free_internal() noexcept override
Closes a file search handle.
Definition Win.h:1208
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
HeapAlloc allocator.
Definition Win.h:1298
-
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:1307
-
_Ty value_type
A type that is managed by the allocator.
Definition Win.h:1300
-
heap_allocator(const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition Win.h:1334
-
HANDLE m_heap
Heap handle.
Definition Win.h:1404
-
pointer allocate(size_type count)
Allocates a new memory block.
Definition Win.h:1344
-
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:1308
-
heap_allocator(HANDLE heap)
Constructs allocator.
Definition Win.h:1325
-
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition Win.h:1303
-
void construct(pointer ptr, _Ty &&val)
Calls moving constructor for the element.
Definition Win.h:1380
-
void deallocate(pointer ptr, size_type size)
Frees memory block.
Definition Win.h:1356
-
size_type max_size() const
Returns maximum memory block size.
Definition Win.h:1398
-
void construct(pointer ptr, const _Ty &val)
Calls copying constructor for the element.
Definition Win.h:1369
-
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition Win.h:1305
-
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition Win.h:1304
-
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition Win.h:1302
-
void destroy(pointer ptr)
Calls destructor for the element.
Definition Win.h:1390
-
Heap handle wrapper.
Definition Win.h:1220
-
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition Win.h:1242
-
void free_internal() noexcept override
Destroys the heap.
Definition Win.h:1286
-
virtual ~heap()
Destroys the heap.
Definition Win.h:1229
-
Base class for thread impersonation of another security context.
Definition Win.h:1448
-
virtual ~impersonator()
Reverts to current user and destructs the impersonator.
Definition Win.h:1460
-
impersonator() noexcept
Construct the impersonator.
Definition Win.h:1453
-
BOOL m_cookie
Did impersonation succeed?
Definition Win.h:1472
+
+
2142static DWORD SetEntriesInAclW(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_W pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
+
2143{
+
2144 PACL h;
+
2145 DWORD dwResult = SetEntriesInAclW(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
+
2146 if (dwResult == ERROR_SUCCESS)
+
2147 Acl.reset(h);
+
2148 return ERROR_SUCCESS;
+
2149}
+
+
2150
+
2156template<class _Traits, class _Ax>
+
+
2157_Success_(return != 0) BOOL GetThreadPreferredUILanguages(_In_ DWORD dwFlags, _Out_ PULONG pulNumLanguages, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
2158{
+
2159 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
2160 ULONG ulSize = _countof(szStackBuffer);
+
2161
+
2162 // Try with stack buffer first.
+
2163 if (GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, szStackBuffer, &ulSize)) {
+
2164 // Copy from stack.
+
2165 sValue.assign(szStackBuffer, ulSize - 1);
+
2166 return TRUE;
+
2167 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
2168 // Query required size.
+
2169 ulSize = 0;
+
2170 GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, NULL, &ulSize);
+
2171 // Allocate on heap and retry.
+
2172 sValue.resize(ulSize - 1);
+
2173 if (GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, &sValue[0], &ulSize))
+
2174 return TRUE;
+
2175 }
+
2176 return FALSE;
+
2177}
+
+
2178
+
2179#pragma warning(pop)
+
2180
+
Activates given activation context in constructor and deactivates it in destructor.
Definition Win.h:1455
+
actctx_activator(HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition Win.h:1467
+
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition Win.h:1478
+
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition Win.h:1485
+
Clipboard management.
Definition Win.h:1603
+
virtual ~clipboard_opener()
Closes the clipboard.
Definition Win.h:1621
+
clipboard_opener(HWND hWndNewOwner=NULL)
Opens the clipboard for examination and prevents other applications from modifying the clipboard cont...
Definition Win.h:1610
+
Console control handler stack management.
Definition Win.h:1631
+
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:1643
+
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition Win.h:1653
+
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition Win.h:1661
+
BOOL m_cookie
Did pushing the console control handler succeed?
Definition Win.h:1660
+
Critical section wrapper.
Definition Win.h:1186
+
critical_section() noexcept
Construct the object and initializes a critical section object.
Definition Win.h:1196
+
CRITICAL_SECTION m_data
Critical section struct.
Definition Win.h:1222
+
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition Win.h:1206
+
Event log handle wrapper.
Definition Win.h:1939
+
void free_internal() noexcept override
Closes an event log handle.
Definition Win.h:1960
+
virtual ~event_log()
Closes an event log handle.
Definition Win.h:1948
+
Find-file handle wrapper.
Definition Win.h:1231
+
virtual ~find_file()
Closes a file search handle.
Definition Win.h:1240
+
void free_internal() noexcept override
Closes a file search handle.
Definition Win.h:1252
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
HeapAlloc allocator.
Definition Win.h:1342
+
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:1351
+
_Ty value_type
A type that is managed by the allocator.
Definition Win.h:1344
+
heap_allocator(const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition Win.h:1378
+
HANDLE m_heap
Heap handle.
Definition Win.h:1448
+
pointer allocate(size_type count)
Allocates a new memory block.
Definition Win.h:1388
+
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:1352
+
heap_allocator(HANDLE heap)
Constructs allocator.
Definition Win.h:1369
+
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition Win.h:1347
+
void construct(pointer ptr, _Ty &&val)
Calls moving constructor for the element.
Definition Win.h:1424
+
void deallocate(pointer ptr, size_type size)
Frees memory block.
Definition Win.h:1400
+
size_type max_size() const
Returns maximum memory block size.
Definition Win.h:1442
+
void construct(pointer ptr, const _Ty &val)
Calls copying constructor for the element.
Definition Win.h:1413
+
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition Win.h:1349
+
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition Win.h:1348
+
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition Win.h:1346
+
void destroy(pointer ptr)
Calls destructor for the element.
Definition Win.h:1434
+
Heap handle wrapper.
Definition Win.h:1264
+
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition Win.h:1286
+
void free_internal() noexcept override
Destroys the heap.
Definition Win.h:1330
+
virtual ~heap()
Destroys the heap.
Definition Win.h:1273
+
Base class for thread impersonation of another security context.
Definition Win.h:1492
+
virtual ~impersonator()
Reverts to current user and destructs the impersonator.
Definition Win.h:1504
+
impersonator() noexcept
Construct the impersonator.
Definition Win.h:1497
+
BOOL m_cookie
Did impersonation succeed?
Definition Win.h:1516
Module handle wrapper.
Definition Win.h:1045
void free_internal() noexcept override
Frees the module.
Definition Win.h:1066
virtual ~library()
Frees the module.
Definition Win.h:1054
-
PROCESS_INFORMATION struct wrapper.
Definition Win.h:1855
-
~process_information()
Closes process and thread handles.
Definition Win.h:1874
-
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition Win.h:1863
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
-
Registry key wrapper class.
Definition Win.h:1742
-
void free_internal() noexcept override
Closes a handle to the registry key.
Definition Win.h:1814
-
bool delete_subkey(LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition Win.h:1766
-
virtual ~reg_key()
Closes a handle to the registry key.
Definition Win.h:1751
-
SC_HANDLE wrapper class.
Definition Win.h:1926
-
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:1947
-
virtual ~sc_handle()
Closes an open object handle.
Definition Win.h:1935
-
SID wrapper class.
Definition Win.h:1824
-
void free_internal() noexcept override
Closes a handle to the SID.
Definition Win.h:1845
-
virtual ~security_id()
Closes a handle to the SID.
Definition Win.h:1833
-
Lets the calling thread impersonate the security context of the SYSTEM user.
Definition Win.h:1501
-
system_impersonator() noexcept
Construct the impersonator and impersonates the SYSTEM user.
Definition Win.h:1509
-
Lets the calling thread impersonate the security context of a logged-on user.
Definition Win.h:1479
-
user_impersonator(HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition Win.h:1491
-
Memory in virtual address space of a process handle wrapper.
Definition Win.h:1624
-
vmemory & operator=(vmemory &&other) noexcept
Move assignment.
Definition Win.h:1671
-
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:1705
-
void free_internal() noexcept override
Frees the memory.
Definition Win.h:1726
-
void attach(HANDLE proc, handle_type h) noexcept
Sets a new memory handle for the class.
Definition Win.h:1688
-
virtual ~vmemory()
Frees the memory.
Definition Win.h:1660
-
vmemory(handle_type h, HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition Win.h:1640
-
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition Win.h:1631
-
vmemory(vmemory &&h) noexcept
Move constructor.
Definition Win.h:1650
-
HANDLE m_proc
Handle of memory's process.
Definition Win.h:1732
+
Locks given mutex in constructor and releases it in destructor.
Definition Win.h:1104
+
virtual ~mutex_locker()
Releases ownership of the mutex object.
Definition Win.h:1135
+
mutex_locker(HANDLE hMutex, DWORD dwMilliseconds=INFINITE)
Waits until the specified mutex is in the signaled state or the time-out interval elapses.
Definition Win.h:1117
+
PROCESS_INFORMATION struct wrapper.
Definition Win.h:1899
+
~process_information()
Closes process and thread handles.
Definition Win.h:1918
+
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition Win.h:1907
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
+
Registry key wrapper class.
Definition Win.h:1786
+
void free_internal() noexcept override
Closes a handle to the registry key.
Definition Win.h:1858
+
bool delete_subkey(LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition Win.h:1810
+
virtual ~reg_key()
Closes a handle to the registry key.
Definition Win.h:1795
+
SC_HANDLE wrapper class.
Definition Win.h:1970
+
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:1991
+
virtual ~sc_handle()
Closes an open object handle.
Definition Win.h:1979
+
SID wrapper class.
Definition Win.h:1868
+
void free_internal() noexcept override
Closes a handle to the SID.
Definition Win.h:1889
+
virtual ~security_id()
Closes a handle to the SID.
Definition Win.h:1877
+
Lets the calling thread impersonate the security context of the SYSTEM user.
Definition Win.h:1545
+
system_impersonator() noexcept
Construct the impersonator and impersonates the SYSTEM user.
Definition Win.h:1553
+
Lets the calling thread impersonate the security context of a logged-on user.
Definition Win.h:1523
+
user_impersonator(HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition Win.h:1535
+
Memory in virtual address space of a process handle wrapper.
Definition Win.h:1668
+
vmemory & operator=(vmemory &&other) noexcept
Move assignment.
Definition Win.h:1715
+
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:1749
+
void free_internal() noexcept override
Frees the memory.
Definition Win.h:1770
+
void attach(HANDLE proc, handle_type h) noexcept
Sets a new memory handle for the class.
Definition Win.h:1732
+
virtual ~vmemory()
Frees the memory.
Definition Win.h:1704
+
vmemory(handle_type h, HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition Win.h:1684
+
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition Win.h:1675
+
vmemory(vmemory &&h) noexcept
Move constructor.
Definition Win.h:1694
+
HANDLE m_proc
Handle of memory's process.
Definition Win.h:1776
Windows HANDLE wrapper class.
Definition Win.h:1012
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:1033
virtual ~win_handle()
Closes an open object handle.
Definition Win.h:1021
-
Windows runtime error.
Definition Common.h:1499
+
Windows runtime error.
Definition Common.h:1524
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:67
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:94
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:75
-
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:270
-
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:308
+
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:333
+
static int vsprintf(std::basic_string< char, _Traits, _Ax > &str, const char *format, va_list arg)
Formats string using printf().
Definition Common.h:256
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const HANDLE invalid
Invalid handle value.
Definition Common.h:1009
+
static const HANDLE invalid
Invalid handle value.
Definition Common.h:1034
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:627
static DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, std::basic_string< wchar_t, _Traits, _Ax > &sValue)
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition Win.h:192
static BOOL StringToGuidA(LPCSTR lpszGuid, LPGUID lpGuid, LPCSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition Win.h:255
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:82
-
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:1986
+
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:2030
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:707
-
win_handle< INVALID_HANDLE_VALUE > file
File handle wrapper.
Definition Win.h:1106
+
win_handle< INVALID_HANDLE_VALUE > file
File handle wrapper.
Definition Win.h:1150
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:126
-
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:1963
-
static LSTATUS RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2005
-
static LSTATUS RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2024
+
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:2007
+
static LSTATUS RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2049
+
static LSTATUS RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2068
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:216
static BOOL StringToGuidW(LPCWSTR lpszGuid, LPGUID lpGuid, LPCWSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition Win.h:328
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:597
-
static BOOL OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, winstd::win_handle< NULL > &TokenHandle)
Opens the access token associated with a process.
Definition Win.h:2043
-
static DWORD SetEntriesInAclW(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_W pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2098
+
static BOOL OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, winstd::win_handle< NULL > &TokenHandle)
Opens the access token associated with a process.
Definition Win.h:2087
+
static DWORD SetEntriesInAclW(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_W pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2142
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:821
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:57
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:860
-
static BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, winstd::security_id &Sid)
Allocates and initializes a security identifier (SID) with up to eight subauthorities.
Definition Win.h:2073
+
static BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, winstd::security_id &Sid)
Allocates and initializes a security identifier (SID) with up to eight subauthorities.
Definition Win.h:2117
win_handle< INVALID_HANDLE_VALUE > process_snapshot
Process snapshot handle wrapper.
Definition Win.h:1091
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:26
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:807
static BOOL CreateWellKnownSid(WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, std::unique_ptr< SID > &Sid)
Creates a SID for predefined aliases.
Definition Win.h:898
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:725
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:922
-
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:2058
-
static DWORD SetEntriesInAclA(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_A pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2084
+
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:2102
+
static DWORD SetEntriesInAclA(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_A pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2128
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:558
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:146
-
win_handle< NULL > event
Event handle wrapper.
Definition Win.h:1136
+
win_handle< NULL > event
Event handle wrapper.
Definition Win.h:1180
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:583
static VOID OutputDebugStr(LPCSTR lpOutputString,...) noexcept
Formats and sends a string to the debugger for display.
Definition Win.h:766
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:946
win_handle< NULL > mutex
Mutex handle wrapper.
Definition Win.h:1098
static DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, std::basic_string< char, _Traits, _Ax > &sValue)
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition Win.h:162
-
win_handle< NULL > file_mapping
File mapping.
Definition Win.h:1113
+
win_handle< NULL > file_mapping
File mapping.
Definition Win.h:1157
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:975
win_handle< NULL > process
Process handle wrapper.
Definition Win.h:1077
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:531
-
BOOL GetThreadPreferredUILanguages(DWORD dwFlags, PULONG pulNumLanguages, std::basic_string< wchar_t, _Traits, _Ax > &sValue)
Retrieves the thread preferred UI languages for the current thread.
Definition Win.h:2113
+
BOOL GetThreadPreferredUILanguages(DWORD dwFlags, PULONG pulNumLanguages, std::basic_string< wchar_t, _Traits, _Ax > &sValue)
Retrieves the thread preferred UI languages for the current thread.
Definition Win.h:2157
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:416
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:106
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:789
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:235
static VOID OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept
Formats and sends a string to the debugger for display.
Definition Win.h:742
win_handle< NULL > thread
Thread handle wrapper.
Definition Win.h:1084
-
Deleter for unique_ptr using UnmapViewOfFile.
Definition Win.h:1119
-
void operator()(void *_Ptr) const
Delete a pointer.
Definition Win.h:1123
-
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition Win.h:1315
-
heap_allocator< _Other > other
Other allocator type.
Definition Win.h:1316
+
Deleter for unique_ptr using UnmapViewOfFile.
Definition Win.h:1163
+
void operator()(void *_Ptr) const
Delete a pointer.
Definition Win.h:1167
+
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition Win.h:1359
+
heap_allocator< _Other > other
Other allocator type.
Definition Win.h:1360
diff --git a/_win_h_t_t_p_8h_source.html b/_win_h_t_t_p_8h_source.html index c03d4616..69d03122 100644 --- a/_win_h_t_t_p_8h_source.html +++ b/_win_h_t_t_p_8h_source.html @@ -124,18 +124,18 @@ $(function() { codefold.init(0); });
51
53}
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
HTTP handle wrapper class.
Definition WinHTTP.h:25
virtual ~http()
Closes a handle to the HTTP.
Definition WinHTTP.h:34
void free_internal() noexcept override
Closes a handle to the HTTP.
Definition WinHTTP.h:46
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const HINTERNET invalid
Invalid handle value.
Definition Common.h:1009
+
static const HINTERNET invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_win_sock2_8h_source.html b/_win_sock2_8h_source.html index baa36491..5e0eda56 100644 --- a/_win_sock2_8h_source.html +++ b/_win_sock2_8h_source.html @@ -255,10 +255,10 @@ $(function() { codefold.init(0); });
ADDRINFOA wrapper class.
Definition WinSock2.h:109
void free_internal() noexcept override
Frees address information.
Definition WinSock2.h:130
virtual ~addrinfo()
Frees address information.
Definition WinSock2.h:118
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
-
handle_type m_h
Object handle.
Definition Common.h:1251
-
Numerical runtime error.
Definition Common.h:1456
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:1024
+
handle_type m_h
Object handle.
Definition Common.h:1276
+
Numerical runtime error.
Definition Common.h:1481
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
ADDRINFOW wrapper class.
Definition WinSock2.h:142
virtual ~waddrinfo()
Frees address information.
Definition WinSock2.h:151
void free_internal() noexcept override
Frees address information.
Definition WinSock2.h:163
@@ -273,15 +273,15 @@ $(function() { codefold.init(0); });
addrinfo taddrinfo
Multi-byte / Wide-character ADDRINFO wrapper class (according to _UNICODE)
Definition WinSock2.h:175
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:208
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:190
-
static DWORD FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:678
-
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 Common.h:323
-
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:308
+
static DWORD FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:703
+
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 Common.h:348
+
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:333
#define WINSTD_HANDLE_IMPL(C, T, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:164
-
static const PADDRINFOA invalid
Invalid handle value.
Definition Common.h:1009
+
static const PADDRINFOA invalid
Invalid handle value.
Definition Common.h:1034
diff --git a/_win_trust_8h_source.html b/_win_trust_8h_source.html index 9ae94c8e..a95e85f6 100644 --- a/_win_trust_8h_source.html +++ b/_win_trust_8h_source.html @@ -134,8 +134,8 @@ $(function() { codefold.init(0); });
57
59}
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
-
Windows runtime error.
Definition Common.h:1499
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:863
+
Windows runtime error.
Definition Common.h:1524
WinTrust engine wrapper class.
Definition WinTrust.h:23
wintrust(HWND hwnd, const GUID &action, WINTRUST_DATA &wtd)
Initializes a new class instance.
Definition WinTrust.h:31
virtual ~wintrust()
Destroys the WinTrust context.
Definition WinTrust.h:44
@@ -144,7 +144,7 @@ $(function() { codefold.init(0); });
diff --git a/annotated.html b/annotated.html index 087ce0bf..5546c534 100644 --- a/annotated.html +++ b/annotated.html @@ -135,47 +135,48 @@ $(function() {  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 - CsafearraySAFEARRAY string wrapper - Csafearray_accessorContext scope automatic SAFEARRAY (un)access - 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 - 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 + Cmutex_lockerLocks given mutex in constructor and releases it in destructor + 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 + CsafearraySAFEARRAY string wrapper + Csafearray_accessorContext scope automatic SAFEARRAY (un)access + 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 + 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 a4df88eb..e4e9af45 100644 --- a/classes.html +++ b/classes.html @@ -75,7 +75,7 @@ $(function() {
Class Index
-
A | B | C | D | E | F | G | H | I | L | N | P | R | S | U | V | W
+
A | B | C | D | E | F | G | H | I | L | M | N | P | R | S | U | V | W
A
@@ -108,31 +108,34 @@ $(function() {
L
library (winstd)
LocalFree_delete (winstd)
LocalFree_delete< _Ty[]> (winstd)
+
M
+
mutex_locker (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
safearray (winstd)
safearray_accessor (winstd)
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)
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 8e951c3f..26a1e8a4 100644 --- a/classwinstd_1_1actctx__activator-members.html +++ b/classwinstd_1_1actctx__activator-members.html @@ -88,7 +88,7 @@ $(function() {
diff --git a/classwinstd_1_1actctx__activator.html b/classwinstd_1_1actctx__activator.html index 4d3e52fb..a973f1d6 100644 --- a/classwinstd_1_1actctx__activator.html +++ b/classwinstd_1_1actctx__activator.html @@ -176,7 +176,7 @@ Protected Attributes
diff --git a/classwinstd_1_1addrinfo-members.html b/classwinstd_1_1addrinfo-members.html index 4260806b..7e5fa9be 100644 --- a/classwinstd_1_1addrinfo-members.html +++ b/classwinstd_1_1addrinfo-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1addrinfo.html b/classwinstd_1_1addrinfo.html index 25e2d1f8..ed2966cf 100644 --- a/classwinstd_1_1addrinfo.html +++ b/classwinstd_1_1addrinfo.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1basic__string__guid-members.html b/classwinstd_1_1basic__string__guid-members.html index 11493d9d..c4d96420 100644 --- a/classwinstd_1_1basic__string__guid-members.html +++ b/classwinstd_1_1basic__string__guid-members.html @@ -86,7 +86,7 @@ $(function() {
diff --git a/classwinstd_1_1basic__string__guid.html b/classwinstd_1_1basic__string__guid.html index 172ec22c..88f70e97 100644 --- a/classwinstd_1_1basic__string__guid.html +++ b/classwinstd_1_1basic__string__guid.html @@ -150,7 +150,7 @@ template<class
diff --git a/classwinstd_1_1basic__string__msg-members.html b/classwinstd_1_1basic__string__msg-members.html index 8be53f5f..b3da6922 100644 --- a/classwinstd_1_1basic__string__msg-members.html +++ b/classwinstd_1_1basic__string__msg-members.html @@ -92,7 +92,7 @@ $(function() {
diff --git a/classwinstd_1_1basic__string__msg.html b/classwinstd_1_1basic__string__msg.html index 6b5c8c70..8400ac8d 100644 --- a/classwinstd_1_1basic__string__msg.html +++ b/classwinstd_1_1basic__string__msg.html @@ -441,7 +441,7 @@ template<class
diff --git a/classwinstd_1_1basic__string__printf-members.html b/classwinstd_1_1basic__string__printf-members.html index db4bf23d..334a4eef 100644 --- a/classwinstd_1_1basic__string__printf-members.html +++ b/classwinstd_1_1basic__string__printf-members.html @@ -88,7 +88,7 @@ $(function() {
diff --git a/classwinstd_1_1basic__string__printf.html b/classwinstd_1_1basic__string__printf.html index 007df51f..ae545149 100644 --- a/classwinstd_1_1basic__string__printf.html +++ b/classwinstd_1_1basic__string__printf.html @@ -252,7 +252,7 @@ template<class
diff --git a/classwinstd_1_1bstr-members.html b/classwinstd_1_1bstr-members.html index 87fed74e..244ab1b1 100644 --- a/classwinstd_1_1bstr-members.html +++ b/classwinstd_1_1bstr-members.html @@ -122,7 +122,7 @@ $(function() {
diff --git a/classwinstd_1_1bstr.html b/classwinstd_1_1bstr.html index 32fe0e8d..926fd138 100644 --- a/classwinstd_1_1bstr.html +++ b/classwinstd_1_1bstr.html @@ -370,7 +370,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1cert__chain__context-members.html b/classwinstd_1_1cert__chain__context-members.html index 23b4c0c7..767faa00 100644 --- a/classwinstd_1_1cert__chain__context-members.html +++ b/classwinstd_1_1cert__chain__context-members.html @@ -118,7 +118,7 @@ $(function() {
diff --git a/classwinstd_1_1cert__chain__context.html b/classwinstd_1_1cert__chain__context.html index 201407c4..f3959c10 100644 --- a/classwinstd_1_1cert__chain__context.html +++ b/classwinstd_1_1cert__chain__context.html @@ -327,7 +327,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1cert__context-members.html b/classwinstd_1_1cert__context-members.html index d84bafbd..b09a2594 100644 --- a/classwinstd_1_1cert__context-members.html +++ b/classwinstd_1_1cert__context-members.html @@ -124,7 +124,7 @@ $(function() {
diff --git a/classwinstd_1_1cert__context.html b/classwinstd_1_1cert__context.html index 96a1fe08..76acb034 100644 --- a/classwinstd_1_1cert__context.html +++ b/classwinstd_1_1cert__context.html @@ -573,7 +573,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1cert__store-members.html b/classwinstd_1_1cert__store-members.html index bedda8d8..6d605a22 100644 --- a/classwinstd_1_1cert__store-members.html +++ b/classwinstd_1_1cert__store-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1cert__store.html b/classwinstd_1_1cert__store.html index 87e71a67..5db29f19 100644 --- a/classwinstd_1_1cert__store.html +++ b/classwinstd_1_1cert__store.html @@ -259,7 +259,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1clipboard__opener-members.html b/classwinstd_1_1clipboard__opener-members.html index 521c24b3..cc896a0f 100644 --- a/classwinstd_1_1clipboard__opener-members.html +++ b/classwinstd_1_1clipboard__opener-members.html @@ -87,7 +87,7 @@ $(function() {
diff --git a/classwinstd_1_1clipboard__opener.html b/classwinstd_1_1clipboard__opener.html index b07e432b..b66b8146 100644 --- a/classwinstd_1_1clipboard__opener.html +++ b/classwinstd_1_1clipboard__opener.html @@ -162,7 +162,7 @@ Public Member Functions
diff --git a/classwinstd_1_1com__initializer-members.html b/classwinstd_1_1com__initializer-members.html index ae13c3bc..9002aaf6 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 17bc7886..0c1a75ab 100644 --- a/classwinstd_1_1com__initializer.html +++ b/classwinstd_1_1com__initializer.html @@ -197,7 +197,7 @@ Public Member Functions
diff --git a/classwinstd_1_1com__obj-members.html b/classwinstd_1_1com__obj-members.html index 6cfd13f8..141ecff0 100644 --- a/classwinstd_1_1com__obj-members.html +++ b/classwinstd_1_1com__obj-members.html @@ -124,7 +124,7 @@ $(function() {
diff --git a/classwinstd_1_1com__obj.html b/classwinstd_1_1com__obj.html index 56b09e3a..4065d2f5 100644 --- a/classwinstd_1_1com__obj.html +++ b/classwinstd_1_1com__obj.html @@ -493,7 +493,7 @@ template<class
diff --git a/classwinstd_1_1com__runtime__error-members.html b/classwinstd_1_1com__runtime__error-members.html index 50c79fd2..ae9160ea 100644 --- a/classwinstd_1_1com__runtime__error-members.html +++ b/classwinstd_1_1com__runtime__error-members.html @@ -92,7 +92,7 @@ $(function() {
diff --git a/classwinstd_1_1com__runtime__error.html b/classwinstd_1_1com__runtime__error.html index b465ce42..c6e53db2 100644 --- a/classwinstd_1_1com__runtime__error.html +++ b/classwinstd_1_1com__runtime__error.html @@ -216,7 +216,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1console__ctrl__handler-members.html b/classwinstd_1_1console__ctrl__handler-members.html index 47c1477e..dad3e8a4 100644 --- a/classwinstd_1_1console__ctrl__handler-members.html +++ b/classwinstd_1_1console__ctrl__handler-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/classwinstd_1_1console__ctrl__handler.html b/classwinstd_1_1console__ctrl__handler.html index 01eee76f..8c2c661f 100644 --- a/classwinstd_1_1console__ctrl__handler.html +++ b/classwinstd_1_1console__ctrl__handler.html @@ -180,7 +180,7 @@ Protected Attributes
diff --git a/classwinstd_1_1critical__section-members.html b/classwinstd_1_1critical__section-members.html index 147f86b1..4af8fe8e 100644 --- a/classwinstd_1_1critical__section-members.html +++ b/classwinstd_1_1critical__section-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/classwinstd_1_1critical__section.html b/classwinstd_1_1critical__section.html index d678fead..0ff3f3fd 100644 --- a/classwinstd_1_1critical__section.html +++ b/classwinstd_1_1critical__section.html @@ -202,7 +202,7 @@ Protected Attributes
diff --git a/classwinstd_1_1crypt__hash-members.html b/classwinstd_1_1crypt__hash-members.html index 578c14cf..2eddafaa 100644 --- a/classwinstd_1_1crypt__hash-members.html +++ b/classwinstd_1_1crypt__hash-members.html @@ -118,7 +118,7 @@ $(function() {
diff --git a/classwinstd_1_1crypt__hash.html b/classwinstd_1_1crypt__hash.html index ca422983..5a6496ec 100644 --- a/classwinstd_1_1crypt__hash.html +++ b/classwinstd_1_1crypt__hash.html @@ -327,7 +327,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1crypt__key-members.html b/classwinstd_1_1crypt__key-members.html index 8b800ed0..d0841f59 100644 --- a/classwinstd_1_1crypt__key-members.html +++ b/classwinstd_1_1crypt__key-members.html @@ -119,7 +119,7 @@ $(function() {
diff --git a/classwinstd_1_1crypt__key.html b/classwinstd_1_1crypt__key.html index 7902f55f..9eb75d9f 100644 --- a/classwinstd_1_1crypt__key.html +++ b/classwinstd_1_1crypt__key.html @@ -375,7 +375,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1crypt__prov-members.html b/classwinstd_1_1crypt__prov-members.html index f909ca06..351b1b3b 100644 --- a/classwinstd_1_1crypt__prov-members.html +++ b/classwinstd_1_1crypt__prov-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1crypt__prov.html b/classwinstd_1_1crypt__prov.html index b36c5276..03ea00e4 100644 --- a/classwinstd_1_1crypt__prov.html +++ b/classwinstd_1_1crypt__prov.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1data__blob-members.html b/classwinstd_1_1data__blob-members.html index b0b0ac33..c561ed82 100644 --- a/classwinstd_1_1data__blob-members.html +++ b/classwinstd_1_1data__blob-members.html @@ -95,7 +95,7 @@ $(function() {
diff --git a/classwinstd_1_1data__blob.html b/classwinstd_1_1data__blob.html index 71de7b02..a40a38fe 100644 --- a/classwinstd_1_1data__blob.html +++ b/classwinstd_1_1data__blob.html @@ -145,7 +145,7 @@ Public Member Functions
diff --git a/classwinstd_1_1dc-members.html b/classwinstd_1_1dc-members.html index d1bfc00e..71b8f8f1 100644 --- a/classwinstd_1_1dc-members.html +++ b/classwinstd_1_1dc-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1dc.html b/classwinstd_1_1dc.html index b302ea0b..f9f61254 100644 --- a/classwinstd_1_1dc.html +++ b/classwinstd_1_1dc.html @@ -256,7 +256,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1dc__selector-members.html b/classwinstd_1_1dc__selector-members.html index d7df65f7..61885ca8 100644 --- a/classwinstd_1_1dc__selector-members.html +++ b/classwinstd_1_1dc__selector-members.html @@ -90,7 +90,7 @@ $(function() {
diff --git a/classwinstd_1_1dc__selector.html b/classwinstd_1_1dc__selector.html index dee77f2f..5025a2a0 100644 --- a/classwinstd_1_1dc__selector.html +++ b/classwinstd_1_1dc__selector.html @@ -210,7 +210,7 @@ Protected Attributes
diff --git a/classwinstd_1_1dplhandle-members.html b/classwinstd_1_1dplhandle-members.html index 81e18bd2..f1c00adc 100644 --- a/classwinstd_1_1dplhandle-members.html +++ b/classwinstd_1_1dplhandle-members.html @@ -117,7 +117,7 @@ $(function() {
diff --git a/classwinstd_1_1dplhandle.html b/classwinstd_1_1dplhandle.html index 6d767377..ef6adf9c 100644 --- a/classwinstd_1_1dplhandle.html +++ b/classwinstd_1_1dplhandle.html @@ -541,7 +541,7 @@ template<class
diff --git a/classwinstd_1_1eap__attr-members.html b/classwinstd_1_1eap__attr-members.html index 5dcdb8db..cdd14e56 100644 --- a/classwinstd_1_1eap__attr-members.html +++ b/classwinstd_1_1eap__attr-members.html @@ -92,7 +92,7 @@ $(function() {
diff --git a/classwinstd_1_1eap__attr.html b/classwinstd_1_1eap__attr.html index 3c795111..287ab465 100644 --- a/classwinstd_1_1eap__attr.html +++ b/classwinstd_1_1eap__attr.html @@ -174,7 +174,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 4b640cb4..a99b7077 100644 --- a/classwinstd_1_1eap__method__info__array-members.html +++ b/classwinstd_1_1eap__method__info__array-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/classwinstd_1_1eap__method__info__array.html b/classwinstd_1_1eap__method__info__array.html index bfd649bf..6d076994 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 a4e04bd2..e262f7ad 100644 --- a/classwinstd_1_1eap__method__prop-members.html +++ b/classwinstd_1_1eap__method__prop-members.html @@ -88,7 +88,7 @@ $(function() {
diff --git a/classwinstd_1_1eap__method__prop.html b/classwinstd_1_1eap__method__prop.html index 6e729a7c..63bdbbd2 100644 --- a/classwinstd_1_1eap__method__prop.html +++ b/classwinstd_1_1eap__method__prop.html @@ -229,7 +229,7 @@ Public Member Functions
diff --git a/classwinstd_1_1eap__packet-members.html b/classwinstd_1_1eap__packet-members.html index 1c82bbcd..062406f7 100644 --- a/classwinstd_1_1eap__packet-members.html +++ b/classwinstd_1_1eap__packet-members.html @@ -120,7 +120,7 @@ $(function() {
diff --git a/classwinstd_1_1eap__packet.html b/classwinstd_1_1eap__packet.html index a24bfb45..87c15d4a 100644 --- a/classwinstd_1_1eap__packet.html +++ b/classwinstd_1_1eap__packet.html @@ -346,7 +346,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1eap__runtime__error-members.html b/classwinstd_1_1eap__runtime__error-members.html index 03ccb4d0..0f3b3479 100644 --- a/classwinstd_1_1eap__runtime__error-members.html +++ b/classwinstd_1_1eap__runtime__error-members.html @@ -114,7 +114,7 @@ $(function() {
diff --git a/classwinstd_1_1eap__runtime__error.html b/classwinstd_1_1eap__runtime__error.html index 8cbefaf1..da0f3304 100644 --- a/classwinstd_1_1eap__runtime__error.html +++ b/classwinstd_1_1eap__runtime__error.html @@ -337,7 +337,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1event__data-members.html b/classwinstd_1_1event__data-members.html index c44cc481..fd2feafd 100644 --- a/classwinstd_1_1event__data-members.html +++ b/classwinstd_1_1event__data-members.html @@ -97,7 +97,7 @@ $(function() {
diff --git a/classwinstd_1_1event__data.html b/classwinstd_1_1event__data.html index f8a35421..89c1a0c2 100644 --- a/classwinstd_1_1event__data.html +++ b/classwinstd_1_1event__data.html @@ -525,7 +525,7 @@ template<class
diff --git a/classwinstd_1_1event__fn__auto-members.html b/classwinstd_1_1event__fn__auto-members.html index b5d1e43e..d354dc08 100644 --- a/classwinstd_1_1event__fn__auto-members.html +++ b/classwinstd_1_1event__fn__auto-members.html @@ -94,7 +94,7 @@ $(function() {
diff --git a/classwinstd_1_1event__fn__auto.html b/classwinstd_1_1event__fn__auto.html index 4965bdf2..c47443cc 100644 --- a/classwinstd_1_1event__fn__auto.html +++ b/classwinstd_1_1event__fn__auto.html @@ -140,7 +140,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 17e84301..c98caf99 100644 --- a/classwinstd_1_1event__fn__auto__ret-members.html +++ b/classwinstd_1_1event__fn__auto__ret-members.html @@ -95,7 +95,7 @@ $(function() {
diff --git a/classwinstd_1_1event__fn__auto__ret.html b/classwinstd_1_1event__fn__auto__ret.html index 2def6c59..5b888676 100644 --- a/classwinstd_1_1event__fn__auto__ret.html +++ b/classwinstd_1_1event__fn__auto__ret.html @@ -145,7 +145,7 @@ class winstd::event_fn_auto_ret< T >

Helper template to write an e

diff --git a/classwinstd_1_1event__log-members.html b/classwinstd_1_1event__log-members.html index 6470ec6b..eaf4d474 100644 --- a/classwinstd_1_1event__log-members.html +++ b/classwinstd_1_1event__log-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1event__log.html b/classwinstd_1_1event__log.html index 2a8ca627..b3df0b82 100644 --- a/classwinstd_1_1event__log.html +++ b/classwinstd_1_1event__log.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1event__provider-members.html b/classwinstd_1_1event__provider-members.html index 56358682..fbc7a480 100644 --- a/classwinstd_1_1event__provider-members.html +++ b/classwinstd_1_1event__provider-members.html @@ -117,7 +117,7 @@ $(function() {
diff --git a/classwinstd_1_1event__provider.html b/classwinstd_1_1event__provider.html index 3968a33f..2e4fae57 100644 --- a/classwinstd_1_1event__provider.html +++ b/classwinstd_1_1event__provider.html @@ -629,7 +629,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1event__rec-members.html b/classwinstd_1_1event__rec-members.html index c01a6f4d..09e1be1e 100644 --- a/classwinstd_1_1event__rec-members.html +++ b/classwinstd_1_1event__rec-members.html @@ -97,7 +97,7 @@ $(function() {
diff --git a/classwinstd_1_1event__rec.html b/classwinstd_1_1event__rec.html index 58416fbc..906ebc5f 100644 --- a/classwinstd_1_1event__rec.html +++ b/classwinstd_1_1event__rec.html @@ -499,7 +499,7 @@ Protected Member Functions
diff --git a/classwinstd_1_1event__session-members.html b/classwinstd_1_1event__session-members.html index b599f371..8341bcbc 100644 --- a/classwinstd_1_1event__session-members.html +++ b/classwinstd_1_1event__session-members.html @@ -120,7 +120,7 @@ $(function() {
diff --git a/classwinstd_1_1event__session.html b/classwinstd_1_1event__session.html index e4f89982..bda6dbf4 100644 --- a/classwinstd_1_1event__session.html +++ b/classwinstd_1_1event__session.html @@ -645,7 +645,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1event__trace-members.html b/classwinstd_1_1event__trace-members.html index 52a8992e..97efd44c 100644 --- a/classwinstd_1_1event__trace-members.html +++ b/classwinstd_1_1event__trace-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1event__trace.html b/classwinstd_1_1event__trace.html index f0f2d73e..5435a553 100644 --- a/classwinstd_1_1event__trace.html +++ b/classwinstd_1_1event__trace.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1event__trace__enabler-members.html b/classwinstd_1_1event__trace__enabler-members.html index 8f664789..6bd556fc 100644 --- a/classwinstd_1_1event__trace__enabler-members.html +++ b/classwinstd_1_1event__trace__enabler-members.html @@ -98,7 +98,7 @@ $(function() {
diff --git a/classwinstd_1_1event__trace__enabler.html b/classwinstd_1_1event__trace__enabler.html index cc191b42..7571a5cf 100644 --- a/classwinstd_1_1event__trace__enabler.html +++ b/classwinstd_1_1event__trace__enabler.html @@ -328,7 +328,7 @@ Protected Attributes
diff --git a/classwinstd_1_1find__file-members.html b/classwinstd_1_1find__file-members.html index 9204c72f..95e10fb4 100644 --- a/classwinstd_1_1find__file-members.html +++ b/classwinstd_1_1find__file-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1find__file.html b/classwinstd_1_1find__file.html index cb4b217d..bf48d2ae 100644 --- a/classwinstd_1_1find__file.html +++ b/classwinstd_1_1find__file.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1gdi__handle-members.html b/classwinstd_1_1gdi__handle-members.html index 9c90d232..8ac4d1d7 100644 --- a/classwinstd_1_1gdi__handle-members.html +++ b/classwinstd_1_1gdi__handle-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1gdi__handle.html b/classwinstd_1_1gdi__handle.html index 795e2396..87050e61 100644 --- a/classwinstd_1_1gdi__handle.html +++ b/classwinstd_1_1gdi__handle.html @@ -261,7 +261,7 @@ template<class
diff --git a/classwinstd_1_1globalmem__accessor-members.html b/classwinstd_1_1globalmem__accessor-members.html index a42ebdb9..1925841d 100644 --- a/classwinstd_1_1globalmem__accessor-members.html +++ b/classwinstd_1_1globalmem__accessor-members.html @@ -90,7 +90,7 @@ $(function() {
diff --git a/classwinstd_1_1globalmem__accessor.html b/classwinstd_1_1globalmem__accessor.html index a099d4e6..3ba7613b 100644 --- a/classwinstd_1_1globalmem__accessor.html +++ b/classwinstd_1_1globalmem__accessor.html @@ -183,7 +183,7 @@ template<class
diff --git a/classwinstd_1_1handle-members.html b/classwinstd_1_1handle-members.html index 8826c278..ec31c5aa 100644 --- a/classwinstd_1_1handle-members.html +++ b/classwinstd_1_1handle-members.html @@ -108,7 +108,7 @@ $(function() {
diff --git a/classwinstd_1_1handle.html b/classwinstd_1_1handle.html index 955d5695..f2a20500 100644 --- a/classwinstd_1_1handle.html +++ b/classwinstd_1_1handle.html @@ -842,7 +842,7 @@ template<class
diff --git a/classwinstd_1_1heap-members.html b/classwinstd_1_1heap-members.html index 96160f65..40aa9edd 100644 --- a/classwinstd_1_1heap-members.html +++ b/classwinstd_1_1heap-members.html @@ -110,7 +110,7 @@ $(function() {
diff --git a/classwinstd_1_1heap.html b/classwinstd_1_1heap.html index a0bbb8a3..3ab9f682 100644 --- a/classwinstd_1_1heap.html +++ b/classwinstd_1_1heap.html @@ -292,7 +292,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1heap__allocator-members.html b/classwinstd_1_1heap__allocator-members.html index 94e906cc..add72f82 100644 --- a/classwinstd_1_1heap__allocator-members.html +++ b/classwinstd_1_1heap__allocator-members.html @@ -101,7 +101,7 @@ $(function() {
diff --git a/classwinstd_1_1heap__allocator.html b/classwinstd_1_1heap__allocator.html index 4461ca5a..c8a9b1af 100644 --- a/classwinstd_1_1heap__allocator.html +++ b/classwinstd_1_1heap__allocator.html @@ -438,7 +438,7 @@ template<class
diff --git a/classwinstd_1_1http-members.html b/classwinstd_1_1http-members.html index 9295ef63..e7a422bb 100644 --- a/classwinstd_1_1http-members.html +++ b/classwinstd_1_1http-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1http.html b/classwinstd_1_1http.html index 2d53e07b..dedda39b 100644 --- a/classwinstd_1_1http.html +++ b/classwinstd_1_1http.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1icon-members.html b/classwinstd_1_1icon-members.html index 89d145d2..910baff6 100644 --- a/classwinstd_1_1icon-members.html +++ b/classwinstd_1_1icon-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1icon.html b/classwinstd_1_1icon.html index e5d6adf3..55811368 100644 --- a/classwinstd_1_1icon.html +++ b/classwinstd_1_1icon.html @@ -256,7 +256,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1impersonator-members.html b/classwinstd_1_1impersonator-members.html index 0ce1e34c..4177a2d5 100644 --- a/classwinstd_1_1impersonator-members.html +++ b/classwinstd_1_1impersonator-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/classwinstd_1_1impersonator.html b/classwinstd_1_1impersonator.html index becbc0e9..944cb7b0 100644 --- a/classwinstd_1_1impersonator.html +++ b/classwinstd_1_1impersonator.html @@ -157,7 +157,7 @@ Protected Attributes
diff --git a/classwinstd_1_1library-members.html b/classwinstd_1_1library-members.html index c23c3971..24553c9f 100644 --- a/classwinstd_1_1library-members.html +++ b/classwinstd_1_1library-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1library.html b/classwinstd_1_1library.html index 955885fa..f6fa7fa9 100644 --- a/classwinstd_1_1library.html +++ b/classwinstd_1_1library.html @@ -257,7 +257,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1mutex__locker-members.html b/classwinstd_1_1mutex__locker-members.html new file mode 100644 index 00000000..5a673575 --- /dev/null +++ b/classwinstd_1_1mutex__locker-members.html @@ -0,0 +1,94 @@ + + + + + + + +WinStd: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
winstd::mutex_locker Member List
+
+
+ +

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

+ + + + +
m_h (defined in winstd::mutex_locker)winstd::mutex_lockerprotected
mutex_locker(HANDLE hMutex, DWORD dwMilliseconds=INFINITE)winstd::mutex_lockerinline
~mutex_locker()winstd::mutex_lockerinlinevirtual
+ + + + diff --git a/classwinstd_1_1mutex__locker.html b/classwinstd_1_1mutex__locker.html new file mode 100644 index 00000000..df59cf35 --- /dev/null +++ b/classwinstd_1_1mutex__locker.html @@ -0,0 +1,186 @@ + + + + + + + +WinStd: winstd::mutex_locker Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
winstd::mutex_locker Class Reference
+
+
+ +

Locks given mutex in constructor and releases it in destructor. + More...

+ +

#include <WinStd/Win.h>

+ + + + + + + + +

+Public Member Functions

 mutex_locker (HANDLE hMutex, DWORD dwMilliseconds=INFINITE)
 Waits until the specified mutex is in the signaled state or the time-out interval elapses.
 
virtual ~mutex_locker ()
 Releases ownership of the mutex object.
 
+ + + +

+Protected Attributes

+HANDLE m_h
 
+

Detailed Description

+

Locks given mutex in constructor and releases it in destructor.

+

Constructor & Destructor Documentation

+ +

◆ mutex_locker()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
winstd::mutex_locker::mutex_locker (HANDLE hMutex,
DWORD dwMilliseconds = INFINITE )
+
+inline
+
+ +

Waits until the specified mutex is in the signaled state or the time-out interval elapses.

+
Parameters
+ + + +
[in]hMutexMutex
[in]dwMillisecondsThe time-out interval, in milliseconds. If a nonzero value is specified, the function waits until the object is signaled or the interval elapses. If dwMilliseconds is zero, the function does not enter a wait state if the object is not signaled; it always returns immediately. If dwMilliseconds is INFINITE, the function will return only when the object is signaled.
+
+
+
See also
WaitForSingleObject function
+ +
+
+ +

◆ ~mutex_locker()

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

Releases ownership of the mutex object.

+
See also
ReleaseMutex function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1num__runtime__error-members.html b/classwinstd_1_1num__runtime__error-members.html index 43dfa0e0..ab6b3698 100644 --- a/classwinstd_1_1num__runtime__error-members.html +++ b/classwinstd_1_1num__runtime__error-members.html @@ -90,7 +90,7 @@ $(function() {
diff --git a/classwinstd_1_1num__runtime__error.html b/classwinstd_1_1num__runtime__error.html index d28c6ddb..99cab96d 100644 --- a/classwinstd_1_1num__runtime__error.html +++ b/classwinstd_1_1num__runtime__error.html @@ -213,7 +213,7 @@ template<typename diff --git a/classwinstd_1_1process__information-members.html b/classwinstd_1_1process__information-members.html index f07cac58..aac33fef 100644 --- a/classwinstd_1_1process__information-members.html +++ b/classwinstd_1_1process__information-members.html @@ -87,7 +87,7 @@ $(function() {
diff --git a/classwinstd_1_1process__information.html b/classwinstd_1_1process__information.html index 93132a0d..75081683 100644 --- a/classwinstd_1_1process__information.html +++ b/classwinstd_1_1process__information.html @@ -113,7 +113,7 @@ Public Member Functions
diff --git a/classwinstd_1_1ref__unique__ptr-members.html b/classwinstd_1_1ref__unique__ptr-members.html index ec397805..82fef512 100644 --- a/classwinstd_1_1ref__unique__ptr-members.html +++ b/classwinstd_1_1ref__unique__ptr-members.html @@ -92,7 +92,7 @@ $(function() {
diff --git a/classwinstd_1_1ref__unique__ptr.html b/classwinstd_1_1ref__unique__ptr.html index 8c851abf..2f0f12a1 100644 --- a/classwinstd_1_1ref__unique__ptr.html +++ b/classwinstd_1_1ref__unique__ptr.html @@ -260,7 +260,7 @@ template<class
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 959d0d2d..b79b29ce 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 @@ -92,7 +92,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 b98c1c2c..1f4df50b 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
diff --git a/classwinstd_1_1reg__key-members.html b/classwinstd_1_1reg__key-members.html index ea2f0a69..c2de9455 100644 --- a/classwinstd_1_1reg__key-members.html +++ b/classwinstd_1_1reg__key-members.html @@ -110,7 +110,7 @@ $(function() {
diff --git a/classwinstd_1_1reg__key.html b/classwinstd_1_1reg__key.html index 5c52bc77..f0bdf2a8 100644 --- a/classwinstd_1_1reg__key.html +++ b/classwinstd_1_1reg__key.html @@ -300,7 +300,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1safearray-members.html b/classwinstd_1_1safearray-members.html index 21d8cb89..12f78677 100644 --- a/classwinstd_1_1safearray-members.html +++ b/classwinstd_1_1safearray-members.html @@ -118,7 +118,7 @@ $(function() {
diff --git a/classwinstd_1_1safearray.html b/classwinstd_1_1safearray.html index 5ed075de..8e5131d2 100644 --- a/classwinstd_1_1safearray.html +++ b/classwinstd_1_1safearray.html @@ -326,7 +326,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1safearray__accessor-members.html b/classwinstd_1_1safearray__accessor-members.html index 79a52340..5687f338 100644 --- a/classwinstd_1_1safearray__accessor-members.html +++ b/classwinstd_1_1safearray__accessor-members.html @@ -90,7 +90,7 @@ $(function() {
diff --git a/classwinstd_1_1safearray__accessor.html b/classwinstd_1_1safearray__accessor.html index 96f528a4..7288db5e 100644 --- a/classwinstd_1_1safearray__accessor.html +++ b/classwinstd_1_1safearray__accessor.html @@ -183,7 +183,7 @@ template<class
diff --git a/classwinstd_1_1sanitizing__allocator-members.html b/classwinstd_1_1sanitizing__allocator-members.html index 67de1af4..34d52bd3 100644 --- a/classwinstd_1_1sanitizing__allocator-members.html +++ b/classwinstd_1_1sanitizing__allocator-members.html @@ -90,7 +90,7 @@ $(function() {
diff --git a/classwinstd_1_1sanitizing__allocator.html b/classwinstd_1_1sanitizing__allocator.html index 627a3230..b48ca6f3 100644 --- a/classwinstd_1_1sanitizing__allocator.html +++ b/classwinstd_1_1sanitizing__allocator.html @@ -139,7 +139,7 @@ class winstd::sanitizing_allocator< _Ty >

An allocator template th

diff --git a/classwinstd_1_1sanitizing__blob-members.html b/classwinstd_1_1sanitizing__blob-members.html index 8e96c9ab..41feeb26 100644 --- a/classwinstd_1_1sanitizing__blob-members.html +++ b/classwinstd_1_1sanitizing__blob-members.html @@ -88,7 +88,7 @@ $(function() {
diff --git a/classwinstd_1_1sanitizing__blob.html b/classwinstd_1_1sanitizing__blob.html index 6385a580..e5962b79 100644 --- a/classwinstd_1_1sanitizing__blob.html +++ b/classwinstd_1_1sanitizing__blob.html @@ -116,7 +116,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 4f5d7ac2..349da18c 100644 --- a/classwinstd_1_1sc__handle-members.html +++ b/classwinstd_1_1sc__handle-members.html @@ -109,7 +109,7 @@ $(function() {
diff --git a/classwinstd_1_1sc__handle.html b/classwinstd_1_1sc__handle.html index 728e0340..13945033 100644 --- a/classwinstd_1_1sc__handle.html +++ b/classwinstd_1_1sc__handle.html @@ -256,7 +256,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1sec__buffer__desc-members.html b/classwinstd_1_1sec__buffer__desc-members.html index 22bbeae2..aa7471e8 100644 --- a/classwinstd_1_1sec__buffer__desc-members.html +++ b/classwinstd_1_1sec__buffer__desc-members.html @@ -87,7 +87,7 @@ $(function() {
diff --git a/classwinstd_1_1sec__buffer__desc.html b/classwinstd_1_1sec__buffer__desc.html index a6ef7c04..8de23a54 100644 --- a/classwinstd_1_1sec__buffer__desc.html +++ b/classwinstd_1_1sec__buffer__desc.html @@ -141,7 +141,7 @@ Public Member Functions
diff --git a/classwinstd_1_1sec__context-members.html b/classwinstd_1_1sec__context-members.html index 34f18328..5060b822 100644 --- a/classwinstd_1_1sec__context-members.html +++ b/classwinstd_1_1sec__context-members.html @@ -116,7 +116,7 @@ $(function() {
diff --git a/classwinstd_1_1sec__context.html b/classwinstd_1_1sec__context.html index 84f4c961..92b21f80 100644 --- a/classwinstd_1_1sec__context.html +++ b/classwinstd_1_1sec__context.html @@ -464,7 +464,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1sec__credentials-members.html b/classwinstd_1_1sec__credentials-members.html index e642cebc..a20a6c51 100644 --- a/classwinstd_1_1sec__credentials-members.html +++ b/classwinstd_1_1sec__credentials-members.html @@ -115,7 +115,7 @@ $(function() {
diff --git a/classwinstd_1_1sec__credentials.html b/classwinstd_1_1sec__credentials.html index 3b5999b1..e4bf3680 100644 --- a/classwinstd_1_1sec__credentials.html +++ b/classwinstd_1_1sec__credentials.html @@ -446,7 +446,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1sec__runtime__error-members.html b/classwinstd_1_1sec__runtime__error-members.html index 409be1ad..2c50ee2f 100644 --- a/classwinstd_1_1sec__runtime__error-members.html +++ b/classwinstd_1_1sec__runtime__error-members.html @@ -93,7 +93,7 @@ $(function() {
diff --git a/classwinstd_1_1sec__runtime__error.html b/classwinstd_1_1sec__runtime__error.html index a2939614..4b9907bf 100644 --- a/classwinstd_1_1sec__runtime__error.html +++ b/classwinstd_1_1sec__runtime__error.html @@ -252,7 +252,7 @@ Additional Inherited Members
diff --git a/classwinstd_1_1security__attributes-members.html b/classwinstd_1_1security__attributes-members.html index 51e7691d..2292dba0 100644 --- a/classwinstd_1_1security__attributes-members.html +++ b/classwinstd_1_1security__attributes-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/classwinstd_1_1security__attributes.html b/classwinstd_1_1security__attributes.html index c33d2f08..620d9bf3 100644 --- a/classwinstd_1_1security__attributes.html +++ b/classwinstd_1_1security__attributes.html @@ -114,7 +114,7 @@ Public Member Functions
diff --git a/classwinstd_1_1security__id-members.html b/classwinstd_1_1security__id-members.html index a9b2cd35..8cfcaa05 100644 --- a/classwinstd_1_1security__id-members.html +++ b/classwinstd_1_1security__id-members.html @@ -109,7 +109,7 @@ $(function() { diff --git a/classwinstd_1_1security__id.html b/classwinstd_1_1security__id.html index 931eedd9..c692dafc 100644 --- a/classwinstd_1_1security__id.html +++ b/classwinstd_1_1security__id.html @@ -256,7 +256,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1setup__device__info__list-members.html b/classwinstd_1_1setup__device__info__list-members.html index 518b15f7..e994cfaf 100644 --- a/classwinstd_1_1setup__device__info__list-members.html +++ b/classwinstd_1_1setup__device__info__list-members.html @@ -109,7 +109,7 @@ $(function() { diff --git a/classwinstd_1_1setup__device__info__list.html b/classwinstd_1_1setup__device__info__list.html index 2e84bf2e..0d3d3dda 100644 --- a/classwinstd_1_1setup__device__info__list.html +++ b/classwinstd_1_1setup__device__info__list.html @@ -259,7 +259,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1setup__driver__info__list__builder-members.html b/classwinstd_1_1setup__driver__info__list__builder-members.html index e44946a3..d7c20159 100644 --- a/classwinstd_1_1setup__driver__info__list__builder-members.html +++ b/classwinstd_1_1setup__driver__info__list__builder-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classwinstd_1_1setup__driver__info__list__builder.html b/classwinstd_1_1setup__driver__info__list__builder.html index e6eb9db1..44e32e49 100644 --- a/classwinstd_1_1setup__driver__info__list__builder.html +++ b/classwinstd_1_1setup__driver__info__list__builder.html @@ -203,7 +203,7 @@ Public Member Functions diff --git a/classwinstd_1_1string__guid-members.html b/classwinstd_1_1string__guid-members.html index 6bc775b7..51148f21 100644 --- a/classwinstd_1_1string__guid-members.html +++ b/classwinstd_1_1string__guid-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1string__guid.html b/classwinstd_1_1string__guid.html index c2c59bc4..8894a36c 100644 --- a/classwinstd_1_1string__guid.html +++ b/classwinstd_1_1string__guid.html @@ -149,7 +149,7 @@ Public Member Functions diff --git a/classwinstd_1_1system__impersonator-members.html b/classwinstd_1_1system__impersonator-members.html index 3ca152b8..b75caedc 100644 --- a/classwinstd_1_1system__impersonator-members.html +++ b/classwinstd_1_1system__impersonator-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1system__impersonator.html b/classwinstd_1_1system__impersonator.html index 769fee6f..913a1ca1 100644 --- a/classwinstd_1_1system__impersonator.html +++ b/classwinstd_1_1system__impersonator.html @@ -132,7 +132,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1user__impersonator-members.html b/classwinstd_1_1user__impersonator-members.html index 79f7006b..9b5b673c 100644 --- a/classwinstd_1_1user__impersonator-members.html +++ b/classwinstd_1_1user__impersonator-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classwinstd_1_1user__impersonator.html b/classwinstd_1_1user__impersonator.html index ece04438..4055e7db 100644 --- a/classwinstd_1_1user__impersonator.html +++ b/classwinstd_1_1user__impersonator.html @@ -166,7 +166,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1variant-members.html b/classwinstd_1_1variant-members.html index a012ff08..264ebfa6 100644 --- a/classwinstd_1_1variant-members.html +++ b/classwinstd_1_1variant-members.html @@ -146,7 +146,7 @@ $(function() { diff --git a/classwinstd_1_1variant.html b/classwinstd_1_1variant.html index b29aa29d..a0e353d8 100644 --- a/classwinstd_1_1variant.html +++ b/classwinstd_1_1variant.html @@ -603,7 +603,7 @@ Public Member Functions diff --git a/classwinstd_1_1vmemory-members.html b/classwinstd_1_1vmemory-members.html index 17a77c85..d21709bc 100644 --- a/classwinstd_1_1vmemory-members.html +++ b/classwinstd_1_1vmemory-members.html @@ -116,7 +116,7 @@ $(function() { diff --git a/classwinstd_1_1vmemory.html b/classwinstd_1_1vmemory.html index b5a298c3..5be495e8 100644 --- a/classwinstd_1_1vmemory.html +++ b/classwinstd_1_1vmemory.html @@ -478,7 +478,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1waddrinfo-members.html b/classwinstd_1_1waddrinfo-members.html index a8c1bb52..488834b7 100644 --- a/classwinstd_1_1waddrinfo-members.html +++ b/classwinstd_1_1waddrinfo-members.html @@ -109,7 +109,7 @@ $(function() { diff --git a/classwinstd_1_1waddrinfo.html b/classwinstd_1_1waddrinfo.html index 3597954a..20cd4cd4 100644 --- a/classwinstd_1_1waddrinfo.html +++ b/classwinstd_1_1waddrinfo.html @@ -257,7 +257,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1win__handle-members.html b/classwinstd_1_1win__handle-members.html index d636b070..c0bb7cfe 100644 --- a/classwinstd_1_1win__handle-members.html +++ b/classwinstd_1_1win__handle-members.html @@ -109,7 +109,7 @@ $(function() { diff --git a/classwinstd_1_1win__handle.html b/classwinstd_1_1win__handle.html index 67479486..0ef4e825 100644 --- a/classwinstd_1_1win__handle.html +++ b/classwinstd_1_1win__handle.html @@ -261,7 +261,7 @@ template<HANDLE diff --git a/classwinstd_1_1win__runtime__error-members.html b/classwinstd_1_1win__runtime__error-members.html index fa729286..d4da65ed 100644 --- a/classwinstd_1_1win__runtime__error-members.html +++ b/classwinstd_1_1win__runtime__error-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classwinstd_1_1win__runtime__error.html b/classwinstd_1_1win__runtime__error.html index a1afcf5b..033effc5 100644 --- a/classwinstd_1_1win__runtime__error.html +++ b/classwinstd_1_1win__runtime__error.html @@ -368,7 +368,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1window__dc-members.html b/classwinstd_1_1window__dc-members.html index 6b9ea378..3890c905 100644 --- a/classwinstd_1_1window__dc-members.html +++ b/classwinstd_1_1window__dc-members.html @@ -114,7 +114,7 @@ $(function() { diff --git a/classwinstd_1_1window__dc.html b/classwinstd_1_1window__dc.html index 094adc83..390db06c 100644 --- a/classwinstd_1_1window__dc.html +++ b/classwinstd_1_1window__dc.html @@ -280,7 +280,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1wintrust-members.html b/classwinstd_1_1wintrust-members.html index e4a60c47..06f68b9c 100644 --- a/classwinstd_1_1wintrust-members.html +++ b/classwinstd_1_1wintrust-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1wintrust.html b/classwinstd_1_1wintrust.html index 2b70266c..0868089b 100644 --- a/classwinstd_1_1wintrust.html +++ b/classwinstd_1_1wintrust.html @@ -107,7 +107,7 @@ Public Member Functions diff --git a/classwinstd_1_1wlan__handle-members.html b/classwinstd_1_1wlan__handle-members.html index aca68a4f..4d479564 100644 --- a/classwinstd_1_1wlan__handle-members.html +++ b/classwinstd_1_1wlan__handle-members.html @@ -109,7 +109,7 @@ $(function() { diff --git a/classwinstd_1_1wlan__handle.html b/classwinstd_1_1wlan__handle.html index 66f91e80..dee0f40b 100644 --- a/classwinstd_1_1wlan__handle.html +++ b/classwinstd_1_1wlan__handle.html @@ -257,7 +257,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1ws2__runtime__error-members.html b/classwinstd_1_1ws2__runtime__error-members.html index 75af6b17..7073554c 100644 --- a/classwinstd_1_1ws2__runtime__error-members.html +++ b/classwinstd_1_1ws2__runtime__error-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classwinstd_1_1ws2__runtime__error.html b/classwinstd_1_1ws2__runtime__error.html index db95bb33..e0abc770 100644 --- a/classwinstd_1_1ws2__runtime__error.html +++ b/classwinstd_1_1ws2__runtime__error.html @@ -367,7 +367,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1wstring__guid-members.html b/classwinstd_1_1wstring__guid-members.html index fe1836f1..bba11e73 100644 --- a/classwinstd_1_1wstring__guid-members.html +++ b/classwinstd_1_1wstring__guid-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classwinstd_1_1wstring__guid.html b/classwinstd_1_1wstring__guid.html index 5814a0fb..e0bfc597 100644 --- a/classwinstd_1_1wstring__guid.html +++ b/classwinstd_1_1wstring__guid.html @@ -149,7 +149,7 @@ Public Member Functions diff --git a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html index 94c3409f..f4ab555c 100644 --- a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html +++ b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html @@ -88,7 +88,7 @@ Files diff --git a/dir_6f50bb204833d887b928571856c82fbe.html b/dir_6f50bb204833d887b928571856c82fbe.html index 5d6443f1..ccbc5c37 100644 --- a/dir_6f50bb204833d887b928571856c82fbe.html +++ b/dir_6f50bb204833d887b928571856c82fbe.html @@ -120,7 +120,7 @@ Files diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index 53dcdff7..52095f71 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -88,7 +88,7 @@ Directories diff --git a/doxygen_crawl.html b/doxygen_crawl.html index f9fb3132..6264954e 100644 --- a/doxygen_crawl.html +++ b/doxygen_crawl.html @@ -162,6 +162,8 @@ + + diff --git a/files.html b/files.html index 95857d6f..a3180cfc 100644 --- a/files.html +++ b/files.html @@ -103,7 +103,7 @@ $(function() { diff --git a/functions.html b/functions.html index d1b2f2dd..26558f0f 100644 --- a/functions.html +++ b/functions.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_a.html b/functions_a.html index 9bed120b..864e3f3b 100644 --- a/functions_a.html +++ b/functions_a.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_b.html b/functions_b.html index 4d7328f2..fe9f70cf 100644 --- a/functions_b.html +++ b/functions_b.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_c.html b/functions_c.html index 55dc1d85..1c32e232 100644 --- a/functions_c.html +++ b/functions_c.html @@ -94,7 +94,7 @@ $(function() { diff --git a/functions_d.html b/functions_d.html index 764d7f27..b40370a4 100644 --- a/functions_d.html +++ b/functions_d.html @@ -91,7 +91,7 @@ $(function() { diff --git a/functions_e.html b/functions_e.html index 8c93d91e..598c6b4b 100644 --- a/functions_e.html +++ b/functions_e.html @@ -97,7 +97,7 @@ $(function() { diff --git a/functions_f.html b/functions_f.html index f38761ef..23a731a8 100644 --- a/functions_f.html +++ b/functions_f.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func.html b/functions_func.html index 6e6288b6..c5656bdb 100644 --- a/functions_func.html +++ b/functions_func.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_b.html b/functions_func_b.html index 1fa91f52..d27e7dd4 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_func_c.html b/functions_func_c.html index b153586c..e2c68664 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -92,7 +92,7 @@ $(function() { diff --git a/functions_func_d.html b/functions_func_d.html index 8bf393ff..419e2d16 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -90,7 +90,7 @@ $(function() { diff --git a/functions_func_e.html b/functions_func_e.html index 934c6490..472dd1e9 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -96,7 +96,7 @@ $(function() { diff --git a/functions_func_f.html b/functions_func_f.html index 9066df9e..947df10b 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_g.html b/functions_func_g.html index 9e6dbd34..9d907275 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_h.html b/functions_func_h.html index 61b45e27..a451a2a6 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_func_i.html b/functions_func_i.html index cdcdda23..a5115198 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_l.html b/functions_func_l.html index b483395d..7e47533d 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_m.html b/functions_func_m.html index b45eb1e5..f69d034b 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -77,11 +77,12 @@ $(function() {

- m -

diff --git a/functions_func_n.html b/functions_func_n.html index 93385f63..ab0e55ac 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_func_o.html b/functions_func_o.html index 5dde3944..ed35dccd 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -97,7 +97,7 @@ $(function() { diff --git a/functions_func_p.html b/functions_func_p.html index 522016c3..3fbe73e1 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_q.html b/functions_func_q.html index 1f6dccc6..87688953 100644 --- a/functions_func_q.html +++ b/functions_func_q.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_r.html b/functions_func_r.html index 560a0cad..359728e6 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_s.html b/functions_func_s.html index d15c208e..b5f6b089 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -96,7 +96,7 @@ $(function() { diff --git a/functions_func_t.html b/functions_func_t.html index 105b863e..aaac5d6a 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_u.html b/functions_func_u.html index f0820874..cf1625ac 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_v.html b/functions_func_v.html index f5607a46..bf59bd64 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_w.html b/functions_func_w.html index f9d78432..5a97037a 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_func_~.html b/functions_func_~.html index 1a2fbb15..1e25e1b5 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -111,6 +111,7 @@ $(function() {
  • ~icon() : winstd::icon
  • ~impersonator() : winstd::impersonator
  • ~library() : winstd::library
  • +
  • ~mutex_locker() : winstd::mutex_locker
  • ~process_information() : winstd::process_information
  • ~ref_unique_ptr() : winstd::ref_unique_ptr< _Ty, _Dx >, winstd::ref_unique_ptr< _Ty[], _Dx >
  • ~reg_key() : winstd::reg_key
  • @@ -136,7 +137,7 @@ $(function() { diff --git a/functions_g.html b/functions_g.html index cfcab56a..ca2e69db 100644 --- a/functions_g.html +++ b/functions_g.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_h.html b/functions_h.html index e99f082e..50d19a5d 100644 --- a/functions_h.html +++ b/functions_h.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_i.html b/functions_i.html index 4afd5d7f..f6e3ce00 100644 --- a/functions_i.html +++ b/functions_i.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_l.html b/functions_l.html index 82425799..42b780a6 100644 --- a/functions_l.html +++ b/functions_l.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_m.html b/functions_m.html index f398cd07..cd49499f 100644 --- a/functions_m.html +++ b/functions_m.html @@ -114,11 +114,12 @@ $(function() {
  • m_type : winstd::eap_runtime_error
  • max_size() : winstd::heap_allocator< _Ty >
  • message() : winstd::win_runtime_error, winstd::ws2_runtime_error
  • +
  • mutex_locker() : winstd::mutex_locker
  • diff --git a/functions_n.html b/functions_n.html index a83ff95c..c09f69d0 100644 --- a/functions_n.html +++ b/functions_n.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_o.html b/functions_o.html index 521ac51a..074b2056 100644 --- a/functions_o.html +++ b/functions_o.html @@ -98,7 +98,7 @@ $(function() { diff --git a/functions_p.html b/functions_p.html index 5d738c49..e04a42d1 100644 --- a/functions_p.html +++ b/functions_p.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_q.html b/functions_q.html index 3c5168f1..cbb2cc92 100644 --- a/functions_q.html +++ b/functions_q.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_r.html b/functions_r.html index d8b04eec..39fa9b19 100644 --- a/functions_r.html +++ b/functions_r.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_s.html b/functions_s.html index 8e340d0f..9458e7ea 100644 --- a/functions_s.html +++ b/functions_s.html @@ -97,7 +97,7 @@ $(function() { diff --git a/functions_t.html b/functions_t.html index 360431a3..a40eb5a5 100644 --- a/functions_t.html +++ b/functions_t.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_type.html b/functions_type.html index 13199c27..68249d5e 100644 --- a/functions_type.html +++ b/functions_type.html @@ -89,7 +89,7 @@ $(function() { diff --git a/functions_u.html b/functions_u.html index 140ae908..9b6b292b 100644 --- a/functions_u.html +++ b/functions_u.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_v.html b/functions_v.html index c0c21c2a..efddffc4 100644 --- a/functions_v.html +++ b/functions_v.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_vars.html b/functions_vars.html index c0c365dd..6ddd1691 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -121,7 +121,7 @@ $(function() { diff --git a/functions_w.html b/functions_w.html index 04e8fbbe..bec6e31a 100644 --- a/functions_w.html +++ b/functions_w.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index 877fcd55..71c2a6bf 100644 --- a/functions_~.html +++ b/functions_~.html @@ -111,6 +111,7 @@ $(function() {
  • ~icon() : winstd::icon
  • ~impersonator() : winstd::impersonator
  • ~library() : winstd::library
  • +
  • ~mutex_locker() : winstd::mutex_locker
  • ~process_information() : winstd::process_information
  • ~ref_unique_ptr() : winstd::ref_unique_ptr< _Ty, _Dx >, winstd::ref_unique_ptr< _Ty[], _Dx >
  • ~reg_key() : winstd::reg_key
  • @@ -136,7 +137,7 @@ $(function() { diff --git a/group___setup_a_p_i.html b/group___setup_a_p_i.html index 40b818bb..3144857b 100644 --- a/group___setup_a_p_i.html +++ b/group___setup_a_p_i.html @@ -91,7 +91,7 @@ Classes diff --git a/group___win_sock2_a_p_i.html b/group___win_sock2_a_p_i.html index a9d83abd..ea5aaf9a 100644 --- a/group___win_sock2_a_p_i.html +++ b/group___win_sock2_a_p_i.html @@ -197,7 +197,7 @@ Functions diff --git a/group___win_std_c_o_m.html b/group___win_std_c_o_m.html index 36966b9e..9d8ac9c5 100644 --- a/group___win_std_c_o_m.html +++ b/group___win_std_c_o_m.html @@ -207,7 +207,7 @@ template<class T > diff --git a/group___win_std_cred_a_p_i.html b/group___win_std_cred_a_p_i.html index 0faa62f9..f3af7bc7 100644 --- a/group___win_std_cred_a_p_i.html +++ b/group___win_std_cred_a_p_i.html @@ -388,7 +388,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 cf4e8154..366a693c 100644 --- a/group___win_std_crypto_a_p_i.html +++ b/group___win_std_crypto_a_p_i.html @@ -1021,7 +1021,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 2ee4a412..715ce392 100644 --- a/group___win_std_e_a_p_a_p_i.html +++ b/group___win_std_e_a_p_a_p_i.html @@ -332,7 +332,7 @@ Variables 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 7c13194f..5a8e6755 100644 --- a/group___win_std_e_t_w_a_p_i.html +++ b/group___win_std_e_t_w_a_p_i.html @@ -265,7 +265,7 @@ template<class _Ty , class _Ax > diff --git a/group___win_std_exceptions.html b/group___win_std_exceptions.html index 4d5f3a2d..da0b94c5 100644 --- a/group___win_std_exceptions.html +++ b/group___win_std_exceptions.html @@ -206,7 +206,7 @@ Functions diff --git a/group___win_std_gdi_a_p_i.html b/group___win_std_gdi_a_p_i.html index fb0c0eec..92dcbadf 100644 --- a/group___win_std_gdi_a_p_i.html +++ b/group___win_std_gdi_a_p_i.html @@ -100,7 +100,7 @@ Classes diff --git a/group___win_std_general.html b/group___win_std_general.html index 5da8b2bf..820ccd2a 100644 --- a/group___win_std_general.html +++ b/group___win_std_general.html @@ -288,7 +288,7 @@ template<class 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 e192a6d4..336fb95a 100644 --- a/group___win_std_m_s_i_a_p_i.html +++ b/group___win_std_m_s_i_a_p_i.html @@ -559,7 +559,7 @@ template<class _Ty , class _Ax > diff --git a/group___win_std_mem_sanitize.html b/group___win_std_mem_sanitize.html index 72198d67..c21ea43e 100644 --- a/group___win_std_mem_sanitize.html +++ b/group___win_std_mem_sanitize.html @@ -140,7 +140,7 @@ Typedefs diff --git a/group___win_std_s_d_d_l.html b/group___win_std_s_d_d_l.html index f952daaf..dcdc94f7 100644 --- a/group___win_std_s_d_d_l.html +++ b/group___win_std_s_d_d_l.html @@ -182,7 +182,7 @@ Functions diff --git a/group___win_std_security_a_p_i.html b/group___win_std_security_a_p_i.html index 7c1ddf80..18b9fe41 100644 --- a/group___win_std_security_a_p_i.html +++ b/group___win_std_security_a_p_i.html @@ -94,7 +94,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 94739bbc..d7f47172 100644 --- a/group___win_std_shell_w_a_p_i.html +++ b/group___win_std_shell_w_a_p_i.html @@ -230,7 +230,7 @@ template<class _Traits , class _Ax > diff --git a/group___win_std_str_format.html b/group___win_std_str_format.html index a5ce8315..7b427360 100644 --- a/group___win_std_str_format.html +++ b/group___win_std_str_format.html @@ -158,10 +158,14 @@ Typedefs - - - - + + + + + + + + @@ -227,7 +231,7 @@ Functions
    Example
    // Please note the PCSTR typecasting invokes an operator to return
    // pointer to formatted buffer rather than class reference itself.
    cout << (PCSTR)(winstd::string_printf("%i is less than %i.\n", 1, 5));
    -
    Helper class for returning pointers to std::unique_ptr.
    Definition Common.h:838
    +
    Helper class for returning pointers to std::unique_ptr.
    Definition Common.h:863

    Macro Definition Documentation

    @@ -864,13 +868,13 @@ template<class _Elem , class _Traits , class _Ax > - -

    ◆ vsprintf()

    + +

    ◆ vsprintf() [1/2]

    -template<class _Elem , class _Traits , class _Ax >
    +template<class _Traits , class _Ax >

    Functions

    template<class _Elem , class _Traits , class _Ax >
    static int vsprintf (std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
     Formats string using printf().
     
    template<class _Traits , class _Ax >
    static int vsprintf (std::basic_string< char, _Traits, _Ax > &str, const char *format, va_list arg)
     Formats string using printf().
     
    template<class _Traits , class _Ax >
    static int vsprintf (std::basic_string< wchar_t, _Traits, _Ax > &str, const wchar_t *format, va_list arg)
     Formats string using printf().
     
    template<class _Elem , class _Traits , class _Ax >
    static int sprintf (std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
     Formats string using printf().
    - + - + + + + + + + +
    @@ -878,12 +882,59 @@ template<class _Elem , class _Traits , class _Ax >
    static int vsprintf (std::basic_string< _Elem, _Traits, _Ax > & str, std::basic_string< char, _Traits, _Ax > & str,
    const _Elem * format, const char * format,
    va_list arg )
    + + +static + + +
    + +

    Formats string using printf().

    +
    Parameters
    + + + + +
    [out]strFormatted string
    [in]formatString template using printf() style
    [in]argArguments to format
    +
    +
    +
    Returns
    Number of characters in result.
    + +
    + + +

    ◆ vsprintf() [2/2]

    + +
    +
    +
    +template<class _Traits , class _Ax >
    + + +
    + + + + + + + + + + @@ -1086,7 +1137,7 @@ template<class _Traits1 , class _Ax1 , class _Traits2 , class _Ax2 > diff --git a/group___win_std_sys_handles.html b/group___win_std_sys_handles.html index cd16f941..99fc036e 100644 --- a/group___win_std_sys_handles.html +++ b/group___win_std_sys_handles.html @@ -182,7 +182,7 @@ Variables 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 8d05cf7e..7b8b8e41 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 @@ -188,7 +188,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 86b8ca8b..383769e8 100644 --- a/group___win_std_win_a_p_i.html +++ b/group___win_std_win_a_p_i.html @@ -89,6 +89,9 @@ Classes + + + @@ -2437,7 +2440,7 @@ template<class _Ty , class _Ax > diff --git a/group___win_std_win_h_t_t_p.html b/group___win_std_win_h_t_t_p.html index 77e65bc4..8631f440 100644 --- a/group___win_std_win_h_t_t_p.html +++ b/group___win_std_win_h_t_t_p.html @@ -88,7 +88,7 @@ Classes diff --git a/group___win_trust_a_p_i.html b/group___win_trust_a_p_i.html index 2c664c29..81ff34d9 100644 --- a/group___win_trust_a_p_i.html +++ b/group___win_trust_a_p_i.html @@ -88,7 +88,7 @@ Classes diff --git a/hierarchy.html b/hierarchy.html index ceed3eab..ded65c12 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -195,42 +195,43 @@ $(function() { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static int vsprintf (std::basic_string< wchar_t, _Traits, _Ax > & str,
    const wchar_t * format,
    class  winstd::library
     Module handle wrapper. More...
     
    class  winstd::mutex_locker
     Locks given mutex in constructor and releases it in destructor. More...
     
    struct  winstd::UnmapViewOfFile_delete
     Deleter for unique_ptr using UnmapViewOfFile. More...
     
     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::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::safearray_accessor< T >Context scope automatic SAFEARRAY (un)access
     Cwinstd::sanitizing_blob< N >Sanitizing BLOB
     CSecBufferDesc
     CSECURITY_ATTRIBUTES
     Cwinstd::setup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor
     Cwinstd::UnmapViewOfFile_deleteDeleter for unique_ptr using UnmapViewOfFile
     CVARIANT
     Cwinstd::wintrustWinTrust engine wrapper class
     Cwinstd::WlanFreeMemory_delete< _Ty >Deleter for unique_ptr using WlanFreeMemory
     Cwinstd::WlanFreeMemory_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using WlanFreeMemory
     Cwinstd::mutex_lockerLocks given mutex in constructor and releases it in destructor
     CPROCESS_INFORMATION
     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::safearray_accessor< T >Context scope automatic SAFEARRAY (un)access
     Cwinstd::sanitizing_blob< N >Sanitizing BLOB
     CSecBufferDesc
     CSECURITY_ATTRIBUTES
     Cwinstd::setup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor
     Cwinstd::UnmapViewOfFile_deleteDeleter for unique_ptr using UnmapViewOfFile
     CVARIANT
     Cwinstd::wintrustWinTrust engine wrapper class
     Cwinstd::WlanFreeMemory_delete< _Ty >Deleter for unique_ptr using WlanFreeMemory
     Cwinstd::WlanFreeMemory_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using WlanFreeMemory
    diff --git a/index.html b/index.html index 1940fe58..697c4879 100644 --- a/index.html +++ b/index.html @@ -93,7 +93,7 @@ Example
    throw winstd::win_runtime_error("LoadLibraryEx failed");
    m_note_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(48)));
    Module handle wrapper.
    Definition Win.h:1045
    -
    Windows runtime error.
    Definition Common.h:1499
    +
    Windows runtime error.
    Definition Common.h:1524

    Functions and Templates

    Different Win32 API functions have different ways of returning variable-sized data. Getting tired of carefully studying MSDN for each particular Win32 API function how to preallocate the output memory correctly? We too...

    @@ -105,7 +105,7 @@ Example
    std::string response;
    WideCharToMultiByte(CP_OEMCP, 0, L"Copyright \u00A9 2017", -1, response, NULL, NULL);
    std::cout << response.c_str() << std::endl;
    -
    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 Common.h:323
    +
    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 Common.h:348

    String Formatters

    For those situations where one must quckly compose a temporary string using sprintf() or FormatMessage(). Or, convert a GUID to a string on the fly.

    @@ -118,7 +118,7 @@ Example
    "Maximum packet size too small (minimum: %zu, available: %u)",
    sizeof(EapPacket) + 1,
    dwMaxSendPacketSize));
    -
    Helper class for returning pointers to std::unique_ptr.
    Definition Common.h:838
    +
    Helper class for returning pointers to std::unique_ptr.
    Definition Common.h:863

    What WinStd Is Not

    WinStd is not trying to be a full-fledged object-oriented framework on top of Win32 API. We have Microsoft to publish those once every few years - and obsolete it when they loose interest. WinStd aims at augmenting Win32 API with a little bit of help from C++.

    @@ -151,7 +151,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 e4ca88d2..fad6160f 100644 --- a/md__s_e_c_u_r_i_t_y.html +++ b/md__s_e_c_u_r_i_t_y.html @@ -92,7 +92,7 @@ Reporting a Vulnerability diff --git a/pages.html b/pages.html index f2439ce0..06a66327 100644 --- a/pages.html +++ b/pages.html @@ -83,7 +83,7 @@ $(function() { diff --git a/pch_8h_source.html b/pch_8h_source.html index 0b4f75f4..960f6c09 100644 --- a/pch_8h_source.html +++ b/pch_8h_source.html @@ -114,7 +114,7 @@ $(function() { codefold.init(0); }); diff --git a/search/all_14.js b/search/all_14.js index 5eff6aa1..12f87493 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -4,6 +4,6 @@ var searchData= ['variant_1',['variant',['../classwinstd_1_1variant.html',1,'winstd::variant'],['../classwinstd_1_1variant.html#ab5b8d68675d23082008f57e9439c3a19',1,'winstd::variant::variant() noexcept'],['../classwinstd_1_1variant.html#a6b13abee9e259102b5cfcadf799ac33d',1,'winstd::variant::variant(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#a170212d31acb2971ddf55b9247d6dc48',1,'winstd::variant::variant(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a02c9aacfd9b4db09f83d470d9ee62207',1,'winstd::variant::variant(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#ac3d480425647e2ce72aa291eee5259bb',1,'winstd::variant::variant(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a6b7b7b21cd5e8293fc95957dec6ad1ac',1,'winstd::variant::variant(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#ae5f40c0c9ceb73d9a11f9eb5cf6e7acf',1,'winstd::variant::variant(short nSrc) noexcept'],['../classwinstd_1_1variant.html#aa38cc1a50cd08a3b81b8c87a968dd55a',1,'winstd::variant::variant(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a26d5b7a108cc2ae8ea6b9a60e8cfe68d',1,'winstd::variant::variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a89726aecadc0b6e14108daae894a477b',1,'winstd::variant::variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept'],['../classwinstd_1_1variant.html#aa0b2188d63b23c1e7ade2d8c4871e172',1,'winstd::variant::variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a76dee63188ebb8946d0c2152f553e0f5',1,'winstd::variant::variant(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#a1399659c252205487f2f85f2855567e2',1,'winstd::variant::variant(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#add6d3bb11f3ba343d2286dde7a4ce90a',1,'winstd::variant::variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept'],['../classwinstd_1_1variant.html#a9ebbc5928574b7008c1c317e3528b7cb',1,'winstd::variant::variant(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#ac1bc843b25415fd843bc2420a48ff9ad',1,'winstd::variant::variant(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#ae60f506468b32ba02fe499c8a93a9b56',1,'winstd::variant::variant(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a66bf6c6544769977e1032732142bb464',1,'winstd::variant::variant(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ad22ad4af4e10101790dc481dbe1630da',1,'winstd::variant::variant(BSTR bstr) noexcept'],['../classwinstd_1_1variant.html#a2040f3ea8b404ff6b2847c9c9146141a',1,'winstd::variant::variant(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#a841c962b433fd374aa1dfafc844e4b64',1,'winstd::variant::variant(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a278e06d505cad1af830dd88c2c656cd3',1,'winstd::variant::variant(const SAFEARRAY *pSrc)']]], ['versions_2',['Supported Versions',['../md__s_e_c_u_r_i_t_y.html#autotoc_md12',1,'']]], ['vmemory_3',['vmemory',['../classwinstd_1_1vmemory.html',1,'winstd::vmemory'],['../classwinstd_1_1vmemory.html#ae49dd901cfb090ed736510e68a39be7d',1,'winstd::vmemory::vmemory() noexcept'],['../classwinstd_1_1vmemory.html#aa0f7cc6aaa5737fc3ea2deb1544fe0b2',1,'winstd::vmemory::vmemory(handle_type h, HANDLE proc) noexcept'],['../classwinstd_1_1vmemory.html#af3f982d2e1dd1309512aec2182a3b78b',1,'winstd::vmemory::vmemory(vmemory &&h) noexcept']]], - ['vsprintf_4',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]], + ['vsprintf_4',['vsprintf',['../group___win_std_str_format.html#gadd91e0470cf137501a57839ace29216f',1,'vsprintf(std::basic_string< char, _Traits, _Ax > &str, const char *format, va_list arg): Common.h'],['../group___win_std_str_format.html#gaae2cc0f737040cfe19f775be500bbe1a',1,'vsprintf(std::basic_string< wchar_t, _Traits, _Ax > &str, const wchar_t *format, va_list arg): Common.h']]], ['vulnerability_5',['Reporting a Vulnerability',['../md__s_e_c_u_r_i_t_y.html#autotoc_md13',1,'']]] ]; diff --git a/search/all_16.js b/search/all_16.js index 747dd5db..cee54dbd 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -36,25 +36,26 @@ var searchData= ['_7eicon_33',['~icon',['../classwinstd_1_1icon.html#a569f3d6f5e841666d33917ae4f5e7f37',1,'winstd::icon']]], ['_7eimpersonator_34',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], ['_7elibrary_35',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], - ['_7eprocess_5finformation_36',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], - ['_7eref_5funique_5fptr_37',['~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_38',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], - ['_7esafearray_39',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], - ['_7esafearray_5faccessor_40',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], - ['_7esanitizing_5fblob_41',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], - ['_7esc_5fhandle_42',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], - ['_7esec_5fbuffer_5fdesc_43',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], - ['_7esec_5fcontext_44',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], - ['_7esec_5fcredentials_45',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], - ['_7esecurity_5fattributes_46',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], - ['_7esecurity_5fid_47',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], - ['_7esetup_5fdevice_5finfo_5flist_48',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], - ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_49',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], - ['_7evariant_50',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], - ['_7evmemory_51',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], - ['_7ewaddrinfo_52',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], - ['_7ewin_5fhandle_53',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], - ['_7ewindow_5fdc_54',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], - ['_7ewintrust_55',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], - ['_7ewlan_5fhandle_56',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] + ['_7emutex_5flocker_36',['~mutex_locker',['../classwinstd_1_1mutex__locker.html#a268ea63b38ec01c65c138f1136df4758',1,'winstd::mutex_locker']]], + ['_7eprocess_5finformation_37',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_38',['~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_39',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esafearray_40',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], + ['_7esafearray_5faccessor_41',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], + ['_7esanitizing_5fblob_42',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esc_5fhandle_43',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], + ['_7esec_5fbuffer_5fdesc_44',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_45',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_46',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fattributes_47',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], + ['_7esecurity_5fid_48',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_49',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_50',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], + ['_7evariant_51',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], + ['_7evmemory_52',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], + ['_7ewaddrinfo_53',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], + ['_7ewin_5fhandle_54',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], + ['_7ewindow_5fdc_55',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], + ['_7ewintrust_56',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], + ['_7ewlan_5fhandle_57',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] ]; diff --git a/search/all_b.js b/search/all_b.js index e0a5568e..fc8d82fe 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -58,5 +58,6 @@ var searchData= ['msirecordgetstringw_55',['MsiRecordGetStringW',['../group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6',1,'MSI.h']]], ['msirecordreadstream_56',['MsiRecordReadStream',['../group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036',1,'MSI.h']]], ['multibytetowidechar_57',['MultiByteToWideChar',['../group___win_std_str_format.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h']]], - ['mutex_58',['mutex',['../group___win_std_win_a_p_i.html#ga9fc26240d4a361ce032416c7507dee39',1,'winstd']]] + ['mutex_58',['mutex',['../group___win_std_win_a_p_i.html#ga9fc26240d4a361ce032416c7507dee39',1,'winstd']]], + ['mutex_5flocker_59',['mutex_locker',['../classwinstd_1_1mutex__locker.html',1,'winstd::mutex_locker'],['../classwinstd_1_1mutex__locker.html#addccf4e857fce57147b8a3751b732b11',1,'winstd::mutex_locker::mutex_locker()']]] ]; diff --git a/search/classes_10.js b/search/classes_10.js index d3c79417..030753f1 100644 --- a/search/classes_10.js +++ b/search/classes_10.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/classes_11.js b/search/classes_11.js new file mode 100644 index 00000000..d3c79417 --- /dev/null +++ b/search/classes_11.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_a.js b/search/classes_a.js index a739449a..6b5a6d4d 100644 --- a/search/classes_a.js +++ b/search/classes_a.js @@ -1,8 +1,4 @@ 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']]] + ['mutex_5flocker_0',['mutex_locker',['../classwinstd_1_1mutex__locker.html',1,'winstd']]] ]; diff --git a/search/classes_b.js b/search/classes_b.js index 3c1e65d5..a739449a 100644 --- a/search/classes_b.js +++ b/search/classes_b.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_c.js b/search/classes_c.js index 3be41f51..3c1e65d5 100644 --- a/search/classes_c.js +++ b/search/classes_c.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_d.js b/search/classes_d.js index 8d2abdd8..3be41f51 100644 --- a/search/classes_d.js +++ b/search/classes_d.js @@ -1,18 +1,7 @@ var searchData= [ - ['safearray_0',['safearray',['../classwinstd_1_1safearray.html',1,'winstd']]], - ['safearray_5faccessor_1',['safearray_accessor',['../classwinstd_1_1safearray__accessor.html',1,'winstd']]], - ['sanitizing_5fallocator_2',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html',1,'winstd']]], - ['sanitizing_5fblob_3',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html',1,'winstd']]], - ['sc_5fhandle_4',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], - ['sec_5fbuffer_5fdesc_5',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html',1,'winstd']]], - ['sec_5fcontext_6',['sec_context',['../classwinstd_1_1sec__context.html',1,'winstd']]], - ['sec_5fcredentials_7',['sec_credentials',['../classwinstd_1_1sec__credentials.html',1,'winstd']]], - ['sec_5fruntime_5ferror_8',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html',1,'winstd']]], - ['security_5fattributes_9',['security_attributes',['../classwinstd_1_1security__attributes.html',1,'winstd']]], - ['security_5fid_10',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], - ['setup_5fdevice_5finfo_5flist_11',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], - ['setup_5fdriver_5finfo_5flist_5fbuilder_12',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd']]], - ['string_5fguid_13',['string_guid',['../classwinstd_1_1string__guid.html',1,'winstd']]], - ['system_5fimpersonator_14',['system_impersonator',['../classwinstd_1_1system__impersonator.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_e.js b/search/classes_e.js index cee33a5b..8d2abdd8 100644 --- a/search/classes_e.js +++ b/search/classes_e.js @@ -1,5 +1,18 @@ var searchData= [ - ['unmapviewoffile_5fdelete_0',['UnmapViewOfFile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html',1,'winstd']]], - ['user_5fimpersonator_1',['user_impersonator',['../classwinstd_1_1user__impersonator.html',1,'winstd']]] + ['safearray_0',['safearray',['../classwinstd_1_1safearray.html',1,'winstd']]], + ['safearray_5faccessor_1',['safearray_accessor',['../classwinstd_1_1safearray__accessor.html',1,'winstd']]], + ['sanitizing_5fallocator_2',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html',1,'winstd']]], + ['sanitizing_5fblob_3',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html',1,'winstd']]], + ['sc_5fhandle_4',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], + ['sec_5fbuffer_5fdesc_5',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html',1,'winstd']]], + ['sec_5fcontext_6',['sec_context',['../classwinstd_1_1sec__context.html',1,'winstd']]], + ['sec_5fcredentials_7',['sec_credentials',['../classwinstd_1_1sec__credentials.html',1,'winstd']]], + ['sec_5fruntime_5ferror_8',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html',1,'winstd']]], + ['security_5fattributes_9',['security_attributes',['../classwinstd_1_1security__attributes.html',1,'winstd']]], + ['security_5fid_10',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], + ['setup_5fdevice_5finfo_5flist_11',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], + ['setup_5fdriver_5finfo_5flist_5fbuilder_12',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd']]], + ['string_5fguid_13',['string_guid',['../classwinstd_1_1string__guid.html',1,'winstd']]], + ['system_5fimpersonator_14',['system_impersonator',['../classwinstd_1_1system__impersonator.html',1,'winstd']]] ]; diff --git a/search/classes_f.js b/search/classes_f.js index 030753f1..cee33a5b 100644 --- a/search/classes_f.js +++ b/search/classes_f.js @@ -1,5 +1,5 @@ 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']]], + ['user_5fimpersonator_1',['user_impersonator',['../classwinstd_1_1user__impersonator.html',1,'winstd']]] ]; diff --git a/search/functions_13.js b/search/functions_13.js index 1b620978..5d7b5b84 100644 --- a/search/functions_13.js +++ b/search/functions_13.js @@ -2,5 +2,5 @@ var searchData= [ ['variant_0',['variant',['../classwinstd_1_1variant.html#ab5b8d68675d23082008f57e9439c3a19',1,'winstd::variant::variant() noexcept'],['../classwinstd_1_1variant.html#a6b13abee9e259102b5cfcadf799ac33d',1,'winstd::variant::variant(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#a170212d31acb2971ddf55b9247d6dc48',1,'winstd::variant::variant(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a02c9aacfd9b4db09f83d470d9ee62207',1,'winstd::variant::variant(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#ac3d480425647e2ce72aa291eee5259bb',1,'winstd::variant::variant(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a6b7b7b21cd5e8293fc95957dec6ad1ac',1,'winstd::variant::variant(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#ae5f40c0c9ceb73d9a11f9eb5cf6e7acf',1,'winstd::variant::variant(short nSrc) noexcept'],['../classwinstd_1_1variant.html#aa38cc1a50cd08a3b81b8c87a968dd55a',1,'winstd::variant::variant(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a26d5b7a108cc2ae8ea6b9a60e8cfe68d',1,'winstd::variant::variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a89726aecadc0b6e14108daae894a477b',1,'winstd::variant::variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept'],['../classwinstd_1_1variant.html#aa0b2188d63b23c1e7ade2d8c4871e172',1,'winstd::variant::variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a76dee63188ebb8946d0c2152f553e0f5',1,'winstd::variant::variant(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#a1399659c252205487f2f85f2855567e2',1,'winstd::variant::variant(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#add6d3bb11f3ba343d2286dde7a4ce90a',1,'winstd::variant::variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept'],['../classwinstd_1_1variant.html#a9ebbc5928574b7008c1c317e3528b7cb',1,'winstd::variant::variant(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#ac1bc843b25415fd843bc2420a48ff9ad',1,'winstd::variant::variant(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#ae60f506468b32ba02fe499c8a93a9b56',1,'winstd::variant::variant(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a66bf6c6544769977e1032732142bb464',1,'winstd::variant::variant(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ad22ad4af4e10101790dc481dbe1630da',1,'winstd::variant::variant(BSTR bstr) noexcept'],['../classwinstd_1_1variant.html#a2040f3ea8b404ff6b2847c9c9146141a',1,'winstd::variant::variant(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#a841c962b433fd374aa1dfafc844e4b64',1,'winstd::variant::variant(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a278e06d505cad1af830dd88c2c656cd3',1,'winstd::variant::variant(const SAFEARRAY *pSrc)']]], ['vmemory_1',['vmemory',['../classwinstd_1_1vmemory.html#ae49dd901cfb090ed736510e68a39be7d',1,'winstd::vmemory::vmemory() noexcept'],['../classwinstd_1_1vmemory.html#aa0f7cc6aaa5737fc3ea2deb1544fe0b2',1,'winstd::vmemory::vmemory(handle_type h, HANDLE proc) noexcept'],['../classwinstd_1_1vmemory.html#af3f982d2e1dd1309512aec2182a3b78b',1,'winstd::vmemory::vmemory(vmemory &&h) noexcept']]], - ['vsprintf_2',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]] + ['vsprintf_2',['vsprintf',['../group___win_std_str_format.html#gadd91e0470cf137501a57839ace29216f',1,'vsprintf(std::basic_string< char, _Traits, _Ax > &str, const char *format, va_list arg): Common.h'],['../group___win_std_str_format.html#gaae2cc0f737040cfe19f775be500bbe1a',1,'vsprintf(std::basic_string< wchar_t, _Traits, _Ax > &str, const wchar_t *format, va_list arg): Common.h']]] ]; diff --git a/search/functions_15.js b/search/functions_15.js index 747dd5db..cee54dbd 100644 --- a/search/functions_15.js +++ b/search/functions_15.js @@ -36,25 +36,26 @@ var searchData= ['_7eicon_33',['~icon',['../classwinstd_1_1icon.html#a569f3d6f5e841666d33917ae4f5e7f37',1,'winstd::icon']]], ['_7eimpersonator_34',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], ['_7elibrary_35',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], - ['_7eprocess_5finformation_36',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], - ['_7eref_5funique_5fptr_37',['~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_38',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], - ['_7esafearray_39',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], - ['_7esafearray_5faccessor_40',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], - ['_7esanitizing_5fblob_41',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], - ['_7esc_5fhandle_42',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], - ['_7esec_5fbuffer_5fdesc_43',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], - ['_7esec_5fcontext_44',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], - ['_7esec_5fcredentials_45',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], - ['_7esecurity_5fattributes_46',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], - ['_7esecurity_5fid_47',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], - ['_7esetup_5fdevice_5finfo_5flist_48',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], - ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_49',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], - ['_7evariant_50',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], - ['_7evmemory_51',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], - ['_7ewaddrinfo_52',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], - ['_7ewin_5fhandle_53',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], - ['_7ewindow_5fdc_54',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], - ['_7ewintrust_55',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], - ['_7ewlan_5fhandle_56',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] + ['_7emutex_5flocker_36',['~mutex_locker',['../classwinstd_1_1mutex__locker.html#a268ea63b38ec01c65c138f1136df4758',1,'winstd::mutex_locker']]], + ['_7eprocess_5finformation_37',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_38',['~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_39',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esafearray_40',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], + ['_7esafearray_5faccessor_41',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], + ['_7esanitizing_5fblob_42',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esc_5fhandle_43',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], + ['_7esec_5fbuffer_5fdesc_44',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_45',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_46',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fattributes_47',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], + ['_7esecurity_5fid_48',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_49',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_50',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], + ['_7evariant_51',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], + ['_7evmemory_52',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], + ['_7ewaddrinfo_53',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], + ['_7ewin_5fhandle_54',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], + ['_7ewindow_5fdc_55',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], + ['_7ewintrust_56',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], + ['_7ewlan_5fhandle_57',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] ]; diff --git a/search/functions_a.js b/search/functions_a.js index a5ade656..1c57cfae 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -13,5 +13,6 @@ var searchData= ['msirecordgetstringa_10',['MsiRecordGetStringA',['../group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29',1,'MSI.h']]], ['msirecordgetstringw_11',['MsiRecordGetStringW',['../group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6',1,'MSI.h']]], ['msirecordreadstream_12',['MsiRecordReadStream',['../group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036',1,'MSI.h']]], - ['multibytetowidechar_13',['MultiByteToWideChar',['../group___win_std_str_format.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h']]] + ['multibytetowidechar_13',['MultiByteToWideChar',['../group___win_std_str_format.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h']]], + ['mutex_5flocker_14',['mutex_locker',['../classwinstd_1_1mutex__locker.html#addccf4e857fce57147b8a3751b732b11',1,'winstd::mutex_locker']]] ]; diff --git a/search/searchdata.js b/search/searchdata.js index ae08769d..7116c9c4 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -1,7 +1,7 @@ var indexSectionsWithContent = { 0: "_abcdefghilmnopqrstuvw~", - 1: "abcdefghilnprsuvw", + 1: "abcdefghilmnprsuvw", 2: "abcdefghilmnopqrstuvw~", 3: "bim", 4: "_cdefhmoprstvw", 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 c4d85ba6..0ab66ab8 100644 --- a/structwinstd_1_1_co_task_mem_free__delete-members.html +++ b/structwinstd_1_1_co_task_mem_free__delete-members.html @@ -87,7 +87,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 38eb845f..ff167126 100644 --- a/structwinstd_1_1_co_task_mem_free__delete.html +++ b/structwinstd_1_1_co_task_mem_free__delete.html @@ -138,7 +138,7 @@ template<class
    diff --git a/structwinstd_1_1_cred_free__delete-members.html b/structwinstd_1_1_cred_free__delete-members.html index e80ec889..89404afe 100644 --- a/structwinstd_1_1_cred_free__delete-members.html +++ b/structwinstd_1_1_cred_free__delete-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/structwinstd_1_1_cred_free__delete.html b/structwinstd_1_1_cred_free__delete.html index 670c56a9..340d4def 100644 --- a/structwinstd_1_1_cred_free__delete.html +++ b/structwinstd_1_1_cred_free__delete.html @@ -151,7 +151,7 @@ template<class 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 7419e515..cacd4343 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 @@ -89,7 +89,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 638e302d..590b008e 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 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 b89d1095..f5429190 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 @@ -87,7 +87,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 73eb631f..b8276106 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 @@ -135,7 +135,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 f7373cea..5d4eb368 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 @@ -87,7 +87,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 5051b15e..8411f9ce 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 @@ -135,7 +135,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 0a429161..2ee5db4e 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 @@ -87,7 +87,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 bc493ccd..86f9bfc2 100644 --- a/structwinstd_1_1_eap_host_peer_free_memory__delete.html +++ b/structwinstd_1_1_eap_host_peer_free_memory__delete.html @@ -138,7 +138,7 @@ template<class 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 540efcb3..67ee6e9e 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 @@ -87,7 +87,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 473499b7..d6147087 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 @@ -108,7 +108,7 @@ template<class diff --git a/structwinstd_1_1_global_free__delete-members.html b/structwinstd_1_1_global_free__delete-members.html index 99fdb9eb..cd8d5b19 100644 --- a/structwinstd_1_1_global_free__delete-members.html +++ b/structwinstd_1_1_global_free__delete-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structwinstd_1_1_global_free__delete.html b/structwinstd_1_1_global_free__delete.html index ab965b46..372455a2 100644 --- a/structwinstd_1_1_global_free__delete.html +++ b/structwinstd_1_1_global_free__delete.html @@ -135,7 +135,7 @@ Public Member Functions diff --git a/structwinstd_1_1_local_free__delete-members.html b/structwinstd_1_1_local_free__delete-members.html index a4c006a6..6c9c2976 100644 --- a/structwinstd_1_1_local_free__delete-members.html +++ b/structwinstd_1_1_local_free__delete-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/structwinstd_1_1_local_free__delete.html b/structwinstd_1_1_local_free__delete.html index 93c28668..528efab8 100644 --- a/structwinstd_1_1_local_free__delete.html +++ b/structwinstd_1_1_local_free__delete.html @@ -151,7 +151,7 @@ template<class 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 47aa5699..4f10e813 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 @@ -89,7 +89,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 c402c90b..7b54da0f 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 @@ -153,7 +153,7 @@ template<class 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 8933dbd4..cd636d6b 100644 --- a/structwinstd_1_1_unmap_view_of_file__delete-members.html +++ b/structwinstd_1_1_unmap_view_of_file__delete-members.html @@ -86,7 +86,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 153a5024..60169509 100644 --- a/structwinstd_1_1_unmap_view_of_file__delete.html +++ b/structwinstd_1_1_unmap_view_of_file__delete.html @@ -103,7 +103,7 @@ Public Member Functions diff --git a/structwinstd_1_1_wlan_free_memory__delete-members.html b/structwinstd_1_1_wlan_free_memory__delete-members.html index 572a4d02..d5e639d7 100644 --- a/structwinstd_1_1_wlan_free_memory__delete-members.html +++ b/structwinstd_1_1_wlan_free_memory__delete-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/structwinstd_1_1_wlan_free_memory__delete.html b/structwinstd_1_1_wlan_free_memory__delete.html index ab008f6d..61dfcb71 100644 --- a/structwinstd_1_1_wlan_free_memory__delete.html +++ b/structwinstd_1_1_wlan_free_memory__delete.html @@ -121,7 +121,7 @@ struct winstd::WlanFreeMemory_delete< _Ty >

    Deleter for unique_ptr

    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 e3a0a35d..f5716806 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 @@ -89,7 +89,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 acb69ebc..cd2d62c1 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 @@ -121,7 +121,7 @@ struct winstd::WlanFreeMemory_delete< _Ty[]>

    Deleter for unique_pt

    diff --git a/structwinstd_1_1heap__allocator_1_1rebind-members.html b/structwinstd_1_1heap__allocator_1_1rebind-members.html index fd67282d..d59e1aaf 100644 --- a/structwinstd_1_1heap__allocator_1_1rebind-members.html +++ b/structwinstd_1_1heap__allocator_1_1rebind-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/structwinstd_1_1heap__allocator_1_1rebind.html b/structwinstd_1_1heap__allocator_1_1rebind.html index 30a29ea1..baeab32c 100644 --- a/structwinstd_1_1heap__allocator_1_1rebind.html +++ b/structwinstd_1_1heap__allocator_1_1rebind.html @@ -105,7 +105,7 @@ struct winstd::heap_allocator< _Ty >::rebind< _Other >

    A str

    diff --git a/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html b/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html index 14573a73..21416993 100644 --- a/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html +++ b/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/structwinstd_1_1sanitizing__allocator_1_1rebind.html b/structwinstd_1_1sanitizing__allocator_1_1rebind.html index a39ef5da..a7a64e93 100644 --- a/structwinstd_1_1sanitizing__allocator_1_1rebind.html +++ b/structwinstd_1_1sanitizing__allocator_1_1rebind.html @@ -105,7 +105,7 @@ struct winstd::sanitizing_allocator< _Ty >::rebind< _Other >

    diff --git a/topics.html b/topics.html index 18997d9d..83264a20 100644 --- a/topics.html +++ b/topics.html @@ -103,7 +103,7 @@ $(function() {