From a2d5d212570f0ed6eab2d97eba175065e4b72d08 Mon Sep 17 00:00:00 2001 From: rozmansi Date: Tue, 9 Jan 2024 18:47:02 +0000 Subject: [PATCH] deploy: abd7189ec49f246085ae96d551b04b0b17f9389d --- _c_o_m_8h_source.html | 14 +- _common_8h_source.html | 2810 +++++++++-------- _cred_8h_source.html | 4 +- _crypt_8h_source.html | 18 +- _e_a_p_8h_source.html | 16 +- _e_t_w_8h_source.html | 16 +- _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 | 10 +- _win_8h_source.html | 16 +- _win_h_t_t_p_8h_source.html | 10 +- _win_sock2_8h_source.html | 18 +- _win_trust_8h_source.html | 6 +- annotated.html | 2 +- classes.html | 2 +- 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 +- ...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 +- 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 | 2 +- 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 | 2 +- functions_g.html | 2 +- functions_h.html | 2 +- functions_i.html | 2 +- functions_l.html | 2 +- functions_m.html | 2 +- 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 | 2 +- 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 | 58 +- 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 | 2 +- group___win_std_win_h_t_t_p.html | 2 +- group___win_trust_a_p_i.html | 2 +- hierarchy.html | 2 +- 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 | 5 +- search/functions_13.js | 3 +- ..._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 +- 283 files changed, 1763 insertions(+), 1815 deletions(-) diff --git a/_c_o_m_8h_source.html b/_c_o_m_8h_source.html index 468e1da8..c9ec7abf 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:1263
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1005
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
Numerical runtime error.
Definition Common.h:1457
-
HRESULT error_type
Error number type.
Definition Common.h:1459
+
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
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:1010
+
static const T invalid
Invalid handle value.
Definition Common.h:1009
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 0e4fd08b..2c9677ee 100644 --- a/_common_8h_source.html +++ b/_common_8h_source.html @@ -253,1417 +253,1421 @@ $(function() { codefold.init(0); });
241#endif
242
245
-
-
256static int vsnprintf(_Out_z_cap_(capacity) wchar_t *str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const wchar_t *format, _In_ va_list arg) noexcept
-
257{
-
258 return _vsnwprintf(str, capacity, format, arg);
-
259}
-
-
260
-
270template<class _Elem, class _Traits, class _Ax>
-
-
271static int vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, _In_ va_list arg)
-
272{
-
273 _Elem buf[WINSTD_STACK_BUFFER_BYTES/sizeof(_Elem)];
-
274
-
275 // Try with stack buffer first.
-
276 int count = vsnprintf(buf, _countof(buf), format, arg);
-
277 if (0 <= count && count < _countof(buf)) {
-
278 // Copy from stack.
-
279 str.append(buf, count);
-
280 return count;
-
281 }
-
282 if (count < 0) {
-
283 switch (errno) {
-
284 case 0:
-
285 count = vsnprintf(NULL, 0, format, arg);
-
286 assert(count >= 0);
-
287 break;
-
288 case EINVAL: throw std::invalid_argument("invalid vsnprintf arguments");
-
289 case EILSEQ: throw std::runtime_error("encoding error");
-
290 default: throw std::runtime_error("failed to format string");
-
291 }
-
292 }
-
293 size_t offset = str.size();
-
294 str.resize(offset + count);
-
295 if (vsnprintf(&str[offset], count + 1, format, arg) != count)
-
296 throw std::runtime_error("failed to format string");
-
297 return count;
-
298}
-
-
299
-
308template<class _Elem, class _Traits, class _Ax>
-
-
309static int sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
-
310{
-
311 va_list arg;
-
312 va_start(arg, format);
-
313 const int res = vsprintf(str, format, arg);
-
314 va_end(arg);
-
315 return res;
-
316}
-
-
317
-
323template<class _Traits, class _Ax>
-
-
324static _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
-
325{
-
326 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
327
-
328 // Try to convert to stack buffer first.
-
329 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
330 if (cch) {
-
331 // Copy from stack. Be careful not to include zero terminator.
-
332 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
333 }
-
334 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
335 // Query the required output size. Allocate buffer. Then convert again.
-
336 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
337 sMultiByteStr.resize(cch);
-
338 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
339 sMultiByteStr.resize(cchWideChar != -1 ? strnlen(&sMultiByteStr[0], cch) : (size_t)cch - 1);
-
340 }
-
341
-
342 return cch;
-
343}
-
-
344
-
350template<class _Ax>
-
-
351static _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
-
352{
-
353 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
354
-
355 // Try to convert to stack buffer first.
-
356 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
357 if (cch) {
-
358 // Copy from stack.
-
359 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
360 }
-
361 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
362 // Query the required output size. Allocate buffer. Then convert again.
-
363 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
364 sMultiByteStr.resize(cch);
-
365 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
366 }
-
367
-
368 return cch;
-
369}
-
-
370
-
376template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
377static _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
-
378{
-
379 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
380
-
381 // Try to convert to stack buffer first.
-
382 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
383 if (cch) {
-
384 // Copy from stack.
-
385 sMultiByteStr.assign(szStackBuffer, cch);
-
386 }
-
387 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
388 // Query the required output size. Allocate buffer. Then convert again.
-
389 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
390 sMultiByteStr.resize(cch);
-
391 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
392 }
-
393
-
394 return cch;
-
395}
-
-
396
-
404template<class _Traits, class _Ax>
-
-
405static _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
-
406{
-
407 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
408
-
409 // Try to convert to stack buffer first.
-
410 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
411 if (cch) {
-
412 // Copy from stack. Be careful not to include zero terminator.
-
413 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
414 }
-
415 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
416 // Query the required output size. Allocate buffer. Then convert again.
-
417 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
418 sMultiByteStr.resize(cch);
-
419 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
420 sMultiByteStr.resize(cchWideChar != -1 ? strnlen(&sMultiByteStr[0], cch) : (size_t)cch - 1);
-
421 }
-
422
-
423 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
424
-
425 return cch;
-
426}
-
-
427
-
435template<class _Ax>
-
-
436static _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
-
437{
-
438 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
439
-
440 // Try to convert to stack buffer first.
-
441 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
442 if (cch) {
-
443 // Copy from stack.
-
444 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
445 }
-
446 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
447 // Query the required output size. Allocate buffer. Then convert again.
-
448 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
449 sMultiByteStr.resize(cch);
-
450 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
451 }
-
452
-
453 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
454
-
455 return cch;
-
456}
-
-
457
-
465template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
466static _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
-
467{
-
468 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
-
469
-
470 // Try to convert to stack buffer first.
-
471 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
472 if (cch) {
-
473 // Copy from stack.
-
474 sMultiByteStr.assign(szStackBuffer, cch);
-
475 }
-
476 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
477 // Query the required output size. Allocate buffer. Then convert again.
-
478 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
479 sMultiByteStr.resize(cch);
-
480 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), &sMultiByteStr[0], cch, lpDefaultChar, lpUsedDefaultChar);
-
481 }
-
482
-
483 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
484
-
485 return cch;
-
486}
-
-
487
-
493template<class _Traits, class _Ax>
-
-
494static _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
-
495{
-
496 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
497
-
498 // Try to convert to stack buffer first.
-
499 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
500 if (cch) {
-
501 // Copy from stack.
-
502 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
503 }
-
504 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
505 // Query the required output size. Allocate buffer. Then convert again.
-
506 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
507 sWideCharStr.resize(cch);
-
508 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, &sWideCharStr[0], cch);
-
509 sWideCharStr.resize(cbMultiByte != -1 ? wcsnlen(&sWideCharStr[0], cch) : (size_t)cch - 1);
-
510 }
-
511
-
512 return cch;
-
513}
-
-
514
-
520template<class _Ax>
-
-
521static _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
-
522{
-
523 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
524
-
525 // Try to convert to stack buffer first.
-
526 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
527 if (cch) {
-
528 // Copy from stack.
-
529 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
530 }
-
531 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
532 // Query the required output size. Allocate buffer. Then convert again.
-
533 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
534 sWideCharStr.resize(cch);
-
535 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
536 }
-
537
-
538 return cch;
-
539}
-
-
540
-
546template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
547static _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
-
548{
-
549 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
550
-
551 // Try to convert to stack buffer first.
-
552 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
553 if (cch) {
-
554 // Copy from stack.
-
555 sWideCharStr.assign(szStackBuffer, cch);
-
556 }
-
557 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
558 // Query the required output size. Allocate buffer. Then convert again.
-
559 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
560 sWideCharStr.resize(cch);
-
561 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), &sWideCharStr[0], cch);
-
562 }
-
563
-
564 return cch;
-
565}
-
-
566
-
574template<class _Traits, class _Ax>
-
-
575static _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
-
576{
-
577 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
578
-
579 // Try to convert to stack buffer first.
-
580 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
581 if (cch) {
-
582 // Copy from stack.
-
583 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
584 }
-
585 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
586 // Query the required output size. Allocate buffer. Then convert again.
-
587 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
588 sWideCharStr.resize(cch);
-
589 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, &sWideCharStr[0], cch);
-
590 sWideCharStr.resize(cbMultiByte != -1 ? wcsnlen(&sWideCharStr[0], cch) : (size_t)cch - 1);
-
591 }
-
592
-
593 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
594
-
595 return cch;
-
596}
-
-
597
-
605template<class _Ax>
-
-
606static _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
-
607{
-
608 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
609
-
610 // Try to convert to stack buffer first.
-
611 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
612 if (cch) {
-
613 // Copy from stack.
-
614 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
615 }
-
616 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
617 // Query the required output size. Allocate buffer. Then convert again.
-
618 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
619 sWideCharStr.resize(cch);
-
620 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
621 }
-
622
-
623 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
624
-
625 return cch;
-
626}
-
-
627
-
635template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
-
636static _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
-
637{
-
638 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
-
639
-
640 // Try to convert to stack buffer first.
-
641 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
642 if (cch) {
-
643 // Copy from stack.
-
644 sWideCharStr.assign(szStackBuffer, cch);
-
645 }
-
646 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
647 // Query the required output size. Allocate buffer. Then convert again.
-
648 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
649 sWideCharStr.resize(cch);
-
650 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), &sWideCharStr[0], cch);
-
651 }
-
652
-
653 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
654
-
655 return cch;
-
656}
-
-
657
-
663template<class _Traits, class _Ax>
-
-
664static 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)
-
665{
-
666 std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
-
667 DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>((LPSTR*)get_ptr(lpBuffer)), 0, Arguments);
-
668 if (dwResult)
-
669 str.assign(lpBuffer.get(), dwResult);
-
670 return dwResult;
-
671}
-
-
672
-
678template<class _Traits, class _Ax>
-
-
679static 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)
-
680{
-
681 std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
-
682 DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>((LPWSTR*)get_ptr(lpBuffer)), 0, Arguments);
-
683 if (dwResult)
-
684 str.assign(lpBuffer.get(), dwResult);
-
685 return dwResult;
-
686}
-
-
687
-
689
-
690#pragma warning(pop)
-
691
-
692namespace winstd
-
693{
-
696
-
700#ifdef _UNICODE
-
701 typedef std::wstring tstring;
-
702#else
-
703 typedef std::string tstring;
-
704#endif
-
705
-
709 template <class _Ty>
-
- -
711 {
- -
713
- -
718
-
722 template <class _Ty2> LocalFree_delete(const LocalFree_delete<_Ty2>&) {}
-
723
-
-
729 void operator()(_Ty *_Ptr) const
-
730 {
-
731 LocalFree(_Ptr);
-
732 }
-
-
733 };
-
-
734
-
738 template <class _Ty>
-
-
739 struct LocalFree_delete<_Ty[]>
-
740 {
- -
742
-
746 LocalFree_delete() noexcept {}
-
747
-
-
751 void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
-
752 {
-
753 LocalFree(_Ptr);
-
754 }
-
-
755
-
761 template<class _Other>
-
-
762 void operator()(_Other *) const
-
763 {
-
764 LocalFree(_Ptr);
-
765 }
-
-
766 };
-
-
767
-
- -
772 {
- -
777
-
-
783 void operator()(HGLOBAL _Ptr) const
-
784 {
-
785 GlobalFree(_Ptr);
-
786 }
-
-
787 };
-
-
788
-
792 template <class T>
-
- -
794 {
- - -
797
-
798 public:
-
-
804 globalmem_accessor(_In_ HGLOBAL hMem) : m_h(hMem)
-
805 {
-
806 m_data = reinterpret_cast<T*>(GlobalLock(hMem));
-
807 if (!m_data)
-
808 throw win_runtime_error("GlobalLock failed");
-
809 }
-
-
810
-
- -
817 {
-
818 GlobalUnlock(m_h);
-
819 }
-
-
820
-
-
824 T* data() const noexcept
-
825 {
-
826 return m_data;
-
827 }
-
-
828
-
829 protected:
-
830 HGLOBAL m_h;
- -
832 };
-
-
833
-
837 template<class _Ty, class _Dx>
-
- -
839 {
-
840 public:
-
-
846 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) :
-
847 m_own(owner),
-
848 m_ptr(owner.release())
-
849 {}
-
-
850
-
- -
857 m_own(other.m_own),
-
858 m_ptr(other.m_ptr)
-
859 {
-
860 other.m_ptr = nullptr;
-
861 }
-
-
862
-
- -
867 {
-
868 if (m_ptr != nullptr)
-
869 m_own.reset(m_ptr);
-
870 }
-
-
871
-
-
877 operator typename _Ty**()
-
878 {
-
879 return &m_ptr;
-
880 }
-
-
881
-
-
887 operator typename _Ty*&()
-
888 {
-
889 return m_ptr;
-
890 }
-
-
891
-
892 protected:
-
893 std::unique_ptr<_Ty, _Dx> &m_own;
-
894 _Ty *m_ptr;
-
895 };
-
-
896
-
904 template<class _Ty, class _Dx>
-
-
905 ref_unique_ptr<_Ty, _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) noexcept
-
906 {
- -
908 }
-
-
909
-
914 template<class _Ty, class _Dx>
-
- -
916 {
-
917 public:
-
-
923 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept :
-
924 m_own(owner),
-
925 m_ptr(owner.release())
-
926 {}
-
-
927
-
- -
934 m_own(other.m_own),
-
935 m_ptr(other.m_ptr)
-
936 {
-
937 other.m_ptr = nullptr;
-
938 }
-
-
939
-
- -
944 {
-
945 if (m_ptr != nullptr)
-
946 m_own.reset(m_ptr);
-
947 }
-
-
948
-
-
954 operator typename _Ty**() noexcept
-
955 {
-
956 return &m_ptr;
-
957 }
-
-
958
-
-
964 operator typename _Ty*&()
-
965 {
-
966 return m_ptr;
-
967 }
-
-
968
-
969 protected:
-
970 std::unique_ptr<_Ty[], _Dx> &m_own;
- -
972 };
-
-
973
-
982 template<class _Ty, class _Dx>
-
-
983 ref_unique_ptr<_Ty[], _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx>& owner) noexcept
-
984 {
- -
986 }
-
-
987
-
989
-
992
-
998 template <class T, const T INVAL>
-
-
999 class handle
-
1000 {
-
1001 public:
- -
1006
-
1010 static const T invalid;
-
1011
-
- -
1016 {}
-
-
1017
- -
1025
-
- -
1032 {
-
1033 // Transfer handle.
-
1034 m_h = h.m_h;
-
1035 h.m_h = invalid;
-
1036 }
-
-
1037
-
1038 private:
-
1039 // This class is noncopyable.
-
1040 handle(_In_ const handle<handle_type, INVAL> &h) noexcept {};
-
1041 handle<handle_type, INVAL>& operator=(_In_ const handle<handle_type, INVAL> &h) noexcept {};
-
1042
-
1043 public:
-
- -
1050 {
-
1051 attach(h);
-
1052 return *this;
-
1053 }
-
-
1054
-
1060 #pragma warning(suppress: 26432) // Move constructor is also present, but not detected by code analysis somehow.
-
- -
1062 {
-
1063 if (this != std::addressof(h)) {
-
1064 // Transfer handle.
-
1065 if (m_h != invalid)
-
1066 free_internal();
-
1067 m_h = h.m_h;
-
1068 h.m_h = invalid;
-
1069 }
-
1070 return *this;
-
1071 }
-
-
1072
-
-
1078 operator handle_type() const
-
1079 {
-
1080 return m_h;
-
1081 }
-
-
1082
-
- -
1089 {
-
1090 assert(m_h != invalid);
-
1091 return *m_h;
-
1092 }
-
-
1093
-
- -
1099 {
-
1100 assert(m_h == invalid);
-
1101 return &m_h;
-
1102 }
-
-
1103
-
- -
1110 {
-
1111 assert(m_h != invalid);
-
1112 return m_h;
-
1113 }
-
-
1114
-
-
1125 bool operator!() const
-
1126 {
-
1127 return m_h == invalid;
-
1128 }
-
-
1129
-
- -
1139 {
-
1140 return m_h < h;
-
1141 }
-
-
1142
-
- -
1152 {
-
1153 return !operator>(h);
-
1154 }
-
-
1155
-
- -
1165 {
-
1166 return !operator<(h);
-
1167 }
-
-
1168
-
- -
1178 {
-
1179 return h < m_h;
-
1180 }
-
-
1181
-
- -
1191 {
-
1192 return !operator==(h);
-
1193 }
-
-
1194
-
- -
1204 {
-
1205 return m_h == h;
-
1206 }
-
-
1207
-
- -
1216 {
-
1217 if (m_h != invalid)
-
1218 free_internal();
-
1219 m_h = h;
-
1220 }
-
-
1221
-
- -
1228 {
-
1229 handle_type h = m_h;
-
1230 m_h = invalid;
-
1231 return h;
-
1232 }
-
-
1233
-
-
1237 void free()
-
1238 {
-
1239 if (m_h != invalid) {
-
1240 free_internal();
-
1241 m_h = invalid;
-
1242 }
-
1243 }
-
-
1244
-
1245 protected:
-
1249 virtual void free_internal() noexcept = 0;
-
1250
-
1251 protected:
- -
1253 };
-
-
1254
-
1255 template <class T, const T INVAL>
-
1256 const T handle<T, INVAL>::invalid = INVAL;
-
1257
-
1261 template <class T, T INVAL>
-
- -
1263 {
-
1264 public:
-
- -
1269 {}
-
-
1270
- -
1278
- -
1285 {}
-
1286
-
1292 dplhandle<handle_type, INVAL>(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept : handle<handle_type, INVAL>(std::move(h))
-
1293 {}
-
1294
-
- -
1301 {
- -
1303 return *this;
-
1304 }
-
-
1305
-
- -
1312 {
-
1313 if (this != std::addressof(h)) {
-
1314 if (h.m_h != invalid) {
-
1315 handle_type h_new = duplicate_internal(h.m_h);
-
1316
-
1317 if (m_h != invalid)
-
1318 free_internal();
-
1319
-
1320 m_h = h_new;
-
1321 } else {
-
1322 if (m_h != invalid)
-
1323 free_internal();
-
1324
-
1325 m_h = invalid;
-
1326 }
-
1327 }
-
1328 return *this;
-
1329 }
-
-
1330
-
1336 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
-
- -
1338 {
- -
1340 return *this;
-
1341 }
-
-
1342
-
- -
1349 {
-
1350 return m_h != invalid ? duplicate_internal(m_h) : invalid;
-
1351 }
-
-
1352
-
- -
1359 {
-
1360 if (m_h != invalid)
-
1361 free_internal();
-
1362
-
1363 m_h = h != invalid ? duplicate_internal(h) : invalid;
-
1364 }
-
-
1365
-
1366 protected:
- -
1376 };
-
-
1377
-
1379
-
1382
-
- -
1393 {
-
1394 std::string sResult;
- -
1396 if (hFoundRes) {
- -
1398 if (dwSize) {
- -
1400 if (hLoadedRes) {
-
1401 LPCWSTR szMessage = reinterpret_cast<LPCWSTR>(LockResource(hLoadedRes));
-
1402 if (szMessage) {
- -
1404 return sResult;
-
1405 } else
- -
1407 }
-
1408 }
-
1409 }
-
1410 sprintf(sResult, "msg %u", nId);
-
1411 return sResult;
-
1412 }
-
-
1413
-
- -
1424 {
-
1425 std::string sResult;
- -
1427 if (hFoundRes) {
- -
1429 if (dwSize) {
- -
1431 if (hLoadedRes) {
-
1432 LPCWSTR szFormat = reinterpret_cast<LPCWSTR>(LockResource(hLoadedRes));
-
1433 if (szFormat) {
-
1434 dwSize /= sizeof(*szFormat);
-
1435 assert(wcsnlen(szFormat, dwSize) < dwSize); // Resource strings must be zero-terminated to make strings directly usable with sprintf.
-
1436 va_list arg;
- -
1438 std::wstring sMessage;
- -
1440 va_end(arg);
- -
1442 return sResult;
-
1443 } else
- -
1445 }
-
1446 }
-
1447 }
-
1448 sprintf(sResult, "msg %u", nId);
-
1449 return sResult;
-
1450 }
-
-
1451
-
1455 template <typename _Tn>
-
-
1456 class num_runtime_error : public std::runtime_error
-
1457 {
-
1458 public:
-
1459 typedef _Tn error_type;
-
1460
-
1461 public:
-
- -
1469 m_num(num),
-
1470 runtime_error(msg)
-
1471 {}
-
-
1472
-
- -
1480 m_num(num),
-
1481 runtime_error(msg)
-
1482 {}
-
-
1483
-
- -
1488 {
-
1489 return m_num;
-
1490 }
-
-
1491
-
1492 protected:
- -
1494 };
-
-
1495
-
- -
1500 {
-
1501 public:
- -
1509
-
-
1516 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg + ": " + message(num))
-
1517 {}
-
-
1518
-
- -
1526 {}
-
-
1527
- -
1533
-
-
1539 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg + ": " + message(GetLastError()))
-
1540 {}
-
-
1541
-
- -
1548 {}
-
-
1549
-
1550 protected:
-
- -
1558 {
- -
1560 std::wstring wstr;
- -
1562 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
-
1563 wstr.erase(wstr.find_last_not_of(L" \t\n\r\f\v") + 1);
-
1564 } else
-
1565 sprintf(wstr, num >= 0x10000 ? L"Error 0x%X" : L"Error %u", num);
-
1566 std::string str;
- - -
1569 return str;
-
1570 }
-
-
1571 };
-
-
1572
-
1574
-
1577
-
1581 template<class _Elem, class _Traits, class _Ax>
-
-
1582 class basic_string_printf : public std::basic_string<_Elem, _Traits, _Ax>
-
1583 {
-
1584 public:
-
1587
-
- -
1594 {
-
1595 va_list arg;
- -
1597 vsprintf(*this, format, arg);
-
1598 va_end(arg);
-
1599 }
-
-
1600
-
1602
-
1605
-
- -
1613 {
-
1614 _Myt format;
-
1615 ATLENSURE(format.LoadString(hInstance, nFormatID));
-
1616
-
1617 va_list arg;
- -
1619 vsprintf(*this, format, arg);
-
1620 va_end(arg);
-
1621 }
-
-
1622
-
- -
1631 {
-
1632 _Myt format;
- -
1634
-
1635 va_list arg;
- -
1637 vsprintf(*this, format, arg);
-
1638 va_end(arg);
-
1639 }
-
-
1640
-
1642 };
-
-
1643
-
1647 typedef basic_string_printf<char, std::char_traits<char>, std::allocator<char> > string_printf;
-
1648
-
1652 typedef basic_string_printf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_printf;
-
1653
-
1657#ifdef _UNICODE
-
1658 typedef wstring_printf tstring_printf;
-
1659#else
-
1660 typedef string_printf tstring_printf;
-
1661#endif
-
1662
-
1666 template<class _Elem, class _Traits, class _Ax>
-
-
1667 class basic_string_msg : public std::basic_string<_Elem, _Traits, _Ax>
-
1668 {
-
1669 public:
-
1672
-
- -
1679 {
-
1680 va_list arg;
- - -
1683 va_end(arg);
-
1684 }
-
-
1685
-
1687
-
1690
-
- -
1698 {
-
1699 _Myt format(GetManager());
-
1700 ATLENSURE(format.LoadString(hInstance, nFormatID));
-
1701
-
1702 va_list arg;
- - -
1705 va_end(arg);
-
1706 }
-
-
1707
-
- -
1716 {
-
1717 _Myt format(GetManager());
- -
1719
-
1720 va_list arg;
- - -
1723 va_end(arg);
-
1724 }
-
-
1725
-
1727
- -
1737
- -
1747
- -
1757
- -
1767 };
-
-
1768
-
1772 typedef basic_string_msg<char, std::char_traits<char>, std::allocator<char> > string_msg;
-
1773
-
1777 typedef basic_string_msg<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_msg;
-
1778
-
1782#ifdef _UNICODE
-
1783 typedef wstring_msg tstring_msg;
-
1784#else
-
1785 typedef string_msg tstring_msg;
-
1786#endif
-
1787
-
1791 template<class _Elem, class _Traits, class _Ax>
-
-
1792 class basic_string_guid : public std::basic_string<_Elem, _Traits, _Ax>
-
1793 {
-
1794 public:
-
1797
-
- -
1805 {
- -
1807 guid.Data1,
-
1808 guid.Data2,
-
1809 guid.Data3,
-
1810 guid.Data4[0], guid.Data4[1],
-
1811 guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
-
1812 }
-
-
1813
-
1815 };
-
-
1816
-
-
1820 class string_guid : public basic_string_guid<char, std::char_traits<char>, std::allocator<char> >
-
1821 {
-
1822 public:
-
1825
-
- -
1832 basic_string_guid<char, std::char_traits<char>, std::allocator<char> >(guid, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
-
1833 {}
-
-
1834
-
1836 };
-
-
1837
-
-
1841 class wstring_guid : public basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
-
1842 {
-
1843 public:
-
1846
-
- -
1853 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}")
-
1854 {}
-
-
1855
-
1857 };
-
-
1858
-
1862#ifdef _UNICODE
-
1863 typedef wstring_guid tstring_guid;
-
1864#else
-
1865 typedef string_guid tstring_guid;
-
1866#endif
-
1867
-
1869
-
1872
-
1873 // winstd::sanitizing_allocator::destroy() member generates _Ptr parameter not used warning for primitive datatypes _Ty.
-
1874 #pragma warning(push)
-
1875 #pragma warning(disable: 4100)
-
1876
-
1884 template<class _Ty>
-
-
1885 class sanitizing_allocator : public std::allocator<_Ty>
-
1886 {
-
1887 public:
-
1888 typedef std::allocator<_Ty> _Mybase;
-
1889
-
1893 template<class _Other>
-
-
1894 struct rebind
-
1895 {
- -
1897 };
-
-
1898
- -
1904
- -
1910
-
1914 template<class _Other>
- -
1917
-
-
1921 void deallocate(_In_ _Ty* const _Ptr, _In_ const std::size_t _Count)
-
1922 {
-
1923 // Sanitize then free.
-
1924 SecureZeroMemory(_Ptr, sizeof(_Ty) * _Count);
-
1925 _Mybase::deallocate(_Ptr, _Count);
-
1926 }
-
-
1927 };
-
-
1928
-
1929 #pragma warning(pop)
-
1930
-
1938 typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > sanitizing_string;
-
1939
-
1947 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > sanitizing_wstring;
-
1948
-
1952#ifdef _UNICODE
-
1953 typedef sanitizing_wstring sanitizing_tstring;
-
1954#else
-
1955 typedef sanitizing_string sanitizing_tstring;
-
1956#endif
-
1957
-
1961 template<size_t N>
-
- -
1963 {
-
1964 public:
-
- -
1969 {
-
1970 ZeroMemory(m_data, N);
-
1971 }
-
-
1972
-
- -
1977 {
-
1978 SecureZeroMemory(m_data, N);
-
1979 }
-
-
1980
-
1981 public:
-
1982 unsigned char m_data[N];
-
1983 };
-
-
1984
-
1986}
-
Base template class to support converting GUID to string.
Definition Common.h:1793
-
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:1804
-
Base template class to support string formatting using FormatMessage() style templates.
Definition Common.h:1668
-
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:1743
-
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1753
-
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:1715
-
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:1733
-
basic_string_msg(const _Elem *format,...)
Initializes a new string and formats its contents using FormatMessage() style template.
Definition Common.h:1678
-
basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1697
-
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1763
-
Base template class to support string formatting using printf() style templates.
Definition Common.h:1583
-
basic_string_printf(const _Elem *format,...)
Initializes a new string and formats its contents using printf() style template.
Definition Common.h:1593
-
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:1630
-
basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1612
-
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1263
+
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}
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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}
+
+
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 }
+
+
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 };
+
+
766
+
+ +
771 {
+ +
776
+
+
782 void operator()(HGLOBAL _Ptr) const
+
783 {
+
784 GlobalFree(_Ptr);
+
785 }
+
+
786 };
+
+
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 }
+
+
809
+
+ +
816 {
+
817 GlobalUnlock(m_h);
+
818 }
+
+
819
+
+
823 T* data() const noexcept
+
824 {
+
825 return m_data;
+
826 }
+
+
827
+
828 protected:
+
829 HGLOBAL m_h;
+ +
831 };
+
+
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 {}
+
+
849
+
+ +
856 m_own(other.m_own),
+
857 m_ptr(other.m_ptr)
+
858 {
+
859 other.m_ptr = nullptr;
+
860 }
+
+
861
+
+ +
866 {
+
867 if (m_ptr != nullptr)
+
868 m_own.reset(m_ptr);
+
869 }
+
+
870
+
+
876 operator typename _Ty**()
+
877 {
+
878 return &m_ptr;
+
879 }
+
+
880
+
+
886 operator typename _Ty*&()
+
887 {
+
888 return m_ptr;
+
889 }
+
+
890
+
891 protected:
+
892 std::unique_ptr<_Ty, _Dx> &m_own;
+
893 _Ty *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 }
+
+
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 {}
+
+
926
+
+ +
933 m_own(other.m_own),
+
934 m_ptr(other.m_ptr)
+
935 {
+
936 other.m_ptr = nullptr;
+
937 }
+
+
938
+
+ +
943 {
+
944 if (m_ptr != nullptr)
+
945 m_own.reset(m_ptr);
+
946 }
+
+
947
+
+
953 operator typename _Ty**() noexcept
+
954 {
+
955 return &m_ptr;
+
956 }
+
+
957
+
+
963 operator typename _Ty*&()
+
964 {
+
965 return m_ptr;
+
966 }
+
+
967
+
968 protected:
+
969 std::unique_ptr<_Ty[], _Dx> &m_own;
+ +
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 }
+
+
986
+
988
+
991
+
997 template <class T, const T INVAL>
+
+
998 class handle
+
999 {
+
1000 public:
+ +
1005
+
1009 static const T invalid;
+
1010
+
+ +
1015 {}
+
+
1016
+ +
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 }
+
+
1071
+
+
1077 operator handle_type() const
+
1078 {
+
1079 return m_h;
+
1080 }
+
+
1081
+
+ +
1088 {
+
1089 assert(m_h != invalid);
+
1090 return *m_h;
+
1091 }
+
+
1092
+
+ +
1098 {
+
1099 assert(m_h == invalid);
+
1100 return &m_h;
+
1101 }
+
+
1102
+
+ +
1109 {
+
1110 assert(m_h != invalid);
+
1111 return m_h;
+
1112 }
+
+
1113
+
+
1124 bool operator!() const
+
1125 {
+
1126 return m_h == invalid;
+
1127 }
+
+
1128
+
+ +
1138 {
+
1139 return m_h < h;
+
1140 }
+
+
1141
+
+ +
1151 {
+
1152 return !operator>(h);
+
1153 }
+
+
1154
+
+ +
1164 {
+
1165 return !operator<(h);
+
1166 }
+
+
1167
+
+ +
1177 {
+
1178 return h < m_h;
+
1179 }
+
+
1180
+
+ +
1190 {
+
1191 return !operator==(h);
+
1192 }
+
+
1193
+
+ +
1203 {
+
1204 return m_h == h;
+
1205 }
+
+
1206
+
+ +
1215 {
+
1216 if (m_h != invalid)
+
1217 free_internal();
+
1218 m_h = h;
+
1219 }
+
+
1220
+
+ +
1227 {
+
1228 handle_type h = m_h;
+
1229 m_h = invalid;
+
1230 return h;
+
1231 }
+
+
1232
+
+
1236 void free()
+
1237 {
+
1238 if (m_h != invalid) {
+
1239 free_internal();
+
1240 m_h = invalid;
+
1241 }
+
1242 }
+
+
1243
+
1244 protected:
+
1248 virtual void free_internal() noexcept = 0;
+
1249
+
1250 protected:
+ +
1252 };
+
+
1253
+
1254 template <class T, const T INVAL>
+
1255 const T handle<T, INVAL>::invalid = INVAL;
+
1256
+
1260 template <class T, T INVAL>
+
+ +
1262 {
+
1263 public:
+
+ +
1268 {}
+
+
1269
+ +
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 }
+
+
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();
+
1318
+
1319 m_h = h_new;
+
1320 } else {
+
1321 if (m_h != invalid)
+
1322 free_internal();
+
1323
+
1324 m_h = invalid;
+
1325 }
+
1326 }
+
1327 return *this;
+
1328 }
+
+
1329
+
1335 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+
+ +
1337 {
+ +
1339 return *this;
+
1340 }
+
+
1341
+
+ +
1348 {
+
1349 return m_h != invalid ? duplicate_internal(m_h) : invalid;
+
1350 }
+
+
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 };
+
+
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 }
+
+
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 }
+
+
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 {}
+
+
1471
+
+ +
1479 m_num(num),
+
1480 runtime_error(msg)
+
1481 {}
+
+
1482
+
+ +
1487 {
+
1488 return m_num;
+
1489 }
+
+
1490
+
1491 protected:
+ +
1493 };
+
+
1494
+
+ +
1499 {
+
1500 public:
+ +
1508
+
+
1515 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg + ": " + message(num))
+
1516 {}
+
+
1517
+
+ +
1525 {}
+
+
1526
+ +
1532
+
+
1538 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg + ": " + message(GetLastError()))
+
1539 {}
+
+
1540
+
+ +
1547 {}
+
+
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 }
+
+
1570 };
+
+
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 }
+
+
1599
+
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 }
+
+
1621
+
+ +
1630 {
+
1631 _Myt format;
+ +
1633
+
1634 va_list arg;
+ +
1636 vsprintf(*this, format, arg);
+
1637 va_end(arg);
+
1638 }
+
+
1639
+
1641 };
+
+
1642
+
1646 typedef basic_string_printf<char, std::char_traits<char>, std::allocator<char> > string_printf;
+
1647
+
1651 typedef basic_string_printf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_printf;
+
1652
+
1656#ifdef _UNICODE
+
1657 typedef wstring_printf tstring_printf;
+
1658#else
+
1659 typedef string_printf tstring_printf;
+
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 }
+
+
1684
+
1686
+
1689
+
+ +
1697 {
+
1698 _Myt format(GetManager());
+
1699 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1700
+
1701 va_list arg;
+ + +
1704 va_end(arg);
+
1705 }
+
+
1706
+
+ +
1715 {
+
1716 _Myt format(GetManager());
+ +
1718
+
1719 va_list arg;
+ + +
1722 va_end(arg);
+
1723 }
+
+
1724
+
1726
+ +
1736
+ +
1746
+ +
1756
+ +
1766 };
+
+
1767
+
1771 typedef basic_string_msg<char, std::char_traits<char>, std::allocator<char> > string_msg;
+
1772
+
1776 typedef basic_string_msg<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_msg;
+
1777
+
1781#ifdef _UNICODE
+
1782 typedef wstring_msg tstring_msg;
+
1783#else
+
1784 typedef string_msg tstring_msg;
+
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 }
+
+
1812
+
1814 };
+
+
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 {}
+
+
1833
+
1835 };
+
+
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 {}
+
+
1854
+
1856 };
+
+
1857
+
1861#ifdef _UNICODE
+
1862 typedef wstring_guid tstring_guid;
+
1863#else
+
1864 typedef string_guid tstring_guid;
+
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 };
+
+
1897
+ +
1903
+ +
1909
+
1913 template<class _Other>
+ +
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 }
+
+
1926 };
+
+
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
+
1952 typedef sanitizing_wstring sanitizing_tstring;
+
1953#else
+
1954 typedef sanitizing_string sanitizing_tstring;
+
1955#endif
+
1956
+
1960 template<size_t N>
+
+ +
1962 {
+
1963 public:
+
+ +
1968 {
+
1969 ZeroMemory(m_data, N);
+
1970 }
+
+
1971
+
+ +
1976 {
+
1977 SecureZeroMemory(m_data, N);
+
1978 }
+
+
1979
+
1980 public:
+
1981 unsigned char m_data[N];
+
1982 };
+
+
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
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:1300
-
handle_type duplicate() const
Duplicates and returns a new object handle.
Definition Common.h:1348
-
dplhandle< handle_type, INVAL > & operator=(dplhandle< handle_type, INVAL > &&h) noexcept
Moves the object.
Definition Common.h:1337
-
void attach_duplicated(handle_type h)
Duplicates an object handle and sets a new object handle.
Definition Common.h:1358
-
dplhandle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1276
-
dplhandle< handle_type, INVAL > & operator=(const dplhandle< handle_type, INVAL > &h) noexcept
Duplicates the object.
Definition Common.h:1311
-
dplhandle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1268
-
Context scope automatic GlobalAlloc (un)access.
Definition Common.h:794
-
HGLOBAL m_h
memory handle
Definition Common.h:830
-
virtual ~globalmem_accessor()
Decrements the lock count associated with a memory object.
Definition Common.h:816
-
T * m_data
memory pointer
Definition Common.h:831
-
T * data() const noexcept
Return data pointer.
Definition Common.h:824
-
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:804
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:1000
-
handle_type *& operator*() const
Returns the object handle value when the object handle is a pointer to a value (class,...
Definition Common.h:1088
+
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
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:1015
-
bool operator>=(handle_type h) const
Is handle greater than or equal to?
Definition Common.h:1164
-
handle_type operator->() const
Provides object handle member access when the object handle is a pointer to a class or struct.
Definition Common.h:1109
-
handle_type * operator&()
Returns the object handle reference.
Definition Common.h:1098
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1005
-
handle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1023
-
bool operator<(handle_type h) const
Is handle less than?
Definition Common.h:1138
-
handle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1049
-
bool operator!() const
Tests if the object handle is invalid.
Definition Common.h:1125
-
handle< handle_type, INVAL > & operator=(handle< handle_type, INVAL > &&h) noexcept
Move assignment.
Definition Common.h:1061
-
bool operator!=(handle_type h) const
Is handle not equal to?
Definition Common.h:1190
-
void free()
Destroys the object.
Definition Common.h:1237
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1215
-
bool operator==(handle_type h) const
Is handle equal to?
Definition Common.h:1203
-
handle(handle< handle_type, INVAL > &&h) noexcept
Move constructor.
Definition Common.h:1031
-
handle_type detach()
Dismisses the object handle from this class.
Definition Common.h:1227
-
bool operator>(handle_type h) const
Is handle greater than?
Definition Common.h:1177
-
bool operator<=(handle_type h) const
Is handle less than or equal to?
Definition Common.h:1151
-
Numerical runtime error.
Definition Common.h:1457
-
num_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Common.h:1479
-
num_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1468
-
error_type number() const
Returns the error number.
Definition Common.h:1487
-
_Tn error_type
Error number type.
Definition Common.h:1459
-
error_type m_num
Numeric error code.
Definition Common.h:1493
-
std::unique_ptr< _Ty[], _Dx > & m_own
Original owner of the pointer.
Definition Common.h:970
-
ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition Common.h:933
-
virtual ~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:943
-
ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition Common.h:923
-
_Ty * m_ptr
Pointer.
Definition Common.h:971
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
-
std::unique_ptr< _Ty, _Dx > & m_own
Original owner of the pointer.
Definition Common.h:893
-
_Ty * m_ptr
Pointer.
Definition Common.h:894
-
ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)
Moves object.
Definition Common.h:856
-
~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:866
-
ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)
Takes ownership of the pointer.
Definition Common.h:846
-
An allocator template that sanitizes each memory block before it is destroyed or reallocated.
Definition Common.h:1886
-
sanitizing_allocator(const sanitizing_allocator< _Ty > &_Othr)
Construct by copying.
Definition Common.h:1908
-
sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept
Construct from a related allocator.
Definition Common.h:1915
-
void deallocate(_Ty *const _Ptr, const std::size_t _Count)
Deallocate object at _Ptr sanitizing its content first.
Definition Common.h:1921
-
std::allocator< _Ty > _Mybase
Base type.
Definition Common.h:1888
-
sanitizing_allocator() noexcept
Construct default allocator.
Definition Common.h:1902
-
Sanitizing BLOB.
Definition Common.h:1963
-
sanitizing_blob()
Constructs uninitialized BLOB.
Definition Common.h:1968
-
~sanitizing_blob()
Sanitizes BLOB.
Definition Common.h:1976
-
Single-byte character implementation of a class to support converting GUID to string.
Definition Common.h:1821
-
string_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1831
-
Windows runtime error.
Definition Common.h:1500
-
win_runtime_error(const char *msg)
Constructs an exception using GetLastError()
Definition Common.h:1547
-
win_runtime_error(error_type num, const char *msg)
Constructs an exception.
Definition Common.h:1525
-
win_runtime_error(error_type num)
Constructs an exception.
Definition Common.h:1507
-
win_runtime_error()
Constructs an exception using GetLastError()
Definition Common.h:1531
-
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:1557
-
win_runtime_error(const std::string &msg)
Constructs an exception using GetLastError()
Definition Common.h:1539
-
win_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1516
-
Wide character implementation of a class to support converting GUID to string.
Definition Common.h:1842
-
wstring_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1852
-
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:1392
-
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:1423
+
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
#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:703
-
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:905
+
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
#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:1947
-
sanitizing_string sanitizing_tstring
Multi-byte / Wide-character sanitizing string (according to _UNICODE)
Definition Common.h:1955
-
std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > sanitizing_string
A sanitizing variant of std::string.
Definition Common.h:1938
-
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:405
-
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:1652
-
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:494
-
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:679
-
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:664
-
string_guid tstring_guid
Multi-byte / Wide-character string GUID (according to _UNICODE)
Definition Common.h:1865
-
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:1777
-
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:271
-
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:1647
-
static int vsnprintf(wchar_t *str, size_t capacity, const wchar_t *format, va_list arg) noexcept
Formats string using printf().
Definition Common.h:256
-
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:575
-
string_printf tstring_printf
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1660
-
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:324
-
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:309
-
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:1772
-
string_msg tstring_msg
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1785
-
static const T invalid
Invalid handle value.
Definition Common.h:1010
-
Deleter for unique_ptr using GlobalFree.
Definition Common.h:772
-
GlobalFree_delete()
Default construct.
Definition Common.h:776
-
void operator()(HGLOBAL _Ptr) const
Delete a pointer.
Definition Common.h:783
-
LocalFree_delete() noexcept
Default construct.
Definition Common.h:746
-
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:741
-
void operator()(_Other *) const
Delete a pointer of another type.
Definition Common.h:762
-
void operator()(_Ty *_Ptr) const noexcept
Delete a pointer.
Definition Common.h:751
-
Deleter for unique_ptr using LocalFree.
Definition Common.h:711
-
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:712
-
LocalFree_delete(const LocalFree_delete< _Ty2 > &)
Construct from another LocalFree_delete.
Definition Common.h:722
-
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Common.h:729
-
LocalFree_delete()
Default construct.
Definition Common.h:717
-
Convert this type to sanitizing_allocator<_Other>
Definition Common.h:1895
-
sanitizing_allocator< _Other > other
Other type.
Definition Common.h:1896
+
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
diff --git a/_cred_8h_source.html b/_cred_8h_source.html index f3fe003c..6c29a541 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:839
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
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 8d565013..9f47f159 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:1263
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:1000
-
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:1005
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1215
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
-
Windows runtime error.
Definition Common.h:1500
+
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
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:1010
+
static const T invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_e_a_p_8h_source.html b/_e_a_p_8h_source.html index 7ee50b50..d87423a0 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:1263
+
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1262
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:1005
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1215
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
-
Windows runtime error.
Definition Common.h:1500
+
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
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:1010
+
static const T invalid
Invalid handle value.
Definition Common.h:1009
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 ae697636..5e4e0182 100644 --- a/_e_t_w_8h_source.html +++ b/_e_t_w_8h_source.html @@ -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:1000
-
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1015
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1215
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
+
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
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:271
+
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:270
#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:1010
+
static const REGHANDLE invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_g_d_i_8h_source.html b/_g_d_i_8h_source.html index f09635ec..fbde170c 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:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
+
handle_type m_h
Object handle.
Definition Common.h:1251
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:839
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
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:1010
+
static const T invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_m_s_i_8h_source.html b/_m_s_i_8h_source.html index 462f44d0..ca34e78a 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 5f9c0cbb..6225347b 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:839
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
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 7024477c..cbcbc47f 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:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1215
-
Numerical runtime error.
Definition Common.h:1457
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
+
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
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:1010
+
static const PCredHandle invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_setup_a_p_i_8h_source.html b/_setup_a_p_i_8h_source.html index 82edeff1..8933dcb4 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:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
+
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
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:1010
+
static const HDEVINFO invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_shell_8h_source.html b/_shell_8h_source.html index 0b91f0d0..475dbfe3 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 f3929576..9410a6cb 100644 --- a/_w_l_a_n_8h_source.html +++ b/_w_l_a_n_8h_source.html @@ -224,14 +224,14 @@ $(function() { codefold.init(0); });
183}
184
-
Base abstract template class to support generic object handle keeping.
Definition Common.h:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
+
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
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:1010
+
static const HANDLE invalid
Invalid handle value.
Definition Common.h:1009
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 d41a3026..9212de83 100644 --- a/_win_8h_source.html +++ b/_win_8h_source.html @@ -1888,8 +1888,8 @@ $(function() { codefold.init(0); });
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:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
+
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
@@ -1921,7 +1921,7 @@ $(function() { codefold.init(0); });
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:839
+
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
@@ -1949,14 +1949,14 @@ $(function() { codefold.init(0); });
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:1500
+
Windows runtime error.
Definition Common.h:1499
#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:271
-
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:309
+
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
#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:1010
+
static const HANDLE invalid
Invalid handle value.
Definition Common.h:1009
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
@@ -2011,7 +2011,7 @@ $(function() { codefold.init(0); }); diff --git a/_win_h_t_t_p_8h_source.html b/_win_h_t_t_p_8h_source.html index 0f4f38cc..c03d4616 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:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:999
+
handle_type m_h
Object handle.
Definition Common.h:1251
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:839
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
#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:1010
+
static const HINTERNET invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_win_sock2_8h_source.html b/_win_sock2_8h_source.html index 86581eb7..baa36491 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:1000
-
handle_type m_h
Object handle.
Definition Common.h:1252
-
Numerical runtime error.
Definition Common.h:1457
-
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:839
+
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
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:679
-
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:324
-
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:309
+
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
#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:1010
+
static const PADDRINFOA invalid
Invalid handle value.
Definition Common.h:1009
diff --git a/_win_trust_8h_source.html b/_win_trust_8h_source.html index c8acd780..9ae94c8e 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:839
-
Windows runtime error.
Definition Common.h:1500
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838
+
Windows runtime error.
Definition Common.h:1499
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 3648f187..087ce0bf 100644 --- a/annotated.html +++ b/annotated.html @@ -175,7 +175,7 @@ $(function() { diff --git a/classes.html b/classes.html index 5d1fa59a..a4df88eb 100644 --- a/classes.html +++ b/classes.html @@ -132,7 +132,7 @@ $(function() { diff --git a/classwinstd_1_1actctx__activator-members.html b/classwinstd_1_1actctx__activator-members.html index 389bdf7d..8e951c3f 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 0643d2ce..4d3e52fb 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 253e3bbc..4260806b 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 2db63094..25e2d1f8 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 e197de4b..11493d9d 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 55c23a48..172ec22c 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 21a2e492..8be53f5f 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 7eeefb2d..6b5c8c70 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 3c822606..db4bf23d 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 824c8986..007df51f 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 4565dda9..87fed74e 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 4bb8e7fe..32fe0e8d 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 e3b3bc46..23b4c0c7 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 4969768e..201407c4 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 9e7ee2b3..d84bafbd 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 788393ab..96a1fe08 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 26781733..bedda8d8 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 b0596a27..87e71a67 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 89273b47..521c24b3 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 42d8f019..b07e432b 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 5a0d1075..ae13c3bc 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 db2b5b8b..17bc7886 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 54c92fdd..6cfd13f8 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 db92de9d..56b09e3a 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 395c0867..50c79fd2 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 e600eec4..b465ce42 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 18074fbd..47c1477e 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 df5617d1..01eee76f 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 ed08052d..147f86b1 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 1cc8491b..d678fead 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 6bc572e8..578c14cf 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 bd1c4a77..ca422983 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 ca9e33e1..8b800ed0 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 69ace5c9..7902f55f 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 4b8f8c47..f909ca06 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 7dec92c9..b36c5276 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 feca0e2b..b0b0ac33 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 782da7bc..71de7b02 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 1b9c67ed..d1bfc00e 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 ae811b5b..b302ea0b 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 52781f21..d7df65f7 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 24d909d4..dee77f2f 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 373cbaeb..81e18bd2 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 53334d33..6d767377 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 b22e0c0a..5dcdb8db 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 30313e7f..3c795111 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 badf5d6c..4b640cb4 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 5c32330b..bfd649bf 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 8b506c06..a4e04bd2 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 03038796..6e729a7c 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 d759ccb2..1c82bbcd 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 48cf42e0..a24bfb45 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 fd52bc4c..03ccb4d0 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 5e70bba6..8cbefaf1 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 1311b074..c44cc481 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 6e3d5edd..f8a35421 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 6bcd555e..b5d1e43e 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 00bbd7dd..4965bdf2 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 5569c991..17e84301 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 d58fd919..2def6c59 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 86f63463..6470ec6b 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 4423e3d0..2a8ca627 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 5b4dfa1b..56358682 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 2d57ebac..3968a33f 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 9a125957..c01a6f4d 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 3305a458..58416fbc 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 29b34a71..b599f371 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 85e43eba..e4f89982 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 6f78e07e..52a8992e 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 f76c3990..f0f2d73e 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 331b0d34..8f664789 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 d44af514..cc191b42 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 ff445e59..9204c72f 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 4be05c82..cb4b217d 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 5c3dffcd..9c90d232 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 3ceac1bb..795e2396 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 95b1e8f6..a42ebdb9 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 7228adab..a099d4e6 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 ac248fd6..8826c278 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 78459b52..955d5695 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 f32d9658..96160f65 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 2122affc..a0bbb8a3 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 ecb2e918..94e906cc 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 e241cc7b..4461ca5a 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 6297bcf1..9295ef63 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 a9f129ad..2d53e07b 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 3b2ccbac..89d145d2 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 3647e7cd..e5d6adf3 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 c8eaeaec..0ce1e34c 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 db7bb347..becbc0e9 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 0801840f..c23c3971 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 b91ddd87..955885fa 100644 --- a/classwinstd_1_1library.html +++ b/classwinstd_1_1library.html @@ -257,7 +257,7 @@ Additional Inherited Members diff --git a/classwinstd_1_1num__runtime__error-members.html b/classwinstd_1_1num__runtime__error-members.html index acb738f7..43dfa0e0 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 d702998f..d28c6ddb 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 da307d8c..f07cac58 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 5df62e0d..93132a0d 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 27f6c140..ec397805 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 9406f277..8c851abf 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 688f824b..959d0d2d 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 5df80efb..b98c1c2c 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 20bd3f14..ea2f0a69 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 48693fe8..5c52bc77 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 5cca34ec..21d8cb89 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 cb43aa8c..5ed075de 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 bd42f7f8..79a52340 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 a4c5a8c3..96f528a4 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 c43e1eaf..67de1af4 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 550e6121..627a3230 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 a57af135..8e96c9ab 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 1e13aa3f..6385a580 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 72b26117..4f5d7ac2 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 1438ac15..728e0340 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 24fc99e7..22bbeae2 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 ef9162e2..a6ef7c04 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 c61f457e..34f18328 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 5e3a7b8c..84f4c961 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 9341fbd2..e642cebc 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 1cd8b4a5..3b5999b1 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 71a4d4f3..409be1ad 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 cb892081..a2939614 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 e4bd7e08..51e7691d 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 f8019c29..c33d2f08 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 b4d9978d..a9b2cd35 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 a8c43cac..931eedd9 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 a88caebb..518b15f7 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 049cde44..2e84bf2e 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 a25660d5..e44946a3 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 833d4ed7..e6eb9db1 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 ff552759..6bc775b7 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 87987511..c2c59bc4 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 e57994ba..3ca152b8 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 07be2327..769fee6f 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 07bceab6..79f7006b 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 78004fbd..ece04438 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 9020216b..a012ff08 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 8849c6ef..b29aa29d 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 a0f59ee7..17a77c85 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 80872ae2..b5a298c3 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 e3d593c0..a8c1bb52 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 3497e2b9..3597954a 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 bb4215d9..d636b070 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 77c2fa49..67479486 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 7a3f89ce..fa729286 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 a6b6e92c..a1afcf5b 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 7555a629..6b9ea378 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 284712bf..094adc83 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 0348da99..e4a60c47 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 b5fee2b4..2b70266c 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 602aa4ab..aca68a4f 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 495399f3..66f91e80 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 7b3f44f4..75af6b17 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 d6ca7616..db95bb33 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 f040c9ca..fe1836f1 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 8a77b341..5814a0fb 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 1e0cdbb2..94c3409f 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 35ef0b81..5d6443f1 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 e8fa173b..53dcdff7 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -88,7 +88,7 @@ Directories diff --git a/files.html b/files.html index ad71bf82..95857d6f 100644 --- a/files.html +++ b/files.html @@ -103,7 +103,7 @@ $(function() { diff --git a/functions.html b/functions.html index 65665a3a..d1b2f2dd 100644 --- a/functions.html +++ b/functions.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_a.html b/functions_a.html index 9fb840e3..9bed120b 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 45bd3664..4d7328f2 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 c3116314..55dc1d85 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 9780ba7c..764d7f27 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 5476d0f6..8c93d91e 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 9284f5db..f38761ef 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 e5f61764..6e6288b6 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 77e2f40a..1fa91f52 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 9de48d69..b153586c 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 07985ce2..8bf393ff 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 4635dae1..934c6490 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 29b9b9ee..9066df9e 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 75f05122..9e6dbd34 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 9d95666f..61b45e27 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 b55c69a9..cdcdda23 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 b409076c..b483395d 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 0267628f..b45eb1e5 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_n.html b/functions_func_n.html index 885c8e09..93385f63 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 b42fe289..5dde3944 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 2e6b8b39..522016c3 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 03b0ca6a..1f6dccc6 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 5c6f1ce9..560a0cad 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 65349947..d15c208e 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 36169cd7..105b863e 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 6ec3b462..f0820874 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 25654858..f5607a46 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 56e37d5b..f9d78432 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 6286161d..1a2fbb15 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -136,7 +136,7 @@ $(function() { diff --git a/functions_g.html b/functions_g.html index 50713223..cfcab56a 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 0553510a..e99f082e 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 4943e2d5..4afd5d7f 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 bd5e4f4f..82425799 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 56adcbe1..f398cd07 100644 --- a/functions_m.html +++ b/functions_m.html @@ -118,7 +118,7 @@ $(function() { diff --git a/functions_n.html b/functions_n.html index 2083b0cb..a83ff95c 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 138144dc..521ac51a 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 db6c21be..5d738c49 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 08d17d11..3c5168f1 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 688c43e6..d8b04eec 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 9072ed5a..8e340d0f 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 d0cfd4c6..360431a3 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 d04fe87e..13199c27 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 21c28275..140ae908 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 db8a45f7..c0c21c2a 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 4f67afa8..c0c365dd 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 fae43a87..04e8fbbe 100644 --- a/functions_w.html +++ b/functions_w.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index d1c603dc..877fcd55 100644 --- a/functions_~.html +++ b/functions_~.html @@ -136,7 +136,7 @@ $(function() { diff --git a/group___setup_a_p_i.html b/group___setup_a_p_i.html index 5e03b019..40b818bb 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 c44491f6..a9d83abd 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 cc462e15..36966b9e 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 a3615c34..0faa62f9 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 71c8396d..cf4e8154 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 046fa798..2ee4a412 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 304ef64c..7c13194f 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 598994ad..4d5f3a2d 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 c786f888..fb0c0eec 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 54abf92f..5da8b2bf 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 77f0d4d7..e192a6d4 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 0f9d39b4..72198d67 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 93fee8df..f952daaf 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 4cd9c7cb..7c1ddf80 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 ca7d574e..94739bbc 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 86b42b9f..a5ce8315 100644 --- a/group___win_std_str_format.html +++ b/group___win_std_str_format.html @@ -158,9 +158,6 @@ Typedefs - - - @@ -230,7 +227,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:839
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838

Macro Definition Documentation

@@ -865,57 +862,6 @@ template<class _Elem , class _Traits , class _Ax >
Returns
Number of characters in result.
- - - -

◆ vsnprintf()

- -
-
-

Functions

static int vsnprintf (wchar_t *str, size_t capacity, const wchar_t *format, va_list arg) noexcept
 Formats string using printf().
 
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().
- - - - -
- - - - - - - - - - - - - - - - - - - - - -
static int vsnprintf (wchar_t * str,
size_t capacity,
const wchar_t * format,
va_list arg )
-
-staticnoexcept
-
- -

Formats string using printf().

-
Parameters
- - - - - -
[out]strBuffer to receive string
[in]capacitySize of str in characters
[in]formatString template using printf() style
[in]argArguments to format
-
-
-
Returns
Number of characters in result.
-
@@ -1140,7 +1086,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 6a4d3661..cd16f941 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 43b98584..8d05cf7e 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 a293144a..86b8ca8b 100644 --- a/group___win_std_win_a_p_i.html +++ b/group___win_std_win_a_p_i.html @@ -2437,7 +2437,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 524d4a84..77e65bc4 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 0204acfa..2c664c29 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 a480d053..ceed3eab 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -230,7 +230,7 @@ $(function() { diff --git a/index.html b/index.html index 28ca168d..1940fe58 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:1500
+
Windows runtime error.
Definition Common.h:1499

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:324
+
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

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:839
+
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:838

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 71806bb6..e4ca88d2 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 a4676278..f2439ce0 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 83b9acdd..0b4f75f4 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 9bb69363..5eff6aa1 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -4,7 +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']]], - ['vsnprintf_4',['vsnprintf',['../group___win_std_str_format.html#ga9f831951f2e74c57aea12da36fe136d4',1,'Common.h']]], - ['vsprintf_5',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]], - ['vulnerability_6',['Reporting a Vulnerability',['../md__s_e_c_u_r_i_t_y.html#autotoc_md13',1,'']]] + ['vsprintf_4',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]], + ['vulnerability_5',['Reporting a Vulnerability',['../md__s_e_c_u_r_i_t_y.html#autotoc_md13',1,'']]] ]; diff --git a/search/functions_13.js b/search/functions_13.js index 1b7bd71d..1b620978 100644 --- a/search/functions_13.js +++ b/search/functions_13.js @@ -2,6 +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']]], - ['vsnprintf_2',['vsnprintf',['../group___win_std_str_format.html#ga9f831951f2e74c57aea12da36fe136d4',1,'Common.h']]], - ['vsprintf_3',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]] + ['vsprintf_2',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]] ]; 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 66cf2fba..c4d85ba6 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 9ef28f01..38eb845f 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 f353d513..e80ec889 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 8fbcc8ae..670c56a9 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 cf0cbd56..7419e515 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 9efe53c0..638e302d 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 8423ebe6..b89d1095 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 08ae1b16..73eb631f 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 29d8ea65..f7373cea 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 067314f8..5051b15e 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 0b9a0b0a..0a429161 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 c42b9138..bc493ccd 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 329460d7..540efcb3 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 06b8e7a5..473499b7 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 803509d7..99fdb9eb 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 d18a60fa..ab965b46 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 e435bc01..a4c006a6 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 fa55ab78..93c28668 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 e8988ebf..47aa5699 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 764bee48..c402c90b 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 49bc9f22..8933dbd4 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 2292b530..153a5024 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 ef8a34af..572a4d02 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 b63f80bf..ab008f6d 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 f1f60193..e3a0a35d 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 e6b71366..acb69ebc 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 e2579a62..fd67282d 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 9208c5bb..30a29ea1 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 7203f8b1..14573a73 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 c46e055c..a39ef5da 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 19b41180..18997d9d 100644 --- a/topics.html +++ b/topics.html @@ -103,7 +103,7 @@ $(function() {