From da11b7a8cc515af6da59aff562069f7ee6223513 Mon Sep 17 00:00:00 2001 From: rozmansi Date: Fri, 4 Feb 2022 12:23:57 +0000 Subject: [PATCH] deploy: 89a79c330be484d0aac2c2d204f5839bfe9cff82 --- .nojekyll | 0 _c_o_m_8h_source.html | 902 ++++++++ _common_8h_source.html | 1329 ++++++++++++ _cred_8h_source.html | 245 +++ _crypt_8h_source.html | 751 +++++++ _e_a_p_8h_source.html | 625 ++++++ _e_t_w_8h_source.html | 1000 +++++++++ _g_d_i_8h_source.html | 223 ++ _m_s_i_8h_source.html | 371 ++++ _sec_8h_source.html | 374 ++++ _setup_a_p_i_8h_source.html | 196 ++ _shell_8h_source.html | 115 + _w_l_a_n_8h_source.html | 212 ++ _win_8h_source.html | 1838 ++++++++++++++++ _win_sock2_8h_source.html | 184 ++ _win_trust_8h_source.html | 128 ++ annotated.html | 162 ++ bc_s.png | Bin 0 -> 676 bytes bdwn.png | Bin 0 -> 147 bytes classes.html | 126 ++ classwinstd_1_1actctx__activator-members.html | 85 + classwinstd_1_1actctx__activator.html | 174 ++ classwinstd_1_1addrinfo-members.html | 107 + classwinstd_1_1addrinfo.html | 304 +++ classwinstd_1_1addrinfo.png | Bin 0 -> 721 bytes ...winstd_1_1basic__string__guid-members.html | 83 + classwinstd_1_1basic__string__guid.html | 154 ++ classwinstd_1_1basic__string__guid.png | Bin 0 -> 1103 bytes ...swinstd_1_1basic__string__msg-members.html | 89 + classwinstd_1_1basic__string__msg.html | 498 +++++ classwinstd_1_1basic__string__msg.png | Bin 0 -> 1090 bytes ...nstd_1_1basic__string__printf-members.html | 85 + classwinstd_1_1basic__string__printf.html | 273 +++ classwinstd_1_1basic__string__printf.png | Bin 0 -> 1100 bytes classwinstd_1_1bstr-members.html | 119 ++ classwinstd_1_1bstr.html | 374 ++++ classwinstd_1_1bstr.png | Bin 0 -> 1037 bytes ...instd_1_1cert__chain__context-members.html | 116 ++ classwinstd_1_1cert__chain__context.html | 407 ++++ classwinstd_1_1cert__chain__context.png | Bin 0 -> 1623 bytes classwinstd_1_1cert__context-members.html | 122 ++ classwinstd_1_1cert__context.html | 635 ++++++ classwinstd_1_1cert__context.png | Bin 0 -> 1445 bytes classwinstd_1_1cert__store-members.html | 108 + classwinstd_1_1cert__store.html | 368 ++++ classwinstd_1_1cert__store.png | Bin 0 -> 752 bytes classwinstd_1_1com__initializer-members.html | 87 + classwinstd_1_1com__initializer.html | 242 +++ classwinstd_1_1com__obj-members.html | 121 ++ classwinstd_1_1com__obj.html | 556 +++++ classwinstd_1_1com__obj.png | Bin 0 -> 1054 bytes ...winstd_1_1com__runtime__error-members.html | 89 + classwinstd_1_1com__runtime__error.html | 227 ++ classwinstd_1_1com__runtime__error.png | Bin 0 -> 1076 bytes ...std_1_1console__ctrl__handler-members.html | 86 + classwinstd_1_1console__ctrl__handler.html | 178 ++ classwinstd_1_1critical__section-members.html | 86 + classwinstd_1_1critical__section.html | 199 ++ classwinstd_1_1crypt__hash-members.html | 116 ++ classwinstd_1_1crypt__hash.html | 389 ++++ classwinstd_1_1crypt__hash.png | Bin 0 -> 1179 bytes classwinstd_1_1crypt__key-members.html | 120 ++ classwinstd_1_1crypt__key.html | 589 ++++++ classwinstd_1_1crypt__key.png | Bin 0 -> 1211 bytes classwinstd_1_1crypt__prov-members.html | 107 + classwinstd_1_1crypt__prov.html | 315 +++ classwinstd_1_1crypt__prov.png | Bin 0 -> 754 bytes classwinstd_1_1data__blob-members.html | 92 + classwinstd_1_1data__blob.html | 142 ++ classwinstd_1_1data__blob.png | Bin 0 -> 491 bytes classwinstd_1_1dc-members.html | 106 + classwinstd_1_1dc.html | 256 +++ classwinstd_1_1dc.png | Bin 0 -> 610 bytes classwinstd_1_1dc__selector-members.html | 87 + classwinstd_1_1dc__selector.html | 214 ++ classwinstd_1_1dplhandle-members.html | 114 + classwinstd_1_1dplhandle.html | 551 +++++ classwinstd_1_1dplhandle.png | Bin 0 -> 745 bytes classwinstd_1_1eap__attr-members.html | 89 + classwinstd_1_1eap__attr.html | 179 ++ classwinstd_1_1eap__attr.png | Bin 0 -> 506 bytes ...d_1_1eap__method__info__array-members.html | 86 + classwinstd_1_1eap__method__info__array.html | 186 ++ classwinstd_1_1eap__method__info__array.png | Bin 0 -> 727 bytes classwinstd_1_1eap__method__prop-members.html | 85 + classwinstd_1_1eap__method__prop.html | 247 +++ classwinstd_1_1eap__method__prop.png | Bin 0 -> 669 bytes classwinstd_1_1eap__packet-members.html | 117 ++ classwinstd_1_1eap__packet.html | 358 ++++ classwinstd_1_1eap__packet.png | Bin 0 -> 1230 bytes ...winstd_1_1eap__runtime__error-members.html | 108 + classwinstd_1_1eap__runtime__error.html | 304 +++ classwinstd_1_1eap__runtime__error.png | Bin 0 -> 1424 bytes classwinstd_1_1event-members.html | 108 + classwinstd_1_1event.html | 308 +++ classwinstd_1_1event.png | Bin 0 -> 1042 bytes classwinstd_1_1event__data-members.html | 94 + classwinstd_1_1event__data.html | 539 +++++ classwinstd_1_1event__data.png | Bin 0 -> 665 bytes classwinstd_1_1event__fn__auto-members.html | 91 + classwinstd_1_1event__fn__auto.html | 137 ++ ...instd_1_1event__fn__auto__ret-members.html | 92 + classwinstd_1_1event__fn__auto__ret.html | 142 ++ classwinstd_1_1event__provider-members.html | 114 + classwinstd_1_1event__provider.html | 686 ++++++ classwinstd_1_1event__provider.png | Bin 0 -> 791 bytes classwinstd_1_1event__rec-members.html | 94 + classwinstd_1_1event__rec.html | 530 +++++ classwinstd_1_1event__rec.png | Bin 0 -> 519 bytes classwinstd_1_1event__session-members.html | 117 ++ classwinstd_1_1event__session.html | 690 ++++++ classwinstd_1_1event__session.png | Bin 0 -> 763 bytes classwinstd_1_1event__trace-members.html | 107 + classwinstd_1_1event__trace.html | 293 +++ classwinstd_1_1event__trace.png | Bin 0 -> 1078 bytes ...nstd_1_1event__trace__enabler-members.html | 95 + classwinstd_1_1event__trace__enabler.html | 350 ++++ classwinstd_1_1file-members.html | 107 + classwinstd_1_1file.html | 273 +++ classwinstd_1_1file.png | Bin 0 -> 1363 bytes classwinstd_1_1find__file-members.html | 107 + classwinstd_1_1find__file.html | 303 +++ classwinstd_1_1find__file.png | Bin 0 -> 920 bytes classwinstd_1_1gdi__handle-members.html | 106 + classwinstd_1_1gdi__handle.html | 261 +++ classwinstd_1_1gdi__handle.png | Bin 0 -> 682 bytes classwinstd_1_1handle-members.html | 105 + classwinstd_1_1handle.html | 841 ++++++++ classwinstd_1_1handle.png | Bin 0 -> 751 bytes classwinstd_1_1heap-members.html | 108 + classwinstd_1_1heap.html | 344 +++ classwinstd_1_1heap.png | Bin 0 -> 679 bytes classwinstd_1_1heap__allocator-members.html | 98 + classwinstd_1_1heap__allocator.html | 460 ++++ classwinstd_1_1library-members.html | 107 + classwinstd_1_1library.html | 309 +++ classwinstd_1_1library.png | Bin 0 -> 700 bytes ...winstd_1_1num__runtime__error-members.html | 87 + classwinstd_1_1num__runtime__error.html | 224 ++ classwinstd_1_1num__runtime__error.png | Bin 0 -> 680 bytes classwinstd_1_1process-members.html | 107 + classwinstd_1_1process.html | 249 +++ classwinstd_1_1process.png | Bin 0 -> 1052 bytes ...instd_1_1process__information-members.html | 84 + classwinstd_1_1process__information.html | 110 + classwinstd_1_1process__information.png | Bin 0 -> 695 bytes classwinstd_1_1ref__unique__ptr-members.html | 89 + classwinstd_1_1ref__unique__ptr.html | 259 +++ ...01___ty_0f_0e_00_01___dx_01_4-members.html | 91 + ...__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html | 339 +++ classwinstd_1_1reg__key-members.html | 109 + classwinstd_1_1reg__key.html | 434 ++++ classwinstd_1_1reg__key.png | Bin 0 -> 679 bytes ...nstd_1_1sanitizing__allocator-members.html | 87 + classwinstd_1_1sanitizing__allocator.html | 136 ++ classwinstd_1_1sanitizing__allocator.png | Bin 0 -> 763 bytes classwinstd_1_1sanitizing__blob-members.html | 85 + classwinstd_1_1sanitizing__blob.html | 113 + classwinstd_1_1sec__buffer__desc-members.html | 84 + classwinstd_1_1sec__buffer__desc.html | 138 ++ classwinstd_1_1sec__buffer__desc.png | Bin 0 -> 634 bytes classwinstd_1_1sec__context-members.html | 113 + classwinstd_1_1sec__context.html | 488 +++++ classwinstd_1_1sec__context.png | Bin 0 -> 748 bytes classwinstd_1_1sec__credentials-members.html | 112 + classwinstd_1_1sec__credentials.html | 467 +++++ classwinstd_1_1sec__credentials.png | Bin 0 -> 782 bytes ...winstd_1_1sec__runtime__error-members.html | 90 + classwinstd_1_1sec__runtime__error.html | 264 +++ classwinstd_1_1sec__runtime__error.png | Bin 0 -> 1361 bytes classwinstd_1_1security__id-members.html | 106 + classwinstd_1_1security__id.html | 256 +++ classwinstd_1_1security__id.png | Bin 0 -> 694 bytes ..._1_1setup__device__info__list-members.html | 108 + classwinstd_1_1setup__device__info__list.html | 380 ++++ classwinstd_1_1setup__device__info__list.png | Bin 0 -> 1086 bytes ...__driver__info__list__builder-members.html | 89 + ...1_1setup__driver__info__list__builder.html | 225 ++ classwinstd_1_1string__guid-members.html | 84 + classwinstd_1_1string__guid.html | 147 ++ classwinstd_1_1string__guid.png | Bin 0 -> 1859 bytes ...swinstd_1_1user__impersonator-members.html | 85 + classwinstd_1_1user__impersonator.html | 174 ++ classwinstd_1_1variant-members.html | 143 ++ classwinstd_1_1variant.html | 613 ++++++ classwinstd_1_1variant.png | Bin 0 -> 450 bytes classwinstd_1_1vector__queue-members.html | 121 ++ classwinstd_1_1vector__queue.html | 794 +++++++ classwinstd_1_1vmemory-members.html | 113 + classwinstd_1_1vmemory.html | 504 +++++ classwinstd_1_1vmemory.png | Bin 0 -> 693 bytes classwinstd_1_1win__handle-members.html | 106 + classwinstd_1_1win__handle.html | 261 +++ classwinstd_1_1win__handle.png | Bin 0 -> 812 bytes ...winstd_1_1win__runtime__error-members.html | 92 + classwinstd_1_1win__runtime__error.html | 334 +++ classwinstd_1_1win__runtime__error.png | Bin 0 -> 1431 bytes classwinstd_1_1window__dc-members.html | 111 + classwinstd_1_1window__dc.html | 273 +++ classwinstd_1_1window__dc.png | Bin 0 -> 659 bytes classwinstd_1_1wintrust-members.html | 87 + classwinstd_1_1wintrust.html | 117 ++ classwinstd_1_1wlan__handle-members.html | 107 + classwinstd_1_1wlan__handle.html | 303 +++ classwinstd_1_1wlan__handle.png | Bin 0 -> 724 bytes ...winstd_1_1ws2__runtime__error-members.html | 92 + classwinstd_1_1ws2__runtime__error.html | 333 +++ classwinstd_1_1ws2__runtime__error.png | Bin 0 -> 1033 bytes classwinstd_1_1wstring__guid-members.html | 84 + classwinstd_1_1wstring__guid.html | 147 ++ classwinstd_1_1wstring__guid.png | Bin 0 -> 1960 bytes closed.png | Bin 0 -> 132 bytes dir_6f50bb204833d887b928571856c82fbe.html | 113 + dir_d44c64559bbebec7f509842c48db8b23.html | 85 + doc.png | Bin 0 -> 746 bytes doxygen.css | 1841 +++++++++++++++++ doxygen.svg | 26 + dynsections.js | 121 ++ files.html | 96 + folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 78 + functions_a.html | 85 + functions_b.html | 81 + functions_c.html | 92 + functions_d.html | 89 + functions_e.html | 95 + functions_f.html | 80 + functions_func.html | 85 + functions_func_b.html | 81 + functions_func_c.html | 90 + functions_func_d.html | 88 + functions_func_e.html | 94 + functions_func_f.html | 80 + functions_func_g.html | 78 + functions_func_h.html | 80 + functions_func_i.html | 79 + functions_func_l.html | 79 + functions_func_m.html | 78 + functions_func_n.html | 79 + functions_func_o.html | 95 + functions_func_p.html | 82 + functions_func_q.html | 77 + functions_func_r.html | 82 + functions_func_s.html | 90 + functions_func_t.html | 78 + functions_func_u.html | 77 + functions_func_v.html | 79 + functions_func_w.html | 82 + functions_func_~.html | 124 ++ functions_g.html | 78 + functions_h.html | 81 + functions_i.html | 80 + functions_l.html | 79 + functions_m.html | 117 ++ functions_n.html | 79 + functions_o.html | 96 + functions_p.html | 83 + functions_q.html | 77 + functions_r.html | 83 + functions_s.html | 91 + functions_t.html | 78 + functions_type.html | 86 + functions_u.html | 77 + functions_v.html | 80 + functions_vars.html | 120 ++ functions_w.html | 82 + functions_~.html | 124 ++ group___setup_a_p_i.html | 92 + group___win_sock2_a_p_i.html | 92 + group___win_std_c_o_m.html | 101 + group___win_std_cred_a_p_i.html | 92 + group___win_std_crypto_a_p_i.html | 232 +++ group___win_std_e_a_p_a_p_i.html | 228 ++ group___win_std_e_t_w_a_p_i.html | 180 ++ group___win_std_exceptions.html | 101 + group___win_std_gdi_a_p_i.html | 98 + group___win_std_general.html | 290 +++ group___win_std_m_s_i_a_p_i.html | 80 + group___win_std_mem_sanitize.html | 141 ++ group___win_std_security_a_p_i.html | 95 + group___win_std_shell_w_a_p_i.html | 80 + group___win_std_str_format.html | 162 ++ group___win_std_sys_handles.html | 187 ++ group___win_std_w_l_a_n_a_p_i.html | 95 + group___win_std_win_a_p_i.html | 394 ++++ group___win_trust_a_p_i.html | 89 + hierarchy.html | 213 ++ index.html | 139 ++ jquery.js | 35 + menu.js | 127 ++ menudata.js | 85 + modules.html | 98 + nav_f.png | Bin 0 -> 153 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes open.png | Bin 0 -> 123 bytes search/all_0.html | 37 + search/all_0.js | 7 + search/all_1.html | 37 + search/all_1.js | 14 + search/all_10.html | 37 + search/all_10.js | 13 + search/all_11.html | 37 + search/all_11.js | 31 + search/all_12.html | 37 + search/all_12.js | 11 + search/all_13.html | 37 + search/all_13.js | 5 + search/all_14.html | 37 + search/all_14.js | 7 + search/all_15.html | 37 + search/all_15.js | 29 + search/all_16.html | 37 + search/all_16.js | 51 + search/all_2.html | 37 + search/all_2.js | 10 + search/all_3.html | 37 + search/all_3.js | 29 + search/all_4.html | 37 + search/all_4.js | 24 + search/all_5.html | 37 + search/all_5.js | 35 + search/all_6.html | 37 + search/all_6.js | 9 + search/all_7.html | 37 + search/all_7.js | 12 + search/all_8.html | 37 + search/all_8.js | 34 + search/all_9.html | 37 + search/all_9.js | 8 + search/all_a.html | 37 + search/all_a.js | 10 + search/all_b.html | 37 + search/all_b.js | 48 + search/all_c.html | 37 + search/all_c.js | 14 + search/all_d.html | 37 + search/all_d.js | 24 + search/all_e.html | 37 + search/all_e.js | 13 + search/all_f.html | 37 + search/all_f.js | 4 + search/classes_0.html | 37 + search/classes_0.js | 5 + search/classes_1.html | 37 + search/classes_1.js | 9 + search/classes_2.html | 37 + search/classes_2.js | 17 + search/classes_3.html | 37 + search/classes_3.js | 14 + search/classes_4.html | 37 + search/classes_4.js | 21 + search/classes_5.html | 37 + search/classes_5.js | 5 + search/classes_6.html | 37 + search/classes_6.js | 4 + search/classes_7.html | 37 + search/classes_7.js | 31 + search/classes_8.html | 37 + search/classes_8.js | 6 + search/classes_9.html | 37 + search/classes_9.js | 8 + search/classes_a.html | 37 + search/classes_a.js | 5 + search/classes_b.html | 37 + search/classes_b.js | 7 + search/classes_c.html | 37 + search/classes_c.js | 13 + search/classes_d.html | 37 + search/classes_d.js | 4 + search/classes_e.html | 37 + search/classes_e.js | 6 + search/classes_f.html | 37 + search/classes_f.js | 14 + search/close.svg | 31 + search/enums_0.html | 37 + search/enums_0.js | 4 + search/enumvalues_0.html | 37 + search/enumvalues_0.js | 4 + search/enumvalues_1.html | 37 + search/enumvalues_1.js | 5 + search/enumvalues_2.html | 37 + search/enumvalues_2.js | 4 + search/enumvalues_3.html | 37 + search/enumvalues_3.js | 5 + search/enumvalues_4.html | 37 + search/enumvalues_4.js | 6 + search/enumvalues_5.html | 37 + search/enumvalues_5.js | 7 + search/enumvalues_6.html | 37 + search/enumvalues_6.js | 4 + search/enumvalues_7.html | 37 + search/enumvalues_7.js | 4 + search/enumvalues_8.html | 37 + search/enumvalues_8.js | 4 + search/enumvalues_9.html | 37 + search/enumvalues_9.js | 5 + search/enumvalues_a.html | 37 + search/enumvalues_a.js | 4 + search/functions_0.html | 37 + search/functions_0.js | 12 + search/functions_1.html | 37 + search/functions_1.js | 8 + search/functions_10.html | 37 + search/functions_10.js | 17 + search/functions_11.html | 37 + search/functions_11.js | 5 + search/functions_12.html | 37 + search/functions_12.js | 4 + search/functions_13.html | 37 + search/functions_13.js | 6 + search/functions_14.html | 37 + search/functions_14.js | 9 + search/functions_15.html | 37 + search/functions_15.js | 51 + search/functions_2.html | 37 + search/functions_2.js | 17 + search/functions_3.html | 37 + search/functions_3.js | 15 + search/functions_4.html | 37 + search/functions_4.js | 21 + search/functions_5.html | 37 + search/functions_5.js | 7 + search/functions_6.html | 37 + search/functions_6.js | 6 + search/functions_7.html | 37 + search/functions_7.js | 7 + search/functions_8.html | 37 + search/functions_8.js | 6 + search/functions_9.html | 37 + search/functions_9.js | 6 + search/functions_a.html | 37 + search/functions_a.js | 5 + search/functions_b.html | 37 + search/functions_b.js | 6 + search/functions_c.html | 37 + search/functions_c.js | 22 + search/functions_d.html | 37 + search/functions_d.js | 9 + search/functions_e.html | 37 + search/functions_e.js | 4 + search/functions_f.html | 37 + search/functions_f.js | 9 + search/groups_0.html | 37 + search/groups_0.js | 4 + search/groups_1.html | 37 + search/groups_1.js | 6 + search/groups_2.html | 37 + search/groups_2.js | 6 + search/groups_3.html | 37 + search/groups_3.js | 5 + search/groups_4.html | 37 + search/groups_4.js | 4 + search/groups_5.html | 37 + search/groups_5.js | 8 + search/groups_6.html | 37 + search/groups_6.js | 7 + search/mag_sel.svg | 74 + search/nomatches.html | 13 + search/pages_0.html | 37 + search/pages_0.js | 4 + search/search.css | 263 +++ search/search.js | 794 +++++++ search/search_l.png | Bin 0 -> 567 bytes search/search_m.png | Bin 0 -> 158 bytes search/search_r.png | Bin 0 -> 553 bytes search/searchdata.js | 39 + search/typedefs_0.html | 37 + search/typedefs_0.js | 5 + search/typedefs_1.html | 37 + search/typedefs_1.js | 5 + search/typedefs_2.html | 37 + search/typedefs_2.js | 4 + search/typedefs_3.html | 37 + search/typedefs_3.js | 8 + search/typedefs_4.html | 37 + search/typedefs_4.js | 4 + search/typedefs_5.html | 37 + search/typedefs_5.js | 4 + search/typedefs_6.html | 37 + search/typedefs_6.js | 4 + search/typedefs_7.html | 37 + search/typedefs_7.js | 4 + search/typedefs_8.html | 37 + search/typedefs_8.js | 9 + search/typedefs_9.html | 37 + search/typedefs_9.js | 7 + search/typedefs_a.html | 37 + search/typedefs_a.js | 4 + search/typedefs_b.html | 37 + search/typedefs_b.js | 5 + search/variables_0.html | 37 + search/variables_0.js | 4 + search/variables_1.html | 37 + search/variables_1.js | 42 + splitbar.png | Bin 0 -> 314 bytes ..._1_1_co_task_mem_free__delete-members.html | 84 + ...ctwinstd_1_1_co_task_mem_free__delete.html | 136 ++ ...twinstd_1_1_cred_free__delete-members.html | 86 + structwinstd_1_1_cred_free__delete.html | 149 ++ ...ree__delete_3_01___ty_0f_0e_4-members.html | 86 + ...1_cred_free__delete_3_01___ty_0f_0e_4.html | 181 ++ ...t_peer_free_eap_error__delete-members.html | 84 + ..._eap_host_peer_free_eap_error__delete.html | 133 ++ ...eer_free_error_memory__delete-members.html | 84 + ...p_host_peer_free_error_memory__delete.html | 133 ++ ...host_peer_free_memory__delete-members.html | 84 + ...1_1_eap_host_peer_free_memory__delete.html | 136 ++ ...r_free_runtime_memory__delete-members.html | 84 + ...host_peer_free_runtime_memory__delete.html | 105 + ...winstd_1_1_local_free__delete-members.html | 86 + structwinstd_1_1_local_free__delete.html | 149 ++ ...ree__delete_3_01___ty_0f_0e_4-members.html | 86 + ..._local_free__delete_3_01___ty_0f_0e_4.html | 151 ++ ..._1_1_wlan_free_memory__delete-members.html | 86 + ...ctwinstd_1_1_wlan_free_memory__delete.html | 118 ++ ...ory__delete_3_01___ty_0f_0e_4-members.html | 86 + ...free_memory__delete_3_01___ty_0f_0e_4.html | 118 ++ ..._1_1heap__allocator_1_1rebind-members.html | 83 + ...ctwinstd_1_1heap__allocator_1_1rebind.html | 102 + ...nitizing__allocator_1_1rebind-members.html | 83 + ...td_1_1sanitizing__allocator_1_1rebind.html | 102 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_b.png | Bin 0 -> 169 bytes tab_h.png | Bin 0 -> 177 bytes tab_s.png | Bin 0 -> 184 bytes tabs.css | 1 + 530 files changed, 57047 insertions(+) create mode 100644 .nojekyll create mode 100644 _c_o_m_8h_source.html create mode 100644 _common_8h_source.html create mode 100644 _cred_8h_source.html create mode 100644 _crypt_8h_source.html create mode 100644 _e_a_p_8h_source.html create mode 100644 _e_t_w_8h_source.html create mode 100644 _g_d_i_8h_source.html create mode 100644 _m_s_i_8h_source.html create mode 100644 _sec_8h_source.html create mode 100644 _setup_a_p_i_8h_source.html create mode 100644 _shell_8h_source.html create mode 100644 _w_l_a_n_8h_source.html create mode 100644 _win_8h_source.html create mode 100644 _win_sock2_8h_source.html create mode 100644 _win_trust_8h_source.html create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bdwn.png create mode 100644 classes.html create mode 100644 classwinstd_1_1actctx__activator-members.html create mode 100644 classwinstd_1_1actctx__activator.html create mode 100644 classwinstd_1_1addrinfo-members.html create mode 100644 classwinstd_1_1addrinfo.html create mode 100644 classwinstd_1_1addrinfo.png create mode 100644 classwinstd_1_1basic__string__guid-members.html create mode 100644 classwinstd_1_1basic__string__guid.html create mode 100644 classwinstd_1_1basic__string__guid.png create mode 100644 classwinstd_1_1basic__string__msg-members.html create mode 100644 classwinstd_1_1basic__string__msg.html create mode 100644 classwinstd_1_1basic__string__msg.png create mode 100644 classwinstd_1_1basic__string__printf-members.html create mode 100644 classwinstd_1_1basic__string__printf.html create mode 100644 classwinstd_1_1basic__string__printf.png create mode 100644 classwinstd_1_1bstr-members.html create mode 100644 classwinstd_1_1bstr.html create mode 100644 classwinstd_1_1bstr.png create mode 100644 classwinstd_1_1cert__chain__context-members.html create mode 100644 classwinstd_1_1cert__chain__context.html create mode 100644 classwinstd_1_1cert__chain__context.png create mode 100644 classwinstd_1_1cert__context-members.html create mode 100644 classwinstd_1_1cert__context.html create mode 100644 classwinstd_1_1cert__context.png create mode 100644 classwinstd_1_1cert__store-members.html create mode 100644 classwinstd_1_1cert__store.html create mode 100644 classwinstd_1_1cert__store.png create mode 100644 classwinstd_1_1com__initializer-members.html create mode 100644 classwinstd_1_1com__initializer.html create mode 100644 classwinstd_1_1com__obj-members.html create mode 100644 classwinstd_1_1com__obj.html create mode 100644 classwinstd_1_1com__obj.png create mode 100644 classwinstd_1_1com__runtime__error-members.html create mode 100644 classwinstd_1_1com__runtime__error.html create mode 100644 classwinstd_1_1com__runtime__error.png create mode 100644 classwinstd_1_1console__ctrl__handler-members.html create mode 100644 classwinstd_1_1console__ctrl__handler.html create mode 100644 classwinstd_1_1critical__section-members.html create mode 100644 classwinstd_1_1critical__section.html create mode 100644 classwinstd_1_1crypt__hash-members.html create mode 100644 classwinstd_1_1crypt__hash.html create mode 100644 classwinstd_1_1crypt__hash.png create mode 100644 classwinstd_1_1crypt__key-members.html create mode 100644 classwinstd_1_1crypt__key.html create mode 100644 classwinstd_1_1crypt__key.png create mode 100644 classwinstd_1_1crypt__prov-members.html create mode 100644 classwinstd_1_1crypt__prov.html create mode 100644 classwinstd_1_1crypt__prov.png create mode 100644 classwinstd_1_1data__blob-members.html create mode 100644 classwinstd_1_1data__blob.html create mode 100644 classwinstd_1_1data__blob.png create mode 100644 classwinstd_1_1dc-members.html create mode 100644 classwinstd_1_1dc.html create mode 100644 classwinstd_1_1dc.png create mode 100644 classwinstd_1_1dc__selector-members.html create mode 100644 classwinstd_1_1dc__selector.html create mode 100644 classwinstd_1_1dplhandle-members.html create mode 100644 classwinstd_1_1dplhandle.html create mode 100644 classwinstd_1_1dplhandle.png create mode 100644 classwinstd_1_1eap__attr-members.html create mode 100644 classwinstd_1_1eap__attr.html create mode 100644 classwinstd_1_1eap__attr.png create mode 100644 classwinstd_1_1eap__method__info__array-members.html create mode 100644 classwinstd_1_1eap__method__info__array.html create mode 100644 classwinstd_1_1eap__method__info__array.png create mode 100644 classwinstd_1_1eap__method__prop-members.html create mode 100644 classwinstd_1_1eap__method__prop.html create mode 100644 classwinstd_1_1eap__method__prop.png create mode 100644 classwinstd_1_1eap__packet-members.html create mode 100644 classwinstd_1_1eap__packet.html create mode 100644 classwinstd_1_1eap__packet.png create mode 100644 classwinstd_1_1eap__runtime__error-members.html create mode 100644 classwinstd_1_1eap__runtime__error.html create mode 100644 classwinstd_1_1eap__runtime__error.png create mode 100644 classwinstd_1_1event-members.html create mode 100644 classwinstd_1_1event.html create mode 100644 classwinstd_1_1event.png create mode 100644 classwinstd_1_1event__data-members.html create mode 100644 classwinstd_1_1event__data.html create mode 100644 classwinstd_1_1event__data.png create mode 100644 classwinstd_1_1event__fn__auto-members.html create mode 100644 classwinstd_1_1event__fn__auto.html create mode 100644 classwinstd_1_1event__fn__auto__ret-members.html create mode 100644 classwinstd_1_1event__fn__auto__ret.html create mode 100644 classwinstd_1_1event__provider-members.html create mode 100644 classwinstd_1_1event__provider.html create mode 100644 classwinstd_1_1event__provider.png create mode 100644 classwinstd_1_1event__rec-members.html create mode 100644 classwinstd_1_1event__rec.html create mode 100644 classwinstd_1_1event__rec.png create mode 100644 classwinstd_1_1event__session-members.html create mode 100644 classwinstd_1_1event__session.html create mode 100644 classwinstd_1_1event__session.png create mode 100644 classwinstd_1_1event__trace-members.html create mode 100644 classwinstd_1_1event__trace.html create mode 100644 classwinstd_1_1event__trace.png create mode 100644 classwinstd_1_1event__trace__enabler-members.html create mode 100644 classwinstd_1_1event__trace__enabler.html create mode 100644 classwinstd_1_1file-members.html create mode 100644 classwinstd_1_1file.html create mode 100644 classwinstd_1_1file.png create mode 100644 classwinstd_1_1find__file-members.html create mode 100644 classwinstd_1_1find__file.html create mode 100644 classwinstd_1_1find__file.png create mode 100644 classwinstd_1_1gdi__handle-members.html create mode 100644 classwinstd_1_1gdi__handle.html create mode 100644 classwinstd_1_1gdi__handle.png create mode 100644 classwinstd_1_1handle-members.html create mode 100644 classwinstd_1_1handle.html create mode 100644 classwinstd_1_1handle.png create mode 100644 classwinstd_1_1heap-members.html create mode 100644 classwinstd_1_1heap.html create mode 100644 classwinstd_1_1heap.png create mode 100644 classwinstd_1_1heap__allocator-members.html create mode 100644 classwinstd_1_1heap__allocator.html create mode 100644 classwinstd_1_1library-members.html create mode 100644 classwinstd_1_1library.html create mode 100644 classwinstd_1_1library.png create mode 100644 classwinstd_1_1num__runtime__error-members.html create mode 100644 classwinstd_1_1num__runtime__error.html create mode 100644 classwinstd_1_1num__runtime__error.png create mode 100644 classwinstd_1_1process-members.html create mode 100644 classwinstd_1_1process.html create mode 100644 classwinstd_1_1process.png create mode 100644 classwinstd_1_1process__information-members.html create mode 100644 classwinstd_1_1process__information.html create mode 100644 classwinstd_1_1process__information.png create mode 100644 classwinstd_1_1ref__unique__ptr-members.html create mode 100644 classwinstd_1_1ref__unique__ptr.html create mode 100644 classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4-members.html create mode 100644 classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html create mode 100644 classwinstd_1_1reg__key-members.html create mode 100644 classwinstd_1_1reg__key.html create mode 100644 classwinstd_1_1reg__key.png create mode 100644 classwinstd_1_1sanitizing__allocator-members.html create mode 100644 classwinstd_1_1sanitizing__allocator.html create mode 100644 classwinstd_1_1sanitizing__allocator.png create mode 100644 classwinstd_1_1sanitizing__blob-members.html create mode 100644 classwinstd_1_1sanitizing__blob.html create mode 100644 classwinstd_1_1sec__buffer__desc-members.html create mode 100644 classwinstd_1_1sec__buffer__desc.html create mode 100644 classwinstd_1_1sec__buffer__desc.png create mode 100644 classwinstd_1_1sec__context-members.html create mode 100644 classwinstd_1_1sec__context.html create mode 100644 classwinstd_1_1sec__context.png create mode 100644 classwinstd_1_1sec__credentials-members.html create mode 100644 classwinstd_1_1sec__credentials.html create mode 100644 classwinstd_1_1sec__credentials.png create mode 100644 classwinstd_1_1sec__runtime__error-members.html create mode 100644 classwinstd_1_1sec__runtime__error.html create mode 100644 classwinstd_1_1sec__runtime__error.png create mode 100644 classwinstd_1_1security__id-members.html create mode 100644 classwinstd_1_1security__id.html create mode 100644 classwinstd_1_1security__id.png create mode 100644 classwinstd_1_1setup__device__info__list-members.html create mode 100644 classwinstd_1_1setup__device__info__list.html create mode 100644 classwinstd_1_1setup__device__info__list.png create mode 100644 classwinstd_1_1setup__driver__info__list__builder-members.html create mode 100644 classwinstd_1_1setup__driver__info__list__builder.html create mode 100644 classwinstd_1_1string__guid-members.html create mode 100644 classwinstd_1_1string__guid.html create mode 100644 classwinstd_1_1string__guid.png create mode 100644 classwinstd_1_1user__impersonator-members.html create mode 100644 classwinstd_1_1user__impersonator.html create mode 100644 classwinstd_1_1variant-members.html create mode 100644 classwinstd_1_1variant.html create mode 100644 classwinstd_1_1variant.png create mode 100644 classwinstd_1_1vector__queue-members.html create mode 100644 classwinstd_1_1vector__queue.html create mode 100644 classwinstd_1_1vmemory-members.html create mode 100644 classwinstd_1_1vmemory.html create mode 100644 classwinstd_1_1vmemory.png create mode 100644 classwinstd_1_1win__handle-members.html create mode 100644 classwinstd_1_1win__handle.html create mode 100644 classwinstd_1_1win__handle.png create mode 100644 classwinstd_1_1win__runtime__error-members.html create mode 100644 classwinstd_1_1win__runtime__error.html create mode 100644 classwinstd_1_1win__runtime__error.png create mode 100644 classwinstd_1_1window__dc-members.html create mode 100644 classwinstd_1_1window__dc.html create mode 100644 classwinstd_1_1window__dc.png create mode 100644 classwinstd_1_1wintrust-members.html create mode 100644 classwinstd_1_1wintrust.html create mode 100644 classwinstd_1_1wlan__handle-members.html create mode 100644 classwinstd_1_1wlan__handle.html create mode 100644 classwinstd_1_1wlan__handle.png create mode 100644 classwinstd_1_1ws2__runtime__error-members.html create mode 100644 classwinstd_1_1ws2__runtime__error.html create mode 100644 classwinstd_1_1ws2__runtime__error.png create mode 100644 classwinstd_1_1wstring__guid-members.html create mode 100644 classwinstd_1_1wstring__guid.html create mode 100644 classwinstd_1_1wstring__guid.png create mode 100644 closed.png create mode 100644 dir_6f50bb204833d887b928571856c82fbe.html create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc.png create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_a.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_e.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_g.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_n.html create mode 100644 functions_func_o.html create mode 100644 functions_func_p.html create mode 100644 functions_func_q.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_t.html create mode 100644 functions_func_u.html create mode 100644 functions_func_v.html create mode 100644 functions_func_w.html create mode 100644 functions_func_~.html create mode 100644 functions_g.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_n.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_q.html create mode 100644 functions_r.html create mode 100644 functions_s.html create mode 100644 functions_t.html create mode 100644 functions_type.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_vars.html create mode 100644 functions_w.html create mode 100644 functions_~.html create mode 100644 group___setup_a_p_i.html create mode 100644 group___win_sock2_a_p_i.html create mode 100644 group___win_std_c_o_m.html create mode 100644 group___win_std_cred_a_p_i.html create mode 100644 group___win_std_crypto_a_p_i.html create mode 100644 group___win_std_e_a_p_a_p_i.html create mode 100644 group___win_std_e_t_w_a_p_i.html create mode 100644 group___win_std_exceptions.html create mode 100644 group___win_std_gdi_a_p_i.html create mode 100644 group___win_std_general.html create mode 100644 group___win_std_m_s_i_a_p_i.html create mode 100644 group___win_std_mem_sanitize.html create mode 100644 group___win_std_security_a_p_i.html create mode 100644 group___win_std_shell_w_a_p_i.html create mode 100644 group___win_std_str_format.html create mode 100644 group___win_std_sys_handles.html create mode 100644 group___win_std_w_l_a_n_a_p_i.html create mode 100644 group___win_std_win_a_p_i.html create mode 100644 group___win_trust_a_p_i.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 jquery.js create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 modules.html create mode 100644 nav_f.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 open.png create mode 100644 search/all_0.html create mode 100644 search/all_0.js create mode 100644 search/all_1.html create mode 100644 search/all_1.js create mode 100644 search/all_10.html create mode 100644 search/all_10.js create mode 100644 search/all_11.html create mode 100644 search/all_11.js create mode 100644 search/all_12.html create mode 100644 search/all_12.js create mode 100644 search/all_13.html create mode 100644 search/all_13.js create mode 100644 search/all_14.html create mode 100644 search/all_14.js create mode 100644 search/all_15.html create mode 100644 search/all_15.js create mode 100644 search/all_16.html create mode 100644 search/all_16.js create mode 100644 search/all_2.html create mode 100644 search/all_2.js create mode 100644 search/all_3.html create mode 100644 search/all_3.js create mode 100644 search/all_4.html create mode 100644 search/all_4.js create mode 100644 search/all_5.html create mode 100644 search/all_5.js create mode 100644 search/all_6.html create mode 100644 search/all_6.js create mode 100644 search/all_7.html create mode 100644 search/all_7.js create mode 100644 search/all_8.html create mode 100644 search/all_8.js create mode 100644 search/all_9.html create mode 100644 search/all_9.js create mode 100644 search/all_a.html create mode 100644 search/all_a.js create mode 100644 search/all_b.html create mode 100644 search/all_b.js create mode 100644 search/all_c.html create mode 100644 search/all_c.js create mode 100644 search/all_d.html create mode 100644 search/all_d.js create mode 100644 search/all_e.html create mode 100644 search/all_e.js create mode 100644 search/all_f.html create mode 100644 search/all_f.js create mode 100644 search/classes_0.html create mode 100644 search/classes_0.js create mode 100644 search/classes_1.html create mode 100644 search/classes_1.js create mode 100644 search/classes_2.html create mode 100644 search/classes_2.js create mode 100644 search/classes_3.html create mode 100644 search/classes_3.js create mode 100644 search/classes_4.html create mode 100644 search/classes_4.js create mode 100644 search/classes_5.html create mode 100644 search/classes_5.js create mode 100644 search/classes_6.html create mode 100644 search/classes_6.js create mode 100644 search/classes_7.html create mode 100644 search/classes_7.js create mode 100644 search/classes_8.html create mode 100644 search/classes_8.js create mode 100644 search/classes_9.html create mode 100644 search/classes_9.js create mode 100644 search/classes_a.html create mode 100644 search/classes_a.js create mode 100644 search/classes_b.html create mode 100644 search/classes_b.js create mode 100644 search/classes_c.html create mode 100644 search/classes_c.js create mode 100644 search/classes_d.html create mode 100644 search/classes_d.js create mode 100644 search/classes_e.html create mode 100644 search/classes_e.js create mode 100644 search/classes_f.html create mode 100644 search/classes_f.js create mode 100644 search/close.svg create mode 100644 search/enums_0.html create mode 100644 search/enums_0.js create mode 100644 search/enumvalues_0.html create mode 100644 search/enumvalues_0.js create mode 100644 search/enumvalues_1.html create mode 100644 search/enumvalues_1.js create mode 100644 search/enumvalues_2.html create mode 100644 search/enumvalues_2.js create mode 100644 search/enumvalues_3.html create mode 100644 search/enumvalues_3.js create mode 100644 search/enumvalues_4.html create mode 100644 search/enumvalues_4.js create mode 100644 search/enumvalues_5.html create mode 100644 search/enumvalues_5.js create mode 100644 search/enumvalues_6.html create mode 100644 search/enumvalues_6.js create mode 100644 search/enumvalues_7.html create mode 100644 search/enumvalues_7.js create mode 100644 search/enumvalues_8.html create mode 100644 search/enumvalues_8.js create mode 100644 search/enumvalues_9.html create mode 100644 search/enumvalues_9.js create mode 100644 search/enumvalues_a.html create mode 100644 search/enumvalues_a.js create mode 100644 search/functions_0.html create mode 100644 search/functions_0.js create mode 100644 search/functions_1.html create mode 100644 search/functions_1.js create mode 100644 search/functions_10.html create mode 100644 search/functions_10.js create mode 100644 search/functions_11.html create mode 100644 search/functions_11.js create mode 100644 search/functions_12.html create mode 100644 search/functions_12.js create mode 100644 search/functions_13.html create mode 100644 search/functions_13.js create mode 100644 search/functions_14.html create mode 100644 search/functions_14.js create mode 100644 search/functions_15.html create mode 100644 search/functions_15.js create mode 100644 search/functions_2.html create mode 100644 search/functions_2.js create mode 100644 search/functions_3.html create mode 100644 search/functions_3.js create mode 100644 search/functions_4.html create mode 100644 search/functions_4.js create mode 100644 search/functions_5.html create mode 100644 search/functions_5.js create mode 100644 search/functions_6.html create mode 100644 search/functions_6.js create mode 100644 search/functions_7.html create mode 100644 search/functions_7.js create mode 100644 search/functions_8.html create mode 100644 search/functions_8.js create mode 100644 search/functions_9.html create mode 100644 search/functions_9.js create mode 100644 search/functions_a.html create mode 100644 search/functions_a.js create mode 100644 search/functions_b.html create mode 100644 search/functions_b.js create mode 100644 search/functions_c.html create mode 100644 search/functions_c.js create mode 100644 search/functions_d.html create mode 100644 search/functions_d.js create mode 100644 search/functions_e.html create mode 100644 search/functions_e.js create mode 100644 search/functions_f.html create mode 100644 search/functions_f.js create mode 100644 search/groups_0.html create mode 100644 search/groups_0.js create mode 100644 search/groups_1.html create mode 100644 search/groups_1.js create mode 100644 search/groups_2.html create mode 100644 search/groups_2.js create mode 100644 search/groups_3.html create mode 100644 search/groups_3.js create mode 100644 search/groups_4.html create mode 100644 search/groups_4.js create mode 100644 search/groups_5.html create mode 100644 search/groups_5.js create mode 100644 search/groups_6.html create mode 100644 search/groups_6.js create mode 100644 search/mag_sel.svg create mode 100644 search/nomatches.html create mode 100644 search/pages_0.html create mode 100644 search/pages_0.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/search_l.png create mode 100644 search/search_m.png create mode 100644 search/search_r.png create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.html create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.html create mode 100644 search/typedefs_1.js create mode 100644 search/typedefs_2.html create mode 100644 search/typedefs_2.js create mode 100644 search/typedefs_3.html create mode 100644 search/typedefs_3.js create mode 100644 search/typedefs_4.html create mode 100644 search/typedefs_4.js create mode 100644 search/typedefs_5.html create mode 100644 search/typedefs_5.js create mode 100644 search/typedefs_6.html create mode 100644 search/typedefs_6.js create mode 100644 search/typedefs_7.html create mode 100644 search/typedefs_7.js create mode 100644 search/typedefs_8.html create mode 100644 search/typedefs_8.js create mode 100644 search/typedefs_9.html create mode 100644 search/typedefs_9.js create mode 100644 search/typedefs_a.html create mode 100644 search/typedefs_a.js create mode 100644 search/typedefs_b.html create mode 100644 search/typedefs_b.js create mode 100644 search/variables_0.html create mode 100644 search/variables_0.js create mode 100644 search/variables_1.html create mode 100644 search/variables_1.js create mode 100644 splitbar.png create mode 100644 structwinstd_1_1_co_task_mem_free__delete-members.html create mode 100644 structwinstd_1_1_co_task_mem_free__delete.html create mode 100644 structwinstd_1_1_cred_free__delete-members.html create mode 100644 structwinstd_1_1_cred_free__delete.html create mode 100644 structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4-members.html create mode 100644 structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html create mode 100644 structwinstd_1_1_eap_host_peer_free_eap_error__delete-members.html create mode 100644 structwinstd_1_1_eap_host_peer_free_eap_error__delete.html create mode 100644 structwinstd_1_1_eap_host_peer_free_error_memory__delete-members.html create mode 100644 structwinstd_1_1_eap_host_peer_free_error_memory__delete.html create mode 100644 structwinstd_1_1_eap_host_peer_free_memory__delete-members.html create mode 100644 structwinstd_1_1_eap_host_peer_free_memory__delete.html create mode 100644 structwinstd_1_1_eap_host_peer_free_runtime_memory__delete-members.html create mode 100644 structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html create mode 100644 structwinstd_1_1_local_free__delete-members.html create mode 100644 structwinstd_1_1_local_free__delete.html create mode 100644 structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4-members.html create mode 100644 structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html create mode 100644 structwinstd_1_1_wlan_free_memory__delete-members.html create mode 100644 structwinstd_1_1_wlan_free_memory__delete.html create mode 100644 structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4-members.html create mode 100644 structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html create mode 100644 structwinstd_1_1heap__allocator_1_1rebind-members.html create mode 100644 structwinstd_1_1heap__allocator_1_1rebind.html create mode 100644 structwinstd_1_1sanitizing__allocator_1_1rebind-members.html create mode 100644 structwinstd_1_1sanitizing__allocator_1_1rebind.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_b.png create mode 100644 tab_h.png create mode 100644 tab_s.png create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_c_o_m_8h_source.html b/_c_o_m_8h_source.html new file mode 100644 index 00000000..7646d8eb --- /dev/null +++ b/_c_o_m_8h_source.html @@ -0,0 +1,902 @@ + + + + + + + +WinStd: include/WinStd/COM.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
COM.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <unknwn.h>
+
11#include <string>
+
12
+
13namespace winstd
+
14{
+
17
+
23 class com_runtime_error : public num_runtime_error<HRESULT>
+
24 {
+
25 public:
+
32 com_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<HRESULT>(num, msg)
+
33 {
+
34 }
+
35
+
42 com_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<HRESULT>(num, msg)
+
43 {
+
44 }
+
45 };
+
46
+
48
+
54
+ +
59 {
+ +
64
+
70 template <class _T>
+
71 void operator()(_T *_Ptr) const
+
72 {
+
73 CoTaskMemFree(_Ptr);
+
74 }
+
75 };
+
76
+
80 template <class T>
+
81 class com_obj : public dplhandle<T*, NULL>
+
82 {
+ +
84
+
85 public:
+
91 com_obj(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL)
+
92 {
+
93 CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (LPVOID*)&m_h);
+
94 }
+
95
+
101 template <class _Other>
+
102 com_obj(_In_ _Other *other)
+
103 {
+
104 assert(other);
+
105 other->QueryInterface(__uuidof(T), (void**)&m_h);
+
106 }
+
107
+
113 template <class _Other>
+ +
115 {
+
116 other->QueryInterface(__uuidof(T), (void**)&m_h);
+
117 }
+
118
+
122 virtual ~com_obj()
+
123 {
+
124 if (m_h != invalid)
+ +
126 }
+
127
+
133 HRESULT create(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter = NULL, _In_ DWORD dwClsContext = CLSCTX_ALL)
+
134 {
+
135 handle_type h;
+
136 HRESULT hr = CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&h);
+
137 if (SUCCEEDED(hr))
+
138 attach(h);
+
139 return hr;
+
140 }
+
141
+
147 template <class _Other>
+
148 HRESULT query_interface(_Out_ _Other **h) const
+
149 {
+
150 assert(h);
+
151 assert(m_h);
+
152 return m_h->QueryInterface(__uuidof(_Other), (void**)h);
+
153 }
+
154
+
160 template <class _Other>
+
161 HRESULT query_interface(_Out_ com_obj<_Other> &h) const
+
162 {
+
163 assert(m_h);
+
164 _Other *_h;
+
165 HRESULT hr = m_h->QueryInterface(__uuidof(_Other), (void**)&_h);
+
166 if (SUCCEEDED(hr))
+
167 h.attach(_h);
+
168 return hr;
+
169 }
+
170
+
171 protected:
+
177 void free_internal() noexcept override
+
178 {
+
179 m_h->Release();
+
180 }
+
181
+
191 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
192 {
+
193 h->AddRef();
+
194 return h;
+
195 }
+
196 };
+
197
+
201 class bstr : public dplhandle<BSTR, NULL>
+
202 {
+ +
204
+
205 public:
+
209 bstr(_In_ LPCOLESTR src) noexcept
+
210 {
+
211 m_h = SysAllocString(src);
+
212 }
+
213
+
217 bstr(_In_ LPCOLESTR src, _In_ UINT len) noexcept
+
218 {
+
219 m_h = SysAllocStringLen(src, len);
+
220 }
+
221
+
225 template<class _Traits, class _Ax>
+
226 bstr(_In_ const std::basic_string<wchar_t, _Traits, _Ax> &src) noexcept
+
227 {
+
228 m_h = SysAllocStringLen(src.c_str(), (UINT)src.length());
+
229 }
+
230
+
236 virtual ~bstr()
+
237 {
+
238 if (m_h != invalid)
+ +
240 }
+
241
+
247 UINT length() const noexcept
+
248 {
+
249 return SysStringLen(m_h);
+
250 }
+
251
+
252 protected:
+
258 void free_internal() noexcept override
+
259 {
+
260 SysFreeString(m_h);
+
261 }
+
262
+
272 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
273 {
+
274 return SysAllocStringLen(h, SysStringLen(h));
+
275 }
+
276 };
+
277
+
281 #pragma warning(push)
+
282 #pragma warning(disable: 26432) // Copy constructor and assignment operator are also present, but not detected by code analysis as they are using base type source object reference.
+
283 class variant : public VARIANT
+
284 {
+
285 public:
+
289 variant() noexcept
+
290 {
+
291 VariantInit(this);
+
292 }
+
293
+
297 variant(_In_ const VARIANT& varSrc)
+
298 {
+
299 vt = VT_EMPTY;
+
300 const HRESULT hr = VariantCopy(this, &varSrc);
+
301 if (FAILED(hr))
+
302 throw winstd::com_runtime_error(hr, "VariantCopy failed.");
+
303 }
+
304
+
308 #pragma warning(suppress: 26495) // vt member is initialized as a result of memcpy()
+
309 variant(_Inout_ VARIANT&& varSrc) noexcept
+
310 {
+
311 memcpy(this, &varSrc, sizeof(VARIANT));
+
312 varSrc.vt = VT_EMPTY;
+
313 }
+
314
+
318 variant(_In_ bool bSrc) noexcept
+
319 {
+
320 vt = VT_BOOL;
+
321 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+
322 }
+
323
+
327 variant(_In_ char cSrc) noexcept
+
328 {
+
329 vt = VT_I1;
+
330 cVal = cSrc;
+
331 }
+
332
+
336 variant(_In_ unsigned char nSrc) noexcept
+
337 {
+
338 vt = VT_UI1;
+
339 bVal = nSrc;
+
340 }
+
341
+
345 variant(_In_ short nSrc) noexcept
+
346 {
+
347 vt = VT_I2;
+
348 iVal = nSrc;
+
349 }
+
350
+
354 variant(_In_ unsigned short nSrc) noexcept
+
355 {
+
356 vt = VT_UI2;
+
357 uiVal = nSrc;
+
358 }
+
359
+
363 variant(_In_ int nSrc, _In_ VARTYPE vtSrc = VT_I4) noexcept
+
364 {
+
365 assert(vtSrc == VT_I4 || vtSrc == VT_INT);
+
366 vt = vtSrc;
+
367 intVal = nSrc;
+
368 }
+
369
+
373 variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc = VT_UI4) noexcept
+
374 {
+
375 assert(vtSrc == VT_UI4 || vtSrc == VT_UINT);
+
376 vt = vtSrc;
+
377 uintVal= nSrc;
+
378 }
+
379
+
383 variant(_In_ long nSrc, _In_ VARTYPE vtSrc = VT_I4) noexcept
+
384 {
+
385 assert(vtSrc == VT_I4 || vtSrc == VT_ERROR);
+
386 vt = vtSrc;
+
387 lVal = nSrc;
+
388 }
+
389
+
393 variant(_In_ unsigned long nSrc) noexcept
+
394 {
+
395 vt = VT_UI4;
+
396 ulVal = nSrc;
+
397 }
+
398
+
402 variant(_In_ float fltSrc) noexcept
+
403 {
+
404 vt = VT_R4;
+
405 fltVal = fltSrc;
+
406 }
+
407
+
411 variant(_In_ double dblSrc, _In_ VARTYPE vtSrc = VT_R8) noexcept
+
412 {
+
413 assert(vtSrc == VT_R8 || vtSrc == VT_DATE);
+
414 vt = vtSrc;
+
415 dblVal = dblSrc;
+
416 }
+
417
+
421 variant(_In_ long long nSrc) noexcept
+
422 {
+
423 vt = VT_I8;
+
424 llVal = nSrc;
+
425 }
+
426
+
430 variant(_In_ unsigned long long nSrc) noexcept
+
431 {
+
432 vt = VT_UI8;
+
433 ullVal = nSrc;
+
434 }
+
435
+
439 variant(_In_ CY cySrc) noexcept
+
440 {
+
441 vt = VT_CY;
+
442 cyVal.Hi = cySrc.Hi;
+
443 cyVal.Lo = cySrc.Lo;
+
444 }
+
445
+
449 variant(_In_z_ LPCOLESTR lpszSrc) noexcept
+
450 {
+
451 vt = VT_EMPTY;
+
452 *this = lpszSrc;
+
453 }
+
454
+
458 variant(_In_z_ BSTR bstr) noexcept
+
459 {
+
460 vt = VT_EMPTY;
+
461 *this = bstr;
+
462 }
+
463
+
467 variant(_In_opt_ IDispatch* pSrc)
+
468 {
+
469 vt = VT_DISPATCH;
+
470 pdispVal = pSrc;
+
471
+
472 if (pdispVal != NULL)
+
473 pdispVal->AddRef();
+
474 }
+
475
+
479 variant(_In_opt_ IUnknown* pSrc)
+
480 {
+
481 vt = VT_UNKNOWN;
+
482 punkVal = pSrc;
+
483
+
484 if (punkVal != NULL)
+
485 punkVal->AddRef();
+
486 }
+
487
+
491 variant(_In_ const SAFEARRAY *pSrc)
+
492 {
+
493 assert(pSrc != NULL);
+
494
+
495 LPSAFEARRAY pCopy;
+
496 const HRESULT hr = SafeArrayCopy(const_cast<LPSAFEARRAY>(pSrc), &pCopy);
+
497 if (FAILED(hr))
+
498 throw winstd::com_runtime_error(hr, "SafeArrayCopy failed.");
+
499
+
500 SafeArrayGetVartype(const_cast<LPSAFEARRAY>(pSrc), &vt);
+
501 vt |= VT_ARRAY;
+
502 parray = pCopy;
+
503 }
+
504
+
508 virtual ~variant()
+
509 {
+
510 VariantClear(this);
+
511 }
+
512
+
516 variant& operator=(_In_ const VARIANT& varSrc)
+
517 {
+
518 if (this != &varSrc) {
+
519 const HRESULT hr = VariantCopy(this, &varSrc);
+
520 if (FAILED(hr))
+
521 throw winstd::com_runtime_error(hr, "VariantCopy failed.");
+
522 }
+
523 return *this;
+
524 }
+
525
+
529 variant& operator=(_Inout_ VARIANT&& varSrc) noexcept
+
530 {
+
531 if (this != &varSrc) {
+
532 VariantClear(this);
+
533 memcpy(this, &varSrc, sizeof(VARIANT));
+
534 varSrc.vt = VT_EMPTY;
+
535 }
+
536 return *this;
+
537 }
+
538
+
542 variant& operator=(_In_ bool bSrc) noexcept
+
543 {
+
544 if (vt != VT_BOOL) {
+
545 VariantClear(this);
+
546 vt = VT_BOOL;
+
547 }
+
548 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+
549 return *this;
+
550 }
+
551
+
555 variant& operator=(_In_ char cSrc) noexcept
+
556 {
+
557 if (vt != VT_I1) {
+
558 VariantClear(this);
+
559 vt = VT_I1;
+
560 }
+
561 cVal = cSrc;
+
562 return *this;
+
563 }
+
564
+
568 variant& operator=(_In_ unsigned char nSrc) noexcept
+
569 {
+
570 if (vt != VT_UI1) {
+
571 VariantClear(this);
+
572 vt = VT_UI1;
+
573 }
+
574 bVal = nSrc;
+
575 return *this;
+
576 }
+
577
+
581 variant& operator=(_In_ short nSrc) noexcept
+
582 {
+
583 if (vt != VT_I2) {
+
584 VariantClear(this);
+
585 vt = VT_I2;
+
586 }
+
587 iVal = nSrc;
+
588 return *this;
+
589 }
+
590
+
594 variant& operator=(_In_ unsigned short nSrc) noexcept
+
595 {
+
596 if (vt != VT_UI2) {
+
597 VariantClear(this);
+
598 vt = VT_UI2;
+
599 }
+
600 uiVal = nSrc;
+
601 return *this;
+
602 }
+
603
+
607 variant& operator=(_In_ int nSrc) noexcept
+
608 {
+
609 if (vt != VT_I4) {
+
610 VariantClear(this);
+
611 vt = VT_I4;
+
612 }
+
613 intVal = nSrc;
+
614 return *this;
+
615 }
+
616
+
620 variant& operator=(_In_ unsigned int nSrc) noexcept
+
621 {
+
622 if (vt != VT_UI4) {
+
623 VariantClear(this);
+
624 vt = VT_UI4;
+
625 }
+
626 uintVal= nSrc;
+
627 return *this;
+
628 }
+
629
+
633 variant& operator=(_In_ long nSrc) noexcept
+
634 {
+
635 if (vt != VT_I4) {
+
636 VariantClear(this);
+
637 vt = VT_I4;
+
638 }
+
639 lVal = nSrc;
+
640 return *this;
+
641 }
+
642
+
646 variant& operator=(_In_ unsigned long nSrc) noexcept
+
647 {
+
648 if (vt != VT_UI4) {
+
649 VariantClear(this);
+
650 vt = VT_UI4;
+
651 }
+
652 ulVal = nSrc;
+
653 return *this;
+
654 }
+
655
+
659 variant& operator=(_In_ long long nSrc) noexcept
+
660 {
+
661 if (vt != VT_I8) {
+
662 VariantClear(this);
+
663 vt = VT_I8;
+
664 }
+
665 llVal = nSrc;
+
666 return *this;
+
667 }
+
668
+
672 variant& operator=(_In_ unsigned long long nSrc) noexcept
+
673 {
+
674 if (vt != VT_UI8) {
+
675 VariantClear(this);
+
676 vt = VT_UI8;
+
677 }
+
678 ullVal = nSrc;
+
679
+
680 return *this;
+
681 }
+
682
+
686 variant& operator=(_In_ float fltSrc) noexcept
+
687 {
+
688 if (vt != VT_R4) {
+
689 VariantClear(this);
+
690 vt = VT_R4;
+
691 }
+
692 fltVal = fltSrc;
+
693 return *this;
+
694 }
+
695
+
699 variant& operator=(_In_ double dblSrc) noexcept
+
700 {
+
701 if (vt != VT_R8) {
+
702 VariantClear(this);
+
703 vt = VT_R8;
+
704 }
+
705 dblVal = dblSrc;
+
706 return *this;
+
707 }
+
708
+
712 variant& operator=(_In_ CY cySrc) noexcept
+
713 {
+
714 if (vt != VT_CY) {
+
715 VariantClear(this);
+
716 vt = VT_CY;
+
717 }
+
718 cyVal.Hi = cySrc.Hi;
+
719 cyVal.Lo = cySrc.Lo;
+
720 return *this;
+
721 }
+
722
+
726 variant& operator=(_In_z_ LPCOLESTR lpszSrc) noexcept
+
727 {
+
728 VariantClear(this);
+
729 vt = VT_BSTR;
+
730 bstrVal = SysAllocString(lpszSrc);
+
731 return *this;
+
732 }
+
733
+
737 variant& operator=(_Inout_opt_ IDispatch* pSrc)
+
738 {
+
739 VariantClear(this);
+
740 vt = VT_DISPATCH;
+
741 pdispVal = pSrc;
+
742 if (pdispVal != NULL)
+
743 pdispVal->AddRef();
+
744 return *this;
+
745 }
+
746
+
750 variant& operator=(_Inout_opt_ IUnknown* pSrc)
+
751 {
+
752 VariantClear(this);
+
753 vt = VT_UNKNOWN;
+
754 punkVal = pSrc;
+
755 if (punkVal != NULL)
+
756 punkVal->AddRef();
+
757 return *this;
+
758 }
+
759
+
763 variant& operator=(_In_ unsigned char* pbSrc) noexcept
+
764 {
+
765 if (vt != (VT_UI1|VT_BYREF)) {
+
766 VariantClear(this);
+
767 vt = VT_UI1|VT_BYREF;
+
768 }
+
769 pbVal = pbSrc;
+
770 return *this;
+
771 }
+
772
+
776 variant& operator=(_In_ short* pnSrc) noexcept
+
777 {
+
778 if (vt != (VT_I2|VT_BYREF)) {
+
779 VariantClear(this);
+
780 vt = VT_I2|VT_BYREF;
+
781 }
+
782 piVal = pnSrc;
+
783 return *this;
+
784 }
+
785
+
789 variant& operator=(_In_ unsigned short* pnSrc) noexcept
+
790 {
+
791 if (vt != (VT_UI2|VT_BYREF)) {
+
792 VariantClear(this);
+
793 vt = VT_UI2|VT_BYREF;
+
794 }
+
795 puiVal = pnSrc;
+
796 return *this;
+
797 }
+
798
+
802 variant& operator=(_In_ int* pnSrc) noexcept
+
803 {
+
804 if (vt != (VT_I4|VT_BYREF)) {
+
805 VariantClear(this);
+
806 vt = VT_I4|VT_BYREF;
+
807 }
+
808 pintVal = pnSrc;
+
809 return *this;
+
810 }
+
811
+
815 variant& operator=(_In_ unsigned int* pnSrc) noexcept
+
816 {
+
817 if (vt != (VT_UI4|VT_BYREF)) {
+
818 VariantClear(this);
+
819 vt = VT_UI4|VT_BYREF;
+
820 }
+
821 puintVal = pnSrc;
+
822 return *this;
+
823 }
+
824
+
828 variant& operator=(_In_ long* pnSrc) noexcept
+
829 {
+
830 if (vt != (VT_I4|VT_BYREF)) {
+
831 VariantClear(this);
+
832 vt = VT_I4|VT_BYREF;
+
833 }
+
834 plVal = pnSrc;
+
835 return *this;
+
836 }
+
837
+
841 variant& operator=(_In_ unsigned long* pnSrc) noexcept
+
842 {
+
843 if (vt != (VT_UI4|VT_BYREF)) {
+
844 VariantClear(this);
+
845 vt = VT_UI4|VT_BYREF;
+
846 }
+
847 pulVal = pnSrc;
+
848 return *this;
+
849 }
+
850
+
854 variant& operator=(_In_ long long* pnSrc) noexcept
+
855 {
+
856 if (vt != (VT_I8|VT_BYREF)) {
+
857 VariantClear(this);
+
858 vt = VT_I8|VT_BYREF;
+
859 }
+
860 pllVal = pnSrc;
+
861 return *this;
+
862 }
+
863
+
867 variant& operator=(_In_ unsigned long long* pnSrc) noexcept
+
868 {
+
869 if (vt != (VT_UI8|VT_BYREF)) {
+
870 VariantClear(this);
+
871 vt = VT_UI8|VT_BYREF;
+
872 }
+
873 pullVal = pnSrc;
+
874 return *this;
+
875 }
+
876
+
880 variant& operator=(_In_ float* pfSrc) noexcept
+
881 {
+
882 if (vt != (VT_R4|VT_BYREF)) {
+
883 VariantClear(this);
+
884 vt = VT_R4|VT_BYREF;
+
885 }
+
886 pfltVal = pfSrc;
+
887 return *this;
+
888 }
+
889
+
893 variant& operator=(_In_ double* pfSrc) noexcept
+
894 {
+
895 if (vt != (VT_R8|VT_BYREF)) {
+
896 VariantClear(this);
+
897 vt = VT_R8|VT_BYREF;
+
898 }
+
899 pdblVal = pfSrc;
+
900 return *this;
+
901 }
+
902
+
906 variant& operator=(_In_ const SAFEARRAY *pSrc) noexcept
+
907 {
+
908 assert(pSrc != NULL);
+
909 VariantClear(this);
+
910
+
911 LPSAFEARRAY pCopy;
+
912 const HRESULT hr = SafeArrayCopy(const_cast<LPSAFEARRAY>(pSrc), &pCopy);
+
913 if (SUCCEEDED(hr)) {
+
914 SafeArrayGetVartype(const_cast<LPSAFEARRAY>(pSrc), &vt);
+
915 vt |= VT_ARRAY;
+
916 parray = pCopy;
+
917 } else
+
918 assert(0);
+
919
+
920 return *this;
+
921 }
+
922
+
923 public:
+
932 bool operator==(_In_ const VARIANT& varSrc) const noexcept
+
933 {
+
934 if (vt == VT_NULL && varSrc.vt == VT_NULL) return true;
+
935 if (vt != varSrc.vt) return false;
+
936 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0) == static_cast<HRESULT>(VARCMP_EQ);
+
937 }
+
938
+
947 bool operator!=(_In_ const VARIANT& varSrc) const noexcept
+
948 {
+
949 return !operator==(varSrc);
+
950 }
+
951
+
960 bool operator<(_In_ const VARIANT& varSrc) const noexcept
+
961 {
+
962 if (vt == VT_NULL && varSrc.vt == VT_NULL) return false;
+
963 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0)== static_cast<HRESULT>(VARCMP_LT);
+
964 }
+
965
+
974 bool operator>(_In_ const VARIANT& varSrc) const noexcept
+
975 {
+
976 if (vt == VT_NULL && varSrc.vt == VT_NULL) return false;
+
977 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0)== static_cast<HRESULT>(VARCMP_GT);
+
978 }
+
979
+
988 bool operator<=(_In_ const VARIANT& varSrc) const noexcept
+
989 {
+
990 return !operator>(varSrc);
+
991 }
+
992
+
1001 bool operator>=(_In_ const VARIANT& varSrc) const noexcept
+
1002 {
+
1003 return !operator<(varSrc);
+
1004 }
+
1005
+
1011 HRESULT change_type(_In_ VARTYPE _vt, _In_opt_ USHORT wFlags = 0) noexcept
+
1012 {
+
1013 return VariantChangeType(this, this, wFlags, _vt);
+
1014 }
+
1015
+
1016 private:
+
1018 HRESULT compare(_In_ const VARIANT &varLeft, _In_ const VARIANT &varRight, _In_ LCID lcid, _In_ ULONG dwFlags) const noexcept
+
1019 {
+
1020 switch(vt) {
+
1021 case VT_I1: return varLeft.cVal == varRight.cVal ? VARCMP_EQ : varLeft.cVal > varRight.cVal ? VARCMP_GT : VARCMP_LT;
+
1022 case VT_UI2: return varLeft.uiVal == varRight.uiVal ? VARCMP_EQ : varLeft.uiVal > varRight.uiVal ? VARCMP_GT : VARCMP_LT;
+
1023 case VT_UI4: return varLeft.uintVal == varRight.uintVal ? VARCMP_EQ : varLeft.uintVal > varRight.uintVal ? VARCMP_GT : VARCMP_LT;
+
1024 case VT_UI8: return varLeft.ullVal == varRight.ullVal ? VARCMP_EQ : varLeft.ullVal > varRight.ullVal ? VARCMP_GT : VARCMP_LT;
+
1025 default: return VarCmp(const_cast<LPVARIANT>(&varLeft), const_cast<LPVARIANT>(&varRight), lcid, dwFlags);
+
1026 }
+
1027 }
+
1029 };
+
1030 #pragma warning(pop)
+
1031
+ +
1036 {
+ + +
1039
+
1040 public:
+
1046 com_initializer(_In_opt_ LPVOID pvReserved) noexcept
+
1047 {
+
1048 m_result = CoInitialize(pvReserved);
+
1049 }
+
1050
+
1056 com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept
+
1057 {
+
1058 m_result = CoInitializeEx(pvReserved, dwCoInit);
+
1059 }
+
1060
+ +
1067 {
+
1068 if (SUCCEEDED(m_result))
+
1069 CoUninitialize();
+
1070 }
+
1071
+
1077 HRESULT status() const noexcept
+
1078 {
+
1079 return m_result;
+
1080 }
+
1081
+
1082 protected:
+
1083 HRESULT m_result;
+
1084 };
+
1085
+
1087}
+
BSTR string wrapper.
Definition: COM.h:202
+
virtual ~bstr()
Destroys the string.
Definition: COM.h:236
+
bstr(_In_ const std::basic_string< wchar_t, _Traits, _Ax > &src) noexcept
Constructs BSTR from std::basic_string.
Definition: COM.h:226
+
void free_internal() noexcept override
Destroys the string.
Definition: COM.h:258
+
bstr(_In_ LPCOLESTR src) noexcept
Constructs BSTR from OLE string.
Definition: COM.h:209
+
UINT length() const noexcept
Returns the length of the string.
Definition: COM.h:247
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the string.
Definition: COM.h:272
+
bstr(_In_ LPCOLESTR src, _In_ UINT len) noexcept
Constructs BSTR from OLE string with length.
Definition: COM.h:217
+
Context scope automatic COM (un)initialization.
Definition: COM.h:1036
+
com_initializer(_In_opt_ LPVOID pvReserved) noexcept
Initializes the COM library on the current thread and identifies the concurrency model as single-thre...
Definition: COM.h:1046
+
com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept
Initializes the COM library for use by the calling thread, sets the thread's concurrency model,...
Definition: COM.h:1056
+
HRESULT status() const noexcept
Return result of CoInitialize() call.
Definition: COM.h:1077
+
virtual ~com_initializer()
Uninitializes COM.
Definition: COM.h:1066
+
HRESULT m_result
Result of CoInitialize call.
Definition: COM.h:1083
+
COM object wrapper template.
Definition: COM.h:82
+
void free_internal() noexcept override
Releases the object by decrementing reference counter.
Definition: COM.h:177
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the object by incrementing the reference counter.
Definition: COM.h:191
+
com_obj(_In_ com_obj< _Other > &other)
Queries the object for another interface and creates new class with it.
Definition: COM.h:114
+
com_obj(_In_ _Other *other)
Queries the object for another interface and creates new class with it.
Definition: COM.h:102
+
HRESULT create(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, _In_ DWORD dwClsContext=CLSCTX_ALL)
Creates a new object.
Definition: COM.h:133
+
virtual ~com_obj()
Releases object.
Definition: COM.h:122
+
com_obj(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, DWORD dwClsContext=CLSCTX_ALL)
Constructs a new object and creates a new class with it.
Definition: COM.h:91
+
HRESULT query_interface(_Out_ _Other **h) const
Queries the object for another interface.
Definition: COM.h:148
+
HRESULT query_interface(_Out_ com_obj< _Other > &h) const
Queries the object for another interface.
Definition: COM.h:161
+
COM runtime error.
Definition: COM.h:24
+
com_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
Constructs an exception.
Definition: COM.h:42
+
com_runtime_error(_In_ error_type num, _In_ const std::string &msg)
Constructs an exception.
Definition: COM.h:32
+
Base abstract template class to support object handle keeping for objects that support handle duplica...
Definition: Common.h:844
+
T * handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
Numerical runtime error.
Definition: Common.h:1390
+
HRESULT error_type
Error number type.
Definition: Common.h:1392
+
VARIANT struct wrapper.
Definition: COM.h:284
+
variant & operator=(_In_ double *pfSrc) noexcept
Copy from double reference.
Definition: COM.h:893
+
variant & operator=(_In_ short *pnSrc) noexcept
Copy from short reference.
Definition: COM.h:776
+
variant & operator=(_In_ short nSrc) noexcept
Copy from short value.
Definition: COM.h:581
+
variant & operator=(_In_ unsigned long long nSrc) noexcept
Copy from unsigned long long value.
Definition: COM.h:672
+
variant(_In_opt_ IDispatch *pSrc)
Constructs VARIANT from IDispatch.
Definition: COM.h:467
+
bool operator>=(_In_ const VARIANT &varSrc) const noexcept
Is variant greater than or equal to?
Definition: COM.h:1001
+
variant(_In_z_ LPCOLESTR lpszSrc) noexcept
Constructs VARIANT from OLE string.
Definition: COM.h:449
+
variant(_In_ long long nSrc) noexcept
Constructs VARIANT from 64-bit integer.
Definition: COM.h:421
+
variant & operator=(_In_ int *pnSrc) noexcept
Copy from int reference.
Definition: COM.h:802
+
bool operator>(_In_ const VARIANT &varSrc) const noexcept
Is variant greater than?
Definition: COM.h:974
+
variant & operator=(_In_ float fltSrc) noexcept
Copy from float value.
Definition: COM.h:686
+
variant & operator=(_In_ unsigned short nSrc) noexcept
Copy from unsigned short value.
Definition: COM.h:594
+
variant & operator=(_In_ char cSrc) noexcept
Copy from char value.
Definition: COM.h:555
+
variant(_In_ int nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from integer.
Definition: COM.h:363
+
variant & operator=(_In_ CY cySrc) noexcept
Copy from CY value.
Definition: COM.h:712
+
variant & operator=(_In_ unsigned long long *pnSrc) noexcept
Copy from unsigned long long reference.
Definition: COM.h:867
+
variant & operator=(_Inout_opt_ IDispatch *pSrc)
Copy from IDispatch.
Definition: COM.h:737
+
variant(_In_ unsigned char nSrc) noexcept
Constructs VARIANT from byte.
Definition: COM.h:336
+
variant(_In_ float fltSrc) noexcept
Constructs VARIANT from float.
Definition: COM.h:402
+
variant(_In_ unsigned long nSrc) noexcept
Constructs VARIANT from unsigned long.
Definition: COM.h:393
+
variant(_In_ double dblSrc, _In_ VARTYPE vtSrc=VT_R8) noexcept
Constructs VARIANT from double or variant date.
Definition: COM.h:411
+
variant(_In_ long nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from long.
Definition: COM.h:383
+
variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc=VT_UI4) noexcept
Constructs VARIANT from unsigned integer.
Definition: COM.h:373
+
virtual ~variant()
Destroys VARIANT.
Definition: COM.h:508
+
bool operator<(_In_ const VARIANT &varSrc) const noexcept
Is variant less than?
Definition: COM.h:960
+
variant & operator=(_In_ unsigned long *pnSrc) noexcept
Copy from unsigned long reference.
Definition: COM.h:841
+
variant & operator=(_In_ long nSrc) noexcept
Copy from long value.
Definition: COM.h:633
+
variant & operator=(_In_ int nSrc) noexcept
Copy from int value.
Definition: COM.h:607
+
variant & operator=(_Inout_opt_ IUnknown *pSrc)
Copy from IUnknown.
Definition: COM.h:750
+
variant & operator=(_In_ long long nSrc) noexcept
Copy from long long value.
Definition: COM.h:659
+
variant & operator=(_In_ const SAFEARRAY *pSrc) noexcept
Copy from SAFEARRAY.
Definition: COM.h:906
+
bool operator!=(_In_ const VARIANT &varSrc) const noexcept
Is variant not equal to?
Definition: COM.h:947
+
variant(_In_ short nSrc) noexcept
Constructs VARIANT from short.
Definition: COM.h:345
+
variant(_In_ unsigned short nSrc) noexcept
Constructs VARIANT from unsigned short.
Definition: COM.h:354
+
variant(_In_ unsigned long long nSrc) noexcept
Constructs VARIANT from unsigned integer.
Definition: COM.h:430
+
bool operator==(_In_ const VARIANT &varSrc) const noexcept
Is variant equal to?
Definition: COM.h:932
+
variant & operator=(_In_ unsigned char *pbSrc) noexcept
Copy from unsigned char reference.
Definition: COM.h:763
+
variant(_In_z_ BSTR bstr) noexcept
Constructs VARIANT from BSTR.
Definition: COM.h:458
+
variant() noexcept
Constructs blank VARIANT.
Definition: COM.h:289
+
variant & operator=(_In_ double dblSrc) noexcept
Copy from double value.
Definition: COM.h:699
+
variant & operator=(_In_ const VARIANT &varSrc)
Copy from another VARIANT.
Definition: COM.h:516
+
HRESULT change_type(_In_ VARTYPE _vt, _In_opt_ USHORT wFlags=0) noexcept
Converts a variant from one type to another.
Definition: COM.h:1011
+
variant & operator=(_In_ bool bSrc) noexcept
Copy from bool value.
Definition: COM.h:542
+
bool operator<=(_In_ const VARIANT &varSrc) const noexcept
Is variant less than or equal to?
Definition: COM.h:988
+
variant & operator=(_In_ unsigned long nSrc) noexcept
Copy from unsigned long value.
Definition: COM.h:646
+
variant & operator=(_In_ long long *pnSrc) noexcept
Copy from long long reference.
Definition: COM.h:854
+
variant & operator=(_In_z_ LPCOLESTR lpszSrc) noexcept
Copy from OLE string value.
Definition: COM.h:726
+
variant(_In_ const VARIANT &varSrc)
Constructs VARIANT from another.
Definition: COM.h:297
+
variant(_Inout_ VARIANT &&varSrc) noexcept
Moves VARIANT from another.
Definition: COM.h:309
+
variant(_In_ char cSrc) noexcept
Constructs VARIANT from character.
Definition: COM.h:327
+
variant(_In_ CY cySrc) noexcept
Constructs VARIANT from CY (64-bit integer)
Definition: COM.h:439
+
variant & operator=(_In_ unsigned char nSrc) noexcept
Copy from unsigned char value.
Definition: COM.h:568
+
variant(_In_opt_ IUnknown *pSrc)
Constructs VARIANT from IUnknown.
Definition: COM.h:479
+
variant & operator=(_In_ unsigned int nSrc) noexcept
Copy from unsigned int value.
Definition: COM.h:620
+
variant & operator=(_In_ float *pfSrc) noexcept
Copy from float reference.
Definition: COM.h:880
+
variant & operator=(_Inout_ VARIANT &&varSrc) noexcept
Moves from another VARIANT.
Definition: COM.h:529
+
variant(_In_ bool bSrc) noexcept
Constructs VARIANT from bool.
Definition: COM.h:318
+
variant(_In_ const SAFEARRAY *pSrc)
Constructs VARIANT from SAFEARRAY.
Definition: COM.h:491
+
variant & operator=(_In_ unsigned short *pnSrc) noexcept
Copy from unsigned short reference.
Definition: COM.h:789
+
variant & operator=(_In_ long *pnSrc) noexcept
Copy from long reference.
Definition: COM.h:828
+
variant & operator=(_In_ unsigned int *pnSrc) noexcept
Copy from unsigned int reference.
Definition: COM.h:815
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition: Common.h:61
+
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:150
+
static const T * invalid
Invalid handle value.
Definition: Common.h:590
+
Deleter for unique_ptr using CoTaskMemFree.
Definition: COM.h:59
+
void operator()(_T *_Ptr) const
Delete a pointer.
Definition: COM.h:71
+
CoTaskMemFree_delete() noexcept
Default constructor.
Definition: COM.h:63
+
+ + + + diff --git a/_common_8h_source.html b/_common_8h_source.html new file mode 100644 index 00000000..cf404abd --- /dev/null +++ b/_common_8h_source.html @@ -0,0 +1,1329 @@ + + + + + + + +WinStd: include/WinStd/Common.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Common.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h.
+
10#include <Windows.h>
+
11#include <assert.h>
+
12#include <stdarg.h>
+
13#include <tchar.h>
+
14#include <iostream>
+
15#include <memory>
+
16#include <stdexcept>
+
17#include <string>
+
18#include <vector>
+
19
+
25
+
29#ifndef __L
+
30#define __L(x) L ## x
+
31#endif
+
32
+
36#ifndef _L
+
37#define _L(x) __L(x)
+
38#endif
+
39
+
43#define WINSTD_STRING_IMPL(x) #x
+
44
+
48#define WINSTD_STRING(x) WINSTD_STRING_IMPL(x)
+
49
+
53#define WINSTD_NONCOPYABLE(C) \
+
54private: \
+
55 C (_In_ const C &h) noexcept; \
+
56 C& operator=(_In_ const C &h) noexcept;
+
57
+
61#define WINSTD_NONMOVABLE(C) \
+
62private: \
+
63 C (_Inout_ C &&h) noexcept; \
+
64 C& operator=(_Inout_ C &&h) noexcept;
+
65
+
66#ifndef WINSTD_STACK_BUFFER_BYTES
+
80#define WINSTD_STACK_BUFFER_BYTES 1024
+
81#endif
+
82
+
84
+
96
+
100#ifdef UNICODE
+
101#define PRINTF_LPTSTR "ls"
+
102#else
+
103#define PRINTF_LPTSTR "s"
+
104#endif
+
105
+
109#ifdef OLE2ANSI
+
110#define PRINTF_LPOLESTR "hs"
+
111#else
+
112#define PRINTF_LPOLESTR "ls"
+
113#endif
+
114
+
115#ifdef _UNICODE
+
116#define _tcin (std::wcin )
+
117#define _tcout (std::wcout)
+
118#define _tcerr (std::wcerr)
+
119#define _tclog (std::wclog)
+
120#else
+
121#define _tcin (std::cin )
+
122#define _tcout (std::cout)
+
123#define _tcerr (std::cerr)
+
124#define _tclog (std::clog)
+
125#endif
+
126
+
128
+
134
+
138#define WINSTD_HANDLE_IMPL(C, INVAL) \
+
139public: \
+
140 C ( ) noexcept { } \
+
141 C (_In_opt_ handle_type h) noexcept : handle<handle_type, INVAL>( h ) { } \
+
142 C (_Inout_ C &&h) noexcept : handle<handle_type, INVAL>(std::move(h)) { } \
+
143 C& operator=(_In_opt_ handle_type h) noexcept { handle<handle_type, INVAL>::operator=( h ); return *this; } \
+
144 C& operator=(_Inout_ C &&h) noexcept { handle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
+
145WINSTD_NONCOPYABLE(C)
+
146
+
150#define WINSTD_DPLHANDLE_IMPL(C, INVAL) \
+
151public: \
+
152 C ( ) noexcept { } \
+
153 C (_In_opt_ handle_type h) noexcept : dplhandle<handle_type, INVAL>( h ) { } \
+
154 C (_In_ const C &h) noexcept : dplhandle<handle_type, INVAL>(duplicate_internal(h.m_h)) { } \
+
155 C (_Inout_ C &&h) noexcept : dplhandle<handle_type, INVAL>(std::move (h )) { } \
+
156 C& operator=(_In_opt_ handle_type h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
+
157 C& operator=(_In_ const C &h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
+
158 C& operator=(_Inout_ C &&h) noexcept { dplhandle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
+
159private:
+
160
+
162
+
163#ifndef _FormatMessage_format_string_
+
164#define _FormatMessage_format_string_ _In_z_
+
165#endif
+
166
+
167#ifndef _LPCBYTE_DEFINED
+
168#define _LPCBYTE_DEFINED
+
169typedef const BYTE *LPCBYTE;
+
170#endif
+
171
+
172#pragma warning(push)
+
173// Do not use _vsnprintf_s/_vsnwprintf_s(), since it terminates string by force even when we explicitly want to write unterminated string.
+
174// Threfore turn off compiler warning instead. ;)
+
175#pragma warning(disable: 4995)
+
176#pragma warning(disable: 4996)
+
177#pragma warning(disable: 4505) // Don't warn on unused code
+
178
+
181
+
192#if _MSC_VER <= 1600
+
193static int vsnprintf(_Out_z_cap_(capacity) char *str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const char *format, _In_ va_list arg)
+
194{
+
195 return _vsnprintf(str, capacity, format, arg);
+
196}
+
197#endif
+
198
+
209static 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
+
210{
+
211 return _vsnwprintf(str, capacity, format, arg);
+
212}
+
213
+
223template<class _Elem, class _Traits, class _Ax>
+
224static int vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, _In_ va_list arg)
+
225{
+
226 _Elem buf[WINSTD_STACK_BUFFER_BYTES/sizeof(_Elem)];
+
227
+
228 // Try with stack buffer first.
+
229 int count = vsnprintf(buf, _countof(buf) - 1, format, arg);
+
230 if (count >= 0) {
+
231 // Copy from stack.
+
232 str.assign(buf, count);
+
233 } else {
+
234 for (size_t capacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(_Elem);; capacity *= 2) {
+
235 // Allocate on heap and retry.
+
236 auto buf_dyn = std::make_unique<_Elem[]>(capacity);
+
237 count = vsnprintf(buf_dyn.get(), capacity - 1, format, arg);
+
238 if (count >= 0) {
+
239 str.assign(buf_dyn.get(), count);
+
240 break;
+
241 }
+
242 }
+
243 }
+
244
+
245 return count;
+
246}
+
247
+
256template<class _Elem, class _Traits, class _Ax>
+
257static int sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
+
258{
+
259 va_list arg;
+
260 va_start(arg, format);
+
261 const int res = vsprintf(str, format, arg);
+
262 va_end(arg);
+
263 return res;
+
264}
+
265
+
271template<class _Traits, class _Ax>
+
272static DWORD FormatMessage(_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)
+
273{
+
274 std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
+
275 DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>((LPSTR*)get_ptr(lpBuffer)), 0, Arguments);
+
276 if (dwResult)
+
277 str.assign(lpBuffer.get(), dwResult);
+
278 return dwResult;
+
279}
+
280
+
286template<class _Traits, class _Ax>
+
287static DWORD FormatMessage(_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)
+
288{
+
289 std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
+
290 DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>((LPWSTR*)get_ptr(lpBuffer)), 0, Arguments);
+
291 if (dwResult)
+
292 str.assign(lpBuffer.get(), dwResult);
+
293 return dwResult;
+
294}
+
295
+
297
+
298#pragma warning(pop)
+
299
+
300namespace winstd
+
301{
+
304
+
308#ifdef _UNICODE
+
309 typedef std::wstring tstring;
+
310#else
+
311 typedef std::string tstring;
+
312#endif
+
313
+
317 template <class _Ty>
+ +
319 {
+ +
321
+ +
326
+
330 template <class _Ty2> LocalFree_delete(const LocalFree_delete<_Ty2>&) {}
+
331
+
337 void operator()(_Ty *_Ptr) const
+
338 {
+
339 LocalFree(_Ptr);
+
340 }
+
341 };
+
342
+
346 template <class _Ty>
+
347 struct LocalFree_delete<_Ty[]>
+
348 {
+ +
350
+
354 LocalFree_delete() noexcept {}
+
355
+
359 void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
+
360 {
+
361 LocalFree(_Ptr);
+
362 }
+
363
+
369 template<class _Other>
+
370 void operator()(_Other *) const
+
371 {
+
372 LocalFree(_Ptr);
+
373 }
+
374 };
+
375
+
379 template<class _Ty, class _Dx>
+ +
381 {
+
382 public:
+
388 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) :
+
389 m_own(owner),
+
390 m_ptr(owner.release())
+
391 {}
+
392
+ +
399 m_own(other.m_own),
+
400 m_ptr(other.m_ptr)
+
401 {
+
402 other.m_ptr = nullptr;
+
403 }
+
404
+ +
409 {
+
410 if (m_ptr != nullptr)
+
411 m_own.reset(m_ptr);
+
412 }
+
413
+
419 operator typename _Ty**()
+
420 {
+
421 return &m_ptr;
+
422 }
+
423
+
429 operator typename _Ty*&()
+
430 {
+
431 return m_ptr;
+
432 }
+
433
+
434 protected:
+
435 std::unique_ptr<_Ty, _Dx> &m_own;
+
436 _Ty *m_ptr;
+
437 };
+
438
+
446 template<class _Ty, class _Dx>
+
447 ref_unique_ptr<_Ty, _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) noexcept
+
448 {
+
449 return ref_unique_ptr<_Ty, _Dx>(owner);
+
450 }
+
451
+
460 template<class _Ty, class _Dx>
+
461 ref_unique_ptr<_Ty[], _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept
+
462 {
+
463 return ref_unique_ptr<_Ty[], _Dx>(owner);
+
464 }
+
465
+
470 #pragma warning(push)
+
471 #pragma warning(disable: 26432) // Copy constructor and assignment operator are also present, but not detected by code analysis as they are using base type source object reference.
+
472 template<class _Ty, class _Dx>
+
473 class ref_unique_ptr<_Ty[], _Dx>
+
474 {
+
475 public:
+
481 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept :
+
482 m_own(owner),
+
483 m_ptr(owner.release())
+
484 {}
+
485
+
493 ref_unique_ptr& operator=(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept
+
494 {
+
495 if (this != &other) {
+
496 m_own = owner;
+
497 m_ptr = owner.release();
+
498 }
+
499
+
500 return *this;
+
501 }
+
502
+
508 ref_unique_ptr(_Inout_ ref_unique_ptr<_Ty[], _Dx> &&other) :
+
509 m_own(other.m_own),
+
510 m_ptr(other.m_ptr)
+
511 {
+
512 other.m_ptr = nullptr;
+
513 }
+
514
+
522 ref_unique_ptr& operator=(_Inout_ ref_unique_ptr<_Ty[], _Dx> &&other)
+
523 {
+
524 if (this != &other) {
+
525 m_own = other.m_own;
+
526 m_ptr = other.m_ptr;
+
527 other.m_ptr = nullptr;
+
528 }
+
529
+
530 return *this;
+
531 }
+
532
+ +
537 {
+
538 if (m_ptr != nullptr)
+
539 m_own.reset(m_ptr);
+
540 }
+
541
+
547 operator typename _Ty**() noexcept
+
548 {
+
549 return &m_ptr;
+
550 }
+
551
+
557 operator typename _Ty*&()
+
558 {
+
559 return m_ptr;
+
560 }
+
561
+
562 protected:
+
563 std::unique_ptr<_Ty[], _Dx> &m_own;
+
564 _Ty *m_ptr;
+
565 };
+
566 #pragma warning(pop)
+
567
+
569
+
572
+
578 template <class T, const T INVAL>
+
579 class handle
+
580 {
+
581 public:
+
585 typedef T handle_type;
+
586
+
590 static const T invalid;
+
591
+
595 handle() noexcept : m_h(invalid)
+
596 {
+
597 }
+
598
+
604 handle(_In_opt_ handle_type h) noexcept : m_h(h)
+
605 {
+
606 }
+
607
+
613 handle(_Inout_ handle<handle_type, INVAL> &&h) noexcept
+
614 {
+
615 // Transfer handle.
+
616 m_h = h.m_h;
+
617 h.m_h = invalid;
+
618 }
+
619
+
620 private:
+
621 // This class is noncopyable.
+
622 handle(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
623 handle<handle_type, INVAL>& operator=(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
624
+
625 public:
+ +
632 {
+
633 attach(h);
+
634 return *this;
+
635 }
+
636
+
642 #pragma warning(suppress: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+ +
644 {
+
645 if (this != std::addressof(h)) {
+
646 // Transfer handle.
+
647 if (m_h != invalid)
+ +
649 m_h = h.m_h;
+
650 h.m_h = invalid;
+
651 }
+
652 return *this;
+
653 }
+
654
+
660 operator handle_type() const
+
661 {
+
662 return m_h;
+
663 }
+
664
+ +
671 {
+
672 assert(m_h != invalid);
+
673 return *m_h;
+
674 }
+
675
+ +
681 {
+
682 assert(m_h == invalid);
+
683 return &m_h;
+
684 }
+
685
+ +
692 {
+
693 assert(m_h != invalid);
+
694 return m_h;
+
695 }
+
696
+
704 bool operator!() const
+
705 {
+
706 return m_h == invalid;
+
707 }
+
708
+
717 bool operator<(_In_opt_ handle_type h) const
+
718 {
+
719 return m_h < h;
+
720 }
+
721
+
730 bool operator<=(_In_opt_ handle_type h) const
+
731 {
+
732 return !operator>(h);
+
733 }
+
734
+
743 bool operator>=(_In_opt_ handle_type h) const
+
744 {
+
745 return !operator<(h);
+
746 }
+
747
+
756 bool operator>(_In_opt_ handle_type h) const
+
757 {
+
758 return h < m_h;
+
759 }
+
760
+
769 bool operator!=(_In_opt_ handle_type h) const
+
770 {
+
771 return !operator==(h);
+
772 }
+
773
+
782 bool operator==(_In_opt_ handle_type h) const
+
783 {
+
784 return m_h == h;
+
785 }
+
786
+
794 void attach(_In_opt_ handle_type h) noexcept
+
795 {
+
796 if (m_h != invalid)
+ +
798 m_h = h;
+
799 }
+
800
+ +
807 {
+
808 handle_type h = m_h;
+
809 m_h = invalid;
+
810 return h;
+
811 }
+
812
+
816 void free()
+
817 {
+
818 if (m_h != invalid) {
+ +
820 m_h = invalid;
+
821 }
+
822 }
+
823
+
825
+
826 protected:
+
830 virtual void free_internal() noexcept = 0;
+
831
+
832 protected:
+ +
834 };
+
835
+
836 template <class T, const T INVAL>
+
837 const T handle<T, INVAL>::invalid = INVAL;
+
838
+
842 template <class T, T INVAL>
+
843 class dplhandle : public handle<T, INVAL>
+
844 {
+
845 public:
+
849 dplhandle() noexcept
+
850 {
+
851 }
+
852
+ +
859 {
+
860 }
+
861
+
867 dplhandle<handle_type, INVAL>(_In_ const dplhandle<handle_type, INVAL> &h) noexcept : handle<handle_type, INVAL>(duplicate_internal(h.m_h))
+
868 {
+
869 }
+
870
+
876 dplhandle<handle_type, INVAL>(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept : handle<handle_type, INVAL>(std::move(h))
+
877 {
+
878 }
+
879
+ +
886 {
+ +
888 return *this;
+
889 }
+
890
+ +
897 {
+
898 if (this != std::addressof(h)) {
+
899 if (h.m_h != invalid) {
+
900 handle_type h_new = duplicate_internal(h.m_h);
+
901 if (h_new != invalid) {
+
902 if (m_h != invalid)
+ +
904
+
905 m_h = h_new;
+
906 } else
+
907 assert(0); // Could not duplicate the handle
+
908 } else {
+
909 if (m_h != invalid)
+ +
911
+
912 m_h = invalid;
+
913 }
+
914 }
+
915 return *this;
+
916 }
+
917
+
923 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+ +
925 {
+ +
927 return *this;
+
928 }
+
929
+ +
936 {
+
937 return m_h != invalid ? duplicate_internal(m_h) : invalid;
+
938 }
+
939
+ +
950 {
+
951 if (m_h != invalid)
+ +
953
+
954 return h != invalid ? (m_h = duplicate_internal(h)) != invalid : (m_h = invalid, true);
+
955 }
+
956
+
957 protected:
+
965 virtual handle_type duplicate_internal(_In_ handle_type h) const noexcept = 0;
+
966 };
+
967
+
969
+
972
+
976 template <class T>
+ +
978 {
+
979 public:
+
983 typedef size_t size_type;
+
984
+
988 typedef T value_type;
+
989
+
993 typedef T& reference;
+
994
+
998 typedef const T& const_reference;
+
999
+
1003 typedef T* pointer;
+
1004
+
1008 typedef const T* const_pointer;
+
1009
+
1010 public:
+
1016 vector_queue(_In_ size_type size_max) :
+
1017 m_data(new value_type[size_max]),
+
1018 m_head(0),
+
1019 m_count(0),
+
1020 m_size_max(size_max)
+
1021 {
+
1022 }
+
1023
+ +
1030 m_data(new value_type[other.m_size_max]),
+
1031 m_head(other.m_head),
+
1032 m_count(other.m_count),
+
1033 m_size_max(other.m_size_max)
+
1034 {
+
1035 // Copy elements.
+
1036 for (size_type i = 0; i < m_count; i++) {
+
1037 size_type i_l = abs(i);
+
1038 m_data[i_l] = other.m_data[i_l];
+
1039 }
+
1040 }
+
1041
+ +
1046 {
+
1047 if (m_data) delete [] m_data;
+
1048 }
+
1049
+ +
1056 m_data (std::move(other.m_data )),
+
1057 m_head (std::move(other.m_head )),
+
1058 m_count (std::move(other.m_count )),
+
1059 m_size_max(std::move(other.m_size_max))
+
1060 {
+
1061 // Reset other to consistent state.
+
1062 other.m_data = NULL;
+
1063 other.m_head = 0;
+
1064 other.m_count = 0;
+
1065 other.m_size_max = 0;
+
1066 }
+
1067
+ +
1074 {
+
1075 if (this != std::addressof(other)) {
+
1076 m_head = other.m_head;
+
1077 m_count = other.m_count;
+
1078 m_size_max = other.m_size_max;
+
1079
+
1080 // Copy elements.
+
1081 if (m_data) delete [] m_data;
+
1082 m_data = new value_type[other.m_size_max];
+
1083 for (size_type i = 0; i < m_count; i++) {
+
1084 size_type i_l = abs(i);
+
1085 m_data[i_l] = other.m_data[i_l];
+
1086 }
+
1087 }
+
1088
+
1089 return *this;
+
1090 }
+
1091
+ +
1098 {
+
1099 if (this != std::addressof(other)) {
+
1100 m_data = std::move(other.m_data );
+
1101 m_head = std::move(other.m_head );
+
1102 m_count = std::move(other.m_count );
+
1103 m_size_max = std::move(other.m_size_max);
+
1104
+
1105 // Reset other to consistent state.
+
1106 other.m_data = NULL;
+
1107 other.m_head = 0;
+
1108 other.m_count = 0;
+
1109 other.m_size_max = 0;
+
1110 }
+
1111
+
1112 return *this;
+
1113 }
+
1114
+ +
1119 {
+
1120 return m_count;
+
1121 }
+
1122
+ +
1127 {
+
1128 return m_size_max;
+
1129 }
+
1130
+
1134 void clear()
+
1135 {
+
1136 m_count = 0;
+
1137 }
+
1138
+
1142 bool empty() const
+
1143 {
+
1144 return m_count == 0;
+
1145 }
+
1146
+ +
1153 {
+
1154 if (pos >= m_count) throw std::invalid_argument("Invalid subscript");
+
1155 return m_data[abs(pos)];
+
1156 }
+
1157
+ +
1164 {
+
1165 if (pos >= m_count) throw std::invalid_argument("Invalid subscript");
+
1166 return m_data[abs(pos)];
+
1167 }
+
1168
+ +
1175 {
+
1176 if (pos >= m_count) throw std::invalid_argument("Invalid subscript");
+
1177 return m_data[abs(pos)];
+
1178 }
+
1179
+ +
1186 {
+
1187 if (pos >= m_count) throw std::invalid_argument("Invalid subscript");
+
1188 return m_data[abs(pos)];
+
1189 }
+
1190
+ +
1199 {
+
1200 if (pos >= m_size_max) throw std::invalid_argument("Invalid subscript");
+
1201 return m_data[pos];
+
1202 }
+
1203
+ +
1212 {
+
1213 if (pos >= m_size_max) throw std::invalid_argument("Invalid subscript");
+
1214 return m_data[pos];
+
1215 }
+
1216
+ +
1225 {
+
1226 if (m_count < m_size_max) {
+
1227 size_type pos = abs(m_count);
+
1228 m_data[pos] = v;
+
1229 m_count++;
+
1230 return pos;
+
1231 } else {
+
1232 size_type pos = m_head;
+
1233 m_data[pos] = v;
+
1234 m_head = abs(1);
+
1235 return pos;
+
1236 }
+
1237 }
+
1238
+ +
1247 {
+
1248 if (m_count < m_size_max) {
+
1249 size_type pos = abs(m_count);
+
1250 m_data[pos] = std::move(v);
+
1251 m_count++;
+
1252 return pos;
+
1253 } else {
+
1254 size_type pos = m_head;
+
1255 m_data[pos] = std::move(v);
+
1256 m_head = abs(1);
+
1257 return pos;
+
1258 }
+
1259 }
+
1260
+ +
1265 {
+
1266 if (!m_count) throw std::invalid_argument("Empty storage");
+
1267 m_count--;
+
1268 }
+
1269
+ +
1278 {
+
1279 m_head = abs(-1);
+
1280 if (m_count < m_size_max)
+
1281 m_count++;
+
1282 m_data[m_head] = v;
+
1283 return m_head;
+
1284 }
+
1285
+ +
1294 {
+
1295 m_head = abs(-1);
+
1296 if (m_count < m_size_max)
+
1297 m_count++;
+
1298 m_data[m_head] = std::move(v);
+
1299 return m_head;
+
1300 }
+
1301
+ +
1306 {
+
1307 if (!m_count) throw std::invalid_argument("Empty storage");
+
1308 m_head = abs(1);
+
1309 m_count--;
+
1310 }
+
1311
+ +
1316 {
+
1317 if (!m_count) throw std::invalid_argument("Empty storage");
+
1318 return m_data[m_head];
+
1319 }
+
1320
+ +
1325 {
+
1326 if (!m_count) throw std::invalid_argument("Empty storage");
+
1327 return m_data[m_head];
+
1328 }
+
1329
+ +
1334 {
+
1335 return m_data[tail()];
+
1336 }
+
1337
+ +
1342 {
+
1343 return m_data[tail()];
+
1344 }
+
1345
+ +
1350 {
+
1351 return m_head;
+
1352 }
+
1353
+ +
1358 {
+
1359 if (!m_count) throw std::invalid_argument("Empty storage");
+
1360 return abs(m_count - 1);
+
1361 }
+
1362
+
1365 size_type abs(_In_ size_type pos) const
+
1366 {
+
1367 return (m_head + pos) % m_size_max;
+
1368 }
+
1369
+
1370 protected:
+ + + + +
1375 };
+
1376
+
1378
+
1384
+
1388 template <typename _Tn>
+
1389 class num_runtime_error : public std::runtime_error
+
1390 {
+
1391 public:
+
1392 typedef _Tn error_type;
+
1393
+
1394 public:
+
1401 num_runtime_error(_In_ error_type num, _In_ const std::string& msg) :
+
1402 m_num(num),
+
1403 runtime_error(msg)
+
1404 {
+
1405 }
+
1406
+
1413 num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) :
+
1414 m_num(num),
+
1415 runtime_error(msg)
+
1416 {
+
1417 }
+
1418
+ +
1423 {
+
1424 return m_num;
+
1425 }
+
1426
+
1427 protected:
+ +
1429 };
+
1430
+ +
1435 {
+
1436 public:
+
1443 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg)
+
1444 {
+
1445 }
+
1446
+
1453 win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<DWORD>(num, msg)
+
1454 {
+
1455 }
+
1456
+
1462 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg)
+
1463 {
+
1464 }
+
1465
+
1471 win_runtime_error(_In_opt_z_ const char *msg = nullptr) : num_runtime_error<DWORD>(GetLastError(), msg)
+
1472 {
+
1473 }
+
1474
+
1480 tstring msg(_In_opt_ DWORD dwLanguageId = 0) const
+
1481 {
+
1482 tstring str;
+
1483 if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, m_num, dwLanguageId, str, NULL)) {
+
1484 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
+
1485 str.erase(str.find_last_not_of(_T(" \t\n\r\f\v")) + 1);
+
1486 } else
+
1487 sprintf(str, m_num >= 0x10000 ? _T("Error 0x%X") : _T("Error %u"), m_num);
+
1488 return str;
+
1489 }
+
1490 };
+
1491
+
1493
+
1496
+
1500 template<class _Elem, class _Traits, class _Ax>
+
1501 class basic_string_printf : public std::basic_string<_Elem, _Traits, _Ax>
+
1502 {
+
1503 public:
+
1506
+
1512 basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format, ...)
+
1513 {
+
1514 va_list arg;
+
1515 va_start(arg, format);
+
1516 vsprintf(*this, format, arg);
+
1517 va_end(arg);
+
1518 }
+
1519
+
1521
+
1524
+
1531 basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID, ...)
+
1532 {
+
1533 _Myt format;
+
1534 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1535
+
1536 va_list arg;
+
1537 va_start(arg, nFormatID);
+
1538 vsprintf(*this, format, arg);
+
1539 va_end(arg);
+
1540 }
+
1541
+
1549 basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID, ...)
+
1550 {
+
1551 _Myt format;
+
1552 ATLENSURE(format.LoadString(hInstance, nFormatID, wLanguageID));
+
1553
+
1554 va_list arg;
+
1555 va_start(arg, nFormatID);
+
1556 vsprintf(*this, format, arg);
+
1557 va_end(arg);
+
1558 }
+
1559
+
1561 };
+
1562
+ +
1567
+ +
1572
+
1576#ifdef _UNICODE
+ +
1578#else
+ +
1580#endif
+
1581
+
1585 template<class _Elem, class _Traits, class _Ax>
+
1586 class basic_string_msg : public std::basic_string<_Elem, _Traits, _Ax>
+
1587 {
+
1588 public:
+
1591
+
1597 basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format, ...)
+
1598 {
+
1599 va_list arg;
+
1600 va_start(arg, format);
+
1601 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
+
1602 va_end(arg);
+
1603 }
+
1604
+
1606
+
1609
+
1616 basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID, ...)
+
1617 {
+
1618 _Myt format(GetManager());
+
1619 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1620
+
1621 va_list arg;
+
1622 va_start(arg, nFormatID);
+
1623 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
+
1624 va_end(arg);
+
1625 }
+
1626
+
1634 basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID, ...)
+
1635 {
+
1636 _Myt format(GetManager());
+
1637 ATLENSURE(format.LoadString(hInstance, nFormatID, wLanguageID));
+
1638
+
1639 va_list arg;
+
1640 va_start(arg, nFormatID);
+
1641 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
+
1642 va_end(arg);
+
1643 }
+
1644
+
1646
+
1652 basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)
+
1653 {
+
1654 FormatMessage(dwFlags & ~FORMAT_MESSAGE_ARGUMENT_ARRAY, lpSource, dwMessageId, dwLanguageId, *this, Arguments);
+
1655 }
+
1656
+
1662 basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)
+
1663 {
+
1664 FormatMessage(dwFlags | FORMAT_MESSAGE_ARGUMENT_ARRAY, lpSource, dwMessageId, dwLanguageId, *this, (va_list*)Arguments);
+
1665 }
+
1666
+
1672 basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)
+
1673 {
+
1674 FormatMessage(dwFlags & ~FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_STRING, pszFormat, 0, 0, *this, Arguments);
+
1675 }
+
1676
+
1682 basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)
+
1683 {
+
1684 FormatMessage(dwFlags | FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_STRING, pszFormat, 0, 0, *this, (va_list*)Arguments);
+
1685 }
+
1686 };
+
1687
+ +
1692
+ +
1697
+
1701#ifdef _UNICODE
+
1702 typedef wstring_msg tstring_msg;
+
1703#else
+ +
1705#endif
+
1706
+
1710 template<class _Elem, class _Traits, class _Ax>
+
1711 class basic_string_guid : public std::basic_string<_Elem, _Traits, _Ax>
+
1712 {
+
1713 public:
+
1716
+
1723 basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)
+
1724 {
+
1725 sprintf<_Elem, _Traits, _Ax>(*this, format,
+
1726 guid.Data1,
+
1727 guid.Data2,
+
1728 guid.Data3,
+
1729 guid.Data4[0], guid.Data4[1],
+
1730 guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
+
1731 }
+
1732
+
1734 };
+
1735
+
1739 class string_guid : public basic_string_guid<char, std::char_traits<char>, std::allocator<char> >
+
1740 {
+
1741 public:
+
1744
+
1750 string_guid(_In_ const GUID &guid) :
+
1751 basic_string_guid<char, std::char_traits<char>, std::allocator<char> >(guid, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
+
1752 {
+
1753 }
+
1754
+
1756 };
+
1757
+
1761 class wstring_guid : public basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
+
1762 {
+
1763 public:
+
1766
+
1772 wstring_guid(_In_ const GUID &guid) :
+
1773 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}")
+
1774 {
+
1775 }
+
1776
+
1778 };
+
1779
+
1783#ifdef _UNICODE
+
1784 typedef wstring_guid tstring_guid;
+
1785#else
+ +
1787#endif
+
1788
+
1790
+
1796
+
1797 // winstd::sanitizing_allocator::destroy() member generates _Ptr parameter not used warning for primitive datatypes _Ty.
+
1798 #pragma warning(push)
+
1799 #pragma warning(disable: 4100)
+
1800
+
1808 template<class _Ty>
+
1809 class sanitizing_allocator : public std::allocator<_Ty>
+
1810 {
+
1811 public:
+
1812 typedef std::allocator<_Ty> _Mybase;
+
1813
+
1817 template<class _Other>
+
1818 struct rebind
+
1819 {
+ +
1821 };
+
1822
+ +
1827 {
+
1828 }
+
1829
+ +
1834 {
+
1835 }
+
1836
+
1840 template<class _Other>
+
1841 sanitizing_allocator(_In_ const sanitizing_allocator<_Other> &_Othr) noexcept : _Mybase(_Othr)
+
1842 {
+
1843 }
+
1844
+
1848 void deallocate(_In_ pointer _Ptr, _In_ size_type _Size)
+
1849 {
+
1850 // Sanitize then free.
+
1851 SecureZeroMemory(_Ptr, _Size);
+
1852 _Mybase::deallocate(_Ptr, _Size);
+
1853 }
+
1854 };
+
1855
+
1856 #pragma warning(pop)
+
1857
+
1865 typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > sanitizing_string;
+
1866
+
1874 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > sanitizing_wstring;
+
1875
+
1879#ifdef _UNICODE
+ +
1881#else
+ +
1883#endif
+
1884
+
1888 template<size_t N>
+ +
1890 {
+
1891 public:
+ +
1896 {
+
1897 ZeroMemory(m_data, N);
+
1898 }
+
1899
+ +
1904 {
+
1905 SecureZeroMemory(m_data, N);
+
1906 }
+
1907
+
1908 public:
+
1909 unsigned char m_data[N];
+
1910 };
+
1911
+
1913}
+
Base template class to support converting GUID to string.
Definition: Common.h:1712
+
basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)
Initializes a new string and formats its contents to string representation of given GUID.
Definition: Common.h:1723
+
Base template class to support string formatting using FormatMessage() style templates.
Definition: Common.h:1587
+
basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition: Common.h:1652
+
basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition: Common.h:1634
+
basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition: Common.h:1682
+
basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition: Common.h:1672
+
basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition: Common.h:1662
+
basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition: Common.h:1616
+
basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format,...)
Initializes a new string and formats its contents using FormatMessage() style template.
Definition: Common.h:1597
+
Base template class to support string formatting using printf() style templates.
Definition: Common.h:1502
+
basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format,...)
Initializes a new string and formats its contents using printf() style template.
Definition: Common.h:1512
+
basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition: Common.h:1531
+
basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition: Common.h:1549
+
Base abstract template class to support object handle keeping for objects that support handle duplica...
Definition: Common.h:844
+
bool attach_duplicated(_In_opt_ handle_type h)
Duplicates an object handle and sets a new object handle.
Definition: Common.h:949
+
handle_type duplicate() const
Duplicates and returns a new object handle.
Definition: Common.h:935
+
dplhandle< handle_type, INVAL > & operator=(_In_opt_ handle_type h) noexcept
Attaches already available object handle.
Definition: Common.h:885
+
dplhandle< handle_type, INVAL > & operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexcept
Duplicates the object.
Definition: Common.h:896
+
virtual handle_type duplicate_internal(_In_ handle_type h) const noexcept=0
Abstract member function that must be implemented by child classes to do the actual object handle dup...
+
dplhandle(_In_opt_ handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition: Common.h:858
+
dplhandle< handle_type, INVAL > & operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
Moves the object.
Definition: Common.h:924
+
dplhandle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition: Common.h:849
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
handle_type *& operator*() const
Returns the object handle value when the object handle is a pointer to a value (class,...
Definition: Common.h:670
+
virtual void free_internal() noexcept=0
Abstract member function that must be implemented by child classes to do the actual object destructio...
+
bool operator<=(_In_opt_ handle_type h) const
Is handle less than or equal to?
Definition: Common.h:730
+
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition: Common.h:595
+
handle(_In_opt_ handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition: Common.h:604
+
handle_type operator->() const
Provides object handle member access when the object handle is a pointer to a class or struct.
Definition: Common.h:691
+
handle_type * operator&()
Returns the object handle reference.
Definition: Common.h:680
+
bool operator!=(_In_opt_ handle_type h) const
Is handle not equal to?
Definition: Common.h:769
+
bool operator==(_In_opt_ handle_type h) const
Is handle equal to?
Definition: Common.h:782
+
T handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
handle(_Inout_ handle< handle_type, INVAL > &&h) noexcept
Move constructor.
Definition: Common.h:613
+
bool operator!() const
Tests if the object handle is INVAL.
Definition: Common.h:704
+
void free()
Destroys the object.
Definition: Common.h:816
+
bool operator>=(_In_opt_ handle_type h) const
Is handle greater than or equal to?
Definition: Common.h:743
+
bool operator<(_In_opt_ handle_type h) const
Is handle less than?
Definition: Common.h:717
+
handle< handle_type, INVAL > & operator=(_In_opt_ handle_type h) noexcept
Attaches already available object handle.
Definition: Common.h:631
+
handle< handle_type, INVAL > & operator=(_Inout_ handle< handle_type, INVAL > &&h) noexcept
Move assignment.
Definition: Common.h:643
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
bool operator>(_In_opt_ handle_type h) const
Is handle greater than?
Definition: Common.h:756
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
handle_type detach()
Dismisses the object handle from this class.
Definition: Common.h:806
+
Numerical runtime error.
Definition: Common.h:1390
+
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)
Constructs an exception.
Definition: Common.h:1401
+
error_type number() const
Returns the Windows error number.
Definition: Common.h:1422
+
_Tn error_type
Error number type.
Definition: Common.h:1392
+
error_type m_num
Numeric error code.
Definition: Common.h:1428
+
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
Constructs an exception.
Definition: Common.h:1413
+
Helper class for returning pointers to std::unique_ptr (specialization for arrays)
Definition: Common.h:474
+
ref_unique_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition: Common.h:481
+
std::unique_ptr< _Ty[], _Dx > & m_own
Original owner of the pointer.
Definition: Common.h:563
+
virtual ~ref_unique_ptr()
Returns ownership of the pointer.
Definition: Common.h:536
+
ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition: Common.h:508
+
_Ty * m_ptr
Pointer.
Definition: Common.h:564
+
ref_unique_ptr & operator=(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition: Common.h:522
+
ref_unique_ptr & operator=(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition: Common.h:493
+
Helper class for returning pointers to std::unique_ptr.
Definition: Common.h:381
+
ref_unique_ptr(_Inout_ std::unique_ptr< _Ty, _Dx > &owner)
Takes ownership of the pointer.
Definition: Common.h:388
+
std::unique_ptr< _Ty, _Dx > & m_own
Original owner of the pointer.
Definition: Common.h:435
+
ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty, _Dx > &&other)
Moves object.
Definition: Common.h:398
+
_Ty * m_ptr
Pointer.
Definition: Common.h:436
+
~ref_unique_ptr()
Returns ownership of the pointer.
Definition: Common.h:408
+
An allocator template that sanitizes each memory block before it is destroyed or reallocated.
Definition: Common.h:1810
+
void deallocate(_In_ pointer _Ptr, _In_ size_type _Size)
Deallocate object at _Ptr sanitizing its content first.
Definition: Common.h:1848
+
sanitizing_allocator(_In_ const sanitizing_allocator< _Ty > &_Othr)
Construct by copying.
Definition: Common.h:1833
+
sanitizing_allocator(_In_ const sanitizing_allocator< _Other > &_Othr) noexcept
Construct from a related allocator.
Definition: Common.h:1841
+
std::allocator< _Ty > _Mybase
Base type.
Definition: Common.h:1812
+
sanitizing_allocator() noexcept
Construct default allocator.
Definition: Common.h:1826
+
Sanitizing BLOB.
Definition: Common.h:1890
+
sanitizing_blob()
Constructs uninitialized BLOB.
Definition: Common.h:1895
+
~sanitizing_blob()
Sanitizes BLOB.
Definition: Common.h:1903
+
Single-byte character implementation of a class to support converting GUID to string.
Definition: Common.h:1740
+
string_guid(_In_ const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition: Common.h:1750
+
Helper class to allow limited size FIFO queues implemented as vector of elements.
Definition: Common.h:978
+
size_type push_front(_In_ const value_type &v)
Copies an existing element to the head of the queue, overriding the last one when queue is out of spa...
Definition: Common.h:1277
+
virtual ~vector_queue()
Destroys the queue.
Definition: Common.h:1045
+
size_type abs(_In_ size_type pos) const
Returns absolute subscript or position number of the given element in the queue.
Definition: Common.h:1365
+
vector_queue< value_type > & operator=(_In_ const vector_queue< value_type > &other)
Copies existing queue.
Definition: Common.h:1073
+
void pop_front()
Removes (dequeues) the head element of the queue.
Definition: Common.h:1305
+
const_reference back() const
Returns a constant reference to the last element in the queue.
Definition: Common.h:1341
+
size_t size_type
Type to measure element count and indices in.
Definition: Common.h:983
+
size_type m_size_max
Maximum size.
Definition: Common.h:1374
+
size_type m_count
Number of elements.
Definition: Common.h:1373
+
T & reference
Reference to element type.
Definition: Common.h:993
+
void clear()
Erases the elements of the queue.
Definition: Common.h:1134
+
T value_type
Element type.
Definition: Common.h:988
+
const_reference operator[](_In_ size_type pos) const
Returns a constant reference to the element at a specified location in the queue.
Definition: Common.h:1185
+
void pop_back()
Removes (dequeues) the last element of the queue.
Definition: Common.h:1264
+
reference back()
Returns a reference to the last element in the queue.
Definition: Common.h:1333
+
size_type push_front(_Inout_ value_type &&v)
Moves the element to the head of the queue, overriding the last one when queue is out of space and mo...
Definition: Common.h:1293
+
size_type push_back(_Inout_ value_type &&v)
Moves the element to the end of the queue, overriding the first one when queue is out of space.
Definition: Common.h:1246
+
size_type size() const
Returns the number of elements in the vector.
Definition: Common.h:1118
+
size_type head() const
Returns absolute subscript or position number of the head element in the queue. The element does not ...
Definition: Common.h:1349
+
size_type push_back(_In_ const value_type &v)
Copies an existing element to the end of the queue, overriding the first one when queue is out of spa...
Definition: Common.h:1224
+
size_type capacity() const
Returns the number of elements that the queue can contain before overwriting head ones.
Definition: Common.h:1126
+
reference front()
Returns a reference to the head element in the queue.
Definition: Common.h:1315
+
vector_queue(_In_ size_type size_max)
Construct queue of fixed size.
Definition: Common.h:1016
+
const T * const_pointer
Constant pointer to element.
Definition: Common.h:1008
+
const T & const_reference
Constant reference to element type.
Definition: Common.h:998
+
const_reference at(_In_ size_type pos) const
Returns a constant reference to the element at a specified location in the queue.
Definition: Common.h:1174
+
size_type m_head
Index of the first element.
Definition: Common.h:1372
+
bool empty() const
Tests if the queue is empty.
Definition: Common.h:1142
+
const_reference front() const
Returns a constant reference to the head element in the queue.
Definition: Common.h:1324
+
const_reference at_abs(_In_ size_type pos) const
Returns a constant reference to the element at the absolute location in the queue: measured from the ...
Definition: Common.h:1211
+
vector_queue(_In_ const vector_queue< value_type > &other)
Copies existing queue.
Definition: Common.h:1029
+
reference at(_In_ size_type pos)
Returns a reference to the element at a specified location in the queue.
Definition: Common.h:1152
+
reference operator[](_In_ size_type pos)
Returns a reference to the element at a specified location in the queue.
Definition: Common.h:1163
+
reference at_abs(_In_ size_type pos)
Returns a reference to the element at the absolute location in the queue.
Definition: Common.h:1198
+
T * pointer
Pointer to element.
Definition: Common.h:1003
+
value_type * m_data
Underlying data container.
Definition: Common.h:1371
+
vector_queue(_Inout_ vector_queue< value_type > &&other)
Moves existing queue.
Definition: Common.h:1055
+
size_type tail() const
Returns absolute subscript or position number of the last element in the queue. The element must exis...
Definition: Common.h:1357
+
vector_queue< value_type > & operator=(_Inout_ vector_queue< value_type > &&other)
Moves existing queue.
Definition: Common.h:1097
+
Windows runtime error.
Definition: Common.h:1435
+
tstring msg(_In_opt_ DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition: Common.h:1480
+
win_runtime_error(_In_ const std::string &msg)
Constructs an exception using GetLastError()
Definition: Common.h:1462
+
win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
Constructs an exception.
Definition: Common.h:1453
+
win_runtime_error(_In_opt_z_ const char *msg=nullptr)
Constructs an exception using GetLastError()
Definition: Common.h:1471
+
win_runtime_error(_In_ error_type num, _In_ const std::string &msg)
Constructs an exception.
Definition: Common.h:1443
+
Wide character implementation of a class to support converting GUID to string.
Definition: Common.h:1762
+
wstring_guid(_In_ const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition: Common.h:1772
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition: Common.h:311
+
ref_unique_ptr< _Ty[], _Dx > get_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Helper function template for returning pointers to std::unique_ptr (specialization for arrays)
Definition: Common.h:461
+
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:1874
+
sanitizing_string sanitizing_tstring
Multi-byte / Wide-character sanitizing string (according to _UNICODE)
Definition: Common.h:1882
+
std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > sanitizing_string
A sanitizing variant of std::string.
Definition: Common.h:1865
+
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:1571
+
string_guid tstring_guid
Multi-byte / Wide-character string GUID (according to _UNICODE)
Definition: Common.h:1786
+
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:1696
+
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:1566
+
string_printf tstring_printf
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition: Common.h:1579
+
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:1691
+
string_msg tstring_msg
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition: Common.h:1704
+
static const T invalid
Invalid handle value.
Definition: Common.h:590
+
void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
Delete a pointer.
Definition: Common.h:359
+
LocalFree_delete() noexcept
Default construct.
Definition: Common.h:354
+
LocalFree_delete< _Ty > _Myt
This type.
Definition: Common.h:349
+
void operator()(_Other *) const
Delete a pointer of another type.
Definition: Common.h:370
+
Deleter for unique_ptr using LocalFree.
Definition: Common.h:319
+
LocalFree_delete< _Ty > _Myt
This type.
Definition: Common.h:320
+
LocalFree_delete(const LocalFree_delete< _Ty2 > &)
Construct from another LocalFree_delete.
Definition: Common.h:330
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: Common.h:337
+
LocalFree_delete()
Default construct.
Definition: Common.h:325
+
Convert this type to sanitizing_allocator<_Other>
Definition: Common.h:1819
+
sanitizing_allocator< _Other > other
Other type.
Definition: Common.h:1820
+
+ + + + diff --git a/_cred_8h_source.html b/_cred_8h_source.html new file mode 100644 index 00000000..32b0e071 --- /dev/null +++ b/_cred_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + +WinStd: include/WinStd/Cred.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Cred.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <wincred.h>
+
11#include <memory>
+
12
+
18
+
20template<class _Traits, class _Ax>
+
21static BOOL CredProtectA(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string<char, _Traits, _Ax> &sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType)
+
22{
+
23 char buf[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
24 DWORD dwSize = _countof(buf);
+
25
+
26 // Try with the stack buffer first.
+
27 if (CredProtectA(fAsSelf, const_cast<LPSTR>(pszCredentials), cchCredentials, buf, &dwSize, ProtectionType)) {
+
28 // Copy from stack.
+
29 sProtectedCredentials.assign(buf, dwSize - 1);
+
30 return TRUE;
+
31 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
32 // Allocate on heap and retry.
+
33 std::unique_ptr<char[]> buf(new char[dwSize]);
+
34 if (CredProtectA(fAsSelf, const_cast<LPSTR>(pszCredentials), cchCredentials, buf.get(), &dwSize, ProtectionType)) {
+
35 sProtectedCredentials.assign(buf.get(), dwSize - 1);
+
36 return TRUE;
+
37 }
+
38 }
+
39
+
40 return FALSE;
+
41}
+
42
+
48template<class _Traits, class _Ax>
+
49static BOOL CredProtectW(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sProtectedCredentials, _Out_ CRED_PROTECTION_TYPE *ProtectionType)
+
50{
+
51 wchar_t buf[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
52 DWORD dwSize = _countof(buf);
+
53
+
54 // Try with the stack buffer first.
+
55 if (CredProtectW(fAsSelf, const_cast<LPWSTR>(pszCredentials), cchCredentials, buf, &dwSize, ProtectionType)) {
+
56 // Copy from stack.
+
57 sProtectedCredentials.assign(buf, dwSize - 1);
+
58 return TRUE;
+
59 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
60 // Allocate on heap and retry.
+
61 std::unique_ptr<wchar_t[]> buf(new wchar_t[dwSize]);
+
62 if (CredProtectW(fAsSelf, const_cast<LPWSTR>(pszCredentials), cchCredentials, buf.get(), &dwSize, ProtectionType)) {
+
63 sProtectedCredentials.assign(buf.get(), dwSize - 1);
+
64 return TRUE;
+
65 }
+
66 }
+
67
+
68 return FALSE;
+
69}
+
70
+
72template<class _Traits, class _Ax>
+
73static BOOL CredUnprotectA(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string<char, _Traits, _Ax> &sCredentials)
+
74{
+
75 char buf[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
76 DWORD dwSize = _countof(buf);
+
77
+
78 // Try with the stack buffer first.
+
79 if (CredUnprotectA(fAsSelf, const_cast<LPSTR>(pszProtectedCredentials), cchCredentials, buf, &dwSize)) {
+
80 // Copy from stack.
+
81 sCredentials.assign(buf, dwSize);
+
82 return TRUE;
+
83 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
84 // Allocate on heap and retry.
+
85 std::unique_ptr<char[]> buf(new char[dwSize]);
+
86 if (CredUnprotectA(fAsSelf, const_cast<LPSTR>(pszProtectedCredentials), cchCredentials, buf.get(), &dwSize)) {
+
87 sCredentials.assign(buf.get(), dwSize);
+
88 return TRUE;
+
89 }
+
90 }
+
91
+
92 return FALSE;
+
93}
+
94
+
100template<class _Traits, class _Ax>
+
101static BOOL CredUnprotectW(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sCredentials)
+
102{
+
103 wchar_t buf[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
104 DWORD dwSize = _countof(buf);
+
105
+
106 // Try with the stack buffer first.
+
107 if (CredUnprotectW(fAsSelf, const_cast<LPWSTR>(pszProtectedCredentials), cchCredentials, buf, &dwSize)) {
+
108 // Copy from stack.
+
109 sCredentials.assign(buf, dwSize);
+
110 return TRUE;
+
111 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
112 // Allocate on heap and retry.
+
113 std::unique_ptr<wchar_t[]> buf(new wchar_t[dwSize]);
+
114 if (CredUnprotectW(fAsSelf, const_cast<LPWSTR>(pszProtectedCredentials), cchCredentials, buf.get(), &dwSize)) {
+
115 sCredentials.assign(buf.get(), dwSize);
+
116 return TRUE;
+
117 }
+
118 }
+
119
+
120 return FALSE;
+
121}
+
122
+
124
+
125namespace winstd
+
126{
+
129
+
133 template <class _Ty> struct CredFree_delete
+
134 {
+ +
136
+ +
141
+
145 template <class _Ty2> CredFree_delete(const CredFree_delete<_Ty2>&) {}
+
146
+
152 void operator()(_Ty *_Ptr) const
+
153 {
+
154 CredFree(_Ptr);
+
155 }
+
156 };
+
157
+
161 template <class _Ty> struct CredFree_delete<_Ty[]>
+
162 {
+ +
164
+ +
169
+
175 void operator()(_Ty *_Ptr) const noexcept
+
176 {
+
177 CredFree(_Ptr);
+
178 }
+
179
+
185 template<class _Other>
+
186 void operator()(_Other *) const
+
187 {
+
188 CredFree(_Ptr);
+
189 }
+
190 };
+
191
+
193}
+
194
+
197
+
203#pragma warning(suppress: 4505) // Don't warn on unused code
+
204static BOOL CredEnumerate(_In_z_ LPCTSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Inout_ std::unique_ptr<PCREDENTIAL[], winstd::CredFree_delete<PCREDENTIAL[]> > &cCredentials) noexcept
+
205{
+
206 PCREDENTIAL *pCredentials;
+
207 if (CredEnumerate(Filter, Flags, Count, &pCredentials)) {
+
208 cCredentials.reset(pCredentials);
+
209 return TRUE;
+
210 }
+
211
+
212 return FALSE;
+
213}
+
214
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
CredFree_delete< _Ty > _Myt
This type.
Definition: Cred.h:163
+
CredFree_delete()
Default construct.
Definition: Cred.h:168
+
void operator()(_Other *) const
Delete a pointer of another type.
Definition: Cred.h:186
+
void operator()(_Ty *_Ptr) const noexcept
Delete a pointer.
Definition: Cred.h:175
+
Deleter for unique_ptr using CredFree.
Definition: Cred.h:134
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: Cred.h:152
+
CredFree_delete()
Default construct.
Definition: Cred.h:140
+
CredFree_delete< _Ty > _Myt
This type.
Definition: Cred.h:135
+
CredFree_delete(const CredFree_delete< _Ty2 > &)
Construct from another CredFree_delete.
Definition: Cred.h:145
+
+ + + + diff --git a/_crypt_8h_source.html b/_crypt_8h_source.html new file mode 100644 index 00000000..0b0e0097 --- /dev/null +++ b/_crypt_8h_source.html @@ -0,0 +1,751 @@ + + + + + + + +WinStd: include/WinStd/Crypt.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Crypt.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <assert.h>
+
11#include <WinCrypt.h>
+
12#include <algorithm>
+
13#include <string>
+
14#include <vector>
+
15
+
21
+
23template<class _Traits, class _Ax>
+
24static DWORD CertGetNameStringA(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwType, _In_ DWORD dwFlags, _In_opt_ void *pvTypePara, _Out_ std::basic_string<char, _Traits, _Ax> &sNameString)
+
25{
+
26 // Query the final string length first.
+
27 DWORD dwSize = ::CertGetNameStringA(pCertContext, dwType, dwFlags, pvTypePara, NULL, 0);
+
28
+
29 // Allocate buffer on heap to format the string data into and read it.
+
30 std::unique_ptr<char[]> szBuffer(new char[dwSize]);
+
31 dwSize = ::CertGetNameStringA(pCertContext, dwType, dwFlags, pvTypePara, szBuffer.get(), dwSize);
+
32 sNameString.assign(szBuffer.get(), dwSize - 1);
+
33 return dwSize;
+
34}
+
35
+
41template<class _Traits, class _Ax>
+
42static DWORD CertGetNameStringW(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwType, _In_ DWORD dwFlags, _In_opt_ void *pvTypePara, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sNameString)
+
43{
+
44 // Query the final string length first.
+
45 DWORD dwSize = ::CertGetNameStringW(pCertContext, dwType, dwFlags, pvTypePara, NULL, 0);
+
46
+
47 // Allocate buffer on heap to format the string data into and read it.
+
48 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwSize]);
+
49 dwSize = ::CertGetNameStringW(pCertContext, dwType, dwFlags, pvTypePara, szBuffer.get(), dwSize);
+
50 sNameString.assign(szBuffer.get(), dwSize - 1);
+
51 return dwSize;
+
52}
+
53
+
59template<class _Ty, class _Ax>
+
60static _Success_(return != 0) BOOL WINAPI CertGetCertificateContextProperty(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId, _Out_ std::vector<_Ty, _Ax> &aData)
+
61{
+ +
63 DWORD dwSize = WINSTD_STACK_BUFFER_BYTES;
+
64
+
65 // Try with the stack buffer first.
+
66 if (CertGetCertificateContextProperty(pCertContext, dwPropId, buf, &dwSize)) {
+
67 // Copy from stack.
+
68 aData.assign((const _Ty*)buf, (const _Ty*)buf + (dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
69 return TRUE;
+
70 } else if (GetLastError() == ERROR_MORE_DATA) {
+
71 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
72 if (CertGetCertificateContextProperty(pCertContext, dwPropId, (BYTE*)aData.data(), &dwSize))
+
73 return TRUE;
+
74 }
+
75
+
76 return FALSE;
+
77}
+
78
+
84template<class _Ty, class _Ax>
+
85static _Success_(return != 0) BOOL CryptGetHashParam(_In_ HCRYPTHASH hHash, _In_ DWORD dwParam, _Out_ std::vector<_Ty, _Ax> &aData, _In_ DWORD dwFlags)
+
86{
+ +
88 DWORD dwSize = WINSTD_STACK_BUFFER_BYTES;
+
89
+
90 // Try with the stack buffer first.
+
91 if (CryptGetHashParam(hHash, dwParam, buf, &dwSize, dwFlags)) {
+
92 // Copy from stack.
+
93 aData.assign((const _Ty*)buf, (const _Ty*)buf + (dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
94 return TRUE;
+
95 } else if (GetLastError() == ERROR_MORE_DATA) {
+
96 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
97 if (CryptGetHashParam(hHash, dwParam, (BYTE*)aData.data(), &dwSize, dwFlags))
+
98 return TRUE;
+
99 }
+
100
+
101 return FALSE;
+
102}
+
103
+
109template<class T>
+
110static _Success_(return != 0) BOOL CryptGetHashParam(_In_ HCRYPTHASH hHash, _In_ DWORD dwParam, _Out_ T &data, _In_ DWORD dwFlags)
+
111{
+
112 DWORD dwSize = sizeof(T);
+
113 return CryptGetHashParam(hHash, dwParam, (BYTE*)&data, &dwSize, dwFlags);
+
114}
+
115
+
121template<class _Ty, class _Ax>
+
122static _Success_(return != 0) BOOL CryptGetKeyParam(_In_ HCRYPTKEY hKey, _In_ DWORD dwParam, _Out_ std::vector<_Ty, _Ax> &aData, _In_ DWORD dwFlags)
+
123{
+ +
125 DWORD dwSize = WINSTD_STACK_BUFFER_BYTES;
+
126
+
127 // Try with the stack buffer first.
+
128 if (CryptGetKeyParam(hKey, dwParam, buf, &dwSize, dwFlags)) {
+
129 // Copy from stack.
+
130 aData.assign((const _Ty*)buf, (const _Ty*)buf + (dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
131 return TRUE;
+
132 } else if (GetLastError() == ERROR_MORE_DATA) {
+
133 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
134 if (CryptGetKeyParam(hKey, dwParam, (BYTE*)aData.data(), &dwSize, dwFlags))
+
135 return TRUE;
+
136 }
+
137
+
138 return FALSE;
+
139}
+
140
+
146template<class T>
+
147static BOOL CryptGetKeyParam(_In_ HCRYPTKEY hKey, _In_ DWORD dwParam, _Out_ T &data, _In_ DWORD dwFlags)
+
148{
+
149 DWORD dwSize = sizeof(T);
+
150 return CryptGetKeyParam(hKey, dwParam, (BYTE*)&data, &dwSize, dwFlags);
+
151}
+
152
+
158template<class _Ty, class _Ax>
+
159static _Success_(return != 0) BOOL CryptExportKey(_In_ HCRYPTKEY hKey, _In_ HCRYPTKEY hExpKey, _In_ DWORD dwBlobType, _In_ DWORD dwFlags, _Out_ std::vector<_Ty, _Ax> &aData)
+
160{
+
161 DWORD dwKeyBLOBSize = 0;
+
162
+
163 if (CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, NULL, &dwKeyBLOBSize)) {
+
164 aData.resize((dwKeyBLOBSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
165 if (CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, aData.data(), &dwKeyBLOBSize))
+
166 return TRUE;
+
167 }
+
168
+
169 return FALSE;
+
170}
+
171
+
177template<class _Ty, class _Ax>
+
178static _Success_(return != 0) BOOL CryptEncrypt(_In_ HCRYPTKEY hKey, _In_opt_ HCRYPTHASH hHash, _In_ BOOL Final, _In_ DWORD dwFlags, _Inout_ std::vector<_Ty, _Ax> &aData)
+
179{
+
180 DWORD
+
181 dwDataLen = (DWORD)(aData.size() * sizeof(_Ty)),
+
182 dwBufLen = (DWORD)(aData.capacity() * sizeof(_Ty)),
+
183 dwEncLen = dwDataLen,
+
184 dwResult;
+
185
+
186 if (dwBufLen) {
+
187 aData.resize(dwBufLen);
+
188 if (CryptEncrypt(hKey, hHash, Final, dwFlags, (BYTE*)aData.data(), &dwEncLen, dwBufLen)) {
+
189 // Encryption succeeded.
+
190 assert(dwEncLen <= dwBufLen);
+
191 if (dwEncLen < dwBufLen)
+
192 aData.resize((dwEncLen + sizeof(_Ty) - 1) / sizeof(_Ty));
+
193 return TRUE;
+
194 } else
+
195 dwResult = GetLastError();
+
196 } else if (CryptEncrypt(hKey, NULL, Final, dwFlags, NULL, &dwEncLen, 0)) {
+
197 // CryptEncrypt() always succeeds for output data size queries.
+
198 // dwEncLen contains required output data size. Continue as if the buffer was to small. Actually, the output buffer _was_ too small!
+
199 dwResult = ERROR_MORE_DATA;
+
200 } else
+
201 dwResult = GetLastError();
+
202
+
203 if (dwResult == ERROR_MORE_DATA) {
+
204 // Encrypted data will be longer. Reserve more space and retry.
+
205 aData.resize(((dwBufLen = dwEncLen) + sizeof(_Ty) - 1) / sizeof(_Ty));
+
206 dwEncLen = dwDataLen;
+
207 if (CryptEncrypt(hKey, hHash, Final, dwFlags, (BYTE*)aData.data(), &dwEncLen, dwBufLen)) {
+
208 // Encryption succeeded.
+
209 assert(dwEncLen <= dwBufLen);
+
210 if (dwEncLen < dwBufLen)
+
211 aData.resize((dwEncLen + sizeof(_Ty) - 1) / sizeof(_Ty));
+
212 return TRUE;
+
213 }
+
214 } else {
+
215 // Resize back to data length.
+
216 aData.resize((dwDataLen + sizeof(_Ty) - 1) / sizeof(_Ty));
+
217 }
+
218
+
219 return FALSE;
+
220}
+
221
+
227template<class _Ty, class _Ax>
+
228static _Success_(return != 0) BOOL CryptDecrypt(_In_ HCRYPTKEY hKey, _In_opt_ HCRYPTHASH hHash, _In_ BOOL Final, _In_ DWORD dwFlags, _Inout_ std::vector<_Ty, _Ax> &aData)
+
229{
+
230 DWORD dwDataLen = (DWORD)(aData.size() * sizeof(_Ty));
+
231
+
232 if (CryptDecrypt(hKey, hHash, Final, dwFlags, (BYTE*)aData.data(), &dwDataLen)) {
+
233 // Decryption succeeded.
+
234 aData.resize((dwDataLen + sizeof(_Ty) - 1) / sizeof(_Ty));
+
235 return TRUE;
+
236 }
+
237
+
238 return FALSE;
+
239}
+
240
+
242
+
243namespace winstd
+
244{
+
247
+
251 class cert_context : public dplhandle<PCCERT_CONTEXT, NULL>
+
252 {
+ +
254
+
255 public:
+ +
262 {
+
263 if (m_h != invalid)
+ +
265 }
+
266
+
276 bool create(_In_ DWORD dwCertEncodingType, _In_ LPCBYTE pbCertEncoded, _In_ DWORD cbCertEncoded) noexcept
+
277 {
+
278 handle_type h = CertCreateCertificateContext(dwCertEncodingType, pbCertEncoded, cbCertEncoded);
+
279 if (h != invalid) {
+
280 attach(h);
+
281 return true;
+
282 } else
+
283 return false;
+
284 }
+
285
+
294 bool operator==(_In_ const handle_type &other) const noexcept
+
295 {
+
296 // TODO: [Crypto] Make constant time.
+
297 return
+
298 m_h == other ||
+
299 m_h->cbCertEncoded == other->cbCertEncoded && memcmp(m_h->pbCertEncoded, other->pbCertEncoded, m_h->cbCertEncoded) == 0;
+
300 }
+
301
+
310 bool operator!=(_In_ const handle_type &other) const noexcept
+
311 {
+
312 return !operator==(other);
+
313 }
+
314
+
323 bool operator<(_In_ const handle_type &other) const noexcept
+
324 {
+
325 // TODO: [Crypto] Make constant time.
+
326 const int r = memcmp(m_h->pbCertEncoded, other->pbCertEncoded, std::min<DWORD>(m_h->cbCertEncoded, other->cbCertEncoded));
+
327 return r < 0 || r == 0 && m_h->cbCertEncoded < other->cbCertEncoded;
+
328 }
+
329
+
338 bool operator>(_In_ const handle_type &other) const noexcept
+
339 {
+
340 // TODO: [Crypto] Make constant time.
+
341 const int r = memcmp(m_h->pbCertEncoded, other->pbCertEncoded, std::min<DWORD>(m_h->cbCertEncoded, other->cbCertEncoded));
+
342 return r > 0 || r == 0 && m_h->cbCertEncoded > other->cbCertEncoded;
+
343 }
+
344
+
353 bool operator<=(_In_ const handle_type &other) const noexcept
+
354 {
+
355 return !operator>(other);
+
356 }
+
357
+
366 bool operator>=(_In_ const handle_type &other) const noexcept
+
367 {
+
368 return !operator<(other);
+
369 }
+
370
+
371 protected:
+
377 void free_internal() noexcept override
+
378 {
+
379 CertFreeCertificateContext(m_h);
+
380 }
+
381
+
391 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
392 {
+
393 return CertDuplicateCertificateContext(h);
+
394 }
+
395 };
+
396
+
400 class cert_chain_context : public dplhandle<PCCERT_CHAIN_CONTEXT, NULL>
+
401 {
+ +
403
+
404 public:
+ +
411 {
+
412 if (m_h != invalid)
+ +
414 }
+
415
+
425 bool create(_In_opt_ HCERTCHAINENGINE hChainEngine, _In_ PCCERT_CONTEXT pCertContext, _In_opt_ LPFILETIME pTime, _In_opt_ HCERTSTORE hAdditionalStore, _In_ PCERT_CHAIN_PARA pChainPara, _In_ DWORD dwFlags, __reserved LPVOID pvReserved = NULL) noexcept
+
426 {
+
427 handle_type h;
+
428 if (CertGetCertificateChain(hChainEngine, pCertContext, pTime, hAdditionalStore, pChainPara, dwFlags, pvReserved, &h)) {
+
429 attach(h);
+
430 return true;
+
431 } else
+
432 return false;
+
433 }
+
434
+
435 protected:
+
441 void free_internal() noexcept override
+
442 {
+
443 CertFreeCertificateChain(m_h);
+
444 }
+
445
+
455 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
456 {
+
457 return CertDuplicateCertificateChain(h);
+
458 }
+
459 };
+
460
+
464 class cert_store : public handle<HCERTSTORE, NULL>
+
465 {
+ +
467
+
468 public:
+
474 virtual ~cert_store()
+
475 {
+
476 if (m_h != invalid)
+ +
478 }
+
479
+
489 bool create(_In_ LPCSTR lpszStoreProvider, _In_ DWORD dwEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_opt_ const void *pvPara) noexcept
+
490 {
+
491 handle_type h = CertOpenStore(lpszStoreProvider, dwEncodingType, hCryptProv, dwFlags, pvPara);
+
492 if (h != invalid) {
+
493 attach(h);
+
494 return true;
+
495 } else
+
496 return false;
+
497 }
+
498
+
508 bool create(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_z_ LPCTSTR szSubsystemProtocol) noexcept
+
509 {
+
510 handle_type h = CertOpenSystemStore(hCryptProv, szSubsystemProtocol);
+
511 if (h != invalid) {
+
512 attach(h);
+
513 return true;
+
514 } else
+
515 return false;
+
516 }
+
517
+
518 protected:
+
524 void free_internal() noexcept override
+
525 {
+
526 CertCloseStore(m_h, 0);
+
527 }
+
528 };
+
529
+
533 class crypt_prov : public handle<HCRYPTPROV, NULL>
+
534 {
+ +
536
+
537 public:
+
543 virtual ~crypt_prov()
+
544 {
+
545 if (m_h != invalid)
+ +
547 }
+
548
+
558 bool create(_In_opt_z_ LPCTSTR szContainer, _In_opt_z_ LPCTSTR szProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags = 0) noexcept
+
559 {
+
560 handle_type h;
+
561 if (CryptAcquireContext(&h, szContainer, szProvider, dwProvType, dwFlags)) {
+
562 attach(h);
+
563 return true;
+
564 } else
+
565 return false;
+
566 }
+
567
+
568 protected:
+
574 void free_internal() noexcept override
+
575 {
+
576 CryptReleaseContext(m_h, 0);
+
577 }
+
578 };
+
579
+
583 class crypt_hash : public dplhandle<HCRYPTHASH, NULL>
+
584 {
+ +
586
+
587 public:
+
593 virtual ~crypt_hash()
+
594 {
+
595 if (m_h != invalid)
+ +
597 }
+
598
+
608 bool create(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_opt_ HCRYPTKEY hKey = NULL, _In_opt_ DWORD dwFlags = 0) noexcept
+
609 {
+
610 handle_type h;
+
611 if (CryptCreateHash(hProv, Algid, hKey, dwFlags, &h)) {
+
612 attach(h);
+
613 return true;
+
614 } else
+
615 return false;
+
616 }
+
617
+
618 protected:
+
624 void free_internal() noexcept override
+
625 {
+
626 CryptDestroyHash(m_h);
+
627 }
+
628
+
638 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
639 {
+
640 handle_type hNew = invalid;
+
641 return CryptDuplicateHash(h, NULL, 0, &hNew) ? hNew : invalid;
+
642 }
+
643 };
+
644
+
648 class crypt_key : public dplhandle<HCRYPTKEY, NULL>
+
649 {
+ +
651
+
652 public:
+
658 virtual ~crypt_key()
+
659 {
+
660 if (m_h != invalid)
+ +
662 }
+
663
+
669 bool generate(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags) noexcept
+
670 {
+
671 handle_type h;
+
672 if (CryptGenKey(hProv, Algid, dwFlags, &h)) {
+
673 attach(h);
+
674 return true;
+
675 } else
+
676 return false;
+
677 }
+
678
+
684 bool import(_In_ HCRYPTPROV hProv, __in_bcount(dwDataLen) LPCBYTE pbData, _In_ DWORD dwDataLen, _In_ HCRYPTKEY hPubKey, _In_ DWORD dwFlags) noexcept
+
685 {
+
686 handle_type h;
+
687 if (CryptImportKey(hProv, pbData, dwDataLen, hPubKey, dwFlags, &h)) {
+
688 attach(h);
+
689 return true;
+
690 } else
+
691 return false;
+
692 }
+
693
+
699 bool import_public(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo) noexcept
+
700 {
+
701 handle_type h;
+
702 if (CryptImportPublicKeyInfo(hCryptProv, dwCertEncodingType, pInfo, &h)) {
+
703 attach(h);
+
704 return true;
+
705 } else
+
706 return false;
+
707 }
+
708
+
714 bool derive(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ HCRYPTHASH hBaseData, _In_ DWORD dwFlags) noexcept
+
715 {
+
716 handle_type h;
+
717 if (CryptDeriveKey(hProv, Algid, hBaseData, dwFlags, &h)) {
+
718 attach(h);
+
719 return true;
+
720 } else
+
721 return false;
+
722 }
+
723
+
732 bool create_exp1(_In_ HCRYPTPROV hProv, _In_ DWORD dwKeySpec)
+
733 {
+
734 if (dwKeySpec != AT_KEYEXCHANGE && dwKeySpec != AT_SIGNATURE) {
+
735 SetLastError(ERROR_INVALID_PARAMETER);
+
736 return false;
+
737 }
+
738
+
739 // Generate the private key.
+
740 handle_type h;
+
741 if (CryptGenKey(hProv, dwKeySpec, CRYPT_EXPORTABLE, &h)) {
+
742 // Export the private key, we'll convert it to a private exponent of one key.
+
743 std::vector<BYTE, sanitizing_allocator<BYTE>> key_blob;
+
744 if (CryptExportKey(h, 0, PRIVATEKEYBLOB, 0, key_blob)) {
+
745 CryptDestroyKey(h);
+
746
+
747 // Get the byte length of the key.
+
748 size_t
+
749 size_key = *reinterpret_cast<DWORD*>(&key_blob[12])/8,
+
750 size_prime = size_key/2;
+
751
+
752 // Modify the Exponent in Key BLOB format
+
753 // Key BLOB format is documented in SDK
+
754
+
755 // Convert pubexp in rsapubkey to 1
+
756 LPBYTE ptr = &key_blob[16];
+
757 *reinterpret_cast<DWORD*>(ptr) = 1;
+
758 ptr += sizeof(DWORD);
+
759
+
760 // Skip modulus, prime1, prime2
+
761 ptr += size_key;
+
762 ptr += size_prime;
+
763 ptr += size_prime;
+
764
+
765 // Convert exponent1 to 1
+
766 ptr[0] = 1;
+
767 memset(ptr + 1, 0, size_prime - 1);
+
768 ptr += size_prime;
+
769
+
770 // Convert exponent2 to 1
+
771 ptr[0] = 1;
+
772 memset(ptr + 1, 0, size_prime - 1);
+
773 ptr += size_prime;
+
774
+
775 // Skip coefficient
+
776 ptr += size_prime;
+
777
+
778 // Convert privateExponent to 1
+
779 ptr[0] = 1;
+
780 memset(ptr + 1, 0, size_key - 1);
+
781
+
782 // Import the exponent-of-one private key.
+
783 if (CryptImportKey(hProv, key_blob.data(), static_cast<DWORD>(key_blob.size()), 0, 0, &h)) {
+
784 attach(h);
+
785 return true;
+
786 }
+
787 } else
+
788 CryptDestroyKey(h);
+
789 }
+
790
+
791 return false;
+
792 }
+
793
+
794 protected:
+
800 void free_internal() noexcept override
+
801 {
+
802 CryptDestroyKey(m_h);
+
803 }
+
804
+
814 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
815 {
+
816 handle_type hNew = invalid;
+
817 return CryptDuplicateKey(h, NULL, 0, &hNew) ? hNew : invalid;
+
818 }
+
819 };
+
820
+
824 #pragma warning(push)
+
825 #pragma warning(disable: 26432) // Copy constructor and assignment operator are also present, but not detected by code analysis as they are using base type source object reference.
+
826 class data_blob : public DATA_BLOB
+
827 {
+
828 public:
+
832 data_blob() noexcept
+
833 {
+
834 cbData = 0;
+
835 pbData = NULL;
+
836 }
+
837
+
841 data_blob(_In_count_(size) BYTE *data, _In_ DWORD size) noexcept
+
842 {
+
843 cbData = size;
+
844 pbData = data;
+
845 }
+
846
+
850 data_blob(_In_ const DATA_BLOB &other)
+
851 {
+
852 cbData = other.cbData;
+
853 if (cbData) {
+
854 pbData = static_cast<BYTE*>(LocalAlloc(LMEM_FIXED, other.cbData));
+
855 if (!pbData) throw win_runtime_error("LocalAlloc failed.");
+
856 memcpy(pbData, other.pbData, other.cbData);
+
857 } else
+
858 pbData = NULL;
+
859 }
+
860
+
864 data_blob(_Inout_ data_blob &&other) noexcept
+
865 {
+
866 cbData = other.cbData;
+
867 pbData = other.pbData;
+
868 other.cbData = 0;
+
869 other.pbData = NULL;
+
870 }
+
871
+
875 virtual ~data_blob()
+
876 {
+
877 if (pbData != NULL)
+
878 LocalFree(pbData);
+
879 }
+
880
+
884 data_blob& operator=(_In_ const DATA_BLOB &other)
+
885 {
+
886 if (this != &other) {
+
887 cbData = other.cbData;
+
888 if (pbData)
+
889 LocalFree(pbData);
+
890 if (cbData) {
+
891 pbData = static_cast<BYTE*>(LocalAlloc(LMEM_FIXED, other.cbData));
+
892 if (!pbData) throw win_runtime_error("LocalAlloc failed.");
+
893 memcpy(pbData, other.pbData, other.cbData);
+
894 } else
+
895 pbData = NULL;
+
896 }
+
897
+
898 return *this;
+
899 }
+
900
+
904 data_blob& operator=(_Inout_ data_blob &&other) noexcept
+
905 {
+
906 if (this != &other) {
+
907 cbData = other.cbData;
+
908 if (pbData)
+
909 LocalFree(pbData);
+
910 pbData = other.pbData;
+
911 other.cbData = 0;
+
912 other.pbData = NULL;
+
913 }
+
914
+
915 return *this;
+
916 }
+
917
+
921 DWORD size() const noexcept
+
922 {
+
923 return cbData;
+
924 }
+
925
+
929 const BYTE* data() const noexcept
+
930 {
+
931 return pbData;
+
932 }
+
933
+
937 BYTE* data() noexcept
+
938 {
+
939 return pbData;
+
940 }
+
941 };
+
942 #pragma warning(pop)
+
943
+
945}
+
PCCERT_CHAIN_CONTEXT wrapper class.
Definition: Crypt.h:401
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the certificate chain context.
Definition: Crypt.h:455
+
bool create(_In_opt_ HCERTCHAINENGINE hChainEngine, _In_ PCCERT_CONTEXT pCertContext, _In_opt_ LPFILETIME pTime, _In_opt_ HCERTSTORE hAdditionalStore, _In_ PCERT_CHAIN_PARA pChainPara, _In_ DWORD dwFlags, __reserved LPVOID pvReserved=NULL) noexcept
Creates the certificate chain context.
Definition: Crypt.h:425
+
virtual ~cert_chain_context()
Destroys the certificate chain context.
Definition: Crypt.h:410
+
void free_internal() noexcept override
Destroys the certificate chain context.
Definition: Crypt.h:441
+
PCCERT_CONTEXT wrapper class.
Definition: Crypt.h:252
+
bool operator==(_In_ const handle_type &other) const noexcept
Is certificate equal to?
Definition: Crypt.h:294
+
void free_internal() noexcept override
Destroys the certificate context.
Definition: Crypt.h:377
+
bool operator<=(_In_ const handle_type &other) const noexcept
Is certificate less than or equal?
Definition: Crypt.h:353
+
bool create(_In_ DWORD dwCertEncodingType, _In_ LPCBYTE pbCertEncoded, _In_ DWORD cbCertEncoded) noexcept
Creates the certificate context.
Definition: Crypt.h:276
+
bool operator!=(_In_ const handle_type &other) const noexcept
Is certificate not equal to?
Definition: Crypt.h:310
+
bool operator>=(_In_ const handle_type &other) const noexcept
Is certificate greater than or equal?
Definition: Crypt.h:366
+
bool operator<(_In_ const handle_type &other) const noexcept
Is certificate less than?
Definition: Crypt.h:323
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the certificate context.
Definition: Crypt.h:391
+
bool operator>(_In_ const handle_type &other) const noexcept
Is certificate greater than?
Definition: Crypt.h:338
+
virtual ~cert_context()
Destroys the certificate context.
Definition: Crypt.h:261
+
HCERTSTORE wrapper class.
Definition: Crypt.h:465
+
bool create(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_z_ LPCTSTR szSubsystemProtocol) noexcept
Opens the most common system certificate store. To open certificate stores with more complex requirem...
Definition: Crypt.h:508
+
virtual ~cert_store()
Closes the certificate store.
Definition: Crypt.h:474
+
void free_internal() noexcept override
Closes the certificate store.
Definition: Crypt.h:524
+
bool create(_In_ LPCSTR lpszStoreProvider, _In_ DWORD dwEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_opt_ const void *pvPara) noexcept
Opens the certificate store.
Definition: Crypt.h:489
+
HCRYPTHASH wrapper class.
Definition: Crypt.h:584
+
void free_internal() noexcept override
Destroys the hash context.
Definition: Crypt.h:624
+
virtual ~crypt_hash()
Destroys the hash context.
Definition: Crypt.h:593
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the hash context.
Definition: Crypt.h:638
+
bool create(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_opt_ HCRYPTKEY hKey=NULL, _In_opt_ DWORD dwFlags=0) noexcept
Creates the hash context.
Definition: Crypt.h:608
+
HCRYPTKEY wrapper class.
Definition: Crypt.h:649
+
bool generate(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags) noexcept
Generates the key.
Definition: Crypt.h:669
+
bool derive(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ HCRYPTHASH hBaseData, _In_ DWORD dwFlags) noexcept
Generates cryptographic session keys derived from a base data value.
Definition: Crypt.h:714
+
bool create_exp1(_In_ HCRYPTPROV hProv, _In_ DWORD dwKeySpec)
Creates Exponent-of-one key.
Definition: Crypt.h:732
+
virtual ~crypt_key()
Destroys the key.
Definition: Crypt.h:658
+
bool import_public(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo) noexcept
Imports the public key.
Definition: Crypt.h:699
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the key.
Definition: Crypt.h:814
+
void free_internal() noexcept override
Destroys the key.
Definition: Crypt.h:800
+
HCRYPTPROV wrapper class.
Definition: Crypt.h:534
+
virtual ~crypt_prov()
Releases the cryptographic context.
Definition: Crypt.h:543
+
void free_internal() noexcept override
Releases the cryptographic context.
Definition: Crypt.h:574
+
bool create(_In_opt_z_ LPCTSTR szContainer, _In_opt_z_ LPCTSTR szProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags=0) noexcept
Acquires the cryptographic context.
Definition: Crypt.h:558
+
DATA_BLOB wrapper class.
Definition: Crypt.h:827
+
data_blob(_Inout_ data_blob &&other) noexcept
Move an existing BLOB.
Definition: Crypt.h:864
+
virtual ~data_blob()
Destroys the BLOB.
Definition: Crypt.h:875
+
data_blob & operator=(_In_ const DATA_BLOB &other)
Copy an existing BLOB.
Definition: Crypt.h:884
+
data_blob & operator=(_Inout_ data_blob &&other) noexcept
Move an existing BLOB.
Definition: Crypt.h:904
+
BYTE * data() noexcept
Get BLOB buffer.
Definition: Crypt.h:937
+
const BYTE * data() const noexcept
Get BLOB buffer.
Definition: Crypt.h:929
+
data_blob(_In_ const DATA_BLOB &other)
Duplicate an existing BLOB.
Definition: Crypt.h:850
+
data_blob() noexcept
Initializes an empty BLOB.
Definition: Crypt.h:832
+
data_blob(_In_count_(size) BYTE *data, _In_ DWORD size) noexcept
Initializes a BLOB from existing data.
Definition: Crypt.h:841
+
DWORD size() const noexcept
Get BLOB size.
Definition: Crypt.h:921
+
Base abstract template class to support object handle keeping for objects that support handle duplica...
Definition: Common.h:844
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
PCCERT_CONTEXT handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
Windows runtime error.
Definition: Common.h:1435
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:150
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const PCCERT_CONTEXT invalid
Invalid handle value.
Definition: Common.h:590
+
+ + + + diff --git a/_e_a_p_8h_source.html b/_e_a_p_8h_source.html new file mode 100644 index 00000000..1ca01c9c --- /dev/null +++ b/_e_a_p_8h_source.html @@ -0,0 +1,625 @@ + + + + + + + +WinStd: include/WinStd/EAP.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
EAP.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <eaphostpeerconfigapis.h>
+
11#include <eaptypes.h>
+
12#include <EapHostPeerTypes.h>
+
13#include <eapmethodtypes.h>
+
14#include <eappapis.h>
+
15#include <WinSock2.h>
+
16#include <memory>
+
17
+
18#pragma warning(push)
+
19#pragma warning(disable: 26812) // Windows EAP API is using unscoped enums
+
20
+
21#pragma warning(push)
+
22#pragma warning(disable: 4505) // Don't warn on unused code
+
23
+
29
+
40static bool operator==(_In_ const EAP_METHOD_TYPE &a, _In_ const EAP_METHOD_TYPE &b) noexcept
+
41{
+
42 return
+
43 a.eapType.type == b.eapType.type &&
+
44 a.eapType.dwVendorId == b.eapType.dwVendorId &&
+
45 a.eapType.dwVendorType == b.eapType.dwVendorType &&
+
46 a.dwAuthorId == a.dwAuthorId;
+
47}
+
48
+
59static bool operator!=(_In_ const EAP_METHOD_TYPE &a, _In_ const EAP_METHOD_TYPE &b) noexcept
+
60{
+
61 return !operator==(a, b);
+
62}
+
63
+
65
+
66#pragma warning(pop)
+
67
+
68namespace winstd
+
69{
+
72
+
78 #pragma warning(suppress: 4480)
+
79 enum class eap_type_t : unsigned char {
+
80 undefined = 0,
+
81 identity = 1,
+
82 notification = 2,
+
83 nak = 3,
+
84 md5_challenge = 4,
+
85 otp = 5,
+
86 gtc = 6,
+
87 tls = 13,
+
88 ttls = 21,
+
89 peap = 25,
+
90 mschapv2 = 26,
+
91 ms_auth_tlv = 33,
+
92
+
93 gtcp = 128 + gtc,
+
94
+
95 legacy_pap = 192,
+
96 legacy_mschapv2 = 193,
+
97
+
98 start = 1,
+
99 end = 192,
+
100 noneap_start = 192,
+
101 noneap_end = 254,
+
102 };
+
103
+ +
108 {
+ +
113
+
119 template <class _T>
+
120 void operator()(_T *_Ptr) const
+
121 {
+
122 EapHostPeerFreeMemory((BYTE*)_Ptr);
+
123 }
+
124 };
+
125
+
129 typedef std::unique_ptr<BYTE[], EapHostPeerFreeMemory_delete> eap_blob;
+
130
+ +
135 {
+ +
140
+
144 template <class _T>
+
145 void operator()(_T *_Ptr) const
+
146 {
+
147 EapHostPeerFreeRuntimeMemory((BYTE*)_Ptr);
+
148 }
+
149 };
+
150
+
154 typedef std::unique_ptr<BYTE[], EapHostPeerFreeRuntimeMemory_delete> eap_blob_runtime;
+
155
+ +
160 {
+ +
165
+
171 void operator()(EAP_ERROR *_Ptr) const noexcept
+
172 {
+
173 EapHostPeerFreeErrorMemory(_Ptr);
+
174 }
+
175 };
+
176
+
180 typedef std::unique_ptr<EAP_ERROR, EapHostPeerFreeErrorMemory_delete> eap_error;
+
181
+ +
186 {
+ +
191
+
197 void operator()(EAP_ERROR *_Ptr) const noexcept
+
198 {
+
199 EapHostPeerFreeEapError(_Ptr);
+
200 }
+
201 };
+
202
+
206 typedef std::unique_ptr<EAP_ERROR, EapHostPeerFreeEapError_delete> eap_error_runtime;
+
207
+
211 #pragma warning(push)
+
212 #pragma warning(disable: 26432) // Copy constructor and assignment operator are also present, but not detected by code analysis as they are using base type source object reference.
+
213 class eap_attr : public EAP_ATTRIBUTE
+
214 {
+
215 public:
+
219 eap_attr() noexcept
+
220 {
+
221 eaType = eatReserved;
+
222 dwLength = 0;
+
223 pValue = NULL;
+
224 }
+
225
+
229 eap_attr(_In_ const EAP_ATTRIBUTE &a)
+
230 {
+
231 eaType = a.eaType;
+
232 dwLength = a.dwLength;
+
233 if (a.dwLength) {
+
234 pValue = new BYTE[a.dwLength];
+
235 assert(pValue);
+
236 memcpy(pValue, a.pValue, a.dwLength);
+
237 } else
+
238 pValue = NULL;
+
239 }
+
240
+
244 eap_attr(_Inout_ eap_attr &&a) noexcept
+
245 {
+
246 eaType = a.eaType;
+
247 dwLength = a.dwLength;
+
248 if (a.dwLength) {
+
249 pValue = a.pValue;
+
250 a.dwLength = 0;
+
251 a.pValue = NULL;
+
252 } else
+
253 pValue = NULL;
+
254 }
+
255
+ +
260 {
+
261 if (pValue)
+
262 delete [] pValue;
+
263 }
+
264
+
268 eap_attr& operator=(_In_ const EAP_ATTRIBUTE &a)
+
269 {
+
270 if (this != &a) {
+
271 eaType = a.eaType;
+
272 dwLength = a.dwLength;
+
273 if (a.dwLength) {
+
274 BYTE *pValueNew = new BYTE[a.dwLength];
+
275 if (pValueNew) {
+
276 if (pValue)
+
277 delete [] pValue;
+
278 memcpy(pValueNew, a.pValue, a.dwLength);
+
279 pValue = pValueNew;
+
280 } else
+
281 assert(0); // Could not allocate memory
+
282 } else
+
283 pValue = NULL;
+
284 }
+
285 return *this;
+
286 }
+
287
+
291 eap_attr& operator=(_Inout_ eap_attr &&a) noexcept
+
292 {
+
293 if (this != &a) {
+
294 eaType = a.eaType;
+
295 dwLength = a.dwLength;
+
296 if (pValue)
+
297 delete [] pValue;
+
298 if (a.dwLength) {
+
299 pValue = a.pValue;
+
300 a.dwLength = 0;
+
301 a.pValue = NULL;
+
302 } else
+
303 pValue = NULL;
+
304 }
+
305 return *this;
+
306 }
+
307
+
315 void create_ms_mppe_key(_In_ BYTE bVendorType, _In_count_(nKeySize) LPCBYTE pbKey, _In_ BYTE nKeySize)
+
316 {
+
317 const BYTE nPaddingLength = static_cast<BYTE>((16 - (1 + static_cast<DWORD>(nKeySize))) % 16);
+
318 const DWORD dwLengthNew =
+
319 4 + // Vendor-Id
+
320 1 + // Vendor type
+
321 1 + // Vendor length
+
322 2 + // Salt
+
323 1 + // Key-Length
+
324 nKeySize + // Key
+
325 nPaddingLength; // Padding
+
326
+
327 #pragma warning(push)
+
328 #pragma warning(disable: 6386)
+
329 LPBYTE p = new BYTE[dwLengthNew];
+
330 p[0] = 0x00; // Vendor-Id (0x137 = 311 = Microsoft)
+
331 p[1] = 0x00; // --|
+
332 p[2] = 0x01; // --|
+
333 p[3] = 0x37; // --^
+
334 p[4] = bVendorType; // Vendor type
+
335 p[5] = static_cast<BYTE>(dwLengthNew - 4); // Vendor length
+
336 p[6] = 0x00; // Salt
+
337 p[7] = 0x00; // --^
+
338 p[8] = nKeySize; // Key-Length
+
339 #pragma warning(pop)
+
340 memcpy(p + 9, pbKey, nKeySize); // Key
+
341 memset(p + 9 + nKeySize, 0, nPaddingLength); // Padding
+
342
+
343 if (pValue)
+
344 delete [] pValue;
+
345
+
346 #pragma warning(suppress: 26812) // EAP_ATTRIBUTE_TYPE is unscoped.
+
347 eaType = eatVendorSpecific;
+
348 dwLength = dwLengthNew;
+
349 pValue = p;
+
350 }
+
351 };
+
352 #pragma warning(pop)
+
353
+
357 static const EAP_ATTRIBUTE blank_eap_attr = {};
+
358
+
362 class eap_method_prop : public EAP_METHOD_PROPERTY
+
363 {
+
364 public:
+
371 eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexcept
+
372 {
+
373 eapMethodPropertyType = type;
+
374 eapMethodPropertyValueType = empvtBool;
+
375 eapMethodPropertyValue.empvBool.length = sizeof(BOOL);
+
376 eapMethodPropertyValue.empvBool.value = value;
+
377 }
+
378
+
385 eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexcept
+
386 {
+
387 eapMethodPropertyType = type;
+
388 eapMethodPropertyValueType = empvtDword;
+
389 eapMethodPropertyValue.empvDword.length = sizeof(DWORD);
+
390 eapMethodPropertyValue.empvDword.value = value;
+
391 }
+
392
+
399 eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexcept
+
400 {
+
401 eapMethodPropertyType = type;
+
402 eapMethodPropertyValueType = empvtString;
+
403 eapMethodPropertyValue.empvString.length = static_cast<DWORD>(sizeof(WCHAR)*(wcslen(value) + 1));
+
404 eapMethodPropertyValue.empvString.value = const_cast<BYTE*>(reinterpret_cast<const BYTE*>(value));
+
405 }
+
406 };
+
407
+
411 class eap_packet : public dplhandle<EapPacket*, NULL>
+
412 {
+ +
414
+
415 public:
+
419 virtual ~eap_packet()
+
420 {
+
421 if (m_h != invalid)
+ +
423 }
+
424
+
438 bool create(_In_ EapCode code, _In_ BYTE id, _In_ WORD size) noexcept
+
439 {
+
440 assert(size >= 4); // EAP packets must contain at least Code, Id, and Length fields: 4B.
+
441
+
442 handle_type h = static_cast<handle_type>(HeapAlloc(GetProcessHeap(), 0, size));
+
443 if (h != NULL) {
+
444 h->Code = static_cast<BYTE>(code);
+
445 h->Id = id;
+
446 *reinterpret_cast<WORD*>(h->Length) = htons(size);
+
447
+
448 attach(h);
+
449 return true;
+
450 } else {
+
451 SetLastError(ERROR_OUTOFMEMORY);
+
452 return false;
+
453 }
+
454 }
+
455
+
459 WORD size() const noexcept
+
460 {
+
461 return m_h != NULL ? ntohs(*(WORD*)m_h->Length) : 0;
+
462 }
+
463
+
464 protected:
+
468 void free_internal() noexcept override
+
469 {
+
470 HeapFree(GetProcessHeap(), 0, m_h);
+
471 }
+
472
+
476 handle_type duplicate_internal(_In_ handle_type h) const noexcept override
+
477 {
+
478 const WORD n = ntohs(*reinterpret_cast<WORD*>(h->Length));
+
479 handle_type h2 = static_cast<handle_type>(HeapAlloc(GetProcessHeap(), 0, n));
+
480 if (h2 == NULL) {
+
481 SetLastError(ERROR_OUTOFMEMORY);
+
482 return NULL;
+
483 }
+
484 memcpy(h2, h, n);
+
485 return h2;
+
486 }
+
487 };
+
488
+
492 class eap_method_info_array : public EAP_METHOD_INFO_ARRAY
+
493 {
+ +
495
+
496 public:
+ +
501 {
+
502 dwNumberOfMethods = 0;
+
503 pEapMethods = NULL;
+
504 }
+
505
+ +
512 {
+
513 dwNumberOfMethods = other.dwNumberOfMethods;
+
514 pEapMethods = other.pEapMethods;
+
515 other.dwNumberOfMethods = 0;
+
516 other.pEapMethods = NULL;
+
517 }
+
518
+ +
523 {
+
524 if (pEapMethods)
+
525 free_internal();
+
526 }
+
527
+ +
534 {
+
535 if (this != std::addressof(other)) {
+
536 if (pEapMethods)
+
537 free_internal();
+
538 dwNumberOfMethods = other.dwNumberOfMethods;
+
539 pEapMethods = other.pEapMethods;
+
540 other.dwNumberOfMethods = 0;
+
541 other.pEapMethods = NULL;
+
542 }
+
543 return *this;
+
544 }
+
545
+
546 protected:
+
548
+
549 void free_internal() noexcept
+
550 {
+
551 for (DWORD i = 0; i < dwNumberOfMethods; i++)
+
552 free_internal(pEapMethods + i);
+
553
+
554 EapHostPeerFreeMemory(reinterpret_cast<BYTE*>(pEapMethods));
+
555 }
+
556
+
557 static void free_internal(_In_ EAP_METHOD_INFO *pMethodInfo) noexcept
+
558 {
+
559 if (pMethodInfo->pInnerMethodInfo)
+
560 free_internal(pMethodInfo->pInnerMethodInfo);
+
561
+
562 EapHostPeerFreeMemory(reinterpret_cast<BYTE*>(pMethodInfo->pwszAuthorName));
+
563 EapHostPeerFreeMemory(reinterpret_cast<BYTE*>(pMethodInfo->pwszFriendlyName));
+
564 }
+
565
+
567 };
+
568
+
570
+
573
+ +
580 {
+
581 public:
+
588 eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string& msg) :
+
589 m_type (err.type ),
+
590 m_reason (err.dwReasonCode ),
+
591 m_root_cause_id (err.rootCauseGuid ),
+
592 m_root_cause_desc(err.pRootCauseString ),
+
593 m_repair_id (err.repairGuid ),
+
594 m_repair_desc (err.pRepairString ),
+
595 m_help_link_id (err.helpLinkGuid ),
+
596 win_runtime_error(err.dwWinError, msg.c_str())
+
597 {
+
598 }
+
599
+
606 eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg = nullptr) :
+
607 m_type (err.type ),
+
608 m_reason (err.dwReasonCode ),
+
609 m_root_cause_id (err.rootCauseGuid ),
+
610 m_root_cause_desc(err.pRootCauseString),
+
611 m_repair_id (err.repairGuid ),
+
612 m_repair_desc (err.pRepairString ),
+
613 m_help_link_id (err.helpLinkGuid ),
+
614 win_runtime_error(err.dwWinError, msg )
+
615 {
+
616 }
+
617
+
621 const EAP_METHOD_TYPE& type() const noexcept
+
622 {
+
623 return m_type;
+
624 }
+
625
+
629 DWORD reason() const noexcept
+
630 {
+
631 return m_reason;
+
632 }
+
633
+
637 const GUID& root_cause_id() const noexcept
+
638 {
+
639 return m_root_cause_id;
+
640 }
+
641
+
645 const wchar_t* root_cause() const noexcept
+
646 {
+
647 return m_root_cause_desc.c_str();
+
648 }
+
649
+
653 const GUID& repair_id() const noexcept
+
654 {
+
655 return m_repair_id;
+
656 }
+
657
+
661 const wchar_t* repair() const noexcept
+
662 {
+
663 return m_repair_desc.c_str();
+
664 }
+
665
+
669 const GUID& help_link_id() const noexcept
+
670 {
+
671 return m_help_link_id;
+
672 }
+
673
+
674 protected:
+
675 EAP_METHOD_TYPE m_type;
+
676
+
677 DWORD m_reason;
+
678
+ +
680 std::wstring m_root_cause_desc;
+
681
+ +
683 std::wstring m_repair_desc;
+
684
+ +
686 };
+
687
+
689}
+
690
+
691#pragma warning(pop)
+
Base abstract template class to support object handle keeping for objects that support handle duplica...
Definition: Common.h:844
+
EAP_ATTRIBUTE wrapper class.
Definition: EAP.h:214
+
eap_attr() noexcept
Initializes a new EAP attribute set to eatReserved.
Definition: EAP.h:219
+
~eap_attr()
Destroys the EAP attribute.
Definition: EAP.h:259
+
eap_attr(_Inout_ eap_attr &&a) noexcept
Moves an existing EAP attribute.
Definition: EAP.h:244
+
eap_attr(_In_ const EAP_ATTRIBUTE &a)
Copies an existing EAP attribute.
Definition: EAP.h:229
+
eap_attr & operator=(_Inout_ eap_attr &&a) noexcept
Moves an existing EAP attribute.
Definition: EAP.h:291
+
void create_ms_mppe_key(_In_ BYTE bVendorType, _In_count_(nKeySize) LPCBYTE pbKey, _In_ BYTE nKeySize)
Creates MS-MPPE-Send-Key or MS-MPPE-Recv-Key.
Definition: EAP.h:315
+
eap_attr & operator=(_In_ const EAP_ATTRIBUTE &a)
Copies an existing EAP attribute.
Definition: EAP.h:268
+
EAP_METHOD_INFO_ARRAY wrapper class.
Definition: EAP.h:493
+
eap_method_info_array & operator=(_Inout_ eap_method_info_array &&other) noexcept
Move assignment.
Definition: EAP.h:533
+
eap_method_info_array() noexcept
Constructs an empty array.
Definition: EAP.h:500
+
~eap_method_info_array()
Destructor.
Definition: EAP.h:522
+
eap_method_info_array(_Inout_ eap_method_info_array &&other) noexcept
Move constructor.
Definition: EAP.h:511
+
EAP_METHOD_PROPERTY wrapper class.
Definition: EAP.h:363
+
eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexcept
Constructs a Unicode string method property.
Definition: EAP.h:399
+
eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexcept
Constructs a DWORD method property.
Definition: EAP.h:385
+
eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexcept
Constructs a BOOL method property.
Definition: EAP.h:371
+
EapPacket wrapper class.
Definition: EAP.h:412
+
WORD size() const noexcept
Returns total EAP packet size in bytes.
Definition: EAP.h:459
+
virtual ~eap_packet()
Destroys the EAP packet.
Definition: EAP.h:419
+
void free_internal() noexcept override
Destroys the EAP packet.
Definition: EAP.h:468
+
bool create(_In_ EapCode code, _In_ BYTE id, _In_ WORD size) noexcept
Create new EAP packet.
Definition: EAP.h:438
+
handle_type duplicate_internal(_In_ handle_type h) const noexcept override
Duplicates the EAP packet.
Definition: EAP.h:476
+
EapHost runtime error.
Definition: EAP.h:580
+
const EAP_METHOD_TYPE & type() const noexcept
Returns EAP method type.
Definition: EAP.h:621
+
GUID m_root_cause_id
A unique ID that identifies cause of error in EAPHost.
Definition: EAP.h:679
+
const wchar_t * root_cause() const noexcept
Returns root cause ID.
Definition: EAP.h:645
+
const GUID & repair_id() const noexcept
Returns repair ID.
Definition: EAP.h:653
+
std::wstring m_repair_desc
A localized and readable string that describes the possible repair action.
Definition: EAP.h:683
+
DWORD reason() const noexcept
Returns the reason code for error.
Definition: EAP.h:629
+
EAP_METHOD_TYPE m_type
Structure that identifies the EAP method that raised the error.
Definition: EAP.h:675
+
GUID m_repair_id
A unique ID that maps to a localizable string that identifies the repair action that can be taken to ...
Definition: EAP.h:682
+
eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg=nullptr)
Constructs an exception.
Definition: EAP.h:606
+
eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string &msg)
Constructs an exception.
Definition: EAP.h:588
+
const wchar_t * repair() const noexcept
Returns root cause ID.
Definition: EAP.h:661
+
GUID m_help_link_id
A unique ID that maps to a localizable string that specifies an URL for a page that contains addition...
Definition: EAP.h:685
+
const GUID & root_cause_id() const noexcept
Returns root cause ID.
Definition: EAP.h:637
+
std::wstring m_root_cause_desc
A localized and readable string that describes the root cause of the error.
Definition: EAP.h:680
+
const GUID & help_link_id() const noexcept
Returns help_link ID.
Definition: EAP.h:669
+
DWORD m_reason
The reason code for the error.
Definition: EAP.h:677
+
EapPacket * handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
Windows runtime error.
Definition: Common.h:1435
+
tstring msg(_In_opt_ DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition: Common.h:1480
+
std::unique_ptr< EAP_ERROR, EapHostPeerFreeEapError_delete > eap_error_runtime
EAP_ERROR wrapper class.
Definition: EAP.h:206
+
std::unique_ptr< BYTE[], EapHostPeerFreeMemory_delete > eap_blob
EapHost BLOB wrapper class.
Definition: EAP.h:129
+
eap_type_t
EAP method numbers.
Definition: EAP.h:79
+
std::unique_ptr< EAP_ERROR, EapHostPeerFreeErrorMemory_delete > eap_error
EAP_ERROR wrapper class.
Definition: EAP.h:180
+
std::unique_ptr< BYTE[], EapHostPeerFreeRuntimeMemory_delete > eap_blob_runtime
EapHost BLOB wrapper class.
Definition: EAP.h:154
+
@ notification
Notification.
+
@ md5_challenge
MD5-Challenge.
+
@ legacy_pap
PAP (Not actually an EAP method; Moved to the Unassigned area)
+
@ gtc
Generic Token Card (GTC)
+
@ undefined
Undefined EAP type.
+
@ end
End of EAP methods (non-inclusive)
+
@ gtcp
EAP-GTC using a password.
+
@ noneap_start
Start of non-EAP methods.
+ +
@ nak
Legacy Nak.
+
@ noneap_end
End of non-EAP methods (non-inclusive)
+ + +
@ otp
One-Time Password (OTP)
+
@ legacy_mschapv2
MSCHAPv2 (Not actually an EAP method; Moved to the Unassigned area)
+
@ ms_auth_tlv
MS-Authentication-TLV.
+
@ start
Start of EAP methods.
+
@ mschapv2
EAP-MSCHAPv2.
+
@ identity
Identity.
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:150
+
static const EapPacket * invalid
Invalid handle value.
Definition: Common.h:590
+
Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError.
Definition: EAP.h:186
+
EapHostPeerFreeEapError_delete() noexcept
Default constructor.
Definition: EAP.h:190
+
void operator()(EAP_ERROR *_Ptr) const noexcept
Delete a pointer.
Definition: EAP.h:197
+
Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory.
Definition: EAP.h:160
+
EapHostPeerFreeErrorMemory_delete() noexcept
Default constructor.
Definition: EAP.h:164
+
void operator()(EAP_ERROR *_Ptr) const noexcept
Delete a pointer.
Definition: EAP.h:171
+
Deleter for unique_ptr using EapHostPeerFreeMemory.
Definition: EAP.h:108
+
void operator()(_T *_Ptr) const
Delete a pointer.
Definition: EAP.h:120
+
EapHostPeerFreeMemory_delete() noexcept
Default constructor.
Definition: EAP.h:112
+
Deleter for unique_ptr using EapHostPeerFreeRuntimeMemory.
Definition: EAP.h:135
+
void operator()(_T *_Ptr) const
Delete a pointer.
Definition: EAP.h:145
+
EapHostPeerFreeRuntimeMemory_delete() noexcept
Default constructor.
Definition: EAP.h:139
+
+ + + + diff --git a/_e_t_w_8h_source.html b/_e_t_w_8h_source.html new file mode 100644 index 00000000..454c81fa --- /dev/null +++ b/_e_t_w_8h_source.html @@ -0,0 +1,1000 @@ + + + + + + + +WinStd: include/WinStd/ETW.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
ETW.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <assert.h>
+
11#include <evntprov.h>
+
12#include <evntcons.h>
+
13#include <stdarg.h>
+
14#include <tdh.h>
+
15#include <memory>
+
16#include <string>
+
17#include <vector>
+
18
+
19#pragma warning(push)
+
20#pragma warning(disable: 4505) // Don't warn on unused code
+
21
+
27
+
33template<class _Ty, class _Ax>
+
34static _Success_(return == ERROR_SUCCESS) ULONG TdhGetProperty(_In_ PEVENT_RECORD pEvent, _In_ ULONG TdhContextCount, _In_reads_opt_(TdhContextCount) PTDH_CONTEXT pTdhContext, _In_ ULONG PropertyDataCount, _In_reads_(PropertyDataCount) PPROPERTY_DATA_DESCRIPTOR pPropertyData, _Inout_ std::vector<_Ty, _Ax> &aData)
+
35{
+
36 ULONG ulSize, ulResult;
+
37
+
38 // Query property size.
+
39 ulResult = TdhGetPropertySize(pEvent, TdhContextCount, pTdhContext, PropertyDataCount, pPropertyData, &ulSize);
+
40 if (ulResult == ERROR_SUCCESS) {
+
41 if (ulSize) {
+
42 // Query property value.
+
43 aData.resize((ulSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
44 ulResult = TdhGetProperty(pEvent, TdhContextCount, pTdhContext, PropertyDataCount, pPropertyData, ulSize, reinterpret_cast<LPBYTE>(aData.data()));
+
45 } else {
+
46 // Property value size is zero.
+
47 aData.clear();
+
48 }
+
49 }
+
50
+
51 return ulResult;
+
52}
+
53
+
59static _Success_(return == ERROR_SUCCESS) ULONG TdhGetEventInformation(_In_ PEVENT_RECORD pEvent, _In_ ULONG TdhContextCount, _In_reads_opt_(TdhContextCount) PTDH_CONTEXT pTdhContext, _Out_ std::unique_ptr<TRACE_EVENT_INFO> &info)
+
60{
+
61 BYTE szBuffer[WINSTD_STACK_BUFFER_BYTES];
+
62 ULONG ulSize = sizeof(szBuffer), ulResult;
+
63
+
64 // Try with stack buffer first.
+
65 ulResult = TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, (PTRACE_EVENT_INFO)szBuffer, &ulSize);
+
66 if (ulResult == ERROR_SUCCESS) {
+
67 // Copy from stack.
+
68 info.reset(reinterpret_cast<PTRACE_EVENT_INFO>(new char[ulSize]));
+
69 memcpy(info.get(), szBuffer, ulSize);
+
70 return ERROR_SUCCESS;
+
71 } else if (ulResult == ERROR_INSUFFICIENT_BUFFER) {
+
72 // Create buffer on heap and retry.
+
73 info.reset(reinterpret_cast<PTRACE_EVENT_INFO>(new char[ulSize]));
+
74 return TdhGetEventInformation(pEvent, TdhContextCount, pTdhContext, info.get(), &ulSize);
+
75 }
+
76
+
77 return ulResult;
+
78}
+
79
+
85static _Success_(return == ERROR_SUCCESS) ULONG TdhGetEventMapInformation(_In_ PEVENT_RECORD pEvent, _In_ LPWSTR pMapName, _Inout_ std::unique_ptr<EVENT_MAP_INFO> &info)
+
86{
+
87 BYTE szBuffer[WINSTD_STACK_BUFFER_BYTES];
+
88 ULONG ulSize = sizeof(szBuffer), ulResult;
+
89
+
90 // Try with stack buffer first.
+
91 ulResult = TdhGetEventMapInformation(pEvent, pMapName, (PEVENT_MAP_INFO)szBuffer, &ulSize);
+
92 if (ulResult == ERROR_SUCCESS) {
+
93 // Copy from stack.
+
94 info.reset(reinterpret_cast<PEVENT_MAP_INFO>(new char[ulSize]));
+
95 memcpy(info.get(), szBuffer, ulSize);
+
96 return ERROR_SUCCESS;
+
97 } else if (ulResult == ERROR_INSUFFICIENT_BUFFER) {
+
98 // Create buffer on heap and retry.
+
99 info.reset(reinterpret_cast<PEVENT_MAP_INFO>(new char[ulSize]));
+
100 return TdhGetEventMapInformation(pEvent, pMapName, info.get(), &ulSize);
+
101 }
+
102
+
103 return ulResult;
+
104}
+
105
+
107
+
108#pragma warning(pop)
+
109
+
110namespace winstd
+
111{
+
114
+
118 class event_data : public EVENT_DATA_DESCRIPTOR
+
119 {
+
120 public:
+ +
125 {
+
126 Ptr = 0;
+
127 Size = 0;
+
128 Reserved = (ULONG)-1; // Used for varadic argument terminator.
+
129 }
+
130
+
138 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
139 event_data(_In_ const char &data)
+
140 {
+
141 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
142 }
+
143
+
151 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
152 event_data(_In_ const unsigned char &data)
+
153 {
+
154 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
155 }
+
156
+
164 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
165 event_data(_In_ const int &data)
+
166 {
+
167 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
168 }
+
169
+
177 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
178 event_data(_In_ const unsigned int &data)
+
179 {
+
180 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
181 }
+
182
+
190 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
191 event_data(_In_ const long &data)
+
192 {
+
193 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
194 }
+
195
+
203 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
204 event_data(_In_ const unsigned long &data)
+
205 {
+
206 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
207 }
+
208
+
216 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
217 event_data(_In_ const GUID &data)
+
218 {
+
219 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
+
220 }
+
221
+
229 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
230 event_data(_In_opt_z_ const char *data)
+
231 {
+
232 if (data)
+
233 EventDataDescCreate(this, data, (ULONG)((strlen(data) + 1) * sizeof(*data)));
+
234 else {
+
235 // Writing NULL pointer with 0B length causes trouble in Event Viewer: message template string is displayed only, parameters are not rendered.
+
236 static const char null[] = "(null)";
+
237 EventDataDescCreate(this, null, sizeof(null));
+
238 }
+
239 }
+
240
+
248 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
249 event_data(_In_opt_z_ const wchar_t *data)
+
250 {
+
251 if (data)
+
252 EventDataDescCreate(this, data, (ULONG)((wcslen(data) + 1) * sizeof(*data)));
+
253 else {
+
254 // Writing NULL pointer with 0B length causes trouble in Event Viewer: message template string is displayed only, parameters are not rendered.
+
255 static const wchar_t null[] = L"(null)";
+
256 EventDataDescCreate(this, null, sizeof(null));
+
257 }
+
258 }
+
259
+
267 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
268 template<class _Elem, class _Traits, class _Ax>
+
269 event_data(_In_ const std::basic_string<_Elem, _Traits, _Ax> &data)
+
270 {
+
271 EventDataDescCreate(this, data.c_str(), (ULONG)((data.length() + 1) * sizeof(_Elem)));
+
272 }
+
273
+
282 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
283 event_data(_In_bytecount_(size) const void *data, _In_ ULONG size)
+
284 {
+
285 EventDataDescCreate(this, data, size);
+
286 }
+
287 };
+
288
+
292 static const event_data blank_event_data;
+
293
+
297 class event_rec : public EVENT_RECORD
+
298 {
+
299 public:
+ +
304 {
+
305 memset((EVENT_RECORD*)this, 0, sizeof(EVENT_RECORD));
+
306 }
+
307
+
313 event_rec(_In_ const event_rec &other) : EVENT_RECORD(other)
+
314 {
+
315 set_extended_data_internal(other.ExtendedDataCount, other.ExtendedData);
+
316 set_user_data_internal(other.UserDataLength, other.UserData);
+
317 }
+
318
+
324 event_rec(_In_ const EVENT_RECORD &other) : EVENT_RECORD(other)
+
325 {
+
326 set_extended_data_internal(other.ExtendedDataCount, other.ExtendedData);
+
327 set_user_data_internal(other.UserDataLength, other.UserData);
+
328 }
+
329
+
335 event_rec(_Inout_ event_rec&& other) noexcept : EVENT_RECORD(other)
+
336 {
+
337 memset((EVENT_RECORD*)&other, 0, sizeof(EVENT_RECORD));
+
338 }
+
339
+ +
344 {
+
345 if (ExtendedData)
+
346 delete reinterpret_cast<unsigned char*>(ExtendedData);
+
347
+
348 if (UserData)
+
349 delete reinterpret_cast<unsigned char*>(UserData);
+
350 }
+
351
+
357 event_rec& operator=(_In_ const event_rec &other)
+
358 {
+
359 if (this != std::addressof(other)) {
+
360 (EVENT_RECORD&)*this = other;
+
361 set_extended_data_internal(other.ExtendedDataCount, other.ExtendedData);
+
362 set_user_data_internal(other.UserDataLength, other.UserData);
+
363 }
+
364
+
365 return *this;
+
366 }
+
367
+
373 event_rec& operator=(_In_ const EVENT_RECORD &other)
+
374 {
+
375 if (this != std::addressof(other)) {
+
376 (EVENT_RECORD&)*this = other;
+
377 set_extended_data_internal(other.ExtendedDataCount, other.ExtendedData);
+
378 set_user_data_internal(other.UserDataLength, other.UserData);
+
379 }
+
380
+
381 return *this;
+
382 }
+
383
+
389 event_rec& operator=(_Inout_ event_rec&& other) noexcept
+
390 {
+
391 if (this != std::addressof(other)) {
+
392 (EVENT_RECORD&)*this = other;
+
393 memset((EVENT_RECORD*)&other, 0, sizeof(EVENT_RECORD));
+
394 }
+
395
+
396 return *this;
+
397 }
+
398
+
405 void set_extended_data(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
+
406 {
+
407 if (ExtendedData)
+
408 delete reinterpret_cast<unsigned char*>(ExtendedData);
+
409
+
410 set_extended_data_internal(count, data);
+
411 }
+
412
+
419 void set_user_data(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
+
420 {
+
421 if (UserData)
+
422 delete reinterpret_cast<unsigned char*>(UserData);
+
423
+
424 set_user_data_internal(size, data);
+
425 }
+
426
+
427 protected:
+
434 void set_extended_data_internal(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
+
435 {
+
436 if (count) {
+
437 assert(data);
+
438
+
439 // Count the total required memory.
+
440 size_t data_size = 0;
+
441 for (size_t i = 0; i < count; i++)
+
442 data_size += data[i].DataSize;
+
443
+
444 // Allocate memory for extended data.
+
445 ExtendedData = reinterpret_cast<EVENT_HEADER_EXTENDED_DATA_ITEM*>(new unsigned char[sizeof(EVENT_HEADER_EXTENDED_DATA_ITEM)*count + data_size]);
+
446
+
447 // Bulk-copy extended data descriptors.
+
448 memcpy(ExtendedData, data, sizeof(EVENT_HEADER_EXTENDED_DATA_ITEM) * count);
+
449
+
450 // Copy the data.
+
451 unsigned char *ptr = reinterpret_cast<unsigned char*>(ExtendedData + count);
+
452 for (size_t i = 0; i < count; i++) {
+
453 if (data[i].DataSize) {
+
454 memcpy(ptr, (void*)(data[i].DataPtr), data[i].DataSize);
+
455 ExtendedData[i].DataPtr = (ULONGLONG)ptr;
+
456 ptr += data[i].DataSize;
+
457 } else
+
458 ExtendedData[i].DataPtr = NULL;
+
459 }
+
460 } else
+
461 ExtendedData = NULL;
+
462
+
463 ExtendedDataCount = count;
+
464 }
+
465
+
472 void set_user_data_internal(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
+
473 {
+
474 if (size) {
+
475 assert(data);
+
476
+
477 // Allocate memory for user data.
+
478 UserData = new unsigned char[size];
+
479
+
480 // Copy user data.
+
481 memcpy(UserData, data, size);
+
482 } else
+
483 UserData = NULL;
+
484
+
485 UserDataLength = size;
+
486 }
+
487 };
+
488
+
492 class event_provider : public handle<REGHANDLE, NULL>
+
493 {
+ +
495
+
496 public:
+ +
503 {
+
504 if (m_h != invalid)
+ +
506 }
+
507
+
517 ULONG create(_In_ LPCGUID ProviderId)
+
518 {
+
519 handle_type h;
+
520 ULONG ulRes = EventRegister(ProviderId, enable_callback, this, &h);
+
521 if (ulRes == ERROR_SUCCESS)
+
522 attach(h);
+
523 return ulRes;
+
524 }
+
525
+
535 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor)
+
536 {
+
537 assert(m_h != invalid);
+
538 return EventWrite(m_h, EventDescriptor, 0, NULL);
+
539 }
+
540
+
550 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount = 0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData = NULL)
+
551 {
+
552 assert(m_h != invalid);
+
553 return EventWrite(m_h, EventDescriptor, UserDataCount, UserData);
+
554 }
+
555
+
567 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1, ...)
+
568 {
+
569 assert(m_h != invalid);
+
570
+
571 // The first argument (param1) is outside of varadic argument list.
+
572 if (param1.Ptr == winstd::blank_event_data.Ptr &&
+
573 param1.Size == winstd::blank_event_data.Size &&
+
574 param1.Reserved == winstd::blank_event_data.Reserved)
+
575 return EventWrite(m_h, EventDescriptor, 0, NULL);
+
576
+
577 va_list arg;
+
578 va_start(arg, param1);
+
579 va_list arg_start = arg;
+
580 std::vector<EVENT_DATA_DESCRIPTOR> params;
+
581 ULONG param_count;
+
582
+
583 // Preallocate array.
+
584 for (param_count = 1; param_count < MAX_EVENT_DATA_DESCRIPTORS; param_count++) {
+
585 const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR);
+
586 if (p.Ptr == winstd::blank_event_data.Ptr &&
+
587 p.Size == winstd::blank_event_data.Size &&
+
588 p.Reserved == winstd::blank_event_data.Reserved) break;
+
589 }
+
590 params.reserve(param_count);
+
591
+
592 // Copy parameters to array.
+
593 arg = arg_start;
+
594 params.push_back(param1);
+
595 for (;;) {
+
596 const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR);
+
597 if (p.Ptr == winstd::blank_event_data.Ptr &&
+
598 p.Size == winstd::blank_event_data.Size &&
+
599 p.Reserved == winstd::blank_event_data.Reserved) break;
+
600 params.push_back(p);
+
601 }
+
602
+
603 va_end(arg);
+
604#pragma warning(push)
+
605#pragma warning(disable: 28020)
+
606 return EventWrite(m_h, EventDescriptor, param_count, params.data());
+
607#pragma warning(pop)
+
608 }
+
609
+
621 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)
+
622 {
+
623 assert(m_h != invalid);
+
624
+
625 va_list arg_start = arg;
+
626 std::vector<EVENT_DATA_DESCRIPTOR> params;
+
627 ULONG param_count;
+
628
+
629 // Preallocate array.
+
630 for (param_count = 0; param_count < MAX_EVENT_DATA_DESCRIPTORS; param_count++) {
+
631 const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR);
+
632 if (p.Ptr == winstd::blank_event_data.Ptr &&
+
633 p.Size == winstd::blank_event_data.Size &&
+
634 p.Reserved == winstd::blank_event_data.Reserved) break;
+
635 }
+
636 params.reserve(param_count);
+
637
+
638 // Copy parameters to array.
+
639 arg = arg_start;
+
640 for (;;) {
+
641 const EVENT_DATA_DESCRIPTOR &p = va_arg(arg, const EVENT_DATA_DESCRIPTOR);
+
642 if (p.Ptr == winstd::blank_event_data.Ptr &&
+
643 p.Size == winstd::blank_event_data.Size &&
+
644 p.Reserved == winstd::blank_event_data.Reserved) break;
+
645 params.push_back(p);
+
646 }
+
647
+
648#pragma warning(push)
+
649#pragma warning(disable: 28020)
+
650 return EventWrite(m_h, EventDescriptor, param_count, params.data());
+
651#pragma warning(pop)
+
652 }
+
653
+
663 ULONG write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String, ...)
+
664 {
+
665 assert(m_h != invalid);
+
666
+
667 std::wstring msg;
+
668 va_list arg;
+
669
+
670 // Format message.
+
671 va_start(arg, String);
+
672 vsprintf(msg, String, arg);
+
673 va_end(arg);
+
674
+
675 // Write string event.
+
676 return EventWriteString(m_h, Level, Keyword, msg.c_str());
+
677 }
+
678
+
679 protected:
+
685 void free_internal() noexcept override
+
686 {
+
687 EventUnregister(m_h);
+
688 }
+
689
+
695 virtual void enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData)
+
696 {
+
697 UNREFERENCED_PARAMETER(SourceId);
+
698 UNREFERENCED_PARAMETER(IsEnabled);
+
699 UNREFERENCED_PARAMETER(Level);
+
700 UNREFERENCED_PARAMETER(MatchAnyKeyword);
+
701 UNREFERENCED_PARAMETER(MatchAllKeyword);
+
702 UNREFERENCED_PARAMETER(FilterData);
+
703 }
+
704
+
710 static VOID NTAPI enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext)
+
711 {
+
712 if (CallbackContext)
+
713 static_cast<event_provider*>(CallbackContext)->enable_callback(SourceId, IsEnabled, Level, MatchAnyKeyword, MatchAllKeyword, FilterData);
+
714 else
+
715 assert(0); // Where did the "this" pointer get lost?
+
716 }
+
717 };
+
718
+
722 class event_session : public handle<TRACEHANDLE, 0>
+
723 {
+ +
725
+
726 public:
+ +
731 {
+
732 }
+
733
+
740 event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop) :
+
741 m_prop(reinterpret_cast<EVENT_TRACE_PROPERTIES*>(new char[prop->Wnode.BufferSize])),
+
742 handle(h)
+
743 {
+
744 memcpy(m_prop.get(), prop, prop->Wnode.BufferSize);
+
745 }
+
746
+
752 event_session(_Inout_ event_session &&other) noexcept :
+
753 m_prop(std::move(other.m_prop)),
+
754 handle(std::move(other))
+
755 {
+
756 }
+
757
+ +
764 {
+
765 if (m_h != invalid)
+ +
767 }
+
768
+
774 event_session& operator=(_Inout_ event_session &&other) noexcept
+
775 {
+
776 if (this != std::addressof(other)) {
+
777 (handle<handle_type, 0>&&)*this = std::move(other);
+
778 m_prop = std::move(other.m_prop);
+
779 }
+
780 return *this;
+
781 }
+
782
+
788 operator const EVENT_TRACE_PROPERTIES*() const
+
789 {
+
790 return m_prop.get();
+
791 }
+
792
+
798 LPCTSTR name() const
+
799 {
+
800 const EVENT_TRACE_PROPERTIES *prop = m_prop.get();
+
801 return reinterpret_cast<LPCTSTR>(reinterpret_cast<const char*>(prop) + prop->LoggerNameOffset);
+
802 }
+
803
+
812 void attach(_In_opt_ handle_type h, _In_ EVENT_TRACE_PROPERTIES *prop)
+
813 {
+ +
815 m_prop.reset(prop);
+
816 }
+
817
+
827 ULONG create(_In_z_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties)
+
828 {
+
829 handle_type h;
+
830 std::unique_ptr<EVENT_TRACE_PROPERTIES> prop(reinterpret_cast<EVENT_TRACE_PROPERTIES*>(new char[Properties->Wnode.BufferSize]));
+
831 memcpy(prop.get(), Properties, Properties->Wnode.BufferSize);
+
832 ULONG ulRes = StartTrace(&h, SessionName, prop.get());
+
833 if (ulRes == ERROR_SUCCESS)
+
834 attach(h, prop.release());
+
835 return ulRes;
+
836 }
+
837
+
847 ULONG enable_trace(_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword = 0, _In_opt_ ULONGLONG MatchAllKeyword = 0, _In_opt_ ULONG EnableProperty = 0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL)
+
848 {
+
849 assert(m_h != invalid);
+
850 return EnableTraceEx(
+
851 ProviderId,
+
852 &m_prop->Wnode.Guid,
+
853 m_h,
+
854 EVENT_CONTROL_CODE_ENABLE_PROVIDER,
+
855 Level,
+
856 MatchAnyKeyword,
+
857 MatchAllKeyword,
+
858 EnableProperty,
+
859 EnableFilterDesc);
+
860 }
+
861
+
871 ULONG disable_trace(_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword = 0, _In_opt_ ULONGLONG MatchAllKeyword = 0, _In_opt_ ULONG EnableProperty = 0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL)
+
872 {
+
873 assert(m_h != invalid);
+
874 return EnableTraceEx(
+
875 ProviderId,
+
876 &m_prop->Wnode.Guid,
+
877 m_h,
+
878 EVENT_CONTROL_CODE_DISABLE_PROVIDER,
+
879 Level,
+
880 MatchAnyKeyword,
+
881 MatchAllKeyword,
+
882 EnableProperty,
+
883 EnableFilterDesc);
+
884 }
+
885
+
886 protected:
+
892 void free_internal() noexcept override
+
893 {
+
894 ControlTrace(m_h, name(), m_prop.get(), EVENT_TRACE_CONTROL_STOP);
+
895 }
+
896
+
897 protected:
+
898 std::unique_ptr<EVENT_TRACE_PROPERTIES> m_prop;
+
899 };
+
900
+
904 class event_trace : public handle<TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE>
+
905 {
+
906 WINSTD_HANDLE_IMPL(event_trace, INVALID_PROCESSTRACE_HANDLE)
+
907
+
908 public:
+
914 virtual ~event_trace()
+
915 {
+
916 if (m_h != invalid)
+ +
918 }
+
919
+
929 bool create(_Inout_ PEVENT_TRACE_LOGFILE Logfile)
+
930 {
+
931 handle_type h = OpenTrace(Logfile);
+
932 if (h != invalid) {
+
933 attach(h);
+
934 return true;
+
935 } else
+
936 return false;
+
937 }
+
938
+
939 protected:
+
945 void free_internal() noexcept override
+
946 {
+
947 CloseTrace(m_h);
+
948 }
+
949 };
+
950
+ +
955 {
+
956 public:
+ +
963 _In_opt_ LPCGUID SourceId,
+
964 _In_ TRACEHANDLE TraceHandle,
+
965 _In_ LPCGUID ProviderId,
+
966 _In_ UCHAR Level,
+
967 _In_opt_ ULONGLONG MatchAnyKeyword = 0,
+
968 _In_opt_ ULONGLONG MatchAllKeyword = 0,
+
969 _In_opt_ ULONG EnableProperty = 0,
+
970 _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL) :
+
971 m_provider_id(ProviderId),
+
972 m_source_id(SourceId),
+
973 m_trace_handle(TraceHandle),
+
974 m_level(Level),
+
975 m_match_any_keyword(MatchAnyKeyword),
+
976 m_match_all_keyword(MatchAllKeyword),
+
977 m_enable_property(EnableProperty),
+
978 m_enable_filter_desc(EnableFilterDesc)
+
979 {
+
980 m_status = EnableTraceEx(
+ + + +
984 EVENT_CONTROL_CODE_ENABLE_PROVIDER,
+
985 m_level,
+ + + + +
990 }
+
991
+ +
998 _In_ const event_session &session,
+
999 _In_ LPCGUID ProviderId,
+
1000 _In_ UCHAR Level,
+
1001 _In_opt_ ULONGLONG MatchAnyKeyword = 0,
+
1002 _In_opt_ ULONGLONG MatchAllKeyword = 0,
+
1003 _In_opt_ ULONG EnableProperty = 0,
+
1004 _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL) :
+
1005 m_provider_id(ProviderId),
+
1006 m_source_id(&((const EVENT_TRACE_PROPERTIES*)session)->Wnode.Guid),
+
1007 m_trace_handle(session),
+
1008 m_level(Level),
+
1009 m_match_any_keyword(MatchAnyKeyword),
+
1010 m_match_all_keyword(MatchAllKeyword),
+
1011 m_enable_property(EnableProperty),
+
1012 m_enable_filter_desc(EnableFilterDesc)
+
1013 {
+
1014 m_status = EnableTraceEx(
+ + + +
1018 EVENT_CONTROL_CODE_ENABLE_PROVIDER,
+
1019 m_level,
+ + + + +
1024 }
+
1025
+
1031 ULONG status() const
+
1032 {
+
1033 return m_status;
+
1034 }
+
1035
+ +
1042 {
+
1043 if (m_status == ERROR_SUCCESS)
+
1044 EnableTraceEx(
+ + + +
1048 EVENT_CONTROL_CODE_DISABLE_PROVIDER,
+
1049 m_level,
+ + + + +
1054 }
+
1055
+
1056 protected:
+
1057 ULONG m_status;
+ +
1059 LPCGUID m_source_id;
+
1060 TRACEHANDLE m_trace_handle;
+
1061 UCHAR m_level;
+ + + +
1065 PEVENT_FILTER_DESCRIPTOR m_enable_filter_desc;
+
1066 };
+
1067
+ +
1074 {
+
1075 public:
+
1079 event_fn_auto(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName) :
+
1080 m_ep(ep),
+
1081 m_event_dest(event_dest)
+
1082 {
+
1083 EventDataDescCreate(&m_fn_name, pszFnName, (ULONG)(strlen(pszFnName) + 1)*sizeof(*pszFnName));
+
1084 m_ep.write(event_cons, 1, &m_fn_name);
+
1085 }
+
1086
+
1090 event_fn_auto(_In_ const event_fn_auto &other) :
+
1091 m_ep(other.m_ep),
+ +
1093 m_fn_name(other.m_fn_name)
+
1094 {
+
1095 }
+
1096
+
1100 event_fn_auto(_Inout_ event_fn_auto &&other) noexcept :
+
1101 m_ep(other.m_ep),
+
1102 m_event_dest(other.m_event_dest),
+
1103 m_fn_name(std::move(other.m_fn_name))
+
1104 {
+
1105 other.m_event_dest = NULL;
+
1106 }
+
1107
+ +
1112 {
+
1113 if (m_event_dest)
+ +
1115 }
+
1116
+ +
1121 {
+
1122 if (this != &other) {
+
1123 assert(&m_ep == &other.m_ep);
+
1124 m_event_dest = other.m_event_dest;
+
1125 m_fn_name = other.m_fn_name;
+
1126 }
+
1127
+
1128 return *this;
+
1129 }
+
1130
+
1134 event_fn_auto& operator=(_Inout_ event_fn_auto &&other) noexcept
+
1135 {
+
1136 if (this != &other) {
+
1137 assert(&m_ep == &other.m_ep);
+
1138 m_event_dest = other.m_event_dest;
+
1139 m_fn_name = std::move(other.m_fn_name);
+
1140 other.m_event_dest = NULL;
+
1141 }
+
1142
+
1143 return *this;
+
1144 }
+
1145
+
1146 protected:
+ +
1148 const EVENT_DESCRIPTOR *m_event_dest;
+
1149 EVENT_DATA_DESCRIPTOR m_fn_name;
+
1150 };
+
1151
+
1157 template<class T>
+ +
1159 {
+
1160 public:
+
1164 event_fn_auto_ret(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName, T &result) :
+
1165 m_ep(ep),
+
1166 m_event_dest(event_dest),
+
1167 m_result(result)
+
1168 {
+
1169 EventDataDescCreate(m_desc + 0, pszFnName, (ULONG)(strlen(pszFnName) + 1)*sizeof(*pszFnName));
+
1170 m_ep.write(event_cons, 1, m_desc);
+
1171 }
+
1172
+ +
1177 m_ep(other.m_ep),
+ +
1179 m_result(other.m_result)
+
1180 {
+
1181 m_desc[0] = other.m_desc[0];
+
1182 }
+
1183
+ +
1188 m_ep(other.m_ep),
+ +
1190 m_result(other.m_result)
+
1191 {
+
1192 m_desc[0] = std::move(other.m_desc[0]);
+
1193 other.m_event_dest = NULL;
+
1194 }
+
1195
+ +
1200 {
+
1201 if (m_event_dest) {
+
1202 EventDataDescCreate(m_desc + 1, &m_result, sizeof(T));
+ +
1204 }
+
1205 }
+
1206
+ +
1211 {
+
1212 if (this != &other) {
+
1213 assert(&m_ep == &other.m_ep);
+
1214 m_event_dest = other.m_event_dest;
+
1215 m_desc[0] = other.m_desc[0];
+
1216 assert(&m_result == &other.m_result);
+
1217 }
+
1218
+
1219 return *this;
+
1220 }
+
1221
+ +
1226 {
+
1227 if (this != &other) {
+
1228 assert(&m_ep == &other.m_ep);
+
1229 m_event_dest = other.m_event_dest;
+
1230 m_desc[0] = std::move(other.m_desc[0]);
+
1231 assert(&m_result == &other.m_result);
+
1232 other.m_event_dest = NULL;
+
1233 }
+
1234
+
1235 return *this;
+
1236 }
+
1237
+
1238 protected:
+ +
1240 const EVENT_DESCRIPTOR *m_event_dest;
+
1241 EVENT_DATA_DESCRIPTOR m_desc[2];
+ +
1243 };
+
1244
+
1246}
+
EVENT_DATA_DESCRIPTOR wrapper.
Definition: ETW.h:119
+
event_data(_In_ const std::basic_string< _Elem, _Traits, _Ax > &data)
Template to construct pointing to a std::basic_string<>.
Definition: ETW.h:269
+
event_data(_In_ const GUID &data)
Construct class pointing to a GUID.
Definition: ETW.h:217
+
event_data(_In_ const unsigned long &data)
Construct class pointing to an unsigned long.
Definition: ETW.h:204
+
event_data(_In_opt_z_ const char *data)
Construct class pointing to a string.
Definition: ETW.h:230
+
event_data(_In_bytecount_(size) const void *data, _In_ ULONG size)
Construct class pointing to binary data.
Definition: ETW.h:283
+
event_data(_In_ const unsigned char &data)
Construct class pointing to an unsigned char.
Definition: ETW.h:152
+
event_data(_In_ const unsigned int &data)
Construct class pointing to an unsigned int.
Definition: ETW.h:178
+
event_data(_In_ const long &data)
Construct class pointing to a long.
Definition: ETW.h:191
+
event_data(_In_ const char &data)
Construct class pointing to an char.
Definition: ETW.h:139
+
event_data()
Construct empty class.
Definition: ETW.h:124
+
event_data(_In_opt_z_ const wchar_t *data)
Construct class pointing to a wide string.
Definition: ETW.h:249
+
event_data(_In_ const int &data)
Construct class pointing to an int.
Definition: ETW.h:165
+
Helper template to write an event on entry/exit of scope with one parameter (typically result).
Definition: ETW.h:1159
+
event_fn_auto_ret(_Inout_ event_fn_auto_ret< T > &&other)
Moves the object.
Definition: ETW.h:1187
+
~event_fn_auto_ret()
Writes the event_dest event.
Definition: ETW.h:1199
+
event_fn_auto_ret & operator=(_In_ const event_fn_auto_ret< T > &other)
Copies the object.
Definition: ETW.h:1210
+
EVENT_DATA_DESCRIPTOR m_desc[2]
Function name and return value.
Definition: ETW.h:1241
+
event_fn_auto_ret(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName, T &result)
Writes the event_cons event.
Definition: ETW.h:1164
+
event_provider & m_ep
Reference to event provider in use.
Definition: ETW.h:1239
+
event_fn_auto_ret & operator=(_Inout_ event_fn_auto_ret< T > &&other)
Moves the object.
Definition: ETW.h:1225
+
T & m_result
Function result.
Definition: ETW.h:1242
+
const EVENT_DESCRIPTOR * m_event_dest
Event descriptor at destruction.
Definition: ETW.h:1240
+
event_fn_auto_ret(_In_ const event_fn_auto_ret< T > &other)
Copies the object.
Definition: ETW.h:1176
+
Helper class to write an event on entry/exit of scope.
Definition: ETW.h:1074
+
const EVENT_DESCRIPTOR * m_event_dest
Event descriptor at destruction.
Definition: ETW.h:1148
+
event_fn_auto(_In_ const event_fn_auto &other)
Copies the object.
Definition: ETW.h:1090
+
event_fn_auto & operator=(_Inout_ event_fn_auto &&other) noexcept
Moves the object.
Definition: ETW.h:1134
+
event_fn_auto(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName)
Writes the event_cons event.
Definition: ETW.h:1079
+
event_fn_auto & operator=(_In_ const event_fn_auto &other)
Copies the object.
Definition: ETW.h:1120
+
~event_fn_auto()
Writes the event_dest event.
Definition: ETW.h:1111
+
event_fn_auto(_Inout_ event_fn_auto &&other) noexcept
Moves the object.
Definition: ETW.h:1100
+
event_provider & m_ep
Reference to event provider in use.
Definition: ETW.h:1147
+
EVENT_DATA_DESCRIPTOR m_fn_name
Function name.
Definition: ETW.h:1149
+
ETW event provider.
Definition: ETW.h:493
+
virtual void enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData)
Receive enable or disable notification requests.
Definition: ETW.h:695
+
ULONG create(_In_ LPCGUID ProviderId)
Registers the event provider.
Definition: ETW.h:517
+
ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount=0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData=NULL)
Writes an event with parameters stored in array.
Definition: ETW.h:550
+
ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor)
Writes an event with no parameters.
Definition: ETW.h:535
+
ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1,...)
Writes an event with one or more parameter.
Definition: ETW.h:567
+
virtual ~event_provider()
Closes the event provider.
Definition: ETW.h:502
+
static VOID NTAPI enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext)
Receive enable or disable notification requests.
Definition: ETW.h:710
+
ULONG write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String,...)
Writes a string event.
Definition: ETW.h:663
+
void free_internal() noexcept override
Releases the event provider.
Definition: ETW.h:685
+
ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)
Writes an event with variable number of parameters.
Definition: ETW.h:621
+
EVENT_RECORD wrapper.
Definition: ETW.h:298
+
void set_extended_data_internal(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
Sets event record extended data.
Definition: ETW.h:434
+
~event_rec()
Destroys event record data and frees the allocated memory.
Definition: ETW.h:343
+
event_rec(_Inout_ event_rec &&other) noexcept
Moves the event record.
Definition: ETW.h:335
+
event_rec(_In_ const EVENT_RECORD &other)
Copies an existing event record.
Definition: ETW.h:324
+
void set_user_data(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
Sets event record user data.
Definition: ETW.h:419
+
event_rec & operator=(_In_ const EVENT_RECORD &other)
Copies an existing event record.
Definition: ETW.h:373
+
event_rec & operator=(_Inout_ event_rec &&other) noexcept
Moves the event record.
Definition: ETW.h:389
+
void set_user_data_internal(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
Sets event record user data.
Definition: ETW.h:472
+
event_rec(_In_ const event_rec &other)
Copies an existing event record.
Definition: ETW.h:313
+
event_rec()
Constructs a blank event record.
Definition: ETW.h:303
+
void set_extended_data(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
Sets event record extended data.
Definition: ETW.h:405
+
event_rec & operator=(_In_ const event_rec &other)
Copies an existing event record.
Definition: ETW.h:357
+
ETW session.
Definition: ETW.h:723
+
LPCTSTR name() const
Auto-typecasting operator.
Definition: ETW.h:798
+
ULONG disable_trace(_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
Disables the specified event trace provider.
Definition: ETW.h:871
+
event_session()
Initializes a new empty session.
Definition: ETW.h:730
+
virtual ~event_session()
Closes the session.
Definition: ETW.h:763
+
void attach(_In_opt_ handle_type h, _In_ EVENT_TRACE_PROPERTIES *prop)
Sets a new session handle for the class.
Definition: ETW.h:812
+
void free_internal() noexcept override
Releases the session.
Definition: ETW.h:892
+
ULONG create(_In_z_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties)
Registers and starts an event tracing session.
Definition: ETW.h:827
+
event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop)
Initializes a new session with an already available object handle.
Definition: ETW.h:740
+
event_session(_Inout_ event_session &&other) noexcept
Move constructor.
Definition: ETW.h:752
+
ULONG enable_trace(_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
Enables the specified event trace provider.
Definition: ETW.h:847
+
std::unique_ptr< EVENT_TRACE_PROPERTIES > m_prop
Session properties.
Definition: ETW.h:898
+
event_session & operator=(_Inout_ event_session &&other) noexcept
Move assignment.
Definition: ETW.h:774
+
Helper class to enable event provider in constructor and disables it in destructor.
Definition: ETW.h:955
+
UCHAR m_level
Logging level.
Definition: ETW.h:1061
+
event_trace_enabler(_In_ const event_session &session, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
Enables event trace.
Definition: ETW.h:997
+
PEVENT_FILTER_DESCRIPTOR m_enable_filter_desc
Event filter descriptor.
Definition: ETW.h:1065
+
ULONGLONG m_match_any_keyword
Keyword match mask (any)
Definition: ETW.h:1062
+
event_trace_enabler(_In_opt_ LPCGUID SourceId, _In_ TRACEHANDLE TraceHandle, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
Enables event trace.
Definition: ETW.h:962
+
ULONG m_status
Result of EnableTraceEx call.
Definition: ETW.h:1057
+
TRACEHANDLE m_trace_handle
Trace handle.
Definition: ETW.h:1060
+
virtual ~event_trace_enabler()
Disables event trace.
Definition: ETW.h:1041
+
ULONG status() const
Return result of EnableTraceEx() call.
Definition: ETW.h:1031
+
ULONGLONG m_match_all_keyword
Keyword match mask (all)
Definition: ETW.h:1063
+
LPCGUID m_provider_id
Provider ID.
Definition: ETW.h:1058
+
LPCGUID m_source_id
Session ID.
Definition: ETW.h:1059
+
ULONG m_enable_property
Enable property.
Definition: ETW.h:1064
+
ETW trace.
Definition: ETW.h:905
+
virtual ~event_trace()
Closes the trace.
Definition: ETW.h:914
+
void free_internal() noexcept override
Closes the trace.
Definition: ETW.h:945
+
bool create(_Inout_ PEVENT_TRACE_LOGFILE Logfile)
Opens a real-time trace session or log file for consuming.
Definition: ETW.h:929
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition: Common.h:595
+
REGHANDLE handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const REGHANDLE invalid
Invalid handle value.
Definition: Common.h:590
+
+ + + + diff --git a/_g_d_i_8h_source.html b/_g_d_i_8h_source.html new file mode 100644 index 00000000..8aec3f97 --- /dev/null +++ b/_g_d_i_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +WinStd: include/WinStd/GDI.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
GDI.h
+
+
+
1/*
+
2 ​SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4*/
+
5
+
6#pragma once
+
7
+
8#include "Common.h"
+
9
+
10namespace winstd
+
11{
+
17
+
21 template<class T>
+
22 class gdi_handle : public handle<T, NULL>
+
23 {
+ +
25
+
26 public:
+
32 virtual ~gdi_handle()
+
33 {
+
34 if (m_h != invalid)
+ +
36 }
+
37
+
38 protected:
+
44 void free_internal() noexcept override
+
45 {
+
46 DeleteObject(m_h);
+
47 }
+
48 };
+
49
+
53 class dc : public handle<HDC, NULL>
+
54 {
+ +
56
+
57 public:
+
63 virtual ~dc()
+
64 {
+
65 if (m_h != invalid)
+ +
67 }
+
68
+
69 protected:
+
75 void free_internal() noexcept override
+
76 {
+
77 DeleteDC(m_h);
+
78 }
+
79 };
+
80
+
84 class window_dc : public handle<HDC, NULL>
+
85 {
+
86 public:
+
87 window_dc() noexcept :
+
88 m_hwnd(NULL)
+
89 {}
+
90
+
91 window_dc(_In_opt_ handle_type h, _In_opt_ HWND hwnd) noexcept :
+ +
93 m_hwnd(hwnd)
+
94 {}
+
95
+
96 window_dc(_Inout_ window_dc &&h) noexcept :
+
97 handle<handle_type, NULL>(std::move(h)),
+
98 m_hwnd(h.m_hwnd)
+
99 {}
+
100
+
101 window_dc& operator=(_Inout_ window_dc &&h) noexcept
+
102 {
+ +
104 m_hwnd = h.m_hwnd;
+
105 return *this;
+
106 }
+
107
+ +
109
+
110 public:
+
116 virtual ~window_dc()
+
117 {
+
118 if (m_h != invalid)
+ +
120 }
+
121
+
122 protected:
+
128 void free_internal() noexcept override
+
129 {
+
130 ReleaseDC(m_hwnd, m_h);
+
131 }
+
132
+
133 protected:
+
134 HWND m_hwnd;
+
135 };
+
136
+ +
141 {
+ + +
144
+
145 public:
+
151 dc_selector(_In_ HDC hdc, _In_ HGDIOBJ h) noexcept :
+
152 m_hdc(hdc),
+
153 m_orig(SelectObject(hdc, h))
+
154 {
+
155 }
+
156
+
162 virtual ~dc_selector()
+
163 {
+
164 if (m_orig)
+
165 SelectObject(m_hdc, m_orig);
+
166 }
+
167
+
173 HGDIOBJ status() const noexcept
+
174 {
+
175 return m_orig;
+
176 }
+
177
+
178 protected:
+
179 HDC m_hdc;
+
180 HGDIOBJ m_orig;
+
181 };
+
182
+
184}
+
Context scope DC object restorer.
Definition: GDI.h:141
+
virtual ~dc_selector()
Restores original object.
Definition: GDI.h:162
+
HGDIOBJ m_orig
Original object handle.
Definition: GDI.h:180
+
HGDIOBJ status() const noexcept
Return result of SelectObject() call.
Definition: GDI.h:173
+
HDC m_hdc
A handle to the device context.
Definition: GDI.h:179
+
dc_selector(_In_ HDC hdc, _In_ HGDIOBJ h) noexcept
Selects an object into the specified device context (DC). The new object replaces the previous object...
Definition: GDI.h:151
+
Device context wrapper class.
Definition: GDI.h:54
+
void free_internal() noexcept override
Deletes the specified device context (DC).
Definition: GDI.h:75
+
virtual ~dc()
Deletes the specified device context (DC).
Definition: GDI.h:63
+
Windows HGDIOBJ wrapper class.
Definition: GDI.h:23
+
void free_internal() noexcept override
Closes an open object handle.
Definition: GDI.h:44
+
virtual ~gdi_handle()
Closes an open object handle.
Definition: GDI.h:32
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
HDC handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
Device context wrapper class.
Definition: GDI.h:85
+
HWND m_hwnd
Window handle.
Definition: GDI.h:134
+
void free_internal() noexcept override
Releases a device context (DC), freeing it for use by other applications.
Definition: GDI.h:128
+
virtual ~window_dc()
Releases a device context (DC), freeing it for use by other applications.
Definition: GDI.h:116
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition: Common.h:61
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const T invalid
Invalid handle value.
Definition: Common.h:590
+
+ + + + diff --git a/_m_s_i_8h_source.html b/_m_s_i_8h_source.html new file mode 100644 index 00000000..98e52a3d --- /dev/null +++ b/_m_s_i_8h_source.html @@ -0,0 +1,371 @@ + + + + + + + +WinStd: include/WinStd/MSI.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
MSI.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <MsiQuery.h>
+
11#include <string>
+
12#include <vector>
+
13
+
20
+
22template<class _Traits, class _Ax>
+
23static UINT MsiGetPropertyA(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szName, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
+
24{
+
25 assert(0); // TODO: Test this code.
+
26
+
27 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
28 DWORD dwSize = _countof(szStackBuffer);
+
29 UINT uiResult;
+
30
+
31 // Try with stack buffer first.
+
32 uiResult = ::MsiGetPropertyA(hInstall, szName, szStackBuffer, &dwSize);
+
33 if (uiResult == ERROR_SUCCESS) {
+
34 // Copy from stack.
+
35 sValue.assign(szStackBuffer, dwSize);
+
36 return ERROR_SUCCESS;
+
37 } else if (uiResult == ERROR_MORE_DATA) {
+
38 // Allocate buffer on heap to read the string data into and read it.
+
39 std::unique_ptr<char[]> szBuffer(new char[++dwSize]);
+
40 uiResult = ::MsiGetPropertyA(hInstall, szName, szBuffer.get(), &dwSize);
+
41 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
42 return uiResult;
+
43 } else {
+
44 // Return error code.
+
45 return uiResult;
+
46 }
+
47}
+
48
+
54template<class _Traits, class _Ax>
+
55static UINT MsiGetPropertyW(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szName, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
56{
+
57 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
58 DWORD dwSize = _countof(szStackBuffer);
+
59 UINT uiResult;
+
60
+
61 // Try with stack buffer first.
+
62 uiResult = ::MsiGetPropertyW(hInstall, szName, szStackBuffer, &dwSize);
+
63 if (uiResult == ERROR_SUCCESS) {
+
64 // Copy from stack.
+
65 sValue.assign(szStackBuffer, dwSize);
+
66 return ERROR_SUCCESS;
+
67 } else if (uiResult == ERROR_MORE_DATA) {
+
68 // Allocate buffer on heap to read the string data into and read it.
+
69 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++dwSize]);
+
70 uiResult = ::MsiGetPropertyW(hInstall, szName, szBuffer.get(), &dwSize);
+
71 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
72 return uiResult;
+
73 } else {
+
74 // Return error code.
+
75 return uiResult;
+
76 }
+
77}
+
78
+
80template<class _Traits, class _Ax>
+
81static UINT MsiRecordGetStringA(_In_ MSIHANDLE hRecord, _In_ unsigned int iField, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
+
82{
+
83 assert(0); // TODO: Test this code.
+
84
+
85 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
86 DWORD dwSize = _countof(szStackBuffer);
+
87 UINT uiResult;
+
88
+
89 // Try with stack buffer first.
+
90 uiResult = ::MsiRecordGetStringA(hRecord, iField, szStackBuffer, &dwSize);
+
91 if (uiResult == ERROR_SUCCESS) {
+
92 // Copy from stack.
+
93 sValue.assign(szStackBuffer, dwSize);
+
94 return ERROR_SUCCESS;
+
95 } else if (uiResult == ERROR_MORE_DATA) {
+
96 // Allocate buffer on heap to read the string data into and read it.
+
97 std::unique_ptr<char[]> szBuffer(new char[++dwSize]);
+
98 uiResult = ::MsiRecordGetStringA(hRecord, iField, szBuffer.get(), &dwSize);
+
99 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
100 return uiResult;
+
101 } else {
+
102 // Return error code.
+
103 return uiResult;
+
104 }
+
105}
+
106
+
112template<class _Traits, class _Ax>
+
113static UINT MsiRecordGetStringW(_In_ MSIHANDLE hRecord, _In_ unsigned int iField, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
114{
+
115 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
116 DWORD dwSize = _countof(szStackBuffer);
+
117 UINT uiResult;
+
118
+
119 // Try with stack buffer first.
+
120 uiResult = ::MsiRecordGetStringW(hRecord, iField, szStackBuffer, &dwSize);
+
121 if (uiResult == ERROR_SUCCESS) {
+
122 // Copy from stack.
+
123 sValue.assign(szStackBuffer, dwSize);
+
124 return ERROR_SUCCESS;
+
125 } else if (uiResult == ERROR_MORE_DATA) {
+
126 // Allocate buffer on heap to read the string data into and read it.
+
127 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++dwSize]);
+
128 uiResult = ::MsiRecordGetStringW(hRecord, iField, szBuffer.get(), &dwSize);
+
129 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
130 return uiResult;
+
131 } else {
+
132 // Return error code.
+
133 return uiResult;
+
134 }
+
135}
+
136
+
138template<class _Traits, class _Ax>
+
139static UINT MsiFormatRecordA(_In_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
+
140{
+
141 assert(0); // TODO: Test this code.
+
142
+
143 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
144 DWORD dwSize = _countof(szStackBuffer);
+
145 UINT uiResult;
+
146
+
147 // Try with stack buffer first.
+
148 uiResult = ::MsiFormatRecordA(hInstall, hRecord, szStackBuffer, &dwSize);
+
149 if (uiResult == ERROR_SUCCESS) {
+
150 // Copy from stack.
+
151 sValue.assign(szStackBuffer, dwSize);
+
152 return ERROR_SUCCESS;
+
153 } else if (uiResult == ERROR_MORE_DATA) {
+
154 // Allocate buffer on heap to format the string data into and read it.
+
155 std::unique_ptr<char[]> szBuffer(new char[++dwSize]);
+
156 uiResult = ::MsiFormatRecordA(hInstall, hRecord, szBuffer.get(), &dwSize);
+
157 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
158 return uiResult;
+
159 } else {
+
160 // Return error code.
+
161 return uiResult;
+
162 }
+
163}
+
164
+
170template<class _Traits, class _Ax>
+
171static UINT MsiFormatRecordW(_In_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
172{
+
173 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
174 DWORD dwSize = _countof(szStackBuffer);
+
175 UINT uiResult;
+
176
+
177 // Try with stack buffer first.
+
178 uiResult = ::MsiFormatRecordW(hInstall, hRecord, szStackBuffer, &dwSize);
+
179 if (uiResult == ERROR_SUCCESS) {
+
180 // Copy from stack.
+
181 sValue.assign(szStackBuffer, dwSize);
+
182 return ERROR_SUCCESS;
+
183 } else if (uiResult == ERROR_MORE_DATA) {
+
184 // Allocate buffer on heap to format the string data into and read it.
+
185 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++dwSize]);
+
186 uiResult = ::MsiFormatRecordW(hInstall, hRecord, szBuffer.get(), &dwSize);
+
187 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
188 return uiResult;
+
189 } else {
+
190 // Return error code.
+
191 return uiResult;
+
192 }
+
193}
+
194
+
200template<class _Ty, class _Ax>
+
201static UINT MsiRecordReadStream(_In_ MSIHANDLE hRecord, _In_ unsigned int iField, _Inout_ std::vector<_Ty, _Ax> &binData)
+
202{
+
203 assert(0); // TODO: Test this code.
+
204
+
205 DWORD dwSize = 0;
+
206 UINT uiResult;
+
207
+
208 // Query the actual data length first.
+
209 uiResult = ::MsiRecordReadStream(hRecord, iField, NULL, &dwSize);
+
210 if (uiResult == ERROR_SUCCESS) {
+
211 binData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
212 return ::MsiRecordReadStream(hRecord, iField, reinterpret_cast<char*>(binData.data()), &dwSize);
+
213 } else {
+
214 // Return error code.
+
215 return uiResult;
+
216 }
+
217}
+
218
+
220template<class _Traits, class _Ax>
+
221static UINT MsiGetTargetPathA(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szFolder, _Out_ std::basic_string<char, _Traits, _Ax> &sValue)
+
222{
+
223 assert(0); // TODO: Test this code.
+
224
+
225 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
226 DWORD dwSize = _countof(szStackBuffer);
+
227 UINT uiResult;
+
228
+
229 // Try with stack buffer first.
+
230 uiResult = ::MsiGetTargetPathA(hInstall, szFolder, szStackBuffer, &dwSize);
+
231 if (uiResult == ERROR_SUCCESS) {
+
232 // Copy from stack.
+
233 sValue.assign(szStackBuffer, dwSize);
+
234 return ERROR_SUCCESS;
+
235 } else if (uiResult == ERROR_MORE_DATA) {
+
236 // Allocate buffer on heap to format the string data into and read it.
+
237 std::unique_ptr<char[]> szBuffer(new char[++dwSize]);
+
238 uiResult = ::MsiGetTargetPathA(hInstall, szFolder, szBuffer.get(), &dwSize);
+
239 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
240 return uiResult;
+
241 } else {
+
242 // Return error code.
+
243 return uiResult;
+
244 }
+
245}
+
246
+
252template<class _Traits, class _Ax>
+
253static UINT MsiGetTargetPathW(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szFolder, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
254{
+
255 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
256 DWORD dwSize = _countof(szStackBuffer);
+
257 UINT uiResult;
+
258
+
259 // Try with stack buffer first.
+
260 uiResult = ::MsiGetTargetPathW(hInstall, szFolder, szStackBuffer, &dwSize);
+
261 if (uiResult == ERROR_SUCCESS) {
+
262 // Copy from stack.
+
263 sValue.assign(szStackBuffer, dwSize);
+
264 return ERROR_SUCCESS;
+
265 } else if (uiResult == ERROR_MORE_DATA) {
+
266 // Allocate buffer on heap to format the string data into and read it.
+
267 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++dwSize]);
+
268 uiResult = ::MsiGetTargetPathW(hInstall, szFolder, szBuffer.get(), &dwSize);
+
269 sValue.assign(szBuffer.get(), uiResult == ERROR_SUCCESS ? dwSize : 0);
+
270 return uiResult;
+
271 } else {
+
272 // Return error code.
+
273 return uiResult;
+
274 }
+
275}
+
276
+
278template<class _Traits, class _Ax>
+
279static INSTALLSTATE MsiGetComponentPathA(_In_z_ LPCSTR szProduct, _In_z_ LPCSTR szComponent, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
+
280{
+
281 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
282 DWORD dwSize = _countof(szStackBuffer);
+
283 INSTALLSTATE state;
+
284
+
285 // Try with stack buffer first.
+
286 state = ::MsiGetComponentPathA(szProduct, szComponent, szStackBuffer, &dwSize);
+
287 if (state >= INSTALLSTATE_BROKEN) {
+
288 // Copy from stack.
+
289 sValue.assign(szStackBuffer, dwSize);
+
290 return state;
+
291 } else if (state == INSTALLSTATE_MOREDATA) {
+
292 // Allocate buffer on heap to format the string data into and read it.
+
293 std::unique_ptr<char[]> szBuffer(new char[++dwSize]);
+
294 state = ::MsiGetComponentPathA(szProduct, szComponent, szBuffer.get(), &dwSize);
+
295 sValue.assign(szBuffer.get(), state >= INSTALLSTATE_BROKEN ? dwSize : 0);
+
296 return state;
+
297 } else {
+
298 // Return error code.
+
299 return state;
+
300 }
+
301}
+
302
+
308template<class _Traits, class _Ax>
+
309static INSTALLSTATE MsiGetComponentPathW(_In_z_ LPCWSTR szProduct, _In_z_ LPCWSTR szComponent, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
310{
+
311 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
312 DWORD dwSize = _countof(szStackBuffer);
+
313 INSTALLSTATE state;
+
314
+
315 // Try with stack buffer first.
+
316 state = ::MsiGetComponentPathW(szProduct, szComponent, szStackBuffer, &dwSize);
+
317 if (state >= INSTALLSTATE_BROKEN) {
+
318 // Copy from stack.
+
319 sValue.assign(szStackBuffer, dwSize);
+
320 return state;
+
321 } else if (state == INSTALLSTATE_MOREDATA) {
+
322 // Allocate buffer on heap to format the string data into and read it.
+
323 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++dwSize]);
+
324 state = ::MsiGetComponentPathW(szProduct, szComponent, szBuffer.get(), &dwSize);
+
325 sValue.assign(szBuffer.get(), state >= INSTALLSTATE_BROKEN ? dwSize : 0);
+
326 return state;
+
327 } else {
+
328 // Return error code.
+
329 return state;
+
330 }
+
331}
+
332
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
+ + + + diff --git a/_sec_8h_source.html b/_sec_8h_source.html new file mode 100644 index 00000000..115ac487 --- /dev/null +++ b/_sec_8h_source.html @@ -0,0 +1,374 @@ + + + + + + + +WinStd: include/WinStd/Sec.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Sec.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <Security.h>
+
11#include <string>
+
12
+
18
+
19#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL)
+
20
+
22template<class _Traits, class _Ax>
+
23static BOOLEAN GetUserNameExA(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string<char, _Traits, _Ax> &sName)
+
24{
+
25 assert(0); // TODO: Test this code.
+
26
+
27 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
28 ULONG ulSize = _countof(szStackBuffer);
+
29
+
30 // Try with stack buffer first.
+
31 if (::GetUserNameExA(NameFormat, szStackBuffer, &ulSize)) {
+
32 // Copy from stack.
+
33 sName.assign(szStackBuffer, ulSize);
+
34 return TRUE;
+
35 } else {
+
36 if (::GetLastError() == ERROR_MORE_DATA) {
+
37 // Allocate buffer on heap and retry.
+
38 std::unique_ptr<char[]> szBuffer(new char[ulSize]);
+
39 if (::GetUserNameExA(NameFormat, szBuffer.get(), &ulSize)) {
+
40 sName.assign(szBuffer.get(), ulSize);
+
41 return TRUE;
+
42 }
+
43 }
+
44 }
+
45
+
46 return FALSE;
+
47}
+
48
+
54template<class _Traits, class _Ax>
+
55static BOOLEAN GetUserNameExW(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sName)
+
56{
+
57 assert(0); // TODO: Test this code.
+
58
+
59 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
60 ULONG ulSize = _countof(szStackBuffer);
+
61
+
62 // Try with stack buffer first.
+
63 if (::GetUserNameExW(NameFormat, szStackBuffer, &ulSize)) {
+
64 // Copy from stack.
+
65 sName.assign(szStackBuffer, ulSize);
+
66 return TRUE;
+
67 } else {
+
68 if (::GetLastError() == ERROR_MORE_DATA) {
+
69 // Allocate buffer on heap and retry.
+
70 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[ulSize]);
+
71 if (::GetUserNameExW(NameFormat, szBuffer.get(), &ulSize)) {
+
72 sName.assign(szBuffer.get(), ulSize);
+
73 return TRUE;
+
74 }
+
75 }
+
76 }
+
77
+
78 return FALSE;
+
79}
+
80
+
81#endif
+
82
+
84
+
85namespace winstd
+
86{
+
89
+
93 class sec_credentials : public handle<PCredHandle, NULL>
+
94 {
+ +
96
+
97 public:
+ +
102 {
+
103 m_expires.QuadPart = -1;
+
104 }
+
105
+
112 sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires) :
+
113 m_expires(expires),
+
114 handle(h)
+
115 {
+
116 }
+
117
+
123 sec_credentials(_Inout_ sec_credentials &&h) noexcept :
+
124 m_expires(std::move(h.m_expires)),
+
125 handle<PCredHandle, NULL>(std::move(h))
+
126 {
+
127 }
+
128
+ +
135 {
+
136 if (m_h != invalid)
+ +
138 }
+
139
+ +
146 {
+
147 if (this != std::addressof(h)) {
+
148 *(handle<handle_type, NULL>*)this = std::move(h);
+
149 m_expires = std::move(h.m_expires);
+
150 }
+
151 return *this;
+
152 }
+
153
+
163 SECURITY_STATUS acquire(
+
164 _In_opt_ LPTSTR pszPrincipal,
+
165 _In_ LPTSTR pszPackage,
+
166 _In_ unsigned long fCredentialUse,
+
167 _In_opt_ void *pvLogonId,
+
168 _In_opt_ void *pAuthData,
+
169 _In_opt_ SEC_GET_KEY_FN pGetKeyFn = NULL,
+
170 _In_opt_ void *pvGetKeyArgument = NULL)
+
171 {
+
172 handle_type h = new CredHandle;
+
173 TimeStamp exp;
+
174 SECURITY_STATUS res = AcquireCredentialsHandle(pszPrincipal, pszPackage, fCredentialUse, pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, h, &exp);
+
175 if (SUCCEEDED(res)) {
+
176 attach(h);
+
177 m_expires = exp;
+
178 } else
+
179 delete h;
+
180 return res;
+
181 }
+
182
+
183 protected:
+
189 void free_internal() noexcept override
+
190 {
+
191 FreeCredentialsHandle(m_h);
+
192 delete m_h;
+
193 }
+
194
+
195 public:
+
196 TimeStamp m_expires;
+
197 };
+
198
+
202 class sec_context : public handle<PCtxtHandle, NULL>
+
203 {
+
204 public:
+ +
209 m_attrib(0),
+
210 handle<PCtxtHandle, NULL>()
+
211 {
+
212 m_expires.QuadPart = -1;
+
213 }
+
214
+
220 sec_context(_Inout_ sec_context &&h) noexcept :
+
221 m_attrib (std::move(h.m_attrib )),
+
222 m_expires(std::move(h.m_expires)),
+
223 handle<PCtxtHandle, NULL>(std::move(h))
+
224 {
+
225 }
+
226
+
232 virtual ~sec_context()
+
233 {
+
234 if (m_h != invalid)
+ +
236 }
+
237
+
243 sec_context& operator=(_Inout_ sec_context &&h) noexcept
+
244 {
+
245 if (this != std::addressof(h)) {
+
246 *(handle<handle_type, NULL>*)this = std::move(h);
+
247 m_attrib = std::move(h.m_attrib);
+
248 m_expires = std::move(h.m_expires);
+
249 }
+
250 return *this;
+
251 }
+
252
+
262 SECURITY_STATUS initialize(
+
263 _In_opt_ PCredHandle phCredential,
+
264 _In_opt_z_ LPCTSTR pszTargetName,
+
265 _In_ ULONG fContextReq,
+
266 _In_ ULONG TargetDataRep,
+
267 _In_opt_ PSecBufferDesc pInput,
+
268 _Inout_opt_ PSecBufferDesc pOutput)
+
269 {
+
270 handle_type h = new CtxtHandle;
+
271 h->dwUpper = 0;
+
272 h->dwLower = 0;
+
273 ULONG attr;
+
274 TimeStamp exp;
+
275 SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &attr, &exp);
+
276 if (SUCCEEDED(res)) {
+
277 attach(h);
+
278 m_attrib = attr;
+
279 m_expires = exp;
+
280 } else
+
281 delete h;
+
282 return res;
+
283 }
+
284
+
294 SECURITY_STATUS process(
+
295 _In_opt_ PCredHandle phCredential,
+
296 _In_opt_z_ LPCTSTR pszTargetName,
+
297 _In_ ULONG fContextReq,
+
298 _In_ ULONG TargetDataRep,
+
299 _In_opt_ PSecBufferDesc pInput,
+
300 _Inout_opt_ PSecBufferDesc pOutput)
+
301 {
+
302 return InitializeSecurityContext(phCredential, m_h, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &m_attrib, &m_expires);
+
303 }
+
304
+
305 protected:
+
311 void free_internal() noexcept override
+
312 {
+
313 DeleteSecurityContext(m_h);
+
314 delete m_h;
+
315 }
+
316
+
317 public:
+
318 ULONG m_attrib;
+
319 TimeStamp m_expires;
+
320 };
+
321
+
325 class sec_buffer_desc : public SecBufferDesc
+
326 {
+
327 public:
+
331 sec_buffer_desc(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version = SECBUFFER_VERSION)
+
332 {
+
333 ulVersion = version;
+
334 cBuffers = count;
+
335 pBuffers = buf;
+
336 }
+
337
+ +
344 {
+
345 for (ULONG i = 0; i < cBuffers; i++) {
+
346 if (pBuffers[i].pvBuffer)
+
347 FreeContextBuffer(pBuffers[i].pvBuffer);
+
348 }
+
349 }
+
350 };
+
351
+
353
+
356
+
362 class sec_runtime_error : public num_runtime_error<SECURITY_STATUS>
+
363 {
+
364 public:
+
371 sec_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<SECURITY_STATUS>(num, msg)
+
372 {
+
373 }
+
374
+
381 sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<SECURITY_STATUS>(num, msg)
+
382 {
+
383 }
+
384
+
390 sec_runtime_error(const sec_runtime_error &other) : num_runtime_error<SECURITY_STATUS>(other)
+
391 {
+
392 }
+
393 };
+
394
+
396}
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
PCredHandle handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
Numerical runtime error.
Definition: Common.h:1390
+
SECURITY_STATUS error_type
Error number type.
Definition: Common.h:1392
+
SecBufferDesc wrapper class.
Definition: Sec.h:326
+
virtual ~sec_buffer_desc()
Frees the security buffer descriptor.
Definition: Sec.h:343
+
sec_buffer_desc(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version=SECBUFFER_VERSION)
Initializes security buffer descriptor.
Definition: Sec.h:331
+
PCtxtHandle wrapper class.
Definition: Sec.h:203
+
virtual ~sec_context()
Frees the security context.
Definition: Sec.h:232
+
SECURITY_STATUS process(_In_opt_ PCredHandle phCredential, _In_opt_z_ LPCTSTR pszTargetName, _In_ ULONG fContextReq, _In_ ULONG TargetDataRep, _In_opt_ PSecBufferDesc pInput, _Inout_opt_ PSecBufferDesc pOutput)
Continue security context.
Definition: Sec.h:294
+
sec_context(_Inout_ sec_context &&h) noexcept
Move constructor.
Definition: Sec.h:220
+
sec_context()
Initializes a new class instance with the object handle set to NULL.
Definition: Sec.h:208
+
ULONG m_attrib
Context attributes.
Definition: Sec.h:318
+
TimeStamp m_expires
Context expiration time.
Definition: Sec.h:319
+
SECURITY_STATUS initialize(_In_opt_ PCredHandle phCredential, _In_opt_z_ LPCTSTR pszTargetName, _In_ ULONG fContextReq, _In_ ULONG TargetDataRep, _In_opt_ PSecBufferDesc pInput, _Inout_opt_ PSecBufferDesc pOutput)
Initializes security context.
Definition: Sec.h:262
+
sec_context & operator=(_Inout_ sec_context &&h) noexcept
Move assignment.
Definition: Sec.h:243
+
void free_internal() noexcept override
Frees the security context.
Definition: Sec.h:311
+
PCredHandle wrapper class.
Definition: Sec.h:94
+
sec_credentials(_Inout_ sec_credentials &&h) noexcept
Move constructor.
Definition: Sec.h:123
+
sec_credentials()
Initializes a new class instance with the object handle set to NULL.
Definition: Sec.h:101
+
void free_internal() noexcept override
Frees the security credentials.
Definition: Sec.h:189
+
TimeStamp m_expires
Credentials expiration time.
Definition: Sec.h:196
+
SECURITY_STATUS acquire(_In_opt_ LPTSTR pszPrincipal, _In_ LPTSTR pszPackage, _In_ unsigned long fCredentialUse, _In_opt_ void *pvLogonId, _In_opt_ void *pAuthData, _In_opt_ SEC_GET_KEY_FN pGetKeyFn=NULL, _In_opt_ void *pvGetKeyArgument=NULL)
Acquires the security credentials.
Definition: Sec.h:163
+
virtual ~sec_credentials()
Frees the security credentials.
Definition: Sec.h:134
+
sec_credentials & operator=(_Inout_ sec_credentials &&h) noexcept
Move assignment.
Definition: Sec.h:145
+
sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires)
Initializes a new class with an already available object handle.
Definition: Sec.h:112
+
Security runtime error.
Definition: Sec.h:363
+
sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
Constructs an exception.
Definition: Sec.h:381
+
sec_runtime_error(_In_ error_type num, _In_ const std::string &msg)
Constructs an exception.
Definition: Sec.h:371
+
sec_runtime_error(const sec_runtime_error &other)
Copies an exception.
Definition: Sec.h:390
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
static const PCredHandle invalid
Invalid handle value.
Definition: Common.h:590
+
+ + + + diff --git a/_setup_a_p_i_8h_source.html b/_setup_a_p_i_8h_source.html new file mode 100644 index 00000000..d76b2a18 --- /dev/null +++ b/_setup_a_p_i_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +WinStd: include/WinStd/SetupAPI.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
SetupAPI.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <SetupAPI.h>
+
11
+
12namespace winstd
+
13{
+
19
+
23 class setup_device_info_list : public handle<HDEVINFO, INVALID_HANDLE_VALUE>
+
24 {
+
25 WINSTD_HANDLE_IMPL(setup_device_info_list, INVALID_HANDLE_VALUE)
+
26
+
27 public:
+ +
34 {
+
35 if (m_h != invalid)
+ +
37 }
+
38
+
48 bool create(
+
49 _In_opt_ const GUID * ClassGuid,
+
50 _In_opt_ HWND hwndParent) noexcept
+
51 {
+
52 handle_type h = SetupDiCreateDeviceInfoList(ClassGuid, hwndParent);
+
53 if (h != invalid) {
+
54 attach(h);
+
55 return true;
+
56 }
+
57 else
+
58 return false;
+
59 }
+
60
+
70 bool create(
+
71 _In_opt_ const GUID * ClassGuid,
+
72 _In_opt_ PCTSTR Enumerator,
+
73 _In_opt_ HWND hwndParent,
+
74 _In_ DWORD Flags,
+
75 _In_opt_ HDEVINFO DeviceInfoSet,
+
76 _In_opt_ PCTSTR MachineName,
+
77 _Reserved_ PVOID Reserved) noexcept
+
78 {
+
79 handle_type h = SetupDiGetClassDevsEx(ClassGuid, Enumerator, hwndParent, Flags, DeviceInfoSet, MachineName, Reserved);
+
80 if (h != invalid) {
+
81 attach(h);
+
82 return true;
+
83 }
+
84 else
+
85 return false;
+
86 }
+
87
+
88 protected:
+
94 void free_internal() noexcept override
+
95 {
+
96 SetupDiDestroyDeviceInfoList(m_h);
+
97 }
+
98 };
+
99
+ +
104 {
+ + +
107
+
108 public:
+ +
115 _In_ HDEVINFO DeviceInfoSet,
+
116 _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData,
+
117 _In_ DWORD DriverType) noexcept :
+
118 m_DeviceInfoSet (DeviceInfoSet),
+
119 m_DeviceInfoData(DeviceInfoData),
+
120 m_DriverType (DriverType)
+
121 {
+
122 m_result = SetupDiBuildDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);
+
123 }
+
124
+ +
131 {
+
132 if (m_result)
+
133 SetupDiDestroyDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);
+
134 }
+
135
+
141 BOOL status() const noexcept
+
142 {
+
143 return m_result;
+
144 }
+
145
+
146 protected:
+
147 HDEVINFO m_DeviceInfoSet;
+
148 PSP_DEVINFO_DATA m_DeviceInfoData;
+
149 DWORD m_DriverType;
+
150 BOOL m_result;
+
151 };
+
152
+
154}
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
HDEVINFO handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
HDEVINFO wrapper class.
Definition: SetupAPI.h:24
+
virtual ~setup_device_info_list()
Frees the device information set.
Definition: SetupAPI.h:33
+
bool create(_In_opt_ const GUID *ClassGuid, _In_opt_ PCTSTR Enumerator, _In_opt_ HWND hwndParent, _In_ DWORD Flags, _In_opt_ HDEVINFO DeviceInfoSet, _In_opt_ PCTSTR MachineName, _Reserved_ PVOID Reserved) noexcept
Creates a device information set that contains requested device information elements for a local or a...
Definition: SetupAPI.h:70
+
void free_internal() noexcept override
Frees the device information set.
Definition: SetupAPI.h:94
+
bool create(_In_opt_ const GUID *ClassGuid, _In_opt_ HWND hwndParent) noexcept
Creates an empty device information set and optionally associates the set with a device setup class a...
Definition: SetupAPI.h:48
+
Builds a list of drivers in constructor and deletes it in destructor.
Definition: SetupAPI.h:104
+
setup_driver_info_list_builder(_In_ HDEVINFO DeviceInfoSet, _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData, _In_ DWORD DriverType) noexcept
Construct the builder and builds a list of drivers that is associated with a specific device or with ...
Definition: SetupAPI.h:114
+
virtual ~setup_driver_info_list_builder()
Deletes a driver list and destructs the builder.
Definition: SetupAPI.h:130
+
BOOL m_result
Did building succeed?
Definition: SetupAPI.h:150
+
BOOL status() const noexcept
Return result of SetupDiBuildDriverInfoList() call.
Definition: SetupAPI.h:141
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition: Common.h:61
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const HDEVINFO invalid
Invalid handle value.
Definition: Common.h:590
+
+ + + + diff --git a/_shell_8h_source.html b/_shell_8h_source.html new file mode 100644 index 00000000..1b3c2890 --- /dev/null +++ b/_shell_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +WinStd: include/WinStd/Shell.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Shell.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <Shlwapi.h>
+
11#include <string>
+
12
+
18
+
20template<class _Traits, class _Ax>
+
21static BOOL PathCanonicalizeA(_Inout_ std::basic_string<char, _Traits, _Ax> &sValue, _In_ LPCSTR pszPath)
+
22{
+
23 assert(0); // TODO: Test this code.
+
24
+
25 // Allocate buffer on heap and read into it.
+
26 char szBuffer[MAX_PATH + 1];
+
27 BOOL bResult = ::PathCanonicalizeA(szBuffer, pszPath);
+
28 sValue.assign(szBuffer, bResult ? MAX_PATH : 0);
+
29 return bResult;
+
30}
+
31
+
37template<class _Traits, class _Ax>
+
38static BOOL PathCanonicalizeW(_Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue, _In_ LPCWSTR pszPath)
+
39{
+
40 assert(0); // TODO: Test this code.
+
41
+
42 wchar_t szBuffer[MAX_PATH + 1];
+
43 BOOL bResult = ::PathCanonicalizeW(szBuffer, pszPath);
+
44 sValue.assign(szBuffer, bResult ? MAX_PATH : 0);
+
45 return bResult;
+
46}
+
47
+
+ + + + diff --git a/_w_l_a_n_8h_source.html b/_w_l_a_n_8h_source.html new file mode 100644 index 00000000..c39520c1 --- /dev/null +++ b/_w_l_a_n_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + +WinStd: include/WinStd/WLAN.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
WLAN.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <wlanapi.h>
+
11#include <string>
+
12
+
13// Must not statically link to Wlanapi.dll as it is not available on Windows
+
14// without a WLAN interface.
+
15extern DWORD (WINAPI *pfnWlanReasonCodeToString)(__in DWORD dwReasonCode, __in DWORD dwBufferSize, __in_ecount(dwBufferSize) PWCHAR pStringBuffer, __reserved PVOID pReserved);
+
16
+
22
+
32template<class _Traits, class _Ax>
+
33static DWORD WlanReasonCodeToString(_In_ DWORD dwReasonCode, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue, __reserved PVOID pReserved)
+
34{
+
35 DWORD dwSize = 0;
+
36
+
37 if (!::pfnWlanReasonCodeToString)
+
38 return ERROR_CALL_NOT_IMPLEMENTED;
+
39
+
40 for (;;) {
+
41 // Increment size and allocate buffer.
+
42 dwSize += 1024;
+
43 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwSize]);
+
44
+
45 // Try!
+
46 DWORD dwResult = ::pfnWlanReasonCodeToString(dwReasonCode, dwSize, szBuffer.get(), pReserved);
+
47 if (dwResult == ERROR_SUCCESS) {
+
48 DWORD dwLength = (DWORD)wcsnlen(szBuffer.get(), dwSize);
+
49 if (dwLength < dwSize - 1) {
+
50 // Buffer was long enough.
+
51 sValue.assign(szBuffer.get(), dwLength);
+
52 return ERROR_SUCCESS;
+
53 }
+
54 } else {
+
55 // Return error code.
+
56 return dwResult;
+
57 }
+
58 }
+
59}
+
60
+
62
+
63namespace winstd
+
64{
+
67
+
71 template <class _Ty> struct WlanFreeMemory_delete
+
72 {
+ +
74
+ +
79
+
83 template <class _Ty2> WlanFreeMemory_delete(const WlanFreeMemory_delete<_Ty2>&) {}
+
84
+
88 void operator()(_Ty *_Ptr) const
+
89 {
+
90 WlanFreeMemory(_Ptr);
+
91 }
+
92 };
+
93
+
97 template <class _Ty> struct WlanFreeMemory_delete<_Ty[]>
+
98 {
+ +
100
+ +
105
+
109 void operator()(_Ty *_Ptr) const
+
110 {
+
111 WlanFreeMemory(_Ptr);
+
112 }
+
113
+
117 template<class _Other>
+
118 void operator()(_Other *) const
+
119 {
+
120 WlanFreeMemory(_Ptr);
+
121 }
+
122 };
+
123
+
127 class wlan_handle : public handle<HANDLE, NULL>
+
128 {
+ +
130
+
131 public:
+
137 virtual ~wlan_handle()
+
138 {
+
139 if (m_h != invalid)
+ +
141 }
+
142
+
152 bool open(_In_ DWORD dwClientVersion, _Out_ PDWORD pdwNegotiatedVersion) noexcept
+
153 {
+
154 handle_type h;
+
155 const DWORD dwResult = WlanOpenHandle(dwClientVersion, 0, pdwNegotiatedVersion, &h);
+
156 if (dwResult == ERROR_SUCCESS) {
+
157 attach(h);
+
158 return true;
+
159 } else {
+
160 SetLastError(dwResult);
+
161 return false;
+
162 }
+
163 }
+
164
+
165 protected:
+
171 void free_internal() noexcept override
+
172 {
+
173 WlanCloseHandle(m_h, NULL);
+
174 }
+
175 };
+
176
+
178}
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
HANDLE handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
WLAN handle wrapper.
Definition: WLAN.h:128
+
bool open(_In_ DWORD dwClientVersion, _Out_ PDWORD pdwNegotiatedVersion) noexcept
Opens a connection to the server.
Definition: WLAN.h:152
+
virtual ~wlan_handle()
Closes a connection to the server.
Definition: WLAN.h:137
+
void free_internal() noexcept override
Closes a connection to the server.
Definition: WLAN.h:171
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const HANDLE invalid
Invalid handle value.
Definition: Common.h:590
+
WlanFreeMemory_delete()
Default construct.
Definition: WLAN.h:104
+
void operator()(_Other *) const
Delete a pointer of another type.
Definition: WLAN.h:118
+
WlanFreeMemory_delete< _Ty > _Myt
This type.
Definition: WLAN.h:99
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: WLAN.h:109
+
Deleter for unique_ptr using WlanFreeMemory.
Definition: WLAN.h:72
+
WlanFreeMemory_delete()
Default construct.
Definition: WLAN.h:78
+
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition: WLAN.h:88
+
WlanFreeMemory_delete< _Ty > _Myt
This type.
Definition: WLAN.h:73
+
WlanFreeMemory_delete(const WlanFreeMemory_delete< _Ty2 > &)
Construct from another WlanFreeMemory_delete.
Definition: WLAN.h:83
+
+ + + + diff --git a/_win_8h_source.html b/_win_8h_source.html new file mode 100644 index 00000000..8845a591 --- /dev/null +++ b/_win_8h_source.html @@ -0,0 +1,1838 @@ + + + + + + + +WinStd: include/WinStd/Win.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Win.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <string>
+
11#include <vector>
+
12
+
13#pragma warning(push)
+
14#pragma warning(disable: 4505) // Don't warn on unused code
+
15
+
21
+
23template<class _Traits, class _Ax>
+
24static DWORD GetModuleFileNameA(_In_opt_ HMODULE hModule, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
25{
+
26 assert(0); // TODO: Test this code.
+
27
+
28 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
29
+
30 // Try with stack buffer first.
+
31 DWORD dwResult = ::GetModuleFileNameA(hModule, szStackBuffer, _countof(szStackBuffer));
+
32 if (dwResult < _countof(szStackBuffer)) {
+
33 // Copy from stack.
+
34 sValue.assign(szStackBuffer, dwResult);
+
35 return dwResult;
+
36 } else {
+
37 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(char);; dwCapacity *= 2) {
+
38 // Allocate on heap and retry.
+
39 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
+
40 dwResult = ::GetModuleFileNameA(hModule, szBuffer.get(), dwCapacity);
+
41 if (dwResult < dwCapacity) {
+
42 sValue.assign(szBuffer.get(), dwResult);
+
43 return dwResult;
+
44 }
+
45 }
+
46 }
+
47}
+
48
+
54template<class _Traits, class _Ax>
+
55static DWORD GetModuleFileNameW(_In_opt_ HMODULE hModule, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
56{
+
57 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
58
+
59 // Try with stack buffer first.
+
60 DWORD dwResult = ::GetModuleFileNameW(hModule, szStackBuffer, _countof(szStackBuffer));
+
61 if (dwResult < _countof(szStackBuffer)) {
+
62 // Copy from stack.
+
63 sValue.assign(szStackBuffer, dwResult);
+
64 return dwResult;
+
65 } else {
+
66 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t);; dwCapacity *= 2) {
+
67 // Allocate on heap and retry.
+
68 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
+
69 dwResult = ::GetModuleFileNameW(hModule, szBuffer.get(), dwCapacity);
+
70 if (dwResult < dwCapacity) {
+
71 sValue.assign(szBuffer.get(), dwResult);
+
72 return dwResult;
+
73 }
+
74 }
+
75 }
+
76}
+
77
+
79template<class _Traits, class _Ax>
+
80static _Success_(return != 0) int GetWindowTextA(_In_ HWND hWnd, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
81{
+
82 assert(0); // TODO: Test this code.
+
83
+
84 int iResult;
+
85
+
86 // Query the final string length first.
+
87 iResult = ::GetWindowTextLengthA(hWnd);
+
88 if (iResult > 0) {
+
89 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(char)) {
+
90 // Read string data to stack.
+
91 char szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
92 iResult = ::GetWindowTextA(hWnd, szBuffer, _countof(szBuffer));
+
93 sValue.assign(szBuffer, iResult);
+
94 } else {
+
95 // Allocate buffer on heap and read the string data into it.
+
96 std::unique_ptr<char[]> szBuffer(new char[++iResult]);
+
97 iResult = ::GetWindowTextA(hWnd, szBuffer.get(), iResult);
+
98 sValue.assign(szBuffer.get(), iResult);
+
99 }
+
100 return iResult;
+
101 }
+
102
+
103 sValue.clear();
+
104 return 0;
+
105}
+
106
+
112template<class _Traits, class _Ax>
+
113static _Success_(return != 0) int GetWindowTextW(_In_ HWND hWnd, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
114{
+
115 assert(0); // TODO: Test this code.
+
116
+
117 int iResult;
+
118
+
119 // Query the final string length first.
+
120 iResult = ::GetWindowTextLengthW(hWnd);
+
121 if (iResult > 0) {
+
122 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)) {
+
123 // Read string data to stack.
+
124 wchar_t szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
125 iResult = ::GetWindowTextW(hWnd, szBuffer, _countof(szBuffer));
+
126 sValue.assign(szBuffer, iResult);
+
127 } else {
+
128 // Allocate buffer on heap and read the string data into it.
+
129 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++iResult]);
+
130 iResult = ::GetWindowTextW(hWnd, szBuffer.get(), iResult);
+
131 sValue.assign(szBuffer.get(), iResult);
+
132 }
+
133 return iResult;
+
134 }
+
135
+
136 sValue.clear();
+
137 return 0;
+
138}
+
139
+
141template<class _Ty, class _Ax>
+
142static _Success_(return != 0) BOOL GetFileVersionInfoA(_In_z_ LPCSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
+
143{
+
144 assert(0); // TODO: Test this code.
+
145
+
146 // Get version info size.
+
147 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeA(lptstrFilename, &dwHandle);
+
148 if (dwVerInfoSize != 0) {
+
149 // Read version info.
+
150 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
151 return ::GetFileVersionInfoA(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
+
152 } else
+
153 return FALSE;
+
154}
+
155
+
161template<class _Ty, class _Ax>
+
162static _Success_(return != 0) BOOL GetFileVersionInfoW(_In_z_ LPCWSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
+
163{
+
164 assert(0); // TODO: Test this code.
+
165
+
166 // Get version info size.
+
167 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeW(lptstrFilename, &dwHandle);
+
168 if (dwVerInfoSize != 0) {
+
169 // Read version info.
+
170 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
171 return ::GetFileVersionInfoW(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
+
172 } else
+
173 return FALSE;
+
174}
+
175
+
177template<class _Traits, class _Ax>
+
178static _Success_(return != 0) DWORD ExpandEnvironmentStringsA(_In_z_ LPCSTR lpSrc, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
179{
+
180 assert(0); // TODO: Test this code.
+
181
+
182 for (DWORD dwSizeOut = (DWORD)strlen(lpSrc) + 0x100;;) {
+
183 DWORD dwSizeIn = dwSizeOut;
+
184 std::unique_ptr<char[]> szBuffer(new char[(size_t)dwSizeIn + 2]); // Note: ANSI version requires one extra char.
+
185 dwSizeOut = ::ExpandEnvironmentStringsA(lpSrc, szBuffer.get(), dwSizeIn);
+
186 if (dwSizeOut == 0) {
+
187 // Error or zero-length input.
+
188 break;
+
189 } else if (dwSizeOut <= dwSizeIn) {
+
190 // The buffer was sufficient.
+
191 sValue.assign(szBuffer.get(), dwSizeOut - 1);
+
192 return dwSizeOut;
+
193 }
+
194 }
+
195
+
196 sValue.clear();
+
197 return 0;
+
198}
+
199
+
205template<class _Traits, class _Ax>
+
206static _Success_(return != 0) DWORD ExpandEnvironmentStringsW(_In_z_ LPCWSTR lpSrc, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
207{
+
208 for (DWORD dwSizeOut = (DWORD)wcslen(lpSrc) + 0x100;;) {
+
209 DWORD dwSizeIn = dwSizeOut;
+
210 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(size_t)dwSizeIn + 1]);
+
211 dwSizeOut = ::ExpandEnvironmentStringsW(lpSrc, szBuffer.get(), dwSizeIn);
+
212 if (dwSizeOut == 0) {
+
213 // Error or zero-length input.
+
214 break;
+
215 } else if (dwSizeOut <= dwSizeIn) {
+
216 // The buffer was sufficient.
+
217 sValue.assign(szBuffer.get(), dwSizeOut - 1);
+
218 return dwSizeOut;
+
219 }
+
220 }
+
221
+
222 sValue.clear();
+
223 return 0;
+
224}
+
225
+
227template<class _Traits, class _Ax>
+
228static VOID GuidToStringA(_In_ LPCGUID lpGuid, _Out_ std::basic_string<char, _Traits, _Ax> &str) noexcept
+
229{
+
230 assert(0); // TODO: Test this code.
+
231
+
232 sprintf(str, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+
233 lpGuid->Data1,
+
234 lpGuid->Data2,
+
235 lpGuid->Data3,
+
236 lpGuid->Data4[0], lpGuid->Data4[1],
+
237 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
+
238}
+
239
+
246template<class _Traits, class _Ax>
+
247static VOID GuidToStringW(_In_ LPCGUID lpGuid, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str) noexcept
+
248{
+
249 assert(0); // TODO: Test this code.
+
250
+
251 sprintf(str, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+
252 lpGuid->Data1,
+
253 lpGuid->Data2,
+
254 lpGuid->Data3,
+
255 lpGuid->Data4[0], lpGuid->Data4[1],
+
256 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
+
257}
+
258
+
260#ifdef _UNICODE
+
261#define GuidToString GuidToStringW
+
262#else
+
263#define GuidToString GuidToStringA
+
264#endif
+
265
+
267static _Success_(return) BOOL StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL) noexcept
+
268{
+
269 GUID g;
+
270 LPSTR lpszEnd;
+
271 unsigned long ulTmp;
+
272 unsigned long long ullTmp;
+
273
+
274 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
+
275 lpszGuid++;
+
276
+
277 g.Data1 = strtoul(lpszGuid, &lpszEnd, 16);
+
278 if (errno == ERANGE) return FALSE;
+
279 lpszGuid = lpszEnd;
+
280
+
281 if (*lpszGuid != '-') return FALSE;
+
282 lpszGuid++;
+
283
+
284 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
285 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
286 g.Data2 = static_cast<unsigned short>(ulTmp);
+
287 lpszGuid = lpszEnd;
+
288
+
289 if (*lpszGuid != '-') return FALSE;
+
290 lpszGuid++;
+
291
+
292 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
293 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
294 g.Data3 = static_cast<unsigned short>(ulTmp);
+
295 lpszGuid = lpszEnd;
+
296
+
297 if (*lpszGuid != '-') return FALSE;
+
298 lpszGuid++;
+
299
+
300 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
301 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
302 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
+
303 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
+
304 lpszGuid = lpszEnd;
+
305
+
306 if (*lpszGuid != '-') return FALSE;
+
307 lpszGuid++;
+
308
+
309 ullTmp = _strtoui64(lpszGuid, &lpszEnd, 16);
+
310 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
+
311 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
+
312 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
+
313 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
+
314 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
+
315 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
+
316 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
+
317 lpszGuid = lpszEnd;
+
318
+
319 if (*lpszGuid != '}') return FALSE;
+
320 lpszGuid++;
+
321
+
322 if (lpszGuidEnd)
+
323 *lpszGuidEnd = lpszGuid;
+
324
+
325 *lpGuid = g;
+
326 return TRUE;
+
327}
+
328
+
340static _Success_(return) BOOL StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL) noexcept
+
341{
+
342 GUID g;
+
343 LPWSTR lpszEnd;
+
344 unsigned long ulTmp;
+
345 unsigned long long ullTmp;
+
346
+
347 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
+
348 lpszGuid++;
+
349
+
350 g.Data1 = wcstoul(lpszGuid, &lpszEnd, 16);
+
351 if (errno == ERANGE) return FALSE;
+
352 lpszGuid = lpszEnd;
+
353
+
354 if (*lpszGuid != '-') return FALSE;
+
355 lpszGuid++;
+
356
+
357 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
358 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
359 g.Data2 = static_cast<unsigned short>(ulTmp);
+
360 lpszGuid = lpszEnd;
+
361
+
362 if (*lpszGuid != '-') return FALSE;
+
363 lpszGuid++;
+
364
+
365 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
366 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
367 g.Data3 = static_cast<unsigned short>(ulTmp);
+
368 lpszGuid = lpszEnd;
+
369
+
370 if (*lpszGuid != '-') return FALSE;
+
371 lpszGuid++;
+
372
+
373 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
374 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
375 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
+
376 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
+
377 lpszGuid = lpszEnd;
+
378
+
379 if (*lpszGuid != '-') return FALSE;
+
380 lpszGuid++;
+
381
+
382 ullTmp = _wcstoui64(lpszGuid, &lpszEnd, 16);
+
383 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
+
384 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
+
385 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
+
386 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
+
387 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
+
388 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
+
389 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
+
390 lpszGuid = lpszEnd;
+
391
+
392 if (*lpszGuid != '}') return FALSE;
+
393 lpszGuid++;
+
394
+
395 if (lpszGuidEnd)
+
396 *lpszGuidEnd = lpszGuid;
+
397
+
398 *lpGuid = g;
+
399 return TRUE;
+
400}
+
401
+
403#ifdef _UNICODE
+
404#define StringToGuid StringToGuidW
+
405#else
+
406#define StringToGuid StringToGuidA
+
407#endif
+
408
+
427template<class _Traits, class _Ax>
+
428static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
429{
+
430 LSTATUS lResult;
+
431 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
432 DWORD dwSize = sizeof(aStackBuffer), dwType;
+
433
+
434 // Try with stack buffer first.
+
435 lResult = ::RegQueryValueExA(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
+
436 if (lResult == ERROR_SUCCESS) {
+
437 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
438 // The value is REG_SZ or REG_MULTI_SZ.
+
439 dwSize /= sizeof(CHAR);
+
440 sValue.assign(reinterpret_cast<LPCSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
441 } else if (dwType == REG_EXPAND_SZ) {
+
442 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
+
443 if (::ExpandEnvironmentStringsA(reinterpret_cast<LPCSTR>(aStackBuffer), sValue) == 0)
+
444 lResult = ::GetLastError();
+
445 } else {
+
446 // The value is not a string type.
+
447 lResult = ERROR_INVALID_DATA;
+
448 }
+
449 } else if (lResult == ERROR_MORE_DATA) {
+
450 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
451 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
+
452 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
+
453 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
454 dwSize /= sizeof(CHAR);
+
455 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
456 }
+
457 } else if (dwType == REG_EXPAND_SZ) {
+
458 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
+
459 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
+
460 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
461 if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0)
+
462 lResult = ::GetLastError();
+
463 }
+
464 } else {
+
465 // The value is not a string type.
+
466 lResult = ERROR_INVALID_DATA;
+
467 }
+
468 }
+
469
+
470 return lResult;
+
471}
+
472
+
491template<class _Traits, class _Ax>
+
492static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
493{
+
494 LSTATUS lResult;
+
495 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
496 DWORD dwSize = sizeof(aStackBuffer), dwType;
+
497
+
498 // Try with stack buffer first.
+
499 lResult = ::RegQueryValueExW(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
+
500 if (lResult == ERROR_SUCCESS) {
+
501 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
502 // The value is REG_SZ or REG_MULTI_SZ.
+
503 dwSize /= sizeof(WCHAR);
+
504 sValue.assign(reinterpret_cast<LPCWSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCWSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
505 } else if (dwType == REG_EXPAND_SZ) {
+
506 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
+
507 if (::ExpandEnvironmentStringsW(reinterpret_cast<LPCWSTR>(aStackBuffer), sValue) == 0)
+
508 lResult = ::GetLastError();
+
509 } else {
+
510 // The value is not a string type.
+
511 lResult = ERROR_INVALID_DATA;
+
512 }
+
513 } else if (lResult == ERROR_MORE_DATA) {
+
514 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
515 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
+
516 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
+
517 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
518 dwSize /= sizeof(WCHAR);
+
519 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
520 }
+
521 } else if (dwType == REG_EXPAND_SZ) {
+
522 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
+
523 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
+
524 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
525 if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0)
+
526 lResult = ::GetLastError();
+
527 }
+
528 } else {
+
529 // The value is not a string type.
+
530 lResult = ERROR_INVALID_DATA;
+
531 }
+
532 }
+
533
+
534 return lResult;
+
535}
+
536
+
538template<class _Ty, class _Ax>
+
539static LSTATUS RegQueryValueExA(_In_ HKEY hKey, _In_opt_z_ LPCSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
+
540{
+
541 LSTATUS lResult;
+
542 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
543 DWORD dwSize = sizeof(aStackBuffer);
+
544
+
545 // Try with stack buffer first.
+
546 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
+
547 if (lResult == ERROR_SUCCESS) {
+
548 // Copy from stack buffer.
+
549 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
550 memcpy(aData.data(), aStackBuffer, dwSize);
+
551 } else if (lResult == ERROR_MORE_DATA) {
+
552 // Allocate buffer on heap and retry.
+
553 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
554 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, NULL, aData.data(), &dwSize);
+
555 }
+
556
+
557 return lResult;
+
558}
+
559
+
565template<class _Ty, class _Ax>
+
566static LSTATUS RegQueryValueExW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
+
567{
+
568 LSTATUS lResult;
+
569 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
570 DWORD dwSize = sizeof(aStackBuffer);
+
571
+
572 // Try with stack buffer first.
+
573 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
+
574 if (lResult == ERROR_SUCCESS) {
+
575 // Copy from stack buffer.
+
576 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
577 memcpy(aData.data(), aStackBuffer, dwSize);
+
578 } else if (lResult == ERROR_MORE_DATA) {
+
579 // Allocate buffer on heap and retry.
+
580 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
581 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, NULL, aData.data(), &dwSize);
+
582 }
+
583
+
584 return lResult;
+
585}
+
586
+
587#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+
588
+
590template<class _Traits, class _Ax>
+
591static LSTATUS RegLoadMUIStringA(_In_ HKEY hKey, _In_opt_z_ LPCSTR pszValue, _Out_ std::basic_string<char, _Traits, _Ax> &sOut, _In_ DWORD Flags, _In_opt_z_ LPCSTR pszDirectory) noexcept
+
592{
+
593 // According to "Remarks" section in MSDN documentation of RegLoadMUIString(),
+
594 // this function is defined but not implemented as ANSI variation.
+
595 assert(0);
+
596 return ERROR_CALL_NOT_IMPLEMENTED;
+
597}
+
598
+
604template<class _Traits, class _Ax>
+
605static LSTATUS RegLoadMUIStringW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR pszValue, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sOut, _In_ DWORD Flags, _In_opt_z_ LPCWSTR pszDirectory) noexcept
+
606{
+
607 LSTATUS lResult;
+
608 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
609 DWORD dwSize;
+
610
+
611 Flags &= ~REG_MUI_STRING_TRUNCATE;
+
612
+
613 // Try with stack buffer first.
+
614 lResult = RegLoadMUIStringW(hKey, pszValue, szStackBuffer, sizeof(szStackBuffer), &dwSize, Flags, pszDirectory);
+
615 if (lResult == ERROR_SUCCESS) {
+
616 // Copy from stack buffer.
+
617 sOut.assign(szStackBuffer, wcsnlen(szStackBuffer, dwSize/sizeof(wchar_t)));
+
618 } else if (lResult == ERROR_MORE_DATA) {
+
619 // Allocate buffer on heap and retry.
+
620 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(dwSize + sizeof(wchar_t) - 1)/sizeof(wchar_t)]);
+
621 sOut.assign(szBuffer.get(), (lResult = RegLoadMUIStringW(hKey, pszValue, szBuffer.get(), dwSize, &dwSize, Flags, pszDirectory)) == ERROR_SUCCESS ? wcsnlen(szBuffer.get(), dwSize/sizeof(wchar_t)) : 0);
+
622 }
+
623
+
624 return lResult;
+
625}
+
626
+
627#endif
+
628
+
634template<class _Traits, class _Ax>
+
635static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::basic_string<char, _Traits, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
636{
+
637 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
638
+
639 // Try to convert to stack buffer first.
+
640 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
641 if (cch) {
+
642 // Copy from stack. Be careful not to include zero terminator.
+
643 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
644 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
645 // Query the required output size. Allocate buffer. Then convert again.
+
646 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
647 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
648 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
649 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
650 }
+
651
+
652 return cch;
+
653}
+
654
+
660template<class _Ax>
+
661static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::vector<char, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
662{
+
663 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
664
+
665 // Try to convert to stack buffer first.
+
666 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
667 if (cch) {
+
668 // Copy from stack.
+
669 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
670 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
671 // Query the required output size. Allocate buffer. Then convert again.
+
672 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
673 sMultiByteStr.resize(cch);
+
674 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
675 }
+
676
+
677 return cch;
+
678}
+
679
+
685template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
686static _Success_(return != 0) int WideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ std::basic_string<wchar_t, _Traits1, _Ax1> sWideCharStr, _Out_ std::basic_string<char, _Traits2, _Ax2> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
687{
+
688 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
689
+
690 // Try to convert to stack buffer first.
+
691 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
692 if (cch) {
+
693 // Copy from stack.
+
694 sMultiByteStr.assign(szStackBuffer, cch);
+
695 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
696 // Query the required output size. Allocate buffer. Then convert again.
+
697 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
698 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
699 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
700 sMultiByteStr.assign(szBuffer.get(), cch);
+
701 }
+
702
+
703 return cch;
+
704}
+
705
+
713template<class _Traits, class _Ax>
+
714static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::basic_string<char, _Traits, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
715{
+
716 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
717
+
718 // Try to convert to stack buffer first.
+
719 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
720 if (cch) {
+
721 // Copy from stack. Be careful not to include zero terminator.
+
722 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
723 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
724 // Query the required output size. Allocate buffer. Then convert again.
+
725 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
726 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
727 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
728 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
729 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
+
730 }
+
731
+
732 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
733
+
734 return cch;
+
735}
+
736
+
744template<class _Ax>
+
745static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cchWideChar) LPCWSTR lpWideCharStr, _In_ int cchWideChar, _Out_ std::vector<char, _Ax> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
746{
+
747 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
748
+
749 // Try to convert to stack buffer first.
+
750 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
751 if (cch) {
+
752 // Copy from stack.
+
753 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
754 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
755 // Query the required output size. Allocate buffer. Then convert again.
+
756 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
757 sMultiByteStr.resize(cch);
+
758 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
759 }
+
760
+
761 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
762
+
763 return cch;
+
764}
+
765
+
773template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
774static _Success_(return != 0) int SecureWideCharToMultiByte(_In_ UINT CodePage, _In_ DWORD dwFlags, _Out_ std::basic_string<wchar_t, _Traits1, _Ax1> sWideCharStr, _Out_ std::basic_string<char, _Traits2, _Ax2> &sMultiByteStr, _In_opt_z_ LPCSTR lpDefaultChar, _Out_opt_ LPBOOL lpUsedDefaultChar) noexcept
+
775{
+
776 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
+
777
+
778 // Try to convert to stack buffer first.
+
779 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
780 if (cch) {
+
781 // Copy from stack.
+
782 sMultiByteStr.assign(szStackBuffer, cch);
+
783 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
784 // Query the required output size. Allocate buffer. Then convert again.
+
785 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
786 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
787 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
788 sMultiByteStr.assign(szBuffer.get(), cch);
+
789 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
+
790 }
+
791
+
792 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
793
+
794 return cch;
+
795}
+
796
+
802template<class _Traits, class _Ax>
+
803static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sWideCharStr) noexcept
+
804{
+
805 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
806
+
807 // Try to convert to stack buffer first.
+
808 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
809 if (cch) {
+
810 // Copy from stack.
+
811 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
812 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
813 // Query the required output size. Allocate buffer. Then convert again.
+
814 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
815 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
816 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
+
817 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
818 }
+
819
+
820 return cch;
+
821}
+
822
+
828template<class _Ax>
+
829static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::vector<wchar_t, _Ax> &sWideCharStr) noexcept
+
830{
+
831 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
832
+
833 // Try to convert to stack buffer first.
+
834 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
835 if (cch) {
+
836 // Copy from stack.
+
837 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
838 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
839 // Query the required output size. Allocate buffer. Then convert again.
+
840 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
841 sWideCharStr.resize(cch);
+
842 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
843 }
+
844
+
845 return cch;
+
846}
+
847
+
853template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
854static _Success_(return != 0) int MultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ const std::basic_string<char, _Traits1, _Ax1> &sMultiByteStr, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sWideCharStr) noexcept
+
855{
+
856 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
857
+
858 // Try to convert to stack buffer first.
+
859 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
860 if (cch) {
+
861 // Copy from stack.
+
862 sWideCharStr.assign(szStackBuffer, cch);
+
863 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
864 // Query the required output size. Allocate buffer. Then convert again.
+
865 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
866 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
867 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
+
868 sWideCharStr.assign(szBuffer.get(), cch);
+
869 }
+
870
+
871 return cch;
+
872}
+
873
+
881template<class _Traits, class _Ax>
+
882static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sWideCharStr) noexcept
+
883{
+
884 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
885
+
886 // Try to convert to stack buffer first.
+
887 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
888 if (cch) {
+
889 // Copy from stack.
+
890 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
891 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
892 // Query the required output size. Allocate buffer. Then convert again.
+
893 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
894 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
895 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
+
896 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
897 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
+
898 }
+
899
+
900 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
901
+
902 return cch;
+
903}
+
904
+
912template<class _Ax>
+
913static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_z_count_(cbMultiByte) LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_ std::vector<wchar_t, _Ax> &sWideCharStr) noexcept
+
914{
+
915 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
916
+
917 // Try to convert to stack buffer first.
+
918 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
919 if (cch) {
+
920 // Copy from stack.
+
921 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
922 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
923 // Query the required output size. Allocate buffer. Then convert again.
+
924 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
925 sWideCharStr.resize(cch);
+
926 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
927 }
+
928
+
929 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
930
+
931 return cch;
+
932}
+
933
+
941template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
942static _Success_(return != 0) int SecureMultiByteToWideChar(_In_ UINT CodePage, _In_ DWORD dwFlags, _In_ const std::basic_string<char, _Traits1, _Ax1> &sMultiByteStr, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sWideCharStr) noexcept
+
943{
+
944 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
945
+
946 // Try to convert to stack buffer first.
+
947 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
948 if (cch) {
+
949 // Copy from stack.
+
950 sWideCharStr.assign(szStackBuffer, cch);
+
951 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
952 // Query the required output size. Allocate buffer. Then convert again.
+
953 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
954 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
955 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
+
956 sWideCharStr.assign(szBuffer.get(), cch);
+
957 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
+
958 }
+
959
+
960 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
961
+
962 return cch;
+
963}
+
964
+
970template<class _Traits, class _Ax>
+
971static _Success_(return > 0) int NormalizeString(_In_ NORM_FORM NormForm, _In_ LPCWSTR lpSrcString, _In_ int cwSrcLength, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sDstString) noexcept
+
972{
+
973 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
974
+
975 // Try to convert to stack buffer first.
+
976 int cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szStackBuffer, _countof(szStackBuffer));
+
977 if (cch > 0) {
+
978 // Copy from stack.
+
979 sDstString.assign(szStackBuffer, cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
980 } else {
+
981 switch (::GetLastError()) {
+
982 case ERROR_INSUFFICIENT_BUFFER:
+
983 for (int i = 10; i--;) {
+
984 // Allocate buffer. Then convert again.
+
985 cch = -cch;
+
986 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
987 cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szBuffer.get(), cch);
+
988 if (cch > 0) {
+
989 sDstString.assign(szBuffer.get(), cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
990 break;
+
991 }
+
992 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
993 sDstString.clear();
+
994 break;
+
995 }
+
996 }
+
997 break;
+
998
+
999 case ERROR_SUCCESS:
+
1000 sDstString.clear();
+
1001 break;
+
1002 }
+
1003 }
+
1004
+
1005 return cch;
+
1006}
+
1007
+
1013template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
1014static _Success_(return > 0) int NormalizeString(_In_ NORM_FORM NormForm, _In_ const std::basic_string<wchar_t, _Traits1, _Ax1> &sSrcString, _Out_ std::basic_string<wchar_t, _Traits2, _Ax2> &sDstString) noexcept
+
1015{
+
1016 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
1017
+
1018 // Try to convert to stack buffer first.
+
1019 int cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szStackBuffer, _countof(szStackBuffer));
+
1020 if (cch > 0) {
+
1021 // Copy from stack.
+
1022 sDstString.assign(szStackBuffer, cch);
+
1023 } else {
+
1024 switch (::GetLastError()) {
+
1025 case ERROR_INSUFFICIENT_BUFFER:
+
1026 for (int i = 10; i--;) {
+
1027 // Allocate buffer. Then convert again.
+
1028 cch = -cch;
+
1029 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
1030 cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szBuffer.get(), cch);
+
1031 if (cch > 0) {
+
1032 sDstString.assign(szBuffer.get(), cch);
+
1033 break;
+
1034 }
+
1035 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
1036 sDstString.clear();
+
1037 break;
+
1038 }
+
1039 }
+
1040 break;
+
1041
+
1042 case ERROR_SUCCESS:
+
1043 sDstString.clear();
+
1044 break;
+
1045 }
+
1046 }
+
1047
+
1048 return cch;
+
1049}
+
1050
+
1052template<class _Traits, class _Ax>
+
1053static _Success_(return != 0) int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<char, _Traits, _Ax> &sBuffer) noexcept
+
1054{
+
1055 // Get read-only pointer to string resource.
+
1056 LPCSTR pszStr;
+
1057 int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0);
+
1058 if (i) {
+
1059 sBuffer.assign(pszStr, i);
+
1060 return i;
+
1061 } else
+
1062 return 0;
+
1063}
+
1064
+
1070template<class _Traits, class _Ax>
+
1071static _Success_(return != 0) int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sBuffer) noexcept
+
1072{
+
1073 // Get read-only pointer to string resource.
+
1074 LPCWSTR pszStr;
+
1075 int i = LoadStringW(hInstance, uID, reinterpret_cast<LPWSTR>(&pszStr), 0);
+
1076 if (i) {
+
1077 sBuffer.assign(pszStr, i);
+
1078 return i;
+
1079 } else
+
1080 return 0;
+
1081}
+
1082
+
1088static VOID OutputDebugStrV(_In_z_ LPCSTR lpOutputString, _In_ va_list arg) noexcept
+
1089{
+
1090 std::string str;
+
1091 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
1092 OutputDebugStringA(str.c_str());
+
1093}
+
1094
+
1100static VOID OutputDebugStrV(_In_z_ LPCWSTR lpOutputString, _In_ va_list arg) noexcept
+
1101{
+
1102 std::wstring str;
+
1103 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
1104 OutputDebugStringW(str.c_str());
+
1105}
+
1106
+
1112static VOID OutputDebugStr(_In_z_ LPCSTR lpOutputString, ...) noexcept
+
1113{
+
1114 va_list arg;
+
1115 va_start(arg, lpOutputString);
+
1116 OutputDebugStrV(lpOutputString, arg);
+
1117 va_end(arg);
+
1118}
+
1119
+
1125static VOID OutputDebugStr(_In_z_ LPCWSTR lpOutputString, ...) noexcept
+
1126{
+
1127 va_list arg;
+
1128 va_start(arg, lpOutputString);
+
1129 OutputDebugStrV(lpOutputString, arg);
+
1130 va_end(arg);
+
1131}
+
1132
+
1134template<class _Traits, class _Ax>
+
1135static _Success_(return != 0) int GetDateFormatA(_In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_z_ LPCSTR lpFormat, _Out_ std::basic_string<char, _Traits, _Ax> &sDate) noexcept
+
1136{
+
1137 int iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
+
1138 if (iResult) {
+
1139 // Allocate buffer on heap and retry.
+
1140 std::unique_ptr<char[]> szBuffer(new char[iResult]);
+
1141 iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
+
1142 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
+
1143 return iResult;
+
1144 }
+
1145
+
1146 return iResult;
+
1147}
+
1148
+
1154template<class _Traits, class _Ax>
+
1155static _Success_(return != 0) int GetDateFormatW(_In_ LCID Locale, _In_ DWORD dwFlags, _In_opt_ const SYSTEMTIME *lpDate, _In_opt_z_ LPCWSTR lpFormat, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sDate) noexcept
+
1156{
+
1157 int iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
+
1158 if (iResult) {
+
1159 // Allocate buffer on heap and retry.
+
1160 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[iResult]);
+
1161 iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
+
1162 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
+
1163 return iResult;
+
1164 }
+
1165
+
1166 return iResult;
+
1167}
+
1168
+
1170template<class _Traits, class _Ax>
+
1171static _Success_(return != 0) BOOL LookupAccountSidA(_In_opt_z_ LPCSTR lpSystemName, _In_ PSID lpSid, _Out_opt_ std::basic_string<char, _Traits, _Ax> *sName, _Out_opt_ std::basic_string<char, _Traits, _Ax> *sReferencedDomainName, _Out_ PSID_NAME_USE peUse) noexcept
+
1172{
+
1173 assert(0); // TODO: Test this code.
+
1174
+
1175 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
1176
+
1177 if (LookupAccountSidA(lpSystemName, lpSid,
+
1178 NULL, &dwNameLen ,
+
1179 NULL, &dwRefDomainLen,
+
1180 peUse))
+
1181 {
+
1182 // Name and domain is blank.
+
1183 if (sName ) sName ->clear();
+
1184 if (sReferencedDomainName) sReferencedDomainName->clear();
+
1185 return TRUE;
+
1186 } else if (GetLastError() == ERROR_MORE_DATA) {
+
1187 // Allocate on heap and retry.
+
1188 std::unique_ptr<char[]> bufName (new char[dwNameLen ]);
+
1189 std::unique_ptr<char[]> bufRefDomain(new char[dwRefDomainLen]);
+
1190 if (LookupAccountSidA(lpSystemName, lpSid,
+
1191 bufName .get(), &dwNameLen ,
+
1192 bufRefDomain.get(), &dwRefDomainLen,
+
1193 peUse))
+
1194 {
+
1195 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
+
1196 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
+
1197 return TRUE;
+
1198 }
+
1199 }
+
1200
+
1201 return FALSE;
+
1202}
+
1203
+
1209template<class _Traits, class _Ax>
+
1210static _Success_(return != 0) BOOL LookupAccountSidW(_In_opt_z_ LPCWSTR lpSystemName, _In_ PSID lpSid, _Out_opt_ std::basic_string<wchar_t, _Traits, _Ax> *sName, _Out_opt_ std::basic_string<wchar_t, _Traits, _Ax> *sReferencedDomainName, _Out_ PSID_NAME_USE peUse) noexcept
+
1211{
+
1212 assert(0); // TODO: Test this code.
+
1213
+
1214 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
1215
+
1216 if (LookupAccountSidW(lpSystemName, lpSid,
+
1217 NULL, &dwNameLen ,
+
1218 NULL, &dwRefDomainLen,
+
1219 peUse))
+
1220 {
+
1221 // Name and domain is blank.
+
1222 if (sName ) sName ->clear();
+
1223 if (sReferencedDomainName) sReferencedDomainName->clear();
+
1224 return TRUE;
+
1225 } else if (GetLastError() == ERROR_MORE_DATA) {
+
1226 // Allocate on heap and retry.
+
1227 std::unique_ptr<wchar_t[]> bufName (new wchar_t[dwNameLen ]);
+
1228 std::unique_ptr<wchar_t[]> bufRefDomain(new wchar_t[dwRefDomainLen]);
+
1229 if (LookupAccountSidW(lpSystemName, lpSid,
+
1230 bufName .get(), &dwNameLen ,
+
1231 bufRefDomain.get(), &dwRefDomainLen,
+
1232 peUse))
+
1233 {
+
1234 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
+
1235 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
+
1236 return TRUE;
+
1237 }
+
1238 }
+
1239
+
1240 return FALSE;
+
1241}
+
1242
+
1248template<class _Ty>
+
1249static _Success_(return != 0) BOOL GetTokenInformation(_In_ HANDLE TokenHandle, _In_ TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_ std::unique_ptr<_Ty> &TokenInformation) noexcept
+
1250{
+
1251 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(BYTE)];
+
1252 DWORD dwSize;
+
1253
+
1254 if (GetTokenInformation(TokenHandle, TokenInformationClass, szStackBuffer, sizeof(szStackBuffer), &dwSize)) {
+
1255 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
+
1256 TokenInformation.reset((_Ty*)(new BYTE[dwSize / sizeof(BYTE)]));
+
1257 if (!TokenInformation) {
+
1258 SetLastError(ERROR_OUTOFMEMORY);
+
1259 return FALSE;
+
1260 }
+
1261 memcpy(TokenInformation.get(), szStackBuffer, dwSize);
+
1262 return TRUE;
+
1263 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
1264 // The stack buffer was too small to retrieve complete data. Alloc and retry.
+
1265 TokenInformation.reset((_Ty*)(new BYTE[dwSize / sizeof(BYTE)]));
+
1266 if (!TokenInformation) {
+
1267 SetLastError(ERROR_OUTOFMEMORY);
+
1268 return FALSE;
+
1269 }
+
1270 return GetTokenInformation(TokenHandle, TokenInformationClass, TokenInformation.get(), dwSize, &dwSize);
+
1271 } else
+
1272 return FALSE;
+
1273}
+
1274
+
1280template<class _Traits, class _Ax>
+
1281static _Success_(return != 0) BOOL QueryFullProcessImageNameA(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<char, _Traits, _Ax>& sExeName)
+
1282{
+
1283 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(char)];
+
1284 DWORD dwSize = _countof(szStackBuffer);
+
1285
+
1286 // Try with stack buffer first.
+
1287 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szStackBuffer, &dwSize)) {
+
1288 // Copy from stack.
+
1289 sExeName.assign(szStackBuffer, dwSize);
+
1290 return TRUE;
+
1291 }
+
1292 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(char); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
+
1293 // Allocate on heap and retry.
+
1294 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
+
1295 dwSize = dwCapacity;
+
1296 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
+
1297 sExeName.assign(szBuffer.get(), dwSize);
+
1298 return TRUE;
+
1299 }
+
1300 }
+
1301 return FALSE;
+
1302}
+
1303
+
1309template<class _Traits, class _Ax>
+
1310static _Success_(return != 0) BOOL QueryFullProcessImageNameW(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<wchar_t, _Traits, _Ax>& sExeName)
+
1311{
+
1312 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t)];
+
1313 DWORD dwSize = _countof(szStackBuffer);
+
1314
+
1315 // Try with stack buffer first.
+
1316 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szStackBuffer, &dwSize)) {
+
1317 // Copy from stack.
+
1318 sExeName.assign(szStackBuffer, dwSize);
+
1319 return TRUE;
+
1320 }
+
1321 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
+
1322 // Allocate on heap and retry.
+
1323 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
+
1324 dwSize = dwCapacity;
+
1325 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
+
1326 sExeName.assign(szBuffer.get(), dwSize);
+
1327 return TRUE;
+
1328 }
+
1329 }
+
1330 return FALSE;
+
1331}
+
1332
+
1334
+
1335#pragma warning(pop)
+
1336
+
1337namespace winstd
+
1338{
+
1341
+
1345 template<HANDLE INVALID>
+
1346 class win_handle : public handle<HANDLE, INVALID>
+
1347 {
+ +
1349
+
1350 public:
+
1356 virtual ~win_handle()
+
1357 {
+
1358 if (m_h != invalid)
+
1359 free_internal();
+
1360 }
+
1361
+
1362 protected:
+
1368 void free_internal() noexcept override
+
1369 {
+
1370 CloseHandle(m_h);
+
1371 }
+
1372 };
+
1373
+
1377 class library : public handle<HMODULE, NULL>
+
1378 {
+ +
1380
+
1381 public:
+
1387 virtual ~library()
+
1388 {
+
1389 if (m_h != invalid)
+
1390 free_internal();
+
1391 }
+
1392
+
1402 bool load(_In_z_ LPCTSTR lpFileName, __reserved handle_type hFile, _In_ DWORD dwFlags) noexcept
+
1403 {
+
1404 handle_type h = LoadLibraryEx(lpFileName, hFile, dwFlags);
+
1405 if (h != invalid) {
+
1406 attach(h);
+
1407 return true;
+
1408 } else
+
1409 return false;
+
1410 }
+
1411
+
1412 protected:
+
1418 void free_internal() noexcept override
+
1419 {
+
1420 FreeLibrary(m_h);
+
1421 }
+
1422 };
+
1423
+
1427 class process : public win_handle<NULL>
+
1428 {
+
1429 public:
+
1439 bool open(_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwProcessId) noexcept
+
1440 {
+
1441 handle_type h = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
+
1442 if (h != invalid) {
+
1443 attach(h);
+
1444 return true;
+
1445 } else
+
1446 return false;
+
1447 }
+
1448 };
+
1449
+
1453 class file : public win_handle<INVALID_HANDLE_VALUE>
+
1454 {
+
1455 public:
+
1465 bool create(_In_z_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_ DWORD dwCreationDisposition, _In_opt_ DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL, _In_opt_ HANDLE hTemplateFile = NULL) noexcept
+
1466 {
+
1467 handle_type h = CreateFile(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
+
1468 if (h != invalid) {
+
1469 attach(h);
+
1470 return true;
+
1471 } else
+
1472 return false;
+
1473 }
+
1474 };
+
1475
+
1479 class event : public win_handle<NULL>
+
1480 {
+
1481 public:
+
1491 bool create(_In_ BOOL bManualReset, _In_ BOOL bInitialState, _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes = NULL, _In_opt_z_ LPCTSTR lpName = NULL) noexcept
+
1492 {
+
1493 handle_type h = CreateEvent(lpEventAttributes, bManualReset, bInitialState, lpName);
+
1494 if (h != invalid) {
+
1495 attach(h);
+
1496 return true;
+
1497 } else
+
1498 return false;
+
1499 }
+
1500
+
1510 bool open(_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_z_ LPCTSTR lpName) noexcept
+
1511 {
+
1512 handle_type h = OpenEvent(dwDesiredAccess, bInheritHandle, lpName);
+
1513 if (h != invalid) {
+
1514 attach(h);
+
1515 return true;
+
1516 } else
+
1517 return false;
+
1518 }
+
1519 };
+
1520
+ +
1525 {
+ + +
1528
+
1529 public:
+ +
1536 {
+
1537 __try {
+
1538 InitializeCriticalSection(&m_data);
+
1539 } __except(EXCEPTION_EXECUTE_HANDLER) {
+
1540 throw std::runtime_error("InitializeCriticalSection failed");
+
1541 }
+
1542 }
+
1543
+ +
1550 {
+
1551 DeleteCriticalSection(&m_data);
+
1552 }
+
1553
+
1559 operator LPCRITICAL_SECTION() noexcept
+
1560 {
+
1561 return &m_data;
+
1562 }
+
1563
+
1564 protected:
+
1565 CRITICAL_SECTION m_data;
+
1566 };
+
1567
+
1571 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
+
1572 {
+
1573 WINSTD_HANDLE_IMPL(find_file, INVALID_HANDLE_VALUE)
+
1574
+
1575 public:
+
1581 virtual ~find_file()
+
1582 {
+
1583 if (m_h != invalid)
+
1584 free_internal();
+
1585 }
+
1586
+
1596 bool find(_In_ LPCTSTR lpFileName, _Out_ LPWIN32_FIND_DATA lpFindFileData) noexcept
+
1597 {
+
1598 handle_type h = FindFirstFile(lpFileName, lpFindFileData);
+
1599 if (h != invalid) {
+
1600 attach(h);
+
1601 return true;
+
1602 } else
+
1603 return false;
+
1604 }
+
1605
+
1606 protected:
+
1612 void free_internal() noexcept override
+
1613 {
+
1614 FindClose(m_h);
+
1615 }
+
1616 };
+
1617
+
1621 class heap : public handle<HANDLE, NULL>
+
1622 {
+ +
1624
+
1625 public:
+
1631 virtual ~heap()
+
1632 {
+
1633 if (m_h != invalid)
+
1634 free_internal();
+
1635 }
+
1636
+
1646 bool create(_In_ DWORD flOptions, _In_ SIZE_T dwInitialSize, _In_ SIZE_T dwMaximumSize) noexcept
+
1647 {
+
1648 handle_type h = HeapCreate(flOptions, dwInitialSize, dwMaximumSize);
+
1649 if (h != invalid) {
+
1650 attach(h);
+
1651 return true;
+
1652 } else
+
1653 return false;
+
1654 }
+
1655
+
1663 bool enumerate() noexcept
+
1664 {
+
1665 assert(m_h != invalid);
+
1666
+
1667 bool found = false;
+
1668
+
1669 // Lock the heap for exclusive access.
+
1670 HeapLock(m_h);
+
1671
+
1672 PROCESS_HEAP_ENTRY e;
+
1673 e.lpData = NULL;
+
1674 while (HeapWalk(m_h, &e) != FALSE) {
+
1675 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
+
1676 OutputDebugStr(
+
1677 _T("Allocated block%s%s\n")
+
1678 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
+
1679 _T(" Overhead: %d bytes\n Region index: %d\n"),
+
1680 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
+
1681 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
+
1682 e.lpData,
+
1683 e.cbData,
+
1684 e.cbOverhead,
+
1685 e.iRegionIndex);
+
1686
+
1687 found = true;
+
1688 }
+
1689 }
+
1690
+
1691 const DWORD dwResult = GetLastError();
+
1692 if (dwResult != ERROR_NO_MORE_ITEMS)
+
1693 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
+
1694
+
1695 // Unlock the heap.
+
1696 HeapUnlock(m_h);
+
1697
+
1698 return found;
+
1699 }
+
1700
+
1701 protected:
+
1707 void free_internal() noexcept override
+
1708 {
+
1709 enumerate();
+
1710 HeapDestroy(m_h);
+
1711 }
+
1712 };
+
1713
+
1717 template <class _Ty>
+ +
1719 {
+
1720 public:
+
1721 typedef typename _Ty value_type;
+
1722
+
1723 typedef _Ty *pointer;
+
1724 typedef _Ty& reference;
+
1725 typedef const _Ty *const_pointer;
+
1726 typedef const _Ty& const_reference;
+
1727
+
1728 typedef SIZE_T size_type;
+
1729 typedef ptrdiff_t difference_type;
+
1730
+
1734 template <class _Other>
+
1735 struct rebind
+
1736 {
+ +
1738 };
+
1739
+
1740 public:
+ +
1747 {
+
1748 }
+
1749
+
1755 template <class _Other>
+ +
1757 {
+
1758 }
+
1759
+ +
1768 {
+
1769 assert(m_heap);
+
1770 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
+
1771 }
+
1772
+
1779 void deallocate(_In_ pointer ptr, _In_ size_type size)
+
1780 {
+
1781 UNREFERENCED_PARAMETER(size);
+
1782 assert(m_heap);
+
1783 HeapFree(m_heap, 0, ptr);
+
1784 }
+
1785
+
1792 void construct(_Inout_ pointer ptr, _In_ const _Ty& val)
+
1793 {
+
1794 ::new ((void*)ptr) _Ty(val);
+
1795 }
+
1796
+
1803 void construct(_Inout_ pointer ptr, _Inout_ _Ty&& val)
+
1804 {
+
1805 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
+
1806 }
+
1807
+
1813 void destroy(_Inout_ pointer ptr)
+
1814 {
+
1815 ptr->_Ty::~_Ty();
+
1816 }
+
1817
+ +
1822 {
+
1823 return (SIZE_T)-1;
+
1824 }
+
1825
+
1826 public:
+
1827 HANDLE m_heap;
+
1828 };
+
1829
+ +
1834 {
+ + +
1837
+
1838 public:
+
1846 actctx_activator(_In_ HANDLE hActCtx) noexcept
+
1847 {
+
1848 if (!ActivateActCtx(hActCtx, &m_cookie))
+
1849 m_cookie = 0;
+
1850 }
+
1851
+ +
1858 {
+
1859 if (m_cookie)
+
1860 DeactivateActCtx(0, m_cookie);
+
1861 }
+
1862
+
1863 protected:
+
1864 ULONG_PTR m_cookie;
+
1865 };
+
1866
+ +
1871 {
+ + +
1874
+
1875 public:
+
1883 user_impersonator(_In_opt_ HANDLE hToken) noexcept
+
1884 {
+
1885 m_cookie = hToken && ImpersonateLoggedOnUser(hToken);
+
1886 }
+
1887
+ +
1894 {
+
1895 if (m_cookie)
+
1896 RevertToSelf();
+
1897 }
+
1898
+
1899 protected:
+ +
1901 };
+
1902
+ +
1907 {
+ + +
1910
+
1911 public:
+
1919 console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept : m_handler(HandlerRoutine)
+
1920 {
+
1921 m_cookie = SetConsoleCtrlHandler(m_handler, TRUE);
+
1922 }
+
1923
+ +
1930 {
+
1931 if (m_cookie)
+
1932 SetConsoleCtrlHandler(m_handler, FALSE);
+
1933 }
+
1934
+
1935 protected:
+ +
1937 PHANDLER_ROUTINE m_handler;
+
1938 };
+
1939
+
1943 class vmemory : public handle<LPVOID, NULL>
+
1944 {
+ +
1946
+
1947 public:
+
1951 vmemory() noexcept : m_proc(NULL)
+
1952 {
+
1953 }
+
1954
+
1961 vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept :
+
1962 m_proc(proc),
+ +
1964 {
+
1965 }
+
1966
+
1972 vmemory(_Inout_ vmemory &&h) noexcept :
+
1973 m_proc(std::move(h.m_proc)),
+
1974 handle<LPVOID, NULL>(std::move(h))
+
1975 {
+
1976 }
+
1977
+
1983 virtual ~vmemory()
+
1984 {
+
1985 if (m_h != invalid)
+
1986 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
+
1987 }
+
1988
+
1994 vmemory& operator=(_Inout_ vmemory &&other) noexcept
+
1995 {
+
1996 if (this != std::addressof(other)) {
+
1997 (handle<handle_type, NULL>&&)*this = std::move(other);
+
1998 m_proc = std::move(other.m_proc);
+
1999 }
+
2000 return *this;
+
2001 }
+
2002
+
2011 void attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
+
2012 {
+
2013 m_proc = proc;
+
2014 if (m_h != invalid)
+
2015 free_internal();
+
2016 m_h = h;
+
2017 }
+
2018
+
2028 bool alloc(
+
2029 _In_ HANDLE hProcess,
+
2030 _In_opt_ LPVOID lpAddress,
+
2031 _In_ SIZE_T dwSize,
+
2032 _In_ DWORD flAllocationType,
+
2033 _In_ DWORD flProtect) noexcept
+
2034 {
+
2035 handle_type h = VirtualAllocEx(hProcess, lpAddress, dwSize, flAllocationType, flProtect);
+
2036 if (h != invalid) {
+
2037 attach(hProcess, h);
+
2038 return true;
+
2039 } else
+
2040 return false;
+
2041 }
+
2042
+
2043 protected:
+
2049 void free_internal() noexcept override
+
2050 {
+
2051 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
+
2052 }
+
2053
+
2054 protected:
+
2055 HANDLE m_proc;
+
2056 };
+
2057
+
2061 class reg_key : public handle<HKEY, NULL>
+
2062 {
+ +
2064
+
2065 public:
+
2071 virtual ~reg_key()
+
2072 {
+
2073 if (m_h != invalid)
+
2074 free_internal();
+
2075 }
+
2076
+ +
2087 _In_ HKEY hKey,
+
2088 _In_z_ LPCTSTR lpSubKey,
+
2089 _In_opt_ LPTSTR lpClass,
+
2090 _In_ DWORD dwOptions,
+
2091 _In_ REGSAM samDesired,
+
2092 _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL,
+
2093 _Out_opt_ LPDWORD lpdwDisposition = NULL) noexcept
+
2094 {
+
2095 handle_type h;
+
2096 const LSTATUS s = RegCreateKeyEx(hKey, lpSubKey, 0, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2097 if (s == ERROR_SUCCESS) {
+
2098 attach(h);
+
2099 return true;
+
2100 } else {
+
2101 SetLastError(s);
+
2102 return false;
+
2103 }
+
2104 }
+
2105
+
2115 bool open(
+
2116 _In_ HKEY hKey,
+
2117 _In_opt_z_ LPCTSTR lpSubKey,
+
2118 _In_ DWORD ulOptions,
+
2119 _In_ REGSAM samDesired) noexcept
+
2120 {
+
2121 handle_type h;
+
2122 const LONG s = RegOpenKeyEx(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2123 if (s == ERROR_SUCCESS) {
+
2124 attach(h);
+
2125 return true;
+
2126 } else {
+
2127 SetLastError(s);
+
2128 return false;
+
2129 }
+
2130 }
+
2131
+
2141 bool delete_subkey(_In_z_ LPCTSTR szSubkey)
+
2142 {
+
2143 LSTATUS s;
+
2144
+
2145 s = RegDeleteKey(m_h, szSubkey);
+
2146 if (s == ERROR_SUCCESS || s == ERROR_FILE_NOT_FOUND)
+
2147 return true;
+
2148
+
2149 {
+
2150 reg_key k;
+
2151 if (!k.open(m_h, szSubkey, 0, KEY_ENUMERATE_SUB_KEYS))
+
2152 return false;
+
2153 for (;;) {
+
2154 TCHAR szName[MAX_PATH];
+
2155 DWORD dwSize = _countof(szName);
+
2156 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
+
2157 if (s == ERROR_SUCCESS)
+
2158 k.delete_subkey(szName);
+
2159 else if (s == ERROR_NO_MORE_ITEMS)
+
2160 break;
+
2161 else {
+
2162 SetLastError(s);
+
2163 return false;
+
2164 }
+
2165 }
+
2166 }
+
2167
+
2168 s = RegDeleteKey(m_h, szSubkey);
+
2169 if (s == ERROR_SUCCESS)
+
2170 return true;
+
2171 else {
+
2172 SetLastError(s);
+
2173 return false;
+
2174 }
+
2175 }
+
2176
+
2177 protected:
+
2183 void free_internal() noexcept override
+
2184 {
+
2185 RegCloseKey(m_h);
+
2186 }
+
2187 };
+
2188
+
2192 class security_id : public handle<PSID, NULL>
+
2193 {
+ +
2195
+
2196 public:
+ +
2203 {
+
2204 if (m_h != invalid)
+
2205 free_internal();
+
2206 }
+
2207
+
2208 protected:
+
2214 void free_internal() noexcept override
+
2215 {
+
2216 FreeSid(m_h);
+
2217 }
+
2218 };
+
2219
+
2223 class process_information : public PROCESS_INFORMATION
+
2224 {
+ + +
2227
+
2228 public:
+ +
2233 {
+
2234 hProcess = INVALID_HANDLE_VALUE;
+
2235 hThread = INVALID_HANDLE_VALUE;
+
2236 dwProcessId = 0;
+
2237 dwThreadId = 0;
+
2238 }
+
2239
+ +
2244 {
+
2245 #pragma warning(push)
+
2246 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
+
2247
+
2248 if (hProcess != INVALID_HANDLE_VALUE)
+
2249 CloseHandle(hProcess);
+
2250
+
2251 if (hThread != INVALID_HANDLE_VALUE)
+
2252 CloseHandle(hThread);
+
2253
+
2254 #pragma warning(pop)
+
2255 }
+
2256 };
+
2257
+
2259}
+
Activates given activation context in constructor and deactivates it in destructor.
Definition: Win.h:1834
+
actctx_activator(_In_ HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition: Win.h:1846
+
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition: Win.h:1857
+
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition: Win.h:1864
+
Base template class to support string formatting using printf() style templates.
Definition: Common.h:1502
+
Console control handler stack management.
Definition: Win.h:1907
+
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition: Win.h:1929
+
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition: Win.h:1937
+
console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept
Construct the console control handler object and pushes the given handler to the console control hand...
Definition: Win.h:1919
+
BOOL m_cookie
Did pushing the console control handler succeed?
Definition: Win.h:1936
+
Critical section wrapper.
Definition: Win.h:1525
+
CRITICAL_SECTION m_data
Critical section struct.
Definition: Win.h:1565
+
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition: Win.h:1549
+
critical_section()
Construct the object and initializes a critical section object.
Definition: Win.h:1535
+
Event handle wrapper.
Definition: Win.h:1480
+
bool create(_In_ BOOL bManualReset, _In_ BOOL bInitialState, _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes=NULL, _In_opt_z_ LPCTSTR lpName=NULL) noexcept
Creates or opens a named or unnamed event object.
Definition: Win.h:1491
+
bool open(_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_z_ LPCTSTR lpName) noexcept
Opens an existing named event object.
Definition: Win.h:1510
+
File handle wrapper.
Definition: Win.h:1454
+
bool create(_In_z_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_ DWORD dwCreationDisposition, _In_opt_ DWORD dwFlagsAndAttributes=FILE_ATTRIBUTE_NORMAL, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes=NULL, _In_opt_ HANDLE hTemplateFile=NULL) noexcept
Opens file handle.
Definition: Win.h:1465
+
Find-file handle wrapper.
Definition: Win.h:1572
+
virtual ~find_file()
Closes a file search handle.
Definition: Win.h:1581
+
void free_internal() noexcept override
Closes a file search handle.
Definition: Win.h:1612
+
bool find(_In_ LPCTSTR lpFileName, _Out_ LPWIN32_FIND_DATA lpFindFileData) noexcept
Searches a directory for a file or subdirectory with a name that matches a specific name (or partial ...
Definition: Win.h:1596
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
HMODULE handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
HeapAlloc allocator.
Definition: Win.h:1719
+
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:1728
+
_Ty value_type
A type that is managed by the allocator.
Definition: Win.h:1721
+
void deallocate(_In_ pointer ptr, _In_ size_type size)
Frees memory block.
Definition: Win.h:1779
+
void construct(_Inout_ pointer ptr, _In_ const _Ty &val)
Calls copying constructor for the element.
Definition: Win.h:1792
+
HANDLE m_heap
Heap handle.
Definition: Win.h:1827
+
ptrdiff_t difference_type
A signed integral type that can represent the difference between values of pointers to the type of ob...
Definition: Win.h:1729
+
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition: Win.h:1724
+
pointer allocate(_In_ size_type count)
Allocates a new memory block.
Definition: Win.h:1767
+
heap_allocator(_In_ const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition: Win.h:1756
+
size_type max_size() const
Returns maximum memory block size.
Definition: Win.h:1821
+
heap_allocator(_In_ HANDLE heap)
Constructs allocator.
Definition: Win.h:1746
+
void construct(_Inout_ pointer ptr, _Inout_ _Ty &&val)
Calls moving constructor for the element.
Definition: Win.h:1803
+
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition: Win.h:1726
+
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition: Win.h:1725
+
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition: Win.h:1723
+
void destroy(_Inout_ pointer ptr)
Calls destructor for the element.
Definition: Win.h:1813
+
Heap handle wrapper.
Definition: Win.h:1622
+
bool create(_In_ DWORD flOptions, _In_ SIZE_T dwInitialSize, _In_ SIZE_T dwMaximumSize) noexcept
Creates the heap.
Definition: Win.h:1646
+
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition: Win.h:1663
+
void free_internal() noexcept override
Destroys the heap.
Definition: Win.h:1707
+
virtual ~heap()
Destroys the heap.
Definition: Win.h:1631
+
Module handle wrapper.
Definition: Win.h:1378
+
void free_internal() noexcept override
Frees the module.
Definition: Win.h:1418
+
bool load(_In_z_ LPCTSTR lpFileName, __reserved handle_type hFile, _In_ DWORD dwFlags) noexcept
Loads the specified module into the address space of the calling process.
Definition: Win.h:1402
+
virtual ~library()
Frees the module.
Definition: Win.h:1387
+
PROCESS_INFORMATION struct wrapper.
Definition: Win.h:2224
+
~process_information()
Closes process and thread handles.
Definition: Win.h:2243
+
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition: Win.h:2232
+
Process handle wrapper.
Definition: Win.h:1428
+
bool open(_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwProcessId) noexcept
Opens process handle.
Definition: Win.h:1439
+
Registry wrapper class.
Definition: Win.h:2062
+
bool open(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired) noexcept
Opens the specified registry key.
Definition: Win.h:2115
+
bool delete_subkey(_In_z_ LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition: Win.h:2141
+
void free_internal() noexcept override
Closes a handle to the registry key.
Definition: Win.h:2183
+
bool create(_In_ HKEY hKey, _In_z_ LPCTSTR lpSubKey, _In_opt_ LPTSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes=NULL, _Out_opt_ LPDWORD lpdwDisposition=NULL) noexcept
Creates the specified registry key. If the key already exists, the function opens it.
Definition: Win.h:2086
+
virtual ~reg_key()
Closes a handle to the registry key.
Definition: Win.h:2071
+
SID wrapper class.
Definition: Win.h:2193
+
void free_internal() noexcept override
Closes a handle to the SID.
Definition: Win.h:2214
+
virtual ~security_id()
Closes a handle to the SID.
Definition: Win.h:2202
+
Lets the calling thread impersonate the security context of a logged-on user.
Definition: Win.h:1871
+
BOOL m_cookie
Did impersonation succeed?
Definition: Win.h:1900
+
user_impersonator(_In_opt_ HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition: Win.h:1883
+
virtual ~user_impersonator()
Reverts to current user and destructs the impersonator.
Definition: Win.h:1893
+
Memory in virtual address space of a process handle wrapper.
Definition: Win.h:1944
+
vmemory(_Inout_ vmemory &&h) noexcept
Move constructor.
Definition: Win.h:1972
+
void attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
Sets a new memory handle for the class.
Definition: Win.h:2011
+
void free_internal() noexcept override
Frees the memory.
Definition: Win.h:2049
+
vmemory & operator=(_Inout_ vmemory &&other) noexcept
Move assignment.
Definition: Win.h:1994
+
bool alloc(_In_ HANDLE hProcess, _In_opt_ LPVOID lpAddress, _In_ SIZE_T dwSize, _In_ DWORD flAllocationType, _In_ DWORD flProtect) noexcept
Reserves, commits, or changes the state of a region of memory within the virtual address space of a s...
Definition: Win.h:2028
+
virtual ~vmemory()
Frees the memory.
Definition: Win.h:1983
+
vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition: Win.h:1961
+
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition: Win.h:1951
+
HANDLE m_proc
Handle of memory's process.
Definition: Win.h:2055
+
Windows HANDLE wrapper class.
Definition: Win.h:1347
+
void free_internal() noexcept override
Closes an open object handle.
Definition: Win.h:1368
+
virtual ~win_handle()
Closes an open object handle.
Definition: Win.h:1356
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition: Common.h:61
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const HANDLE invalid
Invalid handle value.
Definition: Common.h:590
+
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition: Win.h:1736
+
heap_allocator< _Other > other
Other allocator type.
Definition: Win.h:1737
+
+ + + + diff --git a/_win_sock2_8h_source.html b/_win_sock2_8h_source.html new file mode 100644 index 00000000..e62277ca --- /dev/null +++ b/_win_sock2_8h_source.html @@ -0,0 +1,184 @@ + + + + + + + +WinStd: include/WinStd/WinSock2.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
WinSock2.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <WinSock2.h>
+
11#include <ws2def.h>
+
12#include <WS2tcpip.h>
+
13
+
14namespace winstd
+
15{
+
21
+ +
26 {
+
27 public:
+
34 ws2_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<int>(num, msg)
+
35 {
+
36 }
+
37
+
44 ws2_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<int>(num, msg)
+
45 {
+
46 }
+
47
+
53 ws2_runtime_error(_In_ const std::string& msg) : num_runtime_error<int>(WSAGetLastError(), msg)
+
54 {
+
55 }
+
56
+
62 ws2_runtime_error(_In_opt_z_ const char *msg = nullptr) : num_runtime_error<int>(WSAGetLastError(), msg)
+
63 {
+
64 }
+
65
+
71 tstring msg(_In_opt_ DWORD dwLanguageId = 0) const
+
72 {
+
73 tstring str;
+
74 if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, m_num, dwLanguageId, str, NULL)) {
+
75 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
+
76 str.erase(str.find_last_not_of(_T(" \t\n\r\f\v")) + 1);
+
77 } else
+
78 sprintf(str, m_num >= 0x10000 ? _T("Error 0x%X") : _T("Error %u"), m_num);
+
79 return str;
+
80 }
+
81 };
+
82
+
84
+
87
+
88#if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
+
89
+
93 class addrinfo : public handle<PADDRINFOT, NULL>
+
94 {
+ +
96
+
97 public:
+
103 bool get(
+
104 _In_opt_ PCTSTR pNodeName,
+
105 _In_opt_ PCTSTR pServiceName,
+
106 _In_opt_ const ADDRINFOT *pHints)
+
107 {
+
108 handle_type h;
+
109 if (GetAddrInfo(pNodeName, pServiceName, pHints, &h) == 0) {
+
110 attach(h);
+
111 return true;
+
112 } else
+
113 return false;
+
114 }
+
115
+
121 virtual ~addrinfo()
+
122 {
+
123 if (m_h != invalid)
+ +
125 }
+
126
+
127 protected:
+
133 void free_internal() noexcept override
+
134 {
+
135 FreeAddrInfo(m_h);
+
136 }
+
137 };
+
138
+
139#endif
+
140
+
142}
+
SID wrapper class.
Definition: WinSock2.h:94
+
void free_internal() noexcept override
Frees address information.
Definition: WinSock2.h:133
+
bool get(_In_opt_ PCTSTR pNodeName, _In_opt_ PCTSTR pServiceName, _In_opt_ const ADDRINFOT *pHints)
Provides protocol-independent translation from a host name to an address.
Definition: WinSock2.h:103
+
virtual ~addrinfo()
Frees address information.
Definition: WinSock2.h:121
+
Base abstract template class to support generic object handle keeping.
Definition: Common.h:580
+
PADDRINFOT handle_type
Datatype of the object handle this template class handles.
Definition: Common.h:585
+
void attach(_In_opt_ handle_type h) noexcept
Sets a new object handle for the class.
Definition: Common.h:794
+
handle_type m_h
Object handle.
Definition: Common.h:833
+
Numerical runtime error.
Definition: Common.h:1390
+
int error_type
Error number type.
Definition: Common.h:1392
+
error_type m_num
Numeric error code.
Definition: Common.h:1428
+
WinSock2 runtime error.
Definition: WinSock2.h:26
+
tstring msg(_In_opt_ DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition: WinSock2.h:71
+
ws2_runtime_error(_In_ const std::string &msg)
Constructs an exception using WSAGetLastError()
Definition: WinSock2.h:53
+
ws2_runtime_error(_In_ error_type num, _In_ const std::string &msg)
Constructs an exception.
Definition: WinSock2.h:34
+
ws2_runtime_error(_In_opt_z_ const char *msg=nullptr)
Constructs an exception using WSAGetLastError()
Definition: WinSock2.h:62
+
ws2_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
Constructs an exception.
Definition: WinSock2.h:44
+
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition: Common.h:311
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition: Common.h:138
+
static const PADDRINFOT invalid
Invalid handle value.
Definition: Common.h:590
+
+ + + + diff --git a/_win_trust_8h_source.html b/_win_trust_8h_source.html new file mode 100644 index 00000000..4b637e11 --- /dev/null +++ b/_win_trust_8h_source.html @@ -0,0 +1,128 @@ + + + + + + + +WinStd: include/WinStd/WinTrust.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
WinTrust.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2022 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
7#pragma once
+
8
+
9#include "Common.h"
+
10#include <WinTrust.h>
+
11
+
12namespace winstd
+
13{
+
19
+ +
24 {
+ + +
27
+
28 public:
+
32 wintrust(_In_opt_ HWND hwnd, _In_ const GUID &action, _Inout_ WINTRUST_DATA &wtd) :
+
33 m_hwnd(hwnd),
+
34 m_action(action),
+
35 m_wtd(wtd)
+
36 {
+
37 const LONG lResult = WinVerifyTrust(m_hwnd, &m_action, &m_wtd);
+
38 if (lResult != ERROR_SUCCESS)
+
39 throw win_runtime_error(lResult, "WinVerifyTrust failed.");
+
40 }
+
41
+
45 virtual ~wintrust()
+
46 {
+
47 m_wtd.dwStateAction = WTD_STATEACTION_CLOSE;
+
48 WinVerifyTrust(m_hwnd, &m_action, &m_wtd);
+
49 }
+
50
+
51 protected:
+
52 HWND m_hwnd;
+
53 GUID m_action;
+
54 WINTRUST_DATA &m_wtd;
+
55 };
+
56
+
58}
+
Windows runtime error.
Definition: Common.h:1435
+
WinTrust engine wrapper class.
Definition: WinTrust.h:24
+
wintrust(_In_opt_ HWND hwnd, _In_ const GUID &action, _Inout_ WINTRUST_DATA &wtd)
Initializes a new class instance.
Definition: WinTrust.h:32
+
virtual ~wintrust()
Destroys the WinTrust context.
Definition: WinTrust.h:45
+
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition: Common.h:53
+
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition: Common.h:61
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 00000000..05a9df76 --- /dev/null +++ b/annotated.html @@ -0,0 +1,162 @@ + + + + + + + +WinStd: Class List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nwinstd
 Cactctx_activatorActivates given activation context in constructor and deactivates it in destructor
 CaddrinfoSID wrapper class
 Cbasic_string_guidBase template class to support converting GUID to string
 Cbasic_string_msgBase template class to support string formatting using FormatMessage() style templates
 Cbasic_string_printfBase template class to support string formatting using printf() style templates
 CbstrBSTR string wrapper
 Ccert_chain_contextPCCERT_CHAIN_CONTEXT wrapper class
 Ccert_contextPCCERT_CONTEXT wrapper class
 Ccert_storeHCERTSTORE wrapper class
 Ccom_initializerContext scope automatic COM (un)initialization
 Ccom_objCOM object wrapper template
 Ccom_runtime_errorCOM runtime error
 Cconsole_ctrl_handlerConsole control handler stack management
 CCoTaskMemFree_deleteDeleter for unique_ptr using CoTaskMemFree
 CCredFree_deleteDeleter for unique_ptr using CredFree
 CCredFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using CredFree
 Ccritical_sectionCritical section wrapper
 Ccrypt_hashHCRYPTHASH wrapper class
 Ccrypt_keyHCRYPTKEY wrapper class
 Ccrypt_provHCRYPTPROV wrapper class
 Cdata_blobDATA_BLOB wrapper class
 CdcDevice context wrapper class
 Cdc_selectorContext scope DC object restorer
 CdplhandleBase abstract template class to support object handle keeping for objects that support handle duplication
 Ceap_attrEAP_ATTRIBUTE wrapper class
 Ceap_method_info_arrayEAP_METHOD_INFO_ARRAY wrapper class
 Ceap_method_propEAP_METHOD_PROPERTY wrapper class
 Ceap_packetEapPacket wrapper class
 Ceap_runtime_errorEapHost runtime error
 CEapHostPeerFreeEapError_deleteDeleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError
 CEapHostPeerFreeErrorMemory_deleteDeleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory
 CEapHostPeerFreeMemory_deleteDeleter for unique_ptr using EapHostPeerFreeMemory
 CEapHostPeerFreeRuntimeMemory_deleteDeleter for unique_ptr using EapHostPeerFreeRuntimeMemory
 CeventEvent handle wrapper
 Cevent_dataEVENT_DATA_DESCRIPTOR wrapper
 Cevent_fn_autoHelper class to write an event on entry/exit of scope
 Cevent_fn_auto_retHelper template to write an event on entry/exit of scope with one parameter (typically result)
 Cevent_providerETW event provider
 Cevent_recEVENT_RECORD wrapper
 Cevent_sessionETW session
 Cevent_traceETW trace
 Cevent_trace_enablerHelper class to enable event provider in constructor and disables it in destructor
 CfileFile handle wrapper
 Cfind_fileFind-file handle wrapper
 Cgdi_handleWindows HGDIOBJ wrapper class
 ChandleBase abstract template class to support generic object handle keeping
 CheapHeap handle wrapper
 Cheap_allocatorHeapAlloc allocator
 CrebindA structure that enables an allocator for objects of one type to allocate storage for objects of another type
 ClibraryModule handle wrapper
 CLocalFree_deleteDeleter for unique_ptr using LocalFree
 CLocalFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using LocalFree
 Cnum_runtime_errorNumerical runtime error
 CprocessProcess handle wrapper
 Cprocess_informationPROCESS_INFORMATION struct wrapper
 Cref_unique_ptrHelper class for returning pointers to std::unique_ptr
 Cref_unique_ptr< _Ty[], _Dx >Helper class for returning pointers to std::unique_ptr (specialization for arrays)
 Creg_keyRegistry wrapper class
 Csanitizing_allocatorAn allocator template that sanitizes each memory block before it is destroyed or reallocated
 CrebindConvert this type to sanitizing_allocator<_Other>
 Csanitizing_blobSanitizing BLOB
 Csec_buffer_descSecBufferDesc wrapper class
 Csec_contextPCtxtHandle wrapper class
 Csec_credentialsPCredHandle wrapper class
 Csec_runtime_errorSecurity runtime error
 Csecurity_idSID wrapper class
 Csetup_device_info_listHDEVINFO wrapper class
 Csetup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor
 Cstring_guidSingle-byte character implementation of a class to support converting GUID to string
 Cuser_impersonatorLets the calling thread impersonate the security context of a logged-on user
 CvariantVARIANT struct wrapper
 Cvector_queueHelper class to allow limited size FIFO queues implemented as vector of elements
 CvmemoryMemory in virtual address space of a process handle wrapper
 Cwin_handleWindows HANDLE wrapper class
 Cwin_runtime_errorWindows runtime error
 Cwindow_dcDevice context wrapper class
 CwintrustWinTrust engine wrapper class
 Cwlan_handleWLAN handle wrapper
 CWlanFreeMemory_deleteDeleter for unique_ptr using WlanFreeMemory
 CWlanFreeMemory_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using WlanFreeMemory
 Cws2_runtime_errorWinSock2 runtime error
 Cwstring_guidWide character implementation of a class to support converting GUID to string
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +WinStd: Class Index + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | L | N | P | R | S | U | V | W
+
+
+
A
+
actctx_activator (winstd)
addrinfo (winstd)
+
+
B
+
basic_string_guid (winstd)
basic_string_msg (winstd)
basic_string_printf (winstd)
bstr (winstd)
+
+
C
+
cert_chain_context (winstd)
cert_context (winstd)
cert_store (winstd)
com_initializer (winstd)
com_obj (winstd)
com_runtime_error (winstd)
console_ctrl_handler (winstd)
CoTaskMemFree_delete (winstd)
CredFree_delete (winstd)
CredFree_delete< _Ty[]> (winstd)
critical_section (winstd)
crypt_hash (winstd)
crypt_key (winstd)
crypt_prov (winstd)
+
+
D
+
data_blob (winstd)
dc (winstd)
dc_selector (winstd)
dplhandle (winstd)
+
+
E
+
eap_attr (winstd)
eap_method_info_array (winstd)
eap_method_prop (winstd)
eap_packet (winstd)
eap_runtime_error (winstd)
EapHostPeerFreeEapError_delete (winstd)
EapHostPeerFreeErrorMemory_delete (winstd)
EapHostPeerFreeMemory_delete (winstd)
EapHostPeerFreeRuntimeMemory_delete (winstd)
event (winstd)
event_data (winstd)
event_fn_auto (winstd)
event_fn_auto_ret (winstd)
event_provider (winstd)
event_rec (winstd)
event_session (winstd)
event_trace (winstd)
event_trace_enabler (winstd)
+
+
F
+
file (winstd)
find_file (winstd)
+
+
G
+
gdi_handle (winstd)
+
+
H
+
handle (winstd)
heap (winstd)
heap_allocator (winstd)
+
+
L
+
library (winstd)
LocalFree_delete (winstd)
LocalFree_delete< _Ty[]> (winstd)
+
+
N
+
num_runtime_error (winstd)
+
+
P
+
process (winstd)
process_information (winstd)
+
+
R
+
heap_allocator::rebind (winstd)
sanitizing_allocator::rebind (winstd)
ref_unique_ptr (winstd)
ref_unique_ptr< _Ty[], _Dx > (winstd)
reg_key (winstd)
+
+
S
+
sanitizing_allocator (winstd)
sanitizing_blob (winstd)
sec_buffer_desc (winstd)
sec_context (winstd)
sec_credentials (winstd)
sec_runtime_error (winstd)
security_id (winstd)
setup_device_info_list (winstd)
setup_driver_info_list_builder (winstd)
string_guid (winstd)
+
+
U
+
user_impersonator (winstd)
+
+
V
+
variant (winstd)
vector_queue (winstd)
vmemory (winstd)
+
+
W
+
win_handle (winstd)
win_runtime_error (winstd)
window_dc (winstd)
wintrust (winstd)
wlan_handle (winstd)
WlanFreeMemory_delete (winstd)
WlanFreeMemory_delete< _Ty[]> (winstd)
ws2_runtime_error (winstd)
wstring_guid (winstd)
+
+
+ + + + diff --git a/classwinstd_1_1actctx__activator-members.html b/classwinstd_1_1actctx__activator-members.html new file mode 100644 index 00000000..9eaa1778 --- /dev/null +++ b/classwinstd_1_1actctx__activator-members.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::actctx_activator Member List
+
+
+ +

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

+ + + + +
actctx_activator(_In_ HANDLE hActCtx) noexceptwinstd::actctx_activatorinline
m_cookiewinstd::actctx_activatorprotected
~actctx_activator()winstd::actctx_activatorinlinevirtual
+ + + + diff --git a/classwinstd_1_1actctx__activator.html b/classwinstd_1_1actctx__activator.html new file mode 100644 index 00000000..092135ca --- /dev/null +++ b/classwinstd_1_1actctx__activator.html @@ -0,0 +1,174 @@ + + + + + + + +WinStd: winstd::actctx_activator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::actctx_activator Class Reference
+
+
+ +

Activates given activation context in constructor and deactivates it in destructor. + More...

+ +

#include <Win.h>

+ + + + + + + + +

+Public Member Functions

 actctx_activator (_In_ HANDLE hActCtx) noexcept
 Construct the activator and activates the given activation context. More...
 
virtual ~actctx_activator ()
 Deactivates activation context and destructs the activator. More...
 
+ + + + +

+Protected Attributes

+ULONG_PTR m_cookie
 Cookie for context deactivation.
 
+

Detailed Description

+

Activates given activation context in constructor and deactivates it in destructor.

+

Constructor & Destructor Documentation

+ +

◆ actctx_activator()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::actctx_activator::actctx_activator (_In_ HANDLE hActCtx)
+
+inlinenoexcept
+
+ +

Construct the activator and activates the given activation context.

+
Parameters
+ + +
[in]hActCtxActivation context
+
+
+
See also
ActivateActCtx function
+ +
+
+ +

◆ ~actctx_activator()

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

Deactivates activation context and destructs the activator.

+
See also
DeactivateActCtx function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1addrinfo-members.html b/classwinstd_1_1addrinfo-members.html new file mode 100644 index 00000000..cd81f9df --- /dev/null +++ b/classwinstd_1_1addrinfo-members.html @@ -0,0 +1,107 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::addrinfo Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< PADDRINFOT, NULL >inline
detach()winstd::handle< PADDRINFOT, NULL >inline
free()winstd::handle< PADDRINFOT, NULL >inline
free_internal() noexcept overridewinstd::addrinfoinlineprotectedvirtual
get(_In_opt_ PCTSTR pNodeName, _In_opt_ PCTSTR pServiceName, _In_opt_ const ADDRINFOT *pHints)winstd::addrinfoinline
handle() noexceptwinstd::handle< PADDRINFOT, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< PADDRINFOT, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PADDRINFOT, NULL >inline
handle_type typedefwinstd::handle< PADDRINFOT, NULL >
invalidwinstd::handle< PADDRINFOT, NULL >static
m_hwinstd::handle< PADDRINFOT, NULL >protected
operator handle_type() constwinstd::handle< PADDRINFOT, NULL >inline
operator!() constwinstd::handle< PADDRINFOT, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< PADDRINFOT, NULL >inline
operator&()winstd::handle< PADDRINFOT, NULL >inline
operator*() constwinstd::handle< PADDRINFOT, NULL >inline
operator->() constwinstd::handle< PADDRINFOT, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< PADDRINFOT, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< PADDRINFOT, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< PADDRINFOT, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PADDRINFOT, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< PADDRINFOT, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< PADDRINFOT, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< PADDRINFOT, NULL >inline
~addrinfo()winstd::addrinfoinlinevirtual
+ + + + diff --git a/classwinstd_1_1addrinfo.html b/classwinstd_1_1addrinfo.html new file mode 100644 index 00000000..1b05003e --- /dev/null +++ b/classwinstd_1_1addrinfo.html @@ -0,0 +1,304 @@ + + + + + + + +WinStd: winstd::addrinfo Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

SID wrapper class. + More...

+ +

#include <WinSock2.h>

+
+Inheritance diagram for winstd::addrinfo:
+
+
+ + +winstd::handle< PADDRINFOT, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool get (_In_opt_ PCTSTR pNodeName, _In_opt_ PCTSTR pServiceName, _In_opt_ const ADDRINFOT *pHints)
 Provides protocol-independent translation from a host name to an address. More...
 
virtual ~addrinfo ()
 Frees address information. More...
 
- Public Member Functions inherited from winstd::handle< PADDRINFOT, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Frees address information. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< PADDRINFOT, NULL >
+typedef PADDRINFOT handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< PADDRINFOT, NULL >
+static const PADDRINFOT invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< PADDRINFOT, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

SID wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~addrinfo()

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

Frees address information.

+
See also
FreeAddrInfoW function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::addrinfo::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Frees address information.

+
See also
FreeAddrInfoW function
+ +

Implements winstd::handle< PADDRINFOT, NULL >.

+ +
+
+ +

◆ get()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::addrinfo::get (_In_opt_ PCTSTR pNodeName,
_In_opt_ PCTSTR pServiceName,
_In_opt_ const ADDRINFOT * pHints 
)
+
+inline
+
+ +

Provides protocol-independent translation from a host name to an address.

+
See also
GetAddrInfoW function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1addrinfo.png b/classwinstd_1_1addrinfo.png new file mode 100644 index 0000000000000000000000000000000000000000..42d404fc2cfc464a8d37b24cda2a444ef95295f1 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^uYov#gBeJkzgZLrq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ05*i3-RPS=`}CSWoU3~mCf%*M*>;gZbhTmaMAObIO9QQ6>#vS;_uu=UV|CQe zP3@CA^w|B+^xZlhvTR!D*^Tpe+pV@-fBVtYeR`{BZIQnI=%nQ9yQ_{@eSdOd*SFcV zd+M|HNOI|{ua+~Zd z*00rGG`HP5tY%Jo@5|56w;r7Jz2M~GuWaX~6OC=pA8z|vu|I6hHzw;l=f5^QV>1)~ zb^l$s;6(l4?_J`8FJFsC#=HDIyQ8aP&w>O|!H>(q#KDN=nX`@w9C%*JEaAeu@m}8J z1AIrU7V|M%3uQk^Wa#G#V*rLHvAAKo*3v0#f}9B)tlACsAiTGAtDMpHXyefJQ%=q? zW7NCi{^*xYcKu$4f5GCL^qB9O+CM*T_2E-Y-nONi&TsiPW#3!(`pWGm${5679BhOa;EexAl>T{%c^{K<{lmBh4lz6aObPdBl5hym1$oA6gU08qaqXF0cbyKec P(;tJUtDnm{r-UW|{=iRK literal 0 HcmV?d00001 diff --git a/classwinstd_1_1basic__string__guid-members.html b/classwinstd_1_1basic__string__guid-members.html new file mode 100644 index 00000000..37eaaf49 --- /dev/null +++ b/classwinstd_1_1basic__string__guid-members.html @@ -0,0 +1,83 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::basic_string_guid< _Elem, _Traits, _Ax > Member List
+
+
+ +

This is the complete list of members for winstd::basic_string_guid< _Elem, _Traits, _Ax >, including all inherited members.

+ + +
basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)winstd::basic_string_guid< _Elem, _Traits, _Ax >inline
+ + + + diff --git a/classwinstd_1_1basic__string__guid.html b/classwinstd_1_1basic__string__guid.html new file mode 100644 index 00000000..418e3ad5 --- /dev/null +++ b/classwinstd_1_1basic__string__guid.html @@ -0,0 +1,154 @@ + + + + + + + +WinStd: winstd::basic_string_guid< _Elem, _Traits, _Ax > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::basic_string_guid< _Elem, _Traits, _Ax > Class Template Reference
+
+
+ +

Base template class to support converting GUID to string. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::basic_string_guid< _Elem, _Traits, _Ax >:
+
+
+ +
+ + + + + + +

+Public Member Functions

Initializing string using template in memory
 basic_string_guid (_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)
 Initializes a new string and formats its contents to string representation of given GUID. More...
 
+

Detailed Description

+
template<class _Elem, class _Traits, class _Ax>
+class winstd::basic_string_guid< _Elem, _Traits, _Ax >

Base template class to support converting GUID to string.

+

Constructor & Destructor Documentation

+ +

◆ basic_string_guid()

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::basic_string_guid< _Elem, _Traits, _Ax >::basic_string_guid (_In_ const GUID & guid,
_In_z_ _Printf_format_string_ const _Elem * format 
)
+
+inline
+
+ +

Initializes a new string and formats its contents to string representation of given GUID.

+
Parameters
+ + + +
[in]guidGUID to convert
[in]formatA printf() syntax template to convert GUID to string (i.e. "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1basic__string__guid.png b/classwinstd_1_1basic__string__guid.png new file mode 100644 index 0000000000000000000000000000000000000000..c10780b3b2e53c99371be7da0532ab594fd8bf0a GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0y~yU{nCI12~w0WFJSwaUdlT;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|zz|hjR^(>gjGJA$@uplrVd?uLg z=k#Z`U0i!_@8@UX8|)Um`o((nZc6dPT<1#$=ak=s-DKFxnsMXfj+p(AHf{b~x_|Sz z%exM)V>|2UeQCwBIy(=~SywMDH{RjCrShmAqipM@?S;#BHS9V2_2Rb`?-+U`YF|fP zK7PKuV_Vmj;##o`@y0JdH%)f*w!g(>k}^9!`A=+}QnOFiV#cb7<}`=jrY{T??(bRs zg7=?$)`ddo-2y72mtAmW4eoyV&2L^3pFl+-H*A z+UKY3=6qbZY>i&&nY!P1D#oUc!OvKrj;%$CL&JpgS8JI5`w9aJ_i+ z|K}~{D#o4r?pZfiDlX_TE!MgK8ua5dvUywhsV5xjAqg3qfXLSPE zY(FnrOnscm8x>P!nxPpe4NfC99#gpPuXOY?Ic{sYJ3@AC_tl0!dS+8Sm;1{8-<4K& z^XRRkR@RrR^xlcSmg>L0(#FA0ocV`Z + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::basic_string_msg< _Elem, _Traits, _Ax > Member List
+
+
+ +

This is the complete list of members for winstd::basic_string_msg< _Elem, _Traits, _Ax >, including all inherited members.

+ + + + + + + + +
basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format,...)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)winstd::basic_string_msg< _Elem, _Traits, _Ax >inline
+ + + + diff --git a/classwinstd_1_1basic__string__msg.html b/classwinstd_1_1basic__string__msg.html new file mode 100644 index 00000000..d4fecfd1 --- /dev/null +++ b/classwinstd_1_1basic__string__msg.html @@ -0,0 +1,498 @@ + + + + + + + +WinStd: winstd::basic_string_msg< _Elem, _Traits, _Ax > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::basic_string_msg< _Elem, _Traits, _Ax > Class Template Reference
+
+
+ +

Base template class to support string formatting using FormatMessage() style templates. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::basic_string_msg< _Elem, _Traits, _Ax >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 basic_string_msg (_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)
 Initializes a new string and formats its contents using FormatMessage() style. More...
 
 basic_string_msg (_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)
 Initializes a new string and formats its contents using FormatMessage() style. More...
 
 basic_string_msg (_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)
 Initializes a new string and formats its contents using FormatMessage() style. More...
 
 basic_string_msg (_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)
 Initializes a new string and formats its contents using FormatMessage() style. More...
 
Initializing string using template in memory
 basic_string_msg (_In_z_ _FormatMessage_format_string_ const _Elem *format,...)
 Initializes a new string and formats its contents using FormatMessage() style template. More...
 
Initializing string using template in resources
 basic_string_msg (_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)
 Initializes a new string and formats its contents using FormatMessage() style template in resources. More...
 
 basic_string_msg (_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)
 Initializes a new string and formats its contents using FormatMessage() style template in resources. More...
 
+

Detailed Description

+
template<class _Elem, class _Traits, class _Ax>
+class winstd::basic_string_msg< _Elem, _Traits, _Ax >

Base template class to support string formatting using FormatMessage() style templates.

+

Constructor & Destructor Documentation

+ +

◆ basic_string_msg() [1/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_z_ _FormatMessage_format_string_ const _Elem * format,
 ... 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style template.

+
Parameters
+ + +
[in]formatString template using FormatMessage() style
+
+
+ +
+
+ +

◆ basic_string_msg() [2/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_ HINSTANCE hInstance,
_In_ UINT nFormatID,
 ... 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style template in resources.

+
Parameters
+ + + +
[in]hInstanceResource module handle
[in]nFormatIDResource ID of the string template using FormatMessage() style
+
+
+ +
+
+ +

◆ basic_string_msg() [3/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_ HINSTANCE hInstance,
_In_ WORD wLanguageID,
_In_ UINT nFormatID,
 ... 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style template in resources.

+
Parameters
+ + + + +
[in]hInstanceResource module handle
[in]wLanguageIDResource language
[in]nFormatIDResource ID of the string template using FormatMessage() style
+
+
+ +
+
+ +

◆ basic_string_msg() [4/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_ DWORD dwFlags,
_In_opt_ LPCVOID lpSource,
_In_ DWORD dwMessageId,
_In_ DWORD dwLanguageId,
_In_opt_ va_list * Arguments 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style.

+
See also
FormatMessage function
+ +
+
+ +

◆ basic_string_msg() [5/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_ DWORD dwFlags,
_In_opt_ LPCVOID lpSource,
_In_ DWORD dwMessageId,
_In_ DWORD dwLanguageId,
_In_opt_ DWORD_PTR * Arguments 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style.

+
See also
FormatMessage function
+ +
+
+ +

◆ basic_string_msg() [6/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_ DWORD dwFlags,
_In_z_ LPCTSTR pszFormat,
_In_opt_ va_list * Arguments 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style.

+
See also
FormatMessage function
+ +
+
+ +

◆ basic_string_msg() [7/7]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_msg< _Elem, _Traits, _Ax >::basic_string_msg (_In_ DWORD dwFlags,
_In_z_ LPCTSTR pszFormat,
_In_opt_ DWORD_PTR * Arguments 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using FormatMessage() style.

+
See also
FormatMessage function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1basic__string__msg.png b/classwinstd_1_1basic__string__msg.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4c960ff09c5b87bb0b5d16da8cf1859fae6a59 GIT binary patch literal 1090 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y&012~w0mD^R(yIkp@eN9Y@dT7#e>*prSc($?yYd2B=at%)cxsPRjv7PABxvL-#F{( z^6SB2?;;Kyf8U(w7=3wCOt$EfTdy@^W#6h~F59EaX!`9$@T9a;Gg50jZ#@d?_k3IU zZ&GH(u8q6P<9@HYdOdh|oknSKPHaV{ht#}c#@&Ht-#)a>Q@mfep>B`r`p>2F!>?bS z6<7Z4Oz^ZN6R-W<(=*BBve$C%9U@z{?{u;~{_)0f3*T7VxU9c1)q&wvZY%3bY)>9P zFWywvmzMrm=TuYXm#v$EZBNT?S(?7WveY^Q;6=NpZ)GevnH(|X>t+M^rohmQw6~1}| zdAypqWCAR(?Y_>KshXC?$FRSXzk%g|@>d3znwll@4GmYA1wLk~|7G~GM6N-7iA=); zpunUm2B#o?2ai{b9G@N90$Q|MS<|&TV}3 z>(^=Rf;&pmvRAp&y&gv%etv&l+ntNd4?b)=wCCy1W4~ghR>=SVCnmS9`~UH#sq^Ff z|5hBEGVSoJt;@Wp>%RFBR4r-mR&~l^t>yuTxdCS%7?#asIp8C?xrg82!E3`A^3U~q z9!jd!?fZPoy#45jKZWx=moM*&p3T&=MQ@KxdzpVHw=TGzNB{tXe4xjz{xB3N>7R{fSwHNbfEvTkb+gl^&6vsihp|Fw#cYY%O+SDcp25@A&t;ucLK6UK CkQqb( literal 0 HcmV?d00001 diff --git a/classwinstd_1_1basic__string__printf-members.html b/classwinstd_1_1basic__string__printf-members.html new file mode 100644 index 00000000..5572bf0f --- /dev/null +++ b/classwinstd_1_1basic__string__printf-members.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::basic_string_printf< _Elem, _Traits, _Ax > Member List
+
+
+ +

This is the complete list of members for winstd::basic_string_printf< _Elem, _Traits, _Ax >, including all inherited members.

+ + + + +
basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format,...)winstd::basic_string_printf< _Elem, _Traits, _Ax >inline
basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)winstd::basic_string_printf< _Elem, _Traits, _Ax >inline
basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)winstd::basic_string_printf< _Elem, _Traits, _Ax >inline
+ + + + diff --git a/classwinstd_1_1basic__string__printf.html b/classwinstd_1_1basic__string__printf.html new file mode 100644 index 00000000..f5db2c14 --- /dev/null +++ b/classwinstd_1_1basic__string__printf.html @@ -0,0 +1,273 @@ + + + + + + + +WinStd: winstd::basic_string_printf< _Elem, _Traits, _Ax > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::basic_string_printf< _Elem, _Traits, _Ax > Class Template Reference
+
+
+ +

Base template class to support string formatting using printf() style templates. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::basic_string_printf< _Elem, _Traits, _Ax >:
+
+
+ +
+ + + + + + + + + + + + + +

+Public Member Functions

Initializing string using template in memory
 basic_string_printf (_In_z_ _Printf_format_string_ const _Elem *format,...)
 Initializes a new string and formats its contents using printf() style template. More...
 
Initializing string using template in resources
 basic_string_printf (_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)
 Initializes a new string and formats its contents using printf() style template in resources. More...
 
 basic_string_printf (_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)
 Initializes a new string and formats its contents using printf() style template in resources. More...
 
+

Detailed Description

+
template<class _Elem, class _Traits, class _Ax>
+class winstd::basic_string_printf< _Elem, _Traits, _Ax >

Base template class to support string formatting using printf() style templates.

+

Constructor & Destructor Documentation

+ +

◆ basic_string_printf() [1/3]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::basic_string_printf< _Elem, _Traits, _Ax >::basic_string_printf (_In_z_ _Printf_format_string_ const _Elem * format,
 ... 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using printf() style template.

+
Parameters
+ + +
[in]formatString template using printf() style
+
+
+ +
+
+ +

◆ basic_string_printf() [2/3]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_printf< _Elem, _Traits, _Ax >::basic_string_printf (_In_ HINSTANCE hInstance,
_In_ UINT nFormatID,
 ... 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using printf() style template in resources.

+
Parameters
+ + + +
[in]hInstanceResource module handle
[in]nFormatIDResource ID of the string template using printf() style
+
+
+ +
+
+ +

◆ basic_string_printf() [3/3]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
winstd::basic_string_printf< _Elem, _Traits, _Ax >::basic_string_printf (_In_ HINSTANCE hInstance,
_In_ WORD wLanguageID,
_In_ UINT nFormatID,
 ... 
)
+
+inline
+
+ +

Initializes a new string and formats its contents using printf() style template in resources.

+
Parameters
+ + + + +
[in]hInstanceResource module handle
[in]wLanguageIDResource language
[in]nFormatIDResource ID of the string template using printf() style
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1basic__string__printf.png b/classwinstd_1_1basic__string__printf.png new file mode 100644 index 0000000000000000000000000000000000000000..7928c94ec8d309a9c8924d654a43ccc09f012e84 GIT binary patch literal 1100 zcmeAS@N?(olHy`uVBq!ia0y~yU{nRN12~w0WQOA8W*{XI;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|zEx2A zIq^oNOC_B?pIaUO=GQc@%d;cPXKdxnmzcDxXkGH<)3esPdf(mf+wOLr{$cC*?T53Y zcJ*!AIsMp7?;!u&x)@(isg=?zIU_!8sd=<)TA%cm-ojP8rtJ~j7Mxe>I<0DZUCGWj zzt3~e6U)zkZW4ROH|_GfIaBwRoDB1xwyXB}ed~W3_qR>=S+z8(szSea+O_vfk5Bva z;n}M7+8_2+zqBw*@6%rTY==>%{c+yw**9G#+k~9IIdl8EZ+C^mC&kX(^Lqbw6;E!R zc@~~k=I5>JA|BTo|8}4DP1Z2~*Dm8lQg0J`oZ~sBFOjt0I(?r-j^{78x(`P@FV#Cm zObi_9HC|r64BMBeHq0nt5tulQ zK?x}962;Wv;mshJ$*G{E%jg1>?ASty#LwQ+^{%|HKF#awUoo6Yn(pSw#PbkFWJIVZDVIbY%&pxJjld=LEmeeP1_tQha(J2R5oguknL z-#eJG{LZf~ov(S%J0I>cJHG$erAlj);zGa6srx2R+_vrh*6DiRe@|MvFjoK0{F9~n zXT?h+ZY}?QX{qP)xFTKMyWah}KOf$mw)0zEI%*mTPtUw`y6|x?Pr=fi)6eZGjaB@9 z#5D8d>EwB;>c<&tg#UIjSFrQnt`hr~=KVYC{Omj7dtKI+$!@(Rcg*6;(hu+Ndf%O} yuU49Q&msOf77hP + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::bstr Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< BSTR, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< BSTR, NULL >inline
bstr(_In_ LPCOLESTR src) noexceptwinstd::bstrinline
bstr(_In_ LPCOLESTR src, _In_ UINT len) noexceptwinstd::bstrinline
bstr(_In_ const std::basic_string< wchar_t, _Traits, _Ax > &src) noexceptwinstd::bstrinline
detach()winstd::handle< BSTR, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< BSTR, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< BSTR, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< BSTR, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< BSTR, NULL >inline
duplicate() constwinstd::dplhandle< BSTR, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::bstrinlineprotectedvirtual
free()winstd::handle< BSTR, INVAL >inline
free_internal() noexcept overridewinstd::bstrinlineprotectedvirtual
handle() noexceptwinstd::handle< BSTR, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< BSTR, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< BSTR, INVAL >inline
handle_type typedefwinstd::handle< BSTR, INVAL >
invalidwinstd::handle< BSTR, INVAL >static
length() const noexceptwinstd::bstrinline
m_hwinstd::handle< BSTR, INVAL >protected
operator handle_type() constwinstd::handle< BSTR, INVAL >inline
operator!() constwinstd::handle< BSTR, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< BSTR, INVAL >inline
operator&()winstd::handle< BSTR, INVAL >inline
operator*() constwinstd::handle< BSTR, INVAL >inline
operator->() constwinstd::handle< BSTR, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< BSTR, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< BSTR, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< BSTR, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< BSTR, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< BSTR, NULL >inline
handle< BSTR, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< BSTR, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< BSTR, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< BSTR, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< BSTR, INVAL >inline
~bstr()winstd::bstrinlinevirtual
+ + + + diff --git a/classwinstd_1_1bstr.html b/classwinstd_1_1bstr.html new file mode 100644 index 00000000..2280f4d8 --- /dev/null +++ b/classwinstd_1_1bstr.html @@ -0,0 +1,374 @@ + + + + + + + +WinStd: winstd::bstr Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

BSTR string wrapper. + More...

+ +

#include <COM.h>

+
+Inheritance diagram for winstd::bstr:
+
+
+ + +winstd::dplhandle< BSTR, NULL > +winstd::handle< BSTR, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bstr (_In_ LPCOLESTR src) noexcept
 Constructs BSTR from OLE string.
 
bstr (_In_ LPCOLESTR src, _In_ UINT len) noexcept
 Constructs BSTR from OLE string with length.
 
+template<class _Traits , class _Ax >
 bstr (_In_ const std::basic_string< wchar_t, _Traits, _Ax > &src) noexcept
 Constructs BSTR from std::basic_string.
 
virtual ~bstr ()
 Destroys the string. More...
 
UINT length () const noexcept
 Returns the length of the string. More...
 
- Public Member Functions inherited from winstd::dplhandle< BSTR, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< BSTR, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the string. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the string. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< BSTR, INVAL >
+typedef BSTR handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< BSTR, INVAL >
+static const BSTR invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< BSTR, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

BSTR string wrapper.

+

Constructor & Destructor Documentation

+ +

◆ ~bstr()

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

Destroys the string.

+
See also
SysFreeString function
+ +
+
+

Member Function Documentation

+ +

◆ duplicate_internal()

+ +
+
+ + + + + +
+ + + + + + + + +
handle_type winstd::bstr::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the string.

+
Parameters
+ + +
[in]hExisting string
+
+
+
Returns
Duplicated string
+
See also
SysAllocString function
+ +

Implements winstd::dplhandle< BSTR, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::bstr::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the string.

+
See also
SysFreeString function
+ +

Implements winstd::handle< BSTR, INVAL >.

+ +
+
+ +

◆ length()

+ +
+
+ + + + + +
+ + + + + + + +
UINT winstd::bstr::length () const
+
+inlinenoexcept
+
+ +

Returns the length of the string.

+
See also
SysStringLen function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1bstr.png b/classwinstd_1_1bstr.png new file mode 100644 index 0000000000000000000000000000000000000000..0c227ad0216f6fe7ecb04b1c076394aee43a91ff GIT binary patch literal 1037 zcmeAS@N?(olHy`uVBq!ia0vp^r-8VGgBeKHy?lQdNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~&+&9|45?szJNNaaR|-6?;;t%-bR*bufF$T*3-TF=cK&kDV+bbcmJCW zD$?48IVJ~6ChUA&DD(RLbZ6)4!nGogr!JA5x$}FxTeN4DzP66|f*Y3Np1*?5DS3W- zqBAMQzkA~miN{h*KlbJ^bZ00|yPYdLqc!54#_0oVjyx*lIk0FB>w$U1;|Km-hR0l8 zrYunf8xFF?WHXCruGiCbyTsn@EIjag+lIeIYNGFF2HmY!^ABEb{o~Q^;-9RiHyn8x zIKw{a=B)WuJST5|yRpT6S!CVq<*(>3E2n?=#_nMrUkEjy*l&l@o#6(x=SDTc>l5I^7Hr2Q{xZC4C==g7Q1 zUH$(<*u*9JUmxBPi?o}2>&Z@!OYFa9xK8Rh8L4t|-W=CSZ(g1gO76+#c<_A}qt2q% zh`jBk31Ue*7wa%@7V183$k1IR#!yW>Zm`#E5fBq(OyIQSZm#B5^rRk9X&*0=+vTOr}r6qu;IY zeq37i&3oGOKKTt(+$QUsuiyV|;~m}l9L67R*N<*YoBewA=Sf%e9cKUIpO)gL+V?c% xaReLlkGQ(`%r_=)W`N_%WyP%mhlGBy+sXtykzC+57npY$JYD@<);T3K0RSY^0jmH2 literal 0 HcmV?d00001 diff --git a/classwinstd_1_1cert__chain__context-members.html b/classwinstd_1_1cert__chain__context-members.html new file mode 100644 index 00000000..410a90de --- /dev/null +++ b/classwinstd_1_1cert__chain__context-members.html @@ -0,0 +1,116 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::cert_chain_context Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
create(_In_opt_ HCERTCHAINENGINE hChainEngine, _In_ PCCERT_CONTEXT pCertContext, _In_opt_ LPFILETIME pTime, _In_opt_ HCERTSTORE hAdditionalStore, _In_ PCERT_CHAIN_PARA pChainPara, _In_ DWORD dwFlags, __reserved LPVOID pvReserved=NULL) noexceptwinstd::cert_chain_contextinline
detach()winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
duplicate() constwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::cert_chain_contextinlineprotectedvirtual
free()winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
free_internal() noexcept overridewinstd::cert_chain_contextinlineprotectedvirtual
handle() noexceptwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
handle_type typedefwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >
invalidwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >static
m_hwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >protected
operator handle_type() constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator!() constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator&()winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator*() constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator->() constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >inline
handle< PCCERT_CHAIN_CONTEXT, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >inline
~cert_chain_context()winstd::cert_chain_contextinlinevirtual
+ + + + diff --git a/classwinstd_1_1cert__chain__context.html b/classwinstd_1_1cert__chain__context.html new file mode 100644 index 00000000..195d044a --- /dev/null +++ b/classwinstd_1_1cert__chain__context.html @@ -0,0 +1,407 @@ + + + + + + + +WinStd: winstd::cert_chain_context Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::cert_chain_context Class Reference
+
+
+ +

PCCERT_CHAIN_CONTEXT wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::cert_chain_context:
+
+
+ + +winstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL > +winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~cert_chain_context ()
 Destroys the certificate chain context. More...
 
bool create (_In_opt_ HCERTCHAINENGINE hChainEngine, _In_ PCCERT_CONTEXT pCertContext, _In_opt_ LPFILETIME pTime, _In_opt_ HCERTSTORE hAdditionalStore, _In_ PCERT_CHAIN_PARA pChainPara, _In_ DWORD dwFlags, __reserved LPVOID pvReserved=NULL) noexcept
 Creates the certificate chain context. More...
 
- Public Member Functions inherited from winstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the certificate chain context. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the certificate chain context. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >
+typedef PCCERT_CHAIN_CONTEXT handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >
+static const PCCERT_CHAIN_CONTEXT invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

PCCERT_CHAIN_CONTEXT wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~cert_chain_context()

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

Destroys the certificate chain context.

+
See also
CertFreeCertificateChain function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::cert_chain_context::create (_In_opt_ HCERTCHAINENGINE hChainEngine,
_In_ PCCERT_CONTEXT pCertContext,
_In_opt_ LPFILETIME pTime,
_In_opt_ HCERTSTORE hAdditionalStore,
_In_ PCERT_CHAIN_PARA pChainPara,
_In_ DWORD dwFlags,
__reserved LPVOID pvReserved = NULL 
)
+
+inlinenoexcept
+
+ +

Creates the certificate chain context.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
CertGetCertificateChain function
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+ + + + + +
+ + + + + + + + +
handle_type winstd::cert_chain_context::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the certificate chain context.

+
Parameters
+ + +
[in]hObject handle of existing certificate chain context
+
+
+
Returns
Duplicated certificate chain context handle
+
See also
CertDuplicateCertificateContext function
+ +

Implements winstd::dplhandle< PCCERT_CHAIN_CONTEXT, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::cert_chain_context::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the certificate chain context.

+
See also
CertFreeCertificateChain function
+ +

Implements winstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1cert__chain__context.png b/classwinstd_1_1cert__chain__context.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a5b25f442bf298d7e2bef19c805763023e76a2 GIT binary patch literal 1623 zcmcJQX;70#9L8U;$|1*Sv?zkH8XQ3oK^qJZs0zh!LZ;nR005|CPTAl9K*33_?T_>sXxJDp zg3Fi6S8-TZK)z|cb+@^h0>DNI#^$)&HHFDcDeJ9)+NJ~sWpM?*KrjLCr9EpCVHnk3 zNu+?o8}HPQWKfbR0*z!n{p82L#W-PR_Y&=yT7Is~T4j(q(i{gN@~l})i$a#{=3Lp; zwS4!L=A4mLZyC=<&Cjc8UNoTbYVuJ`%JpE1WTAR9ca@4~9=&uW#9U~Y+ie?9ro%7p zXkyhYwm(1pz+_&7p1yM|KND$yp=<&J#A z1nHFiq!-0LV;+}LnTJq6Tfs)q9E(0?^{|J6d2jDR!=o9H3#rwBx#)jZiWy^^QDxuD zSJ5SfLa8H1OHmTY3H-KR9oZr>ed2Ml?Mm6CBT<7dEUTIgzc9DZ$bwkycA!ID_K&^U zAPtFk=6Skz6hVHeSs*C3Ai3iEj#?E$qxBwzAhPntuRl|*i;F+Z+wsp+%*dV~cixrK zX}DJ}vE?BYU5gS^eZ-xG&_jp&Xnt&M0M9L0U_1iFLxG$gw3vG{&@`=m1P(`dm$ChGShYnRGwuzZu zYhsB$#`~YrUrb&s-^`o5|5N=e3%NdikVU8609CwI}U zvcT*T4{UzI)`7*kkg#oGuFkvPe8L>z_G=Sw|B~2(M>47QX#C`{_ zb%^}X>OQ^OJ-sC2(x<`Yh}?L{gdFmwV1ZPElCbiie#c-zQV!+^I|?t9^pa4?dMPBT z&<(w3SDv-4ibTBLTMxRc%R@<_c|%>If>v@E$5=d0v|59PEy-A*OR+}8?S}I#C7wZ6 zpo0ZNc>a|gbrl1uOuQPnYR&O2;My{Z!2`QQ&5;ZCr`zF$)|sf9SsFK%&Ietho6Jwt z3kZ|lU6Qh|!$?;Cf<8m)sv`Jut#k^eMR31PdaY~MyDLg_T8id_7m$%gtt5%>a8N2f z7g?FpCfPJ?vRVrTHg}`>Dd}jwyEt@4+tYi}dSF6II&zVA-A6y_NOpzF^whL_U&I9b vHcxtXTSH5H)xT#p1nFw8e@dS-zO3Ze7;P7K43;GS1ptgK)~4u$@2x)o?NA)6 literal 0 HcmV?d00001 diff --git a/classwinstd_1_1cert__context-members.html b/classwinstd_1_1cert__context-members.html new file mode 100644 index 00000000..3a793769 --- /dev/null +++ b/classwinstd_1_1cert__context-members.html @@ -0,0 +1,122 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::cert_context Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< PCCERT_CONTEXT, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< PCCERT_CONTEXT, NULL >inline
create(_In_ DWORD dwCertEncodingType, _In_ LPCBYTE pbCertEncoded, _In_ DWORD cbCertEncoded) noexceptwinstd::cert_contextinline
detach()winstd::handle< PCCERT_CONTEXT, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
duplicate() constwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::cert_contextinlineprotectedvirtual
free()winstd::handle< PCCERT_CONTEXT, INVAL >inline
free_internal() noexcept overridewinstd::cert_contextinlineprotectedvirtual
handle() noexceptwinstd::handle< PCCERT_CONTEXT, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< PCCERT_CONTEXT, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCCERT_CONTEXT, INVAL >inline
handle_type typedefwinstd::handle< PCCERT_CONTEXT, INVAL >
invalidwinstd::handle< PCCERT_CONTEXT, INVAL >static
m_hwinstd::handle< PCCERT_CONTEXT, INVAL >protected
operator handle_type() constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator!() constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator!=(_In_ const handle_type &other) const noexceptwinstd::cert_contextinline
dplhandle< PCCERT_CONTEXT, NULL >::operator!=(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator&()winstd::handle< PCCERT_CONTEXT, INVAL >inline
operator*() constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator->() constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator<(_In_ const handle_type &other) const noexceptwinstd::cert_contextinline
dplhandle< PCCERT_CONTEXT, NULL >::operator<(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator<=(_In_ const handle_type &other) const noexceptwinstd::cert_contextinline
dplhandle< PCCERT_CONTEXT, NULL >::operator<=(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< PCCERT_CONTEXT, NULL >inline
handle< PCCERT_CONTEXT, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator==(_In_ const handle_type &other) const noexceptwinstd::cert_contextinline
dplhandle< PCCERT_CONTEXT, NULL >::operator==(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator>(_In_ const handle_type &other) const noexceptwinstd::cert_contextinline
dplhandle< PCCERT_CONTEXT, NULL >::operator>(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
operator>=(_In_ const handle_type &other) const noexceptwinstd::cert_contextinline
dplhandle< PCCERT_CONTEXT, NULL >::operator>=(_In_opt_ handle_type h) constwinstd::handle< PCCERT_CONTEXT, INVAL >inline
~cert_context()winstd::cert_contextinlinevirtual
+ + + + diff --git a/classwinstd_1_1cert__context.html b/classwinstd_1_1cert__context.html new file mode 100644 index 00000000..21daaabe --- /dev/null +++ b/classwinstd_1_1cert__context.html @@ -0,0 +1,635 @@ + + + + + + + +WinStd: winstd::cert_context Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

PCCERT_CONTEXT wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::cert_context:
+
+
+ + +winstd::dplhandle< PCCERT_CONTEXT, NULL > +winstd::handle< PCCERT_CONTEXT, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~cert_context ()
 Destroys the certificate context. More...
 
bool create (_In_ DWORD dwCertEncodingType, _In_ LPCBYTE pbCertEncoded, _In_ DWORD cbCertEncoded) noexcept
 Creates the certificate context. More...
 
bool operator== (_In_ const handle_type &other) const noexcept
 Is certificate equal to? More...
 
bool operator!= (_In_ const handle_type &other) const noexcept
 Is certificate not equal to? More...
 
bool operator< (_In_ const handle_type &other) const noexcept
 Is certificate less than? More...
 
bool operator> (_In_ const handle_type &other) const noexcept
 Is certificate greater than? More...
 
bool operator<= (_In_ const handle_type &other) const noexcept
 Is certificate less than or equal? More...
 
bool operator>= (_In_ const handle_type &other) const noexcept
 Is certificate greater than or equal? More...
 
- Public Member Functions inherited from winstd::dplhandle< PCCERT_CONTEXT, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< PCCERT_CONTEXT, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the certificate context. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the certificate context. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< PCCERT_CONTEXT, INVAL >
+typedef PCCERT_CONTEXT handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< PCCERT_CONTEXT, INVAL >
+static const PCCERT_CONTEXT invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< PCCERT_CONTEXT, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

PCCERT_CONTEXT wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~cert_context()

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

Destroys the certificate context.

+
See also
CertFreeCertificateContext function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::cert_context::create (_In_ DWORD dwCertEncodingType,
_In_ LPCBYTE pbCertEncoded,
_In_ DWORD cbCertEncoded 
)
+
+inlinenoexcept
+
+ +

Creates the certificate context.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
CertCreateCertificateContext function
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+ + + + + +
+ + + + + + + + +
handle_type winstd::cert_context::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the certificate context.

+
Parameters
+ + +
[in]hObject handle of existing certificate context
+
+
+
Returns
Duplicated certificate context handle
+
See also
CertDuplicateCertificateContext function
+ +

Implements winstd::dplhandle< PCCERT_CONTEXT, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::cert_context::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the certificate context.

+
See also
CertFreeCertificateContext function
+ +

Implements winstd::handle< PCCERT_CONTEXT, INVAL >.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::cert_context::operator!= (_In_ const handle_typeother) const
+
+inlinenoexcept
+
+ +

Is certificate not equal to?

+
Parameters
+ + +
[in]otherCertificate to compare against
+
+
+
Returns
    +
  • Non zero when certificate is not equal to other;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::cert_context::operator< (_In_ const handle_typeother) const
+
+inlinenoexcept
+
+ +

Is certificate less than?

+
Parameters
+ + +
[in]otherCertificate to compare against
+
+
+
Returns
    +
  • Non zero when certificate is less than other;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator<=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::cert_context::operator<= (_In_ const handle_typeother) const
+
+inlinenoexcept
+
+ +

Is certificate less than or equal?

+
Parameters
+ + +
[in]otherCertificate to compare against
+
+
+
Returns
    +
  • Non zero when certificate is less than other;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::cert_context::operator== (_In_ const handle_typeother) const
+
+inlinenoexcept
+
+ +

Is certificate equal to?

+
Parameters
+ + +
[in]otherCertificate to compare against
+
+
+
Returns
    +
  • Non zero when certificate is equal to other;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator>()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::cert_context::operator> (_In_ const handle_typeother) const
+
+inlinenoexcept
+
+ +

Is certificate greater than?

+
Parameters
+ + +
[in]otherCertificate to compare against
+
+
+
Returns
    +
  • Non zero when certificate is greater than other;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator>=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::cert_context::operator>= (_In_ const handle_typeother) const
+
+inlinenoexcept
+
+ +

Is certificate greater than or equal?

+
Parameters
+ + +
[in]otherCertificate to compare against
+
+
+
Returns
    +
  • Non zero when certificate is greater than other;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1cert__context.png b/classwinstd_1_1cert__context.png new file mode 100644 index 0000000000000000000000000000000000000000..c54af35dc54b532408f6ecf04ba3a87e1b28cf0f GIT binary patch literal 1445 zcmb`HdrVVz6vr>q4nqbi8pJsyYC#F|ln9FK!fa(N&ruXXv=G^lmkJeYZMj7d5ofIw z#W<>WRUWHAJ1s&$q~)a(lv)i>3qGpc6(|C?51=hwS+c}s`_q$r&-wiE`~C9E$@iS1 z$naomtFNs90I()}kBb5T3r91bU$(@Yl{Xwc&BZ=4G#YO*naud-geIHacG*mSOCphA zisXwImYs+SCjsU|i_zN^?F|4J9|A5Y`jmz0#$f4fztu~3^C@E{kd~gm?}V2iLp~gf z&%LM(Y&z|PaKn0bcx(va6qjSPn+RT?>I{tKi?y#c8t&^g@koW99HuD>?s<4fHxRP5 z`=dj7+`a9d4?&wd5usE<-0@5!BOlK4#}enZ>v#qDPX2q(JH1@TJ~njJnT(Q#n9jPjNsDGoCcD?OCbB`|3&}MjHl@XmFVblam^iSvA`RLT z`=dw5m@t#+#24GFqfS>;-ntD79@yI2L62rBoe>WEV>>9%3gE=}VmO~y1=U*>!*=$; zAYC5+6lECWHQOdwY2#JZFWZbVY0?p`$QVJ#s#gV!UD5N%)09jm1`1b5Cz5x{+-qUz znYAcG_CYQ!nHB9~9|Fa3?H+S3`PU~sI^Y60huMp!jWG0iu6U_b*d);7SYR4hIHOn@ z;Opsj>4&zV2vs1**%{=hb;nOlI?%Oz{;m#jDp0$$qBT+owHR?pyjE^2!ZyOt1_ z0CH9z{zMdY30Bj;KtDAM$)hL*2u-;VL&|wqOcC}6Xl=V^=$8D_8tc%HRlIAq8RuKK z-W0;{6zOOo&gJzeG(oNLyIRwk#!va`ep?zur1&bzv@iM=9OzCt*LmuZK>h>jw~Us= zU)qz-bqq=4)5i^X&U@ zx5N0Q!Gl#!*sX?()5rxF64ag<)YK{AT6pKcHgMRc>0K4(kr$m^_A|}=t!k)?*w_T6 zuGle5*5~?zuS|7L0)5f??5^FB;y1{<1uH|x;xmeQ<;LfJjdr0!zmDeC*-_RrOA*;P z(tq6fpqg|}OEkpJ4(eh8#A7rcn5^QazMWCd?Nx-qzfC8rkjR!8&klIbSohO`U0Zm9 zPB(%o6~Zbpd1xeOgcET|$DR_oUGUJ%4tANI&KH+QOr@C3viv_?M@uL@&ImUKXkO(A ze3?*W1kN%T`&R^>HG^DjhFl}SP4xf#c38C7F=TVal~AIK+Xf5!T+F`>Cw`kenP|%C zn=T2$xP8IcW_mn-7xo@yy)vGpt103tRbRH@)XVic+~vmmqK2s>)b4q&An}LItqcv= z6#T@#%!Q4w;Q2|YGx>VgAm)AA3HMQBpQ!7bn&>hn3*K2)0q4N+Y7)`Z3e}rrj}3Zz zp->3VSxS7-5+tU + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::cert_store Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HCERTSTORE, NULL >inline
create(_In_ LPCSTR lpszStoreProvider, _In_ DWORD dwEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_opt_ const void *pvPara) noexceptwinstd::cert_storeinline
create(_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_z_ LPCTSTR szSubsystemProtocol) noexceptwinstd::cert_storeinline
detach()winstd::handle< HCERTSTORE, NULL >inline
free()winstd::handle< HCERTSTORE, NULL >inline
free_internal() noexcept overridewinstd::cert_storeinlineprotectedvirtual
handle() noexceptwinstd::handle< HCERTSTORE, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HCERTSTORE, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCERTSTORE, NULL >inline
handle_type typedefwinstd::handle< HCERTSTORE, NULL >
invalidwinstd::handle< HCERTSTORE, NULL >static
m_hwinstd::handle< HCERTSTORE, NULL >protected
operator handle_type() constwinstd::handle< HCERTSTORE, NULL >inline
operator!() constwinstd::handle< HCERTSTORE, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HCERTSTORE, NULL >inline
operator&()winstd::handle< HCERTSTORE, NULL >inline
operator*() constwinstd::handle< HCERTSTORE, NULL >inline
operator->() constwinstd::handle< HCERTSTORE, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HCERTSTORE, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HCERTSTORE, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HCERTSTORE, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCERTSTORE, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HCERTSTORE, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HCERTSTORE, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HCERTSTORE, NULL >inline
~cert_store()winstd::cert_storeinlinevirtual
+ + + + diff --git a/classwinstd_1_1cert__store.html b/classwinstd_1_1cert__store.html new file mode 100644 index 00000000..0ceb392e --- /dev/null +++ b/classwinstd_1_1cert__store.html @@ -0,0 +1,368 @@ + + + + + + + +WinStd: winstd::cert_store Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

HCERTSTORE wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::cert_store:
+
+
+ + +winstd::handle< HCERTSTORE, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~cert_store ()
 Closes the certificate store. More...
 
bool create (_In_ LPCSTR lpszStoreProvider, _In_ DWORD dwEncodingType, _In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_ DWORD dwFlags, _In_opt_ const void *pvPara) noexcept
 Opens the certificate store. More...
 
bool create (_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_z_ LPCTSTR szSubsystemProtocol) noexcept
 Opens the most common system certificate store. To open certificate stores with more complex requirements, such as file-based or memory-based stores, use create(). More...
 
- Public Member Functions inherited from winstd::handle< HCERTSTORE, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes the certificate store. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HCERTSTORE, NULL >
+typedef HCERTSTORE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HCERTSTORE, NULL >
+static const HCERTSTORE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HCERTSTORE, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

HCERTSTORE wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~cert_store()

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

Closes the certificate store.

+
See also
CertCloseStore function
+ +
+
+

Member Function Documentation

+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::cert_store::create (_In_ LPCSTR lpszStoreProvider,
_In_ DWORD dwEncodingType,
_In_opt_ HCRYPTPROV_LEGACY hCryptProv,
_In_ DWORD dwFlags,
_In_opt_ const void * pvPara 
)
+
+inlinenoexcept
+
+ +

Opens the certificate store.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
CertOpenStore function
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool winstd::cert_store::create (_In_opt_ HCRYPTPROV_LEGACY hCryptProv,
_In_z_ LPCTSTR szSubsystemProtocol 
)
+
+inlinenoexcept
+
+ +

Opens the most common system certificate store. To open certificate stores with more complex requirements, such as file-based or memory-based stores, use create().

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
CertOpenSystemStore function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::cert_store::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes the certificate store.

+
See also
CertCloseStore function
+ +

Implements winstd::handle< HCERTSTORE, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1cert__store.png b/classwinstd_1_1cert__store.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8095ca5680fbc8083272fe18f6ac4b51bea714 GIT binary patch literal 752 zcmeAS@N?(olHy`uVBq!ia0vp^Z-F>~gBeI3I?f~pq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0>OEZ?Ln;{G&V7ApwE~Z;`0bhd{wvF` zW@0=VXJ@^Ue+5n&(fKcF$X$`FK|1 zT%rCF%X3Q;GA>t&Z~d|E(}(YD8)jRktXW+xw)@MrkNYpMt@LAGy7^nlyY&~sg7p@e zE}w5>>0$PCCTru@HB}j&+4m-{PrW(m{o;q~Yb@qv{=WC@x>@e*WpggBTO74Ta>0_= zTmDX-xwj{MJFxL>n~Lbkn0>+i_r4`(T(5uH>w7CKO!DQ|>f4KQD?S--slI*dv-Y=n z`A;q13V;8`Y-q`P`TD!JjBlTv)Kt5kx6jg9=9h)q`~BN@YlOx<{<3%L_v=-&EIl@F z;^mlBRP|@?)FtbKKQGqz%>AqOcJ_w-S<#+V&VJgSwWmNq#p`bEd)cIm;a_te!{H2# zTeovn?kvnmztLE5e9_k#JQr5a5nJGIsp~MmD5}Bk=@tf{F2-L|E;D`6T+aF;*pK_d zax?|=!#EUql$j1Fz%;xnx>dDvZQZwN$3z;szZTy9=20D=a`n#~`O}NOKmRLTuK#4a zj;>|&zVFM7eLL^2u$?})*%1L={wI%UB5W?ziMpkefPCzmqOd!+lVUDU z?$6wRW*hsK+0n~p$W*VIk<)+3&-3nm@yU#J4)+~*vn)ET!%?8K9m$_r%Xk%A0>AL9 YY%wU>;Ffg`m^>LgUHx3vIVCg!05QIECjbBd literal 0 HcmV?d00001 diff --git a/classwinstd_1_1com__initializer-members.html b/classwinstd_1_1com__initializer-members.html new file mode 100644 index 00000000..9778eec9 --- /dev/null +++ b/classwinstd_1_1com__initializer-members.html @@ -0,0 +1,87 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::com_initializer Member List
+
+
+ +

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

+ + + + + + +
com_initializer(_In_opt_ LPVOID pvReserved) noexceptwinstd::com_initializerinline
com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexceptwinstd::com_initializerinline
m_resultwinstd::com_initializerprotected
status() const noexceptwinstd::com_initializerinline
~com_initializer()winstd::com_initializerinlinevirtual
+ + + + diff --git a/classwinstd_1_1com__initializer.html b/classwinstd_1_1com__initializer.html new file mode 100644 index 00000000..68b6c483 --- /dev/null +++ b/classwinstd_1_1com__initializer.html @@ -0,0 +1,242 @@ + + + + + + + +WinStd: winstd::com_initializer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::com_initializer Class Reference
+
+
+ +

Context scope automatic COM (un)initialization. + More...

+ +

#include <COM.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 com_initializer (_In_opt_ LPVOID pvReserved) noexcept
 Initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA). More...
 
 com_initializer (_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept
 Initializes the COM library for use by the calling thread, sets the thread's concurrency model, and creates a new apartment for the thread if one is required. More...
 
virtual ~com_initializer ()
 Uninitializes COM. More...
 
HRESULT status () const noexcept
 Return result of CoInitialize() call. More...
 
+ + + + +

+Protected Attributes

+HRESULT m_result
 Result of CoInitialize call.
 
+

Detailed Description

+

Context scope automatic COM (un)initialization.

+

Constructor & Destructor Documentation

+ +

◆ com_initializer() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::com_initializer::com_initializer (_In_opt_ LPVOID pvReserved)
+
+inlinenoexcept
+
+ +

Initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA).

+
See also
CoInitialize function
+ +
+
+ +

◆ com_initializer() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::com_initializer::com_initializer (_In_opt_ LPVOID pvReserved,
_In_ DWORD dwCoInit 
)
+
+inlinenoexcept
+
+ +

Initializes the COM library for use by the calling thread, sets the thread's concurrency model, and creates a new apartment for the thread if one is required.

+
See also
CoInitializeEx function
+ +
+
+ +

◆ ~com_initializer()

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

Uninitializes COM.

+
See also
CoUninitialize function
+ +
+
+

Member Function Documentation

+ +

◆ status()

+ +
+
+ + + + + +
+ + + + + + + +
HRESULT winstd::com_initializer::status () const
+
+inlinenoexcept
+
+ +

Return result of CoInitialize() call.

+
See also
CoInitialize function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1com__obj-members.html b/classwinstd_1_1com__obj-members.html new file mode 100644 index 00000000..718291a6 --- /dev/null +++ b/classwinstd_1_1com__obj-members.html @@ -0,0 +1,121 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::com_obj< T > Member List
+
+
+ +

This is the complete list of members for winstd::com_obj< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< T *, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< T *, NULL >inline
com_obj(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, DWORD dwClsContext=CLSCTX_ALL)winstd::com_obj< T >inline
com_obj(_In_ _Other *other)winstd::com_obj< T >inline
com_obj(_In_ com_obj< _Other > &other)winstd::com_obj< T >inline
create(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, _In_ DWORD dwClsContext=CLSCTX_ALL)winstd::com_obj< T >inline
detach()winstd::handle< T *, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< T *, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< T *, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< T *, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< T *, NULL >inline
duplicate() constwinstd::dplhandle< T *, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::com_obj< T >inlineprotectedvirtual
free()winstd::handle< T *, INVAL >inline
free_internal() noexcept overridewinstd::com_obj< T >inlineprotectedvirtual
handle() noexceptwinstd::handle< T *, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< T *, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T *, INVAL >inline
handle_type typedefwinstd::handle< T *, INVAL >
invalidwinstd::handle< T *, INVAL >static
m_hwinstd::handle< T *, INVAL >protected
operator handle_type() constwinstd::handle< T *, INVAL >inline
operator!() constwinstd::handle< T *, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< T *, INVAL >inline
operator&()winstd::handle< T *, INVAL >inline
operator*() constwinstd::handle< T *, INVAL >inline
operator->() constwinstd::handle< T *, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< T *, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< T *, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< T *, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< T *, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< T *, NULL >inline
handle< T *, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T *, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< T *, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< T *, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< T *, INVAL >inline
query_interface(_Out_ _Other **h) constwinstd::com_obj< T >inline
query_interface(_Out_ com_obj< _Other > &h) constwinstd::com_obj< T >inline
~com_obj()winstd::com_obj< T >inlinevirtual
+ + + + diff --git a/classwinstd_1_1com__obj.html b/classwinstd_1_1com__obj.html new file mode 100644 index 00000000..f5612ef2 --- /dev/null +++ b/classwinstd_1_1com__obj.html @@ -0,0 +1,556 @@ + + + + + + + +WinStd: winstd::com_obj< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::com_obj< T > Class Template Reference
+
+
+ +

COM object wrapper template. + More...

+ +

#include <COM.h>

+
+Inheritance diagram for winstd::com_obj< T >:
+
+
+ + +winstd::dplhandle< T *, NULL > +winstd::handle< T *, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 com_obj (_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, DWORD dwClsContext=CLSCTX_ALL)
 Constructs a new object and creates a new class with it. More...
 
template<class _Other >
 com_obj (_In_ _Other *other)
 Queries the object for another interface and creates new class with it. More...
 
template<class _Other >
 com_obj (_In_ com_obj< _Other > &other)
 Queries the object for another interface and creates new class with it. More...
 
+virtual ~com_obj ()
 Releases object.
 
HRESULT create (_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, _In_ DWORD dwClsContext=CLSCTX_ALL)
 Creates a new object. More...
 
template<class _Other >
HRESULT query_interface (_Out_ _Other **h) const
 Queries the object for another interface. More...
 
template<class _Other >
HRESULT query_interface (_Out_ com_obj< _Other > &h) const
 Queries the object for another interface. More...
 
- Public Member Functions inherited from winstd::dplhandle< T *, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< T *, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Releases the object by decrementing reference counter. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the object by incrementing the reference counter. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< T *, INVAL >
+typedef T * handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< T *, INVAL >
+static const T * invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< T *, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+
template<class T>
+class winstd::com_obj< T >

COM object wrapper template.

+

Constructor & Destructor Documentation

+ +

◆ com_obj() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
winstd::com_obj< T >::com_obj (_In_ REFCLSID rclsid,
_In_opt_ LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL 
)
+
+inline
+
+ +

Constructs a new object and creates a new class with it.

+
See also
CoCreateInstance function
+ +
+
+ +

◆ com_obj() [2/3]

+ +
+
+
+template<class T >
+
+template<class _Other >
+ + + + + +
+ + + + + + + + +
winstd::com_obj< T >::com_obj (_In_ _Other * other)
+
+inline
+
+ +

Queries the object for another interface and creates new class with it.

+
See also
IUnknown::QueryInterface method
+ +
+
+ +

◆ com_obj() [3/3]

+ +
+
+
+template<class T >
+
+template<class _Other >
+ + + + + +
+ + + + + + + + +
winstd::com_obj< T >::com_obj (_In_ com_obj< _Other > & other)
+
+inline
+
+ +

Queries the object for another interface and creates new class with it.

+
See also
IUnknown::QueryInterface method
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
HRESULT winstd::com_obj< T >::create (_In_ REFCLSID rclsid,
_In_opt_ LPUNKNOWN pUnkOuter = NULL,
_In_ DWORD dwClsContext = CLSCTX_ALL 
)
+
+inline
+
+ +

Creates a new object.

+
See also
CoCreateInstance function
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
handle_type winstd::com_obj< T >::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the object by incrementing the reference counter.

+
See also
IUnknown::AddRef method
+
Parameters
+ + +
[in]hObject handle of existing object
+
+
+
Returns
Duplicated object handle
+ +

Implements winstd::dplhandle< T *, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void winstd::com_obj< T >::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Releases the object by decrementing reference counter.

+
See also
IUnknown::Release method
+ +

Implements winstd::handle< T *, INVAL >.

+ +
+
+ +

◆ query_interface() [1/2]

+ +
+
+
+template<class T >
+
+template<class _Other >
+ + + + + +
+ + + + + + + + +
HRESULT winstd::com_obj< T >::query_interface (_Out_ _Other ** h) const
+
+inline
+
+ +

Queries the object for another interface.

+
See also
IUnknown::QueryInterface method
+ +
+
+ +

◆ query_interface() [2/2]

+ +
+
+
+template<class T >
+
+template<class _Other >
+ + + + + +
+ + + + + + + + +
HRESULT winstd::com_obj< T >::query_interface (_Out_ com_obj< _Other > & h) const
+
+inline
+
+ +

Queries the object for another interface.

+
See also
IUnknown::QueryInterface method
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1com__obj.png b/classwinstd_1_1com__obj.png new file mode 100644 index 0000000000000000000000000000000000000000..b004bb9ae4b14a611984d3a2dc6de907486f5d80 GIT binary patch literal 1054 zcmeAS@N?(olHy`uVBq!ia0vp^`+>NFgBeIRdY@7RQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;_QsG_wV7iJu>wcA=neFzTS!<_cm;T?EyW^+c z+5K<-Z4Lf?AyzfhS^e*Sv;8k8FWdjtWU6j`X34z&7mKc$1V|Q3)y`Y=Fg|YDH}A_% z7j{%-`|H-tJj+niVDGs%*GBg0^sDnf?Vpr#MK_Jp*>mm9AD%(k{*9TB(tB4fTlv)d z@>^T)l^c`)Ef?MMWWM#AkLS}r&8%Pbe%Y=5=3Co&e;b`})63MZ`nPGT8C%)U?|I(4 zWB+?+|L}ay=N(KxeD5-_ zU3>6n`|TUt5_A6d*?(bjd*1(t`N7Hu>>q+ZF#pi}!T3ky4?`VS9fLiqeZ%}F`2+q3 z`5!Dtm1aL>`Ml9}+LA=kKa-v;2L-L|XLZlDQ#Y-QL*os zU&`9H$gY&vx3=`H_W$`0^4V5>oV?`PwRvobu`jE#@7>z>ZR^d}z3G~!+ur}Tx*=FE zteF1ex$)0GRjb}7Wqd!g#j!@hKJ`G`{x?hRe){~Udi&DH>;9{nmi7I=`Ts2EhRN#> z?#TMg`V#J4XY@Ve7r>I$%X9OK&pqaPU|z~B5z+kleqOSE zLcu@le;2qV=GuSaZ&;2!AaR7VjK@1|zM^j+uTlOOQ@}|KscK7h3p~UfA;1R=%pWRilb-E=c>mwFzQg<< umh}6)k+f%cuLVs+RW)8gUYQYpnGJY--kqBrz5|$<89ZJ6T-G@yGywoNq$xfC literal 0 HcmV?d00001 diff --git a/classwinstd_1_1com__runtime__error-members.html b/classwinstd_1_1com__runtime__error-members.html new file mode 100644 index 00000000..389ac74f --- /dev/null +++ b/classwinstd_1_1com__runtime__error-members.html @@ -0,0 +1,89 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::com_runtime_error Member List
+
+
+ +

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

+ + + + + + + + +
com_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::com_runtime_errorinline
com_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::com_runtime_errorinline
error_type typedefwinstd::num_runtime_error< HRESULT >
m_numwinstd::num_runtime_error< HRESULT >protected
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::num_runtime_error< HRESULT >inline
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::num_runtime_error< HRESULT >inline
number() constwinstd::num_runtime_error< HRESULT >inline
+ + + + diff --git a/classwinstd_1_1com__runtime__error.html b/classwinstd_1_1com__runtime__error.html new file mode 100644 index 00000000..35a54bbb --- /dev/null +++ b/classwinstd_1_1com__runtime__error.html @@ -0,0 +1,227 @@ + + + + + + + +WinStd: winstd::com_runtime_error Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::com_runtime_error Class Reference
+
+
+ +

COM runtime error. + More...

+ +

#include <COM.h>

+
+Inheritance diagram for winstd::com_runtime_error:
+
+
+ + +winstd::num_runtime_error< HRESULT > + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 com_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 com_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
- Public Member Functions inherited from winstd::num_runtime_error< HRESULT >
 num_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 num_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+error_type number () const
 Returns the Windows error number.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::num_runtime_error< HRESULT >
+typedef HRESULT error_type
 Error number type.
 
- Protected Attributes inherited from winstd::num_runtime_error< HRESULT >
+error_type m_num
 Numeric error code.
 
+

Detailed Description

+

COM runtime error.

+
Note
Must be defined as derived class from num_runtime_error<> to allow correct type info for dynamic typecasting and prevent folding with other derivates of num_runtime_error<>.
+

Constructor & Destructor Documentation

+ +

◆ com_runtime_error() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::com_runtime_error::com_runtime_error (_In_ error_type num,
_In_ const std::string & msg 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numCOM error code
[in]msgError message
+
+
+ +
+
+ +

◆ com_runtime_error() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::com_runtime_error::com_runtime_error (_In_ error_type num,
_In_opt_z_ const char * msg = nullptr 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numCOM error code
[in]msgError message
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1com__runtime__error.png b/classwinstd_1_1com__runtime__error.png new file mode 100644 index 0000000000000000000000000000000000000000..81197547ac443e309c9de8450f713a9f65986386 GIT binary patch literal 1076 zcmeAS@N?(olHy`uVBq!ia0vp^?}503gBeI##QS6dDTx4|5ZC|z{{xvX-h3_XKQsZz z0^*hr&az>i5=OKlkpd<-OmJ1nQ55 zhko_m^4T}|(X_dRv-*~Awp<;3qG;2q^SM6yr;o}c>#bO|&(rw+l3CmTW?1X2U)Q|J z`u4+*7*q2skisr%>Vu?C$#HSO1{3Y-|OPM+5MrR_m_P9 zwR+XB%YQoF$1IOpYq@Gwz2MJKpc{XzTJ=k{CN%V~(XVAwg6tV;nx!4wOP*El{;GOs z=KB@5rxxVz3!KkrBfO8Hjx(NNe~W%Y{2}oJ`VYAuO#i_8!TSf(57ipRKSC(d514rl z8>J#sa_jxY4=ht`5*jnQE+hp_T2X^02J|k@HelyRDXZ9`}dmfb+>+rm8R7H7QSC} z?|O5*&-LT?-`|?~F?Ro+L+@2obw5?>r1gLP9k$o%+4qax^L~ikPp{p5vS#0>zi}UI zf7kif_zD`%G&leMNmu*w!jF};=W;)Py!$I=?f&0Zd**j{T(OC(cXj!5;Z(W)d?h9E z3bQzuC9D(U1qJsbf@<-510H9p#l?~-LGBY6b}2%msq*IbylwOL+f^l>=I5#1{Ab$- z)*tgLFO_q}&A4o+m;RZ{ZvCUrj_-2!ZTh?RJ(~Ny~pVP_Mg+{mrt4`21>*IzwN3n9{R4bY~SD4pMM^? zE;3Q+b84;KM_uj7xjDD4f3@6x_Bexh=C*%Kf0%1-l&`b)U!!>b81o&~Pl%M5`o&js cY26Qg@ru2d&1N)B17>jsPgg&ebxsLQ05gjzBme*a literal 0 HcmV?d00001 diff --git a/classwinstd_1_1console__ctrl__handler-members.html b/classwinstd_1_1console__ctrl__handler-members.html new file mode 100644 index 00000000..1cef4bbd --- /dev/null +++ b/classwinstd_1_1console__ctrl__handler-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::console_ctrl_handler Member List
+
+
+ +

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

+ + + + + +
console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexceptwinstd::console_ctrl_handlerinline
m_cookiewinstd::console_ctrl_handlerprotected
m_handlerwinstd::console_ctrl_handlerprotected
~console_ctrl_handler()winstd::console_ctrl_handlerinlinevirtual
+ + + + diff --git a/classwinstd_1_1console__ctrl__handler.html b/classwinstd_1_1console__ctrl__handler.html new file mode 100644 index 00000000..53f2c33a --- /dev/null +++ b/classwinstd_1_1console__ctrl__handler.html @@ -0,0 +1,178 @@ + + + + + + + +WinStd: winstd::console_ctrl_handler Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::console_ctrl_handler Class Reference
+
+
+ +

Console control handler stack management. + More...

+ +

#include <Win.h>

+ + + + + + + + +

+Public Member Functions

 console_ctrl_handler (_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept
 Construct the console control handler object and pushes the given handler to the console control handler stack. More...
 
virtual ~console_ctrl_handler ()
 Pops console control handler from the console control handler stack. More...
 
+ + + + + + + +

+Protected Attributes

+BOOL m_cookie
 Did pushing the console control handler succeed?
 
+PHANDLER_ROUTINE m_handler
 Pointer to console control handler.
 
+

Detailed Description

+

Console control handler stack management.

+

Constructor & Destructor Documentation

+ +

◆ console_ctrl_handler()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::console_ctrl_handler::console_ctrl_handler (_In_opt_ PHANDLER_ROUTINE HandlerRoutine)
+
+inlinenoexcept
+
+ +

Construct the console control handler object and pushes the given handler to the console control handler stack.

+
Parameters
+ + +
[in]HandlerRoutineA pointer to the application-defined HandlerRoutine function to be added.
+
+
+
See also
SetConsoleCtrlHandler function
+ +
+
+ +

◆ ~console_ctrl_handler()

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

Pops console control handler from the console control handler stack.

+
See also
SetConsoleCtrlHandler function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1critical__section-members.html b/classwinstd_1_1critical__section-members.html new file mode 100644 index 00000000..c4d9b04e --- /dev/null +++ b/classwinstd_1_1critical__section-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::critical_section Member List
+
+
+ +

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

+ + + + + +
critical_section()winstd::critical_sectioninline
m_datawinstd::critical_sectionprotected
operator LPCRITICAL_SECTION() noexceptwinstd::critical_sectioninline
~critical_section()winstd::critical_sectioninlinevirtual
+ + + + diff --git a/classwinstd_1_1critical__section.html b/classwinstd_1_1critical__section.html new file mode 100644 index 00000000..73038270 --- /dev/null +++ b/classwinstd_1_1critical__section.html @@ -0,0 +1,199 @@ + + + + + + + +WinStd: winstd::critical_section Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::critical_section Class Reference
+
+
+ +

Critical section wrapper. + More...

+ +

#include <Win.h>

+ + + + + + + + + + + +

+Public Member Functions

 critical_section ()
 Construct the object and initializes a critical section object. More...
 
virtual ~critical_section ()
 Releases all resources used by an unowned critical section object. More...
 
 operator LPCRITICAL_SECTION () noexcept
 Auto-typecasting operator. More...
 
+ + + + +

+Protected Attributes

+CRITICAL_SECTION m_data
 Critical section struct.
 
+

Detailed Description

+

Critical section wrapper.

+

Constructor & Destructor Documentation

+ +

◆ critical_section()

+ +
+
+ + + + + +
+ + + + + + + +
winstd::critical_section::critical_section ()
+
+inline
+
+ +

Construct the object and initializes a critical section object.

+
See also
InitializeCriticalSection function
+ +
+
+ +

◆ ~critical_section()

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

Releases all resources used by an unowned critical section object.

+
See also
DeleteCriticalSection function
+ +
+
+

Member Function Documentation

+ +

◆ operator LPCRITICAL_SECTION()

+ +
+
+ + + + + +
+ + + + + + + +
winstd::critical_section::operator LPCRITICAL_SECTION ()
+
+inlinenoexcept
+
+ +

Auto-typecasting operator.

+
Returns
Pointer to critical section
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1crypt__hash-members.html b/classwinstd_1_1crypt__hash-members.html new file mode 100644 index 00000000..eeec2ced --- /dev/null +++ b/classwinstd_1_1crypt__hash-members.html @@ -0,0 +1,116 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::crypt_hash Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTHASH, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< HCRYPTHASH, NULL >inline
create(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_opt_ HCRYPTKEY hKey=NULL, _In_opt_ DWORD dwFlags=0) noexceptwinstd::crypt_hashinline
detach()winstd::handle< HCRYPTHASH, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
duplicate() constwinstd::dplhandle< HCRYPTHASH, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::crypt_hashinlineprotectedvirtual
free()winstd::handle< HCRYPTHASH, INVAL >inline
free_internal() noexcept overridewinstd::crypt_hashinlineprotectedvirtual
handle() noexceptwinstd::handle< HCRYPTHASH, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTHASH, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCRYPTHASH, INVAL >inline
handle_type typedefwinstd::handle< HCRYPTHASH, INVAL >
invalidwinstd::handle< HCRYPTHASH, INVAL >static
m_hwinstd::handle< HCRYPTHASH, INVAL >protected
operator handle_type() constwinstd::handle< HCRYPTHASH, INVAL >inline
operator!() constwinstd::handle< HCRYPTHASH, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTHASH, INVAL >inline
operator&()winstd::handle< HCRYPTHASH, INVAL >inline
operator*() constwinstd::handle< HCRYPTHASH, INVAL >inline
operator->() constwinstd::handle< HCRYPTHASH, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HCRYPTHASH, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTHASH, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< HCRYPTHASH, NULL >inline
handle< HCRYPTHASH, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCRYPTHASH, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HCRYPTHASH, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HCRYPTHASH, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTHASH, INVAL >inline
~crypt_hash()winstd::crypt_hashinlinevirtual
+ + + + diff --git a/classwinstd_1_1crypt__hash.html b/classwinstd_1_1crypt__hash.html new file mode 100644 index 00000000..44da0cab --- /dev/null +++ b/classwinstd_1_1crypt__hash.html @@ -0,0 +1,389 @@ + + + + + + + +WinStd: winstd::crypt_hash Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

HCRYPTHASH wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::crypt_hash:
+
+
+ + +winstd::dplhandle< HCRYPTHASH, NULL > +winstd::handle< HCRYPTHASH, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~crypt_hash ()
 Destroys the hash context. More...
 
bool create (_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_opt_ HCRYPTKEY hKey=NULL, _In_opt_ DWORD dwFlags=0) noexcept
 Creates the hash context. More...
 
- Public Member Functions inherited from winstd::dplhandle< HCRYPTHASH, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< HCRYPTHASH, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the hash context. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the hash context. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HCRYPTHASH, INVAL >
+typedef HCRYPTHASH handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HCRYPTHASH, INVAL >
+static const HCRYPTHASH invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HCRYPTHASH, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

HCRYPTHASH wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~crypt_hash()

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

Destroys the hash context.

+
See also
CryptDestroyHash function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::crypt_hash::create (_In_ HCRYPTPROV hProv,
_In_ ALG_ID Algid,
_In_opt_ HCRYPTKEY hKey = NULL,
_In_opt_ DWORD dwFlags = 0 
)
+
+inlinenoexcept
+
+ +

Creates the hash context.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
CryptCreateHash function
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+ + + + + +
+ + + + + + + + +
handle_type winstd::crypt_hash::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the hash context.

+
Parameters
+ + +
[in]hObject handle of existing hash context
+
+
+
Returns
Duplicated hash context handle
+
See also
CryptDuplicateHash function
+ +

Implements winstd::dplhandle< HCRYPTHASH, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::crypt_hash::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the hash context.

+
See also
CryptDestroyHash function
+ +

Implements winstd::handle< HCRYPTHASH, INVAL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1crypt__hash.png b/classwinstd_1_1crypt__hash.png new file mode 100644 index 0000000000000000000000000000000000000000..53eeaabc2df961fdfea78d5b5c2a5e4a115f0b41 GIT binary patch literal 1179 zcmeAS@N?(olHy`uVBq!ia0y~yU}OZcJ2;quhx)crS3)#Yk1Ej7L^etA#x5_zEwBDW{GbLRYZFu%T=h3UcR1z$bp|J>`lpfvC2 zw;2sb1DQA*^vt-J7I;5joc3MUXv#{}1=F-Iu6=eQ@UGp|pcjH^TW2|*3H-BeJ7)<` z8RrvIbB-;}kxZIXciQsR9C#w$dirOB-TO4T3vux>0qN&>+2%R?vi85Hvf=BBb?^C1 z`U|zK$h~;iB+S_()T+E;GCLcK*OQe#`Bs}Ri(LM@ z`@p?d{(=U|y}?#G^BPV|F+>%zFg%$3cP^`*$RpZj|J)i z3@;|#@7=XmN7p`KzkcR*E1ms+BIcJS1g+^`y3p+k?@qzLZ!#M{a?bnM7_XXO7WsCn zQ~1)%E6hxfJ->5IdAsJbe&|03?N?hD@~zG7DV?{V=WMt7-w6(HSF~T+vPPyGvwVI=eY@b z)IZ;GoHNIE)$85Py^9n254bI=pXczN+3LiZZ_xqf@9YeF`uELe-?jUJ4pZvK^iKyG z95_v;-q?KTF01bI>pCTG^fqk&70hzR0j=^2+==r8W>OU9N=g<;G}R&B3(>yV*e>$mz1oT^A5ZalW zFoi1!IB^7bvj|Rv#>#{396usI|86`w>*R?afA0R9%74b`fnE5drE#lD-&NP{FMH2h zy64W!@_@IS?Y=+dd}R}=u2j_bN3BueQFoo^rCVz^J6&3q#wIv%@{=bT97?;k2(NUO z&d)ouX79V=&o#1*kM{C&S_t&{aWxyAzsmXKfSLNY_k9lDtjf z#is)m^VTa**t`86>(b?SSZ@ih+S%XK_5K%&i_1K5R%e$d{!fKirYJ9oF8JHo@uxAS z(P8&T7ngrg>jYVql;#TwDKH8tG`2c$D4x-=U&)&Kkja|U5?GQjc)I$ztaD0e0s!ON B0zd!& literal 0 HcmV?d00001 diff --git a/classwinstd_1_1crypt__key-members.html b/classwinstd_1_1crypt__key-members.html new file mode 100644 index 00000000..d489bee9 --- /dev/null +++ b/classwinstd_1_1crypt__key-members.html @@ -0,0 +1,120 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::crypt_key Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTKEY, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< HCRYPTKEY, NULL >inline
create_exp1(_In_ HCRYPTPROV hProv, _In_ DWORD dwKeySpec)winstd::crypt_keyinline
derive(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ HCRYPTHASH hBaseData, _In_ DWORD dwFlags) noexceptwinstd::crypt_keyinline
detach()winstd::handle< HCRYPTKEY, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
duplicate() constwinstd::dplhandle< HCRYPTKEY, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::crypt_keyinlineprotectedvirtual
free()winstd::handle< HCRYPTKEY, INVAL >inline
free_internal() noexcept overridewinstd::crypt_keyinlineprotectedvirtual
generate(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags) noexceptwinstd::crypt_keyinline
handle() noexceptwinstd::handle< HCRYPTKEY, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTKEY, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCRYPTKEY, INVAL >inline
handle_type typedefwinstd::handle< HCRYPTKEY, INVAL >
import(_In_ HCRYPTPROV hProv, __in_bcount(dwDataLen) LPCBYTE pbData, _In_ DWORD dwDataLen, _In_ HCRYPTKEY hPubKey, _In_ DWORD dwFlags) noexceptwinstd::crypt_keyinline
import_public(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo) noexceptwinstd::crypt_keyinline
invalidwinstd::handle< HCRYPTKEY, INVAL >static
m_hwinstd::handle< HCRYPTKEY, INVAL >protected
operator handle_type() constwinstd::handle< HCRYPTKEY, INVAL >inline
operator!() constwinstd::handle< HCRYPTKEY, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTKEY, INVAL >inline
operator&()winstd::handle< HCRYPTKEY, INVAL >inline
operator*() constwinstd::handle< HCRYPTKEY, INVAL >inline
operator->() constwinstd::handle< HCRYPTKEY, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HCRYPTKEY, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTKEY, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< HCRYPTKEY, NULL >inline
handle< HCRYPTKEY, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCRYPTKEY, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HCRYPTKEY, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HCRYPTKEY, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTKEY, INVAL >inline
~crypt_key()winstd::crypt_keyinlinevirtual
+ + + + diff --git a/classwinstd_1_1crypt__key.html b/classwinstd_1_1crypt__key.html new file mode 100644 index 00000000..51fc905c --- /dev/null +++ b/classwinstd_1_1crypt__key.html @@ -0,0 +1,589 @@ + + + + + + + +WinStd: winstd::crypt_key Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

HCRYPTKEY wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::crypt_key:
+
+
+ + +winstd::dplhandle< HCRYPTKEY, NULL > +winstd::handle< HCRYPTKEY, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~crypt_key ()
 Destroys the key. More...
 
bool generate (_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags) noexcept
 Generates the key. More...
 
bool import (_In_ HCRYPTPROV hProv, __in_bcount(dwDataLen) LPCBYTE pbData, _In_ DWORD dwDataLen, _In_ HCRYPTKEY hPubKey, _In_ DWORD dwFlags) noexcept
 Imports the key. More...
 
bool import_public (_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo) noexcept
 Imports the public key. More...
 
bool derive (_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ HCRYPTHASH hBaseData, _In_ DWORD dwFlags) noexcept
 Generates cryptographic session keys derived from a base data value. More...
 
bool create_exp1 (_In_ HCRYPTPROV hProv, _In_ DWORD dwKeySpec)
 Creates Exponent-of-one key. More...
 
- Public Member Functions inherited from winstd::dplhandle< HCRYPTKEY, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< HCRYPTKEY, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the key. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the key. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HCRYPTKEY, INVAL >
+typedef HCRYPTKEY handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HCRYPTKEY, INVAL >
+static const HCRYPTKEY invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HCRYPTKEY, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

HCRYPTKEY wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~crypt_key()

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

Destroys the key.

+
See also
CryptDestroyKey function
+ +
+
+

Member Function Documentation

+ +

◆ create_exp1()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool winstd::crypt_key::create_exp1 (_In_ HCRYPTPROV hProv,
_In_ DWORD dwKeySpec 
)
+
+inline
+
+ +

Creates Exponent-of-one key.

+
See also
How to export and import plain text session keys by using CryptoAPI
+
Parameters
+ + + +
[in]hProvHandle of cryptographics provider to use
[in]dwKeySpecKey specification (AT_KEYEXCHANGE or AT_SIGNATURE)
+
+
+ +
+
+ +

◆ derive()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::crypt_key::derive (_In_ HCRYPTPROV hProv,
_In_ ALG_ID Algid,
_In_ HCRYPTHASH hBaseData,
_In_ DWORD dwFlags 
)
+
+inlinenoexcept
+
+ +

Generates cryptographic session keys derived from a base data value.

+
See also
CryptDeriveKey function
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+ + + + + +
+ + + + + + + + +
handle_type winstd::crypt_key::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the key.

+
Parameters
+ + +
[in]hObject handle of existing key
+
+
+
Returns
Duplicated key handle
+
See also
CryptDuplicateKey function
+ +

Implements winstd::dplhandle< HCRYPTKEY, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::crypt_key::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the key.

+
See also
CryptDestroyKey function
+ +

Implements winstd::handle< HCRYPTKEY, INVAL >.

+ +
+
+ +

◆ generate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::crypt_key::generate (_In_ HCRYPTPROV hProv,
_In_ ALG_ID Algid,
_In_ DWORD dwFlags 
)
+
+inlinenoexcept
+
+ +

Generates the key.

+
See also
CryptGenKey function
+ +
+
+ +

◆ import()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::crypt_key::import (_In_ HCRYPTPROV hProv,
__in_bcount(dwDataLen) LPCBYTE pbData,
_In_ DWORD dwDataLen,
_In_ HCRYPTKEY hPubKey,
_In_ DWORD dwFlags 
)
+
+inlinenoexcept
+
+ +

Imports the key.

+
See also
CryptImportKey function
+ +
+
+ +

◆ import_public()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::crypt_key::import_public (_In_ HCRYPTPROV hCryptProv,
_In_ DWORD dwCertEncodingType,
_In_ PCERT_PUBLIC_KEY_INFO pInfo 
)
+
+inlinenoexcept
+
+ +

Imports the public key.

+
See also
CryptImportPublicKeyInfo function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1crypt__key.png b/classwinstd_1_1crypt__key.png new file mode 100644 index 0000000000000000000000000000000000000000..76cf4b3678dff927e2dafb0ee4fc05b442413f24 GIT binary patch literal 1211 zcma)+`&ZI;7{|Ywvu2TX8p~;0wOKB$HJj;Dkb~E-q=sfL^KK~_;N27zFUNy=G8E17 zAX-PeVbfNLA*GlzQZ(kZoL~KFiFo6qc|$?Qu>Au)=e(Zx^PKbi_B!XuJxz2+8JQYE z5QHKecOmIgsUv6823_B>KR;drcm z7ozJ#p?_f8c(wSuokQ*846fMpX>A0%6;9jXpR;*xg&Su#y16?|od-DLOSl zrV>;kpB$~rIs{w4iZ}&nJ?x;YBkife0Ry}C7eO3@`gXq&d@Me*gSW`JKJx0jm@@H{{!FKfT92Z literal 0 HcmV?d00001 diff --git a/classwinstd_1_1crypt__prov-members.html b/classwinstd_1_1crypt__prov-members.html new file mode 100644 index 00000000..43f32778 --- /dev/null +++ b/classwinstd_1_1crypt__prov-members.html @@ -0,0 +1,107 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::crypt_prov Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTPROV, NULL >inline
create(_In_opt_z_ LPCTSTR szContainer, _In_opt_z_ LPCTSTR szProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags=0) noexceptwinstd::crypt_provinline
detach()winstd::handle< HCRYPTPROV, NULL >inline
free()winstd::handle< HCRYPTPROV, NULL >inline
free_internal() noexcept overridewinstd::crypt_provinlineprotectedvirtual
handle() noexceptwinstd::handle< HCRYPTPROV, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTPROV, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCRYPTPROV, NULL >inline
handle_type typedefwinstd::handle< HCRYPTPROV, NULL >
invalidwinstd::handle< HCRYPTPROV, NULL >static
m_hwinstd::handle< HCRYPTPROV, NULL >protected
operator handle_type() constwinstd::handle< HCRYPTPROV, NULL >inline
operator!() constwinstd::handle< HCRYPTPROV, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTPROV, NULL >inline
operator&()winstd::handle< HCRYPTPROV, NULL >inline
operator*() constwinstd::handle< HCRYPTPROV, NULL >inline
operator->() constwinstd::handle< HCRYPTPROV, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HCRYPTPROV, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTPROV, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HCRYPTPROV, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HCRYPTPROV, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HCRYPTPROV, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HCRYPTPROV, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HCRYPTPROV, NULL >inline
~crypt_prov()winstd::crypt_provinlinevirtual
+ + + + diff --git a/classwinstd_1_1crypt__prov.html b/classwinstd_1_1crypt__prov.html new file mode 100644 index 00000000..696b7588 --- /dev/null +++ b/classwinstd_1_1crypt__prov.html @@ -0,0 +1,315 @@ + + + + + + + +WinStd: winstd::crypt_prov Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

HCRYPTPROV wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::crypt_prov:
+
+
+ + +winstd::handle< HCRYPTPROV, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~crypt_prov ()
 Releases the cryptographic context. More...
 
bool create (_In_opt_z_ LPCTSTR szContainer, _In_opt_z_ LPCTSTR szProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags=0) noexcept
 Acquires the cryptographic context. More...
 
- Public Member Functions inherited from winstd::handle< HCRYPTPROV, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Releases the cryptographic context. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HCRYPTPROV, NULL >
+typedef HCRYPTPROV handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HCRYPTPROV, NULL >
+static const HCRYPTPROV invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HCRYPTPROV, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

HCRYPTPROV wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~crypt_prov()

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

Releases the cryptographic context.

+
See also
CryptReleaseContext function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::crypt_prov::create (_In_opt_z_ LPCTSTR szContainer,
_In_opt_z_ LPCTSTR szProvider,
_In_ DWORD dwProvType,
_In_ DWORD dwFlags = 0 
)
+
+inlinenoexcept
+
+ +

Acquires the cryptographic context.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
CryptAcquireContext function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::crypt_prov::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Releases the cryptographic context.

+
See also
CryptReleaseContext function
+ +

Implements winstd::handle< HCRYPTPROV, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1crypt__prov.png b/classwinstd_1_1crypt__prov.png new file mode 100644 index 0000000000000000000000000000000000000000..68e4d2cc2adb1222d456eafe94772521fa0bca2e GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^AAmT3gBeH)Oy}?eQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;A`hb*226e-PXE4ed?G45Y%gdCH+?WH)`!*w3_8Qw_BG2g4YF)wZ7 z-#H7PA25IN;oG;pf;(Q6t~-7Gb*<$dW*KLzyO-?lC3~z{c0K>)AK8847Pal$?>w{U zK63tg(~_8V_3f%JrAt5DoVdjJug-_&J@#)BJ*ynxL3LH>g8`4TGt&?8Sca&e>;u!i zlaH)r?BA0sXwH5oKeJ)i)ka2Opt7xql$BVJR+`W-i=cqNMvFj{5aR+_nCfe*8~^5f z{M+VgSMuTgw}PbyF3WTut6KBSa(UIScfP%QPTbiXaV%c<+eZ67)!8@pb3L%!%WTo0 z|1C8z@A<(JwdmRU%xVEscpjMVHtV^~Rc-#w`+#>$9AlYJ`+@blv*XxgCU0W+@}AFP z`N#K+@7psb9*&+N`oo~zJG$ZdSGxximtIcuGoN_#f7jeIcXj8!-OnfSpziJOcWbSG zg(p1UeR1aH_`L@TpSIcXe8_~m_{&6o#g?)!?8ojJs;;kD8wyOI44$rjF6*2UngHa- BXXpR` literal 0 HcmV?d00001 diff --git a/classwinstd_1_1data__blob-members.html b/classwinstd_1_1data__blob-members.html new file mode 100644 index 00000000..0ccb21fe --- /dev/null +++ b/classwinstd_1_1data__blob-members.html @@ -0,0 +1,92 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::data_blob Member List
+
+
+ +

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

+ + + + + + + + + + + +
data() const noexceptwinstd::data_blobinline
data() noexceptwinstd::data_blobinline
data_blob() noexceptwinstd::data_blobinline
data_blob(_In_count_(size) BYTE *data, _In_ DWORD size) noexceptwinstd::data_blobinline
data_blob(_In_ const DATA_BLOB &other)winstd::data_blobinline
data_blob(_Inout_ data_blob &&other) noexceptwinstd::data_blobinline
operator=(_In_ const DATA_BLOB &other)winstd::data_blobinline
operator=(_Inout_ data_blob &&other) noexceptwinstd::data_blobinline
size() const noexceptwinstd::data_blobinline
~data_blob()winstd::data_blobinlinevirtual
+ + + + diff --git a/classwinstd_1_1data__blob.html b/classwinstd_1_1data__blob.html new file mode 100644 index 00000000..e6eceeb7 --- /dev/null +++ b/classwinstd_1_1data__blob.html @@ -0,0 +1,142 @@ + + + + + + + +WinStd: winstd::data_blob Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::data_blob Class Reference
+
+
+ +

DATA_BLOB wrapper class. + More...

+ +

#include <Crypt.h>

+
+Inheritance diagram for winstd::data_blob:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

data_blob () noexcept
 Initializes an empty BLOB.
 
data_blob (_In_count_(size) BYTE *data, _In_ DWORD size) noexcept
 Initializes a BLOB from existing data.
 
data_blob (_In_ const DATA_BLOB &other)
 Duplicate an existing BLOB.
 
data_blob (_Inout_ data_blob &&other) noexcept
 Move an existing BLOB.
 
+virtual ~data_blob ()
 Destroys the BLOB.
 
+data_bloboperator= (_In_ const DATA_BLOB &other)
 Copy an existing BLOB.
 
+data_bloboperator= (_Inout_ data_blob &&other) noexcept
 Move an existing BLOB.
 
+DWORD size () const noexcept
 Get BLOB size.
 
+const BYTE * data () const noexcept
 Get BLOB buffer.
 
+BYTE * data () noexcept
 Get BLOB buffer.
 
+

Detailed Description

+

DATA_BLOB wrapper class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1data__blob.png b/classwinstd_1_1data__blob.png new file mode 100644 index 0000000000000000000000000000000000000000..d46f8d5e2e6e2d5ae01b143150e36d8b7ce952ee GIT binary patch literal 491 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004cNklDi?LP9Yuw4d6VE1;TKU9Cf>YCZ}b@803s(wVbVCF_qRUKB|`l_m7B}`Q{ ztOX__GD!e8^Z=NpnXt!WB5fvYVa=mWh5h5*m@t625(W@f!T`cb7(iGF0|+Z&0AVEz zAgqJ|wup$#5&|$s2?Gf0%dlU@&fEuwS3S5JkJn%J0oYm>E%j18t!urWj&Nu2!OG7+ zKS`92aZKX~%&eN9(3h#FAi8EJuq};kH@2*`y;gRbyUs^;Bf!V?Hdy_~0{BgN>jQ+9 hFo3YuBPSv;S&G= literal 0 HcmV?d00001 diff --git a/classwinstd_1_1dc-members.html b/classwinstd_1_1dc-members.html new file mode 100644 index 00000000..cda5d76d --- /dev/null +++ b/classwinstd_1_1dc-members.html @@ -0,0 +1,106 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::dc Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HDC, NULL >inline
detach()winstd::handle< HDC, NULL >inline
free()winstd::handle< HDC, NULL >inline
free_internal() noexcept overridewinstd::dcinlineprotectedvirtual
handle() noexceptwinstd::handle< HDC, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HDC, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HDC, NULL >inline
handle_type typedefwinstd::handle< HDC, NULL >
invalidwinstd::handle< HDC, NULL >static
m_hwinstd::handle< HDC, NULL >protected
operator handle_type() constwinstd::handle< HDC, NULL >inline
operator!() constwinstd::handle< HDC, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator&()winstd::handle< HDC, NULL >inline
operator*() constwinstd::handle< HDC, NULL >inline
operator->() constwinstd::handle< HDC, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HDC, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HDC, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
~dc()winstd::dcinlinevirtual
+ + + + diff --git a/classwinstd_1_1dc.html b/classwinstd_1_1dc.html new file mode 100644 index 00000000..64ad0455 --- /dev/null +++ b/classwinstd_1_1dc.html @@ -0,0 +1,256 @@ + + + + + + + +WinStd: winstd::dc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Device context wrapper class. + More...

+ +

#include <GDI.h>

+
+Inheritance diagram for winstd::dc:
+
+
+ + +winstd::handle< HDC, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~dc ()
 Deletes the specified device context (DC). More...
 
- Public Member Functions inherited from winstd::handle< HDC, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Deletes the specified device context (DC). More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HDC, NULL >
+typedef HDC handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HDC, NULL >
+static const HDC invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HDC, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Device context wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~dc()

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

Deletes the specified device context (DC).

+
See also
DeleteDC function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::dc::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Deletes the specified device context (DC).

+
See also
DeleteDC function
+ +

Implements winstd::handle< HDC, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1dc.png b/classwinstd_1_1dc.png new file mode 100644 index 0000000000000000000000000000000000000000..6f00c53e9a5828dc9b32dc3177f2c508c006f0f9 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;HkwSs^Pzi;Tj|C94Y zTpUh5%R93sbS`hU2T-C$FylIOzcQ#?>_!_-!`r!Yb+NQa_L0X>g7yPN(wlY6tQu19pn_FTx|H=Mhs_$R_BlrVhR>OPZ;mH>y|dgn|B7*uf7jcoEC>Ah zcoS5Qvu&7^%p7rYBjcJUHyFZ-au~EN%^If4NFVS*m6mE1I8>v=a7GQP9?ZlOP_z(tU0ZFeCZB7@!!98Zf0Y!yKwXd<1ev<{Fh%UFWH-WHtfn> zzU#it168}9TxFY1-Q9S3{n0nSw;x`2Cw8us_51Zt?e5tfJg25PHKqH`ib)JNP9wSM gY`3fv$K{vu%ipM0DqENQ0wxFsPgg&ebxsLQ0JpU)+5i9m literal 0 HcmV?d00001 diff --git a/classwinstd_1_1dc__selector-members.html b/classwinstd_1_1dc__selector-members.html new file mode 100644 index 00000000..969d9b06 --- /dev/null +++ b/classwinstd_1_1dc__selector-members.html @@ -0,0 +1,87 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::dc_selector Member List
+
+
+ +

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

+ + + + + + +
dc_selector(_In_ HDC hdc, _In_ HGDIOBJ h) noexceptwinstd::dc_selectorinline
m_hdcwinstd::dc_selectorprotected
m_origwinstd::dc_selectorprotected
status() const noexceptwinstd::dc_selectorinline
~dc_selector()winstd::dc_selectorinlinevirtual
+ + + + diff --git a/classwinstd_1_1dc__selector.html b/classwinstd_1_1dc__selector.html new file mode 100644 index 00000000..56f46406 --- /dev/null +++ b/classwinstd_1_1dc__selector.html @@ -0,0 +1,214 @@ + + + + + + + +WinStd: winstd::dc_selector Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::dc_selector Class Reference
+
+
+ +

Context scope DC object restorer. + More...

+ +

#include <GDI.h>

+ + + + + + + + + + + +

+Public Member Functions

 dc_selector (_In_ HDC hdc, _In_ HGDIOBJ h) noexcept
 Selects an object into the specified device context (DC). The new object replaces the previous object of the same type. More...
 
virtual ~dc_selector ()
 Restores original object. More...
 
HGDIOBJ status () const noexcept
 Return result of SelectObject() call. More...
 
+ + + + + + + +

+Protected Attributes

+HDC m_hdc
 A handle to the device context.
 
+HGDIOBJ m_orig
 Original object handle.
 
+

Detailed Description

+

Context scope DC object restorer.

+

Constructor & Destructor Documentation

+ +

◆ dc_selector()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::dc_selector::dc_selector (_In_ HDC hdc,
_In_ HGDIOBJ h 
)
+
+inlinenoexcept
+
+ +

Selects an object into the specified device context (DC). The new object replaces the previous object of the same type.

+
See also
SelectObject function
+ +
+
+ +

◆ ~dc_selector()

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

Restores original object.

+
See also
SelectObject function
+ +
+
+

Member Function Documentation

+ +

◆ status()

+ +
+
+ + + + + +
+ + + + + + + +
HGDIOBJ winstd::dc_selector::status () const
+
+inlinenoexcept
+
+ +

Return result of SelectObject() call.

+
See also
SelectObject function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1dplhandle-members.html b/classwinstd_1_1dplhandle-members.html new file mode 100644 index 00000000..07142e97 --- /dev/null +++ b/classwinstd_1_1dplhandle-members.html @@ -0,0 +1,114 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::dplhandle< T, INVAL > Member List
+
+
+ +

This is the complete list of members for winstd::dplhandle< T, INVAL >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< T, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< T, INVAL >inline
detach()winstd::handle< T, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< T, INVAL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< T, INVAL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< T, INVAL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< T, INVAL >inline
duplicate() constwinstd::dplhandle< T, INVAL >inline
duplicate_internal(_In_ handle_type h) const noexcept=0winstd::dplhandle< T, INVAL >protectedpure virtual
free()winstd::handle< T, INVAL >inline
free_internal() noexcept=0winstd::handle< T, INVAL >protectedpure virtual
handle() noexceptwinstd::handle< T, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< T, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T, INVAL >inline
handle_type typedefwinstd::handle< T, INVAL >
invalidwinstd::handle< T, INVAL >static
m_hwinstd::handle< T, INVAL >protected
operator handle_type() constwinstd::handle< T, INVAL >inline
operator!() constwinstd::handle< T, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator&()winstd::handle< T, INVAL >inline
operator*() constwinstd::handle< T, INVAL >inline
operator->() constwinstd::handle< T, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< T, INVAL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< T, INVAL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< T, INVAL >inline
winstd::handle::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
+ + + + diff --git a/classwinstd_1_1dplhandle.html b/classwinstd_1_1dplhandle.html new file mode 100644 index 00000000..adb541b9 --- /dev/null +++ b/classwinstd_1_1dplhandle.html @@ -0,0 +1,551 @@ + + + + + + + +WinStd: winstd::dplhandle< T, INVAL > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::dplhandle< T, INVAL > Class Template Referenceabstract
+
+
+ +

Base abstract template class to support object handle keeping for objects that support handle duplication. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::dplhandle< T, INVAL >:
+
+
+ + +winstd::handle< T, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< T, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + +

+Protected Member Functions

virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
- Protected Member Functions inherited from winstd::handle< T, INVAL >
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< T, INVAL >
+typedef T handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< T, INVAL >
+static const T invalid = INVAL
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< T, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+
template<class T, T INVAL>
+class winstd::dplhandle< T, INVAL >

Base abstract template class to support object handle keeping for objects that support handle duplication.

+

Constructor & Destructor Documentation

+ +

◆ dplhandle() [1/3]

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
winstd::dplhandle< T, INVAL >::dplhandle (_In_opt_ handle_type h)
+
+inlinenoexcept
+
+ +

Initializes a new class instance with an already available object handle.

+
Parameters
+ + +
[in]hInitial object handle value
+
+
+ +
+
+ +

◆ dplhandle() [2/3]

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
winstd::dplhandle< T, INVAL >::dplhandle (_In_ const dplhandle< handle_type, INVAL > & h)
+
+inlinenoexcept
+
+ +

Copy constructor.

+
Parameters
+ + +
[in,out]hA reference of another object
+
+
+ +
+
+ +

◆ dplhandle() [3/3]

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
winstd::dplhandle< T, INVAL >::dplhandle (_Inout_ dplhandle< handle_type, INVAL > && h)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+

Member Function Documentation

+ +

◆ attach_duplicated()

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::dplhandle< T, INVAL >::attach_duplicated (_In_opt_ handle_type h)
+
+inline
+
+ +

Duplicates an object handle and sets a new object handle.

+
Parameters
+ + +
[in]hObject handle of existing object
+
+
+
Returns
    +
  • true when duplication succeeds;
  • +
  • false when duplication fails. In case of failure obtaining the extended error information is object type specific (for example: GetLastError()).
  • +
+
+ +
+
+ +

◆ duplicate()

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + +
handle_type winstd::dplhandle< T, INVAL >::duplicate () const
+
+inline
+
+ +

Duplicates and returns a new object handle.

+
Returns
Duplicated object handle
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
virtual handle_type winstd::dplhandle< T, INVAL >::duplicate_internal (_In_ handle_type h) const
+
+protectedpure virtualnoexcept
+
+ +

Abstract member function that must be implemented by child classes to do the actual object handle duplication.

+
Parameters
+ + +
[in]hObject handle of existing object
+
+
+
Returns
Duplicated object handle
+ +

Implemented in winstd::com_obj< T >, winstd::bstr, winstd::cert_context, winstd::cert_chain_context, winstd::crypt_hash, winstd::crypt_key, and winstd::eap_packet.

+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
dplhandle< handle_type, INVAL > & winstd::dplhandle< T, INVAL >::operator= (_In_ const dplhandle< handle_type, INVAL > & h)
+
+inlinenoexcept
+
+ +

Duplicates the object.

+
Parameters
+ + +
[in]hObject
+
+
+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
dplhandle< handle_type, INVAL > & winstd::dplhandle< T, INVAL >::operator= (_In_opt_ handle_type h)
+
+inlinenoexcept
+
+ +

Attaches already available object handle.

+
Parameters
+ + +
[in]hObject handle value
+
+
+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class T , T INVAL>
+ + + + + +
+ + + + + + + + +
dplhandle< handle_type, INVAL > & winstd::dplhandle< T, INVAL >::operator= (_Inout_ dplhandle< handle_type, INVAL > && h)
+
+inlinenoexcept
+
+ +

Moves the object.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1dplhandle.png b/classwinstd_1_1dplhandle.png new file mode 100644 index 0000000000000000000000000000000000000000..40d267c52d4b3521edf33f5f4981448847092feb GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^JApWWgBeH`S*WN0DTx4|5ZC|z{{xvX-h3_XKQsZz z0^LK1CZ>C@qXlIP&;HU;WK(xwC_ECYdZ0+o{rfRcZQ?jjtwKdscEkU%6Z6JoD`2 zbN{6pe>!fQx@6nE^FOaYxoUd;z~1ANcJG+HWS`fk^gY+@VrNwDZ{Hv2Cdckv!^111 zwl}uO^5hHmCw^Mdk6(n=SG?nX^38D3MU|7Qin=F%3Y&Rx$J2rUv8Y`-F)YNx9Iyx-^&c&nLKB$49wMgViT`> zxNyf0)1R*M7pYWY}_8?=MvaD$1GJBOrOgn3PrffZ>%l9d)Qa^SQ@3f4gTgz^w>~qXZ zs(y0QWc>+a`#sL@?(eF)QNL3A+OJj*a4@o`==w~Z_`81Nf%lWYmub4ETk4mE%8G&O57DdHOl;rw7wQqJ!3IWSK z_pj~Wqszaq%9Ky4H$S@8lKn@7{AA`kt6+gMPhRBtoY?{Y8GZ( + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::eap_attr Member List
+
+
+ +

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

+ + + + + + + + +
create_ms_mppe_key(_In_ BYTE bVendorType, _In_count_(nKeySize) LPCBYTE pbKey, _In_ BYTE nKeySize)winstd::eap_attrinline
eap_attr() noexceptwinstd::eap_attrinline
eap_attr(_In_ const EAP_ATTRIBUTE &a)winstd::eap_attrinline
eap_attr(_Inout_ eap_attr &&a) noexceptwinstd::eap_attrinline
operator=(_In_ const EAP_ATTRIBUTE &a)winstd::eap_attrinline
operator=(_Inout_ eap_attr &&a) noexceptwinstd::eap_attrinline
~eap_attr()winstd::eap_attrinline
+ + + + diff --git a/classwinstd_1_1eap__attr.html b/classwinstd_1_1eap__attr.html new file mode 100644 index 00000000..cfc5f757 --- /dev/null +++ b/classwinstd_1_1eap__attr.html @@ -0,0 +1,179 @@ + + + + + + + +WinStd: winstd::eap_attr Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

EAP_ATTRIBUTE wrapper class. + More...

+ +

#include <EAP.h>

+
+Inheritance diagram for winstd::eap_attr:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

eap_attr () noexcept
 Initializes a new EAP attribute set to eatReserved.
 
eap_attr (_In_ const EAP_ATTRIBUTE &a)
 Copies an existing EAP attribute.
 
eap_attr (_Inout_ eap_attr &&a) noexcept
 Moves an existing EAP attribute.
 
~eap_attr ()
 Destroys the EAP attribute.
 
+eap_attroperator= (_In_ const EAP_ATTRIBUTE &a)
 Copies an existing EAP attribute.
 
+eap_attroperator= (_Inout_ eap_attr &&a) noexcept
 Moves an existing EAP attribute.
 
void create_ms_mppe_key (_In_ BYTE bVendorType, _In_count_(nKeySize) LPCBYTE pbKey, _In_ BYTE nKeySize)
 Creates MS-MPPE-Send-Key or MS-MPPE-Recv-Key. More...
 
+

Detailed Description

+

EAP_ATTRIBUTE wrapper class.

+

Member Function Documentation

+ +

◆ create_ms_mppe_key()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void winstd::eap_attr::create_ms_mppe_key (_In_ BYTE bVendorType,
_In_count_(nKeySize) LPCBYTE pbKey,
_In_ BYTE nKeySize 
)
+
+inline
+
+ +

Creates MS-MPPE-Send-Key or MS-MPPE-Recv-Key.

+
See also
RADIUS Vendor-Specific
+
+MS-MPPE-Send-Key
+
+MS-MPPE-Recv-Key
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1eap__attr.png b/classwinstd_1_1eap__attr.png new file mode 100644 index 0000000000000000000000000000000000000000..46a7fb614fa2507034096dcaedd9bc673515ca76 GIT binary patch literal 506 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004rNkl;i2-<|t|d;0|KI$V`pm)9e`kLjIE zgX)_sxy!EYz3u(#0jD&BzO|FKbNi_G(#WmDZP%b}H5+yA*L85q2lDp2v~_Vi+M1@+ z@1hptUD|qi*Mmo!Q?rZOW%9mpBI;Z6 waEL%!{tE**(I4C!z(blefCvqznVF5!50IQbqHILyr~m)}07*qoM6N<$f@xRidH?_b literal 0 HcmV?d00001 diff --git a/classwinstd_1_1eap__method__info__array-members.html b/classwinstd_1_1eap__method__info__array-members.html new file mode 100644 index 00000000..e7e86ff3 --- /dev/null +++ b/classwinstd_1_1eap__method__info__array-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::eap_method_info_array Member List
+
+
+ +

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

+ + + + + +
eap_method_info_array() noexceptwinstd::eap_method_info_arrayinline
eap_method_info_array(_Inout_ eap_method_info_array &&other) noexceptwinstd::eap_method_info_arrayinline
operator=(_Inout_ eap_method_info_array &&other) noexceptwinstd::eap_method_info_arrayinline
~eap_method_info_array()winstd::eap_method_info_arrayinline
+ + + + diff --git a/classwinstd_1_1eap__method__info__array.html b/classwinstd_1_1eap__method__info__array.html new file mode 100644 index 00000000..2cc56dcf --- /dev/null +++ b/classwinstd_1_1eap__method__info__array.html @@ -0,0 +1,186 @@ + + + + + + + +WinStd: winstd::eap_method_info_array Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::eap_method_info_array Class Reference
+
+
+ +

EAP_METHOD_INFO_ARRAY wrapper class. + More...

+ +

#include <EAP.h>

+
+Inheritance diagram for winstd::eap_method_info_array:
+
+
+ +
+ + + + + + + + + + + + + + +

+Public Member Functions

eap_method_info_array () noexcept
 Constructs an empty array.
 
 eap_method_info_array (_Inout_ eap_method_info_array &&other) noexcept
 Move constructor. More...
 
~eap_method_info_array ()
 Destructor.
 
eap_method_info_arrayoperator= (_Inout_ eap_method_info_array &&other) noexcept
 Move assignment. More...
 
+

Detailed Description

+

EAP_METHOD_INFO_ARRAY wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ eap_method_info_array()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::eap_method_info_array::eap_method_info_array (_Inout_ eap_method_info_array && other)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]otherA rvalue reference of another object
+
+
+ +
+
+

Member Function Documentation

+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
eap_method_info_array & winstd::eap_method_info_array::operator= (_Inout_ eap_method_info_array && other)
+
+inlinenoexcept
+
+ +

Move assignment.

+
Parameters
+ + +
[in,out]otherA rvalue reference of another object
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1eap__method__info__array.png b/classwinstd_1_1eap__method__info__array.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2353918910728db6493f338d446d5096b9f42f GIT binary patch literal 727 zcmV;|0x127P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0007JNklRx^>sTZ9-YL>t?#`_G(^z2EH#R=dG-Ll4_u$7_gpQ1z01y*&5fHnuz<*`L4+3 zAqGZWW<7A3ew@A4$R^pQwuf>F?ed(nx4Im#*ZZD*oBSfX&uo^_uIWL)@ACcL*jvXo z&-d*0tMVMM`+jfcbpej*Ze#n>-LJb_wE?@Yo~cf6-m!aC` zJ}|n=ZkqO--Szv$^WF4Ff4JXZ7ZI6D@7ecLL`3AOK61XB;s36?h{(UGWET;MSF($U z#OujkN-1*+;Cp%iOsa|5ACGzACuV=5PYXXYd!91@zoBFYh*z=$#4FhW;+5^SF!`dE7<|!mFxgRl~T&2q5w>(WCw^>vIE4cXFnLzw z@7HG3z2~6;a7pj${zdllIe=4D_T_igE8kj%<##zomp`gn_2y=;tGCl`Zp(x=caf_9 z7RwaBI&4-gp(^Kyy@3Dffxej1E@V5ucT^LK-Q0Hlv_4QRqRDG|rhxvo<+k?Dxlh=k z+D9FjkJ(MCI{i8O_ROCB^)_Cw$L#yv+w3*X&Tc|F_Vr^k__5u)=XD>!ea>!X^q_4R z{cn)S^!o_f_4@}s}sEw6=?@YJ4PJ)esZW-2j@&%r~aJT@2Cmg0e|;i{e`#k z53|3v=I5`*GxN8h^s-G>cmE~?m{7?M5U*qhh}ZINDW#Mt^#|3%Yrr!vdPx8P002ov JPDHLkV1jdfcn$yn literal 0 HcmV?d00001 diff --git a/classwinstd_1_1eap__method__prop-members.html b/classwinstd_1_1eap__method__prop-members.html new file mode 100644 index 00000000..29371778 --- /dev/null +++ b/classwinstd_1_1eap__method__prop-members.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::eap_method_prop Member List
+
+
+ +

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

+ + + + +
eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexceptwinstd::eap_method_propinline
eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexceptwinstd::eap_method_propinline
eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexceptwinstd::eap_method_propinline
+ + + + diff --git a/classwinstd_1_1eap__method__prop.html b/classwinstd_1_1eap__method__prop.html new file mode 100644 index 00000000..eb857079 --- /dev/null +++ b/classwinstd_1_1eap__method__prop.html @@ -0,0 +1,247 @@ + + + + + + + +WinStd: winstd::eap_method_prop Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

EAP_METHOD_PROPERTY wrapper class. + More...

+ +

#include <EAP.h>

+
+Inheritance diagram for winstd::eap_method_prop:
+
+
+ +
+ + + + + + + + + + + +

+Public Member Functions

 eap_method_prop (_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexcept
 Constructs a BOOL method property. More...
 
 eap_method_prop (_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexcept
 Constructs a DWORD method property. More...
 
 eap_method_prop (_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexcept
 Constructs a Unicode string method property. More...
 
+

Detailed Description

+

EAP_METHOD_PROPERTY wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ eap_method_prop() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::eap_method_prop::eap_method_prop (_In_ EAP_METHOD_PROPERTY_TYPE type,
_In_ BOOL value 
)
+
+inlinenoexcept
+
+ +

Constructs a BOOL method property.

+
Parameters
+ + + +
[in]typeEAP method property type
[in]valueProperty value
+
+
+ +
+
+ +

◆ eap_method_prop() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::eap_method_prop::eap_method_prop (_In_ EAP_METHOD_PROPERTY_TYPE type,
_In_ DWORD value 
)
+
+inlinenoexcept
+
+ +

Constructs a DWORD method property.

+
Parameters
+ + + +
[in]typeEAP method property type
[in]valueProperty value
+
+
+ +
+
+ +

◆ eap_method_prop() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::eap_method_prop::eap_method_prop (_In_ EAP_METHOD_PROPERTY_TYPE type,
_In_z_ LPCWSTR value 
)
+
+inlinenoexcept
+
+ +

Constructs a Unicode string method property.

+
Parameters
+ + + +
[in]typeEAP method property type
[in]valueProperty value
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1eap__method__prop.png b/classwinstd_1_1eap__method__prop.png new file mode 100644 index 0000000000000000000000000000000000000000..3701e7d0c6b79c931b9ed9aa9686b0a3923c045b GIT binary patch literal 669 zcmeAS@N?(olHy`uVBq!ia0vp^tARLxgBeH$CYOE$QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;u*5IpopNfOK#KmYA7cs#_t9G?a3Jo=lJGp9=)cRvlc~L)asBzII`ybyvc3AG%rab$7&u%Ecb_iWGMI{$dnwb0YM{OeeYUGhpqG91tla~tJIQmq-erdcuNVLIdSXgX!uJ1tp`l+7 zf7Q+2{dCnT`>X5cgodjB4X+Fh{VSlldR5jQupj)x1SguZ2&`v6pcK{d^SxmRJ2bLRfs#uC9pn)wIh5J(-G}R#z#}vFnsh1Yp77wcG!a=t)#T6L!d!* z3RHgX=375&YhGvgFJFAWUpe;t>*pKyxw%IFN%y}U_2F9EcKN$CvsbRqvT}L5dZ}sO zGqs@D+jr(vgh#NxG3GmVeabFz&&ON)4!fA^bEkjw%W_Dl`Stwu%3W`_*>M)BLgxkAJSKog2 + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::eap_packet Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< EapPacket *, INVAL >inline
attach_duplicated(_In_opt_ handle_type h)winstd::dplhandle< EapPacket *, NULL >inline
create(_In_ EapCode code, _In_ BYTE id, _In_ WORD size) noexceptwinstd::eap_packetinline
detach()winstd::handle< EapPacket *, INVAL >inline
dplhandle() noexceptwinstd::dplhandle< EapPacket *, NULL >inline
dplhandle(_In_opt_ handle_type h) noexceptwinstd::dplhandle< EapPacket *, NULL >inline
dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< EapPacket *, NULL >inline
dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< EapPacket *, NULL >inline
duplicate() constwinstd::dplhandle< EapPacket *, NULL >inline
duplicate_internal(_In_ handle_type h) const noexcept overridewinstd::eap_packetinlineprotectedvirtual
free()winstd::handle< EapPacket *, INVAL >inline
free_internal() noexcept overridewinstd::eap_packetinlineprotectedvirtual
handle() noexceptwinstd::handle< EapPacket *, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< EapPacket *, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< EapPacket *, INVAL >inline
handle_type typedefwinstd::handle< EapPacket *, INVAL >
invalidwinstd::handle< EapPacket *, INVAL >static
m_hwinstd::handle< EapPacket *, INVAL >protected
operator handle_type() constwinstd::handle< EapPacket *, INVAL >inline
operator!() constwinstd::handle< EapPacket *, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< EapPacket *, INVAL >inline
operator&()winstd::handle< EapPacket *, INVAL >inline
operator*() constwinstd::handle< EapPacket *, INVAL >inline
operator->() constwinstd::handle< EapPacket *, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< EapPacket *, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< EapPacket *, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::dplhandle< EapPacket *, NULL >inline
operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexceptwinstd::dplhandle< EapPacket *, NULL >inline
operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexceptwinstd::dplhandle< EapPacket *, NULL >inline
handle< EapPacket *, INVAL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< EapPacket *, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< EapPacket *, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< EapPacket *, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< EapPacket *, INVAL >inline
size() const noexceptwinstd::eap_packetinline
~eap_packet()winstd::eap_packetinlinevirtual
+ + + + diff --git a/classwinstd_1_1eap__packet.html b/classwinstd_1_1eap__packet.html new file mode 100644 index 00000000..c3fa0f86 --- /dev/null +++ b/classwinstd_1_1eap__packet.html @@ -0,0 +1,358 @@ + + + + + + + +WinStd: winstd::eap_packet Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

EapPacket wrapper class. + More...

+ +

#include <EAP.h>

+
+Inheritance diagram for winstd::eap_packet:
+
+
+ + +winstd::dplhandle< EapPacket *, NULL > +winstd::handle< EapPacket *, INVAL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~eap_packet ()
 Destroys the EAP packet.
 
bool create (_In_ EapCode code, _In_ BYTE id, _In_ WORD size) noexcept
 Create new EAP packet. More...
 
+WORD size () const noexcept
 Returns total EAP packet size in bytes.
 
- Public Member Functions inherited from winstd::dplhandle< EapPacket *, NULL >
dplhandle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 dplhandle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 dplhandle (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Copy constructor. More...
 
 dplhandle (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
dplhandle< handle_type, INVAL > & operator= (_In_ const dplhandle< handle_type, INVAL > &h) noexcept
 Duplicates the object. More...
 
dplhandle< handle_type, INVAL > & operator= (_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept
 Moves the object. More...
 
handle_type duplicate () const
 Duplicates and returns a new object handle. More...
 
bool attach_duplicated (_In_opt_ handle_type h)
 Duplicates an object handle and sets a new object handle. More...
 
- Public Member Functions inherited from winstd::handle< EapPacket *, INVAL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the EAP packet. More...
 
handle_type duplicate_internal (_In_ handle_type h) const noexcept override
 Duplicates the EAP packet. More...
 
virtual handle_type duplicate_internal (_In_ handle_type h) const noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object handle duplication. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< EapPacket *, INVAL >
+typedef EapPacket * handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< EapPacket *, INVAL >
+static const EapPacket * invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< EapPacket *, INVAL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

EapPacket wrapper class.

+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::eap_packet::create (_In_ EapCode code,
_In_ BYTE id,
_In_ WORD size 
)
+
+inlinenoexcept
+
+ +

Create new EAP packet.

+
Parameters
+ + + + +
[in]codeEAP code (one of EapCode enum values)
[in]idPacket ID
[in]sizeTotal packet size in bytes, including header. Must be at least 4B.
+
+
+
Note
Packet data (beyond first 4B) is not initialized.
+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+ +
+
+ +

◆ duplicate_internal()

+ +
+
+ + + + + +
+ + + + + + + + +
handle_type winstd::eap_packet::duplicate_internal (_In_ handle_type h) const
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Duplicates the EAP packet.

+ +

Implements winstd::dplhandle< EapPacket *, NULL >.

+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::eap_packet::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the EAP packet.

+ +

Implements winstd::handle< EapPacket *, INVAL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1eap__packet.png b/classwinstd_1_1eap__packet.png new file mode 100644 index 0000000000000000000000000000000000000000..77e9a0fef94dc1200d71f9c4b47f2020273de6b6 GIT binary patch literal 1230 zcmaJ>dr;B`90$cxJAAH9Ekg}-rbL>rOr7DYp9q?Em0S3@a@qNQ;NuW7kF@O8k`l{? z!VFE9kP12EG@I$tvJfAgBDkAdqKKp-B&3XXx7}{H+xPDC{d~T6pZ`9e`(BH~MM2FS z%t0U!6gVCpZ(x-HS51u#d%@bT$Ut^+F()JRdc8r)mNy9B{&drz{zQL&zsa>(nBg=n zjK?K_45p7WIdak)1cKm!@M9-SzzX^_ZOO?h!rv`pQ{PzT>l|kS&pKMz-5qzM@-7xy znwCgI)SrR7(_Fdm2qA@b-!!lsN6j4G5Y4K^m*@MqWH{eDQ{^#H4LeiRX*tS)LknA2 z$si;^pPJe}5LwG5Z{c)>#`QZTmZUxWi}=que0E<}Dns)shzzTb6^c1HUcv}?ozmO& zc(OLAAmsa_8@m{{CTLH`6N!DDLn(?-fe`fer6`)3P++X{#dHn|im924zYg(>37hKY zgbdr8u4M{BB8G-gY`#7>lU)Rnq+T+^&*qx;()m?MV#%qgUa<$EefJCxpe7_ftIX#Q z9_+~s+eN287s#AdW654gInCtgoXMrfZevF%*=w74TJ|}2fL&&`6&C|jmVWR)WS{!J zPa7Fy$><{1Elaf94asW{=9lq%QL(E@Kk}xQvkr_#aH{y1fsA|6={fey1?cc$ zBHSxJMiysDhfh=GZ2l>Btb)SPiL^DpjXYXCKgTA`aaM@ATn=)}A{|)b!p>0L2T0>u zo@T>J)lM7_L~!znQnF`@<9y_TiJD)!E+w;8nm>^Rr79n05fHDx`ym$X)`|q$2K{fh ze9g!}sdIN^?3}qWQd?gWMe8%3IZMh@!l&ae^c3i}zG@q*k>73SOuXa0Nkb;m9$Mr& zjBgEYG^v;Dxp}`38Qq69k_AHsidqRC6zep*$yE#1~wLAGyZc`0P(~GSJ!)IU+4wR!D#_pCt zR7(en8{@k)4UaKwHdtvXl{9?QVPi3HTJNa52sp^zDLjF>@p(*ezd#O+Wzi+4;uBN6JpzsS~Rl4S~F2~y8#9ZaLMgL+-pduebfnBbIlo!q_XX#jMySgk?ZiuN&ARKL5_Asb)e63|8#^GL(*{46B2L%I z-7!W%tnMc*;2XdD>sy;Xn8|!G{JJCkIv?ae%7|wsM7!VF20wk2qVGqBUo<=)5D + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::eap_runtime_error Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string &msg)winstd::eap_runtime_errorinline
eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg=nullptr)winstd::eap_runtime_errorinline
error_type typedefwinstd::num_runtime_error< DWORD >
help_link_id() const noexceptwinstd::eap_runtime_errorinline
m_help_link_idwinstd::eap_runtime_errorprotected
m_numwinstd::num_runtime_error< DWORD >protected
m_reasonwinstd::eap_runtime_errorprotected
m_repair_descwinstd::eap_runtime_errorprotected
m_repair_idwinstd::eap_runtime_errorprotected
m_root_cause_descwinstd::eap_runtime_errorprotected
m_root_cause_idwinstd::eap_runtime_errorprotected
m_typewinstd::eap_runtime_errorprotected
msg(_In_opt_ DWORD dwLanguageId=0) constwinstd::win_runtime_errorinline
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::num_runtime_error< DWORD >inline
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::num_runtime_error< DWORD >inline
number() constwinstd::num_runtime_error< DWORD >inline
reason() const noexceptwinstd::eap_runtime_errorinline
repair() const noexceptwinstd::eap_runtime_errorinline
repair_id() const noexceptwinstd::eap_runtime_errorinline
root_cause() const noexceptwinstd::eap_runtime_errorinline
root_cause_id() const noexceptwinstd::eap_runtime_errorinline
type() const noexceptwinstd::eap_runtime_errorinline
win_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::win_runtime_errorinline
win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::win_runtime_errorinline
win_runtime_error(_In_ const std::string &msg)winstd::win_runtime_errorinline
win_runtime_error(_In_opt_z_ const char *msg=nullptr)winstd::win_runtime_errorinline
+ + + + diff --git a/classwinstd_1_1eap__runtime__error.html b/classwinstd_1_1eap__runtime__error.html new file mode 100644 index 00000000..ec7091b2 --- /dev/null +++ b/classwinstd_1_1eap__runtime__error.html @@ -0,0 +1,304 @@ + + + + + + + +WinStd: winstd::eap_runtime_error Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::eap_runtime_error Class Reference
+
+
+ +

EapHost runtime error. + More...

+ +

#include <EAP.h>

+
+Inheritance diagram for winstd::eap_runtime_error:
+
+
+ + +winstd::win_runtime_error +winstd::num_runtime_error< DWORD > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 eap_runtime_error (_In_ const EAP_ERROR &err, _In_ const std::string &msg)
 Constructs an exception. More...
 
 eap_runtime_error (_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+const EAP_METHOD_TYPE & type () const noexcept
 Returns EAP method type.
 
+DWORD reason () const noexcept
 Returns the reason code for error.
 
+const GUID & root_cause_id () const noexcept
 Returns root cause ID.
 
+const wchar_t * root_cause () const noexcept
 Returns root cause ID.
 
+const GUID & repair_id () const noexcept
 Returns repair ID.
 
+const wchar_t * repair () const noexcept
 Returns root cause ID.
 
+const GUID & help_link_id () const noexcept
 Returns help_link ID.
 
- Public Member Functions inherited from winstd::win_runtime_error
 win_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 win_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
 win_runtime_error (_In_ const std::string &msg)
 Constructs an exception using GetLastError() More...
 
 win_runtime_error (_In_opt_z_ const char *msg=nullptr)
 Constructs an exception using GetLastError() More...
 
tstring msg (_In_opt_ DWORD dwLanguageId=0) const
 Returns a user-readable Windows error message. More...
 
- Public Member Functions inherited from winstd::num_runtime_error< DWORD >
 num_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 num_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+error_type number () const
 Returns the Windows error number.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+EAP_METHOD_TYPE m_type
 Structure that identifies the EAP method that raised the error.
 
+DWORD m_reason
 The reason code for the error.
 
+GUID m_root_cause_id
 A unique ID that identifies cause of error in EAPHost.
 
+std::wstring m_root_cause_desc
 A localized and readable string that describes the root cause of the error.
 
+GUID m_repair_id
 A unique ID that maps to a localizable string that identifies the repair action that can be taken to fix the reported error.
 
+std::wstring m_repair_desc
 A localized and readable string that describes the possible repair action.
 
+GUID m_help_link_id
 A unique ID that maps to a localizable string that specifies an URL for a page that contains additional information about an error or repair message.
 
- Protected Attributes inherited from winstd::num_runtime_error< DWORD >
+error_type m_num
 Numeric error code.
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::num_runtime_error< DWORD >
+typedef DWORD error_type
 Error number type.
 
+

Detailed Description

+

EapHost runtime error.

+
See also
EAP_ERROR structure
+

Constructor & Destructor Documentation

+ +

◆ eap_runtime_error() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::eap_runtime_error::eap_runtime_error (_In_ const EAP_ERROR & err,
_In_ const std::string & msg 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]errEapHost error descriptor
[in]msgError message
+
+
+ +
+
+ +

◆ eap_runtime_error() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::eap_runtime_error::eap_runtime_error (_In_ const EAP_ERROR & err,
_In_opt_z_ const char * msg = nullptr 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]errEapHost error descriptor
[in]msgError message
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1eap__runtime__error.png b/classwinstd_1_1eap__runtime__error.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab16c4c38a1c8d97a0a7c3dfca0344c56fbf93f GIT binary patch literal 1424 zcmcIkdr;B`9RE4Xv@&Zhm#@?tL^SWrNBIcCgleCs+2h z4}3fbwIkk+=@-P;4jlA7!h9#M6NE3&=JjlC6)HZ-=jR6pOkXvp&_B^|3o2i1OO-o497au)f z7RH@SAp76#CFG5Su>>FpeH}wONptIoq8S@k!f1RyIJX(Bf-fFIa2atblj5#md%Ij# zQ~K+HE~dyA23EN{Kc9~s_jIH^^vhCIAyt{B`MaD_%lYD=!a9nS)igg6HW?hpYk!TWGF++nvA7Z5f^cS{ z()Qy!NQQyty8+ew1yY<#;cz0%OMiLK`}bRf81$+saEP#HKo@axB)>}zR#|(qXtM=N zr65Ee8)TSXloAt^Znv%yES~^hFL%D-c#wCAo+`j0+!@DZ2cG?ZD)6~L*;LM4$F^Vy zdeH`h)*v?&Ir`ymHR1wkSb~=}+#9`GS)$PX!UlECJO}H^I#(yhT6bI5d2Vv2Cp^_5 ze&UY2-2bM0`9kF0*daMvH0y)P2X*yXh(HZu%GiO*wJtxbzxNqs#oSe4#Q`L3;)ltO z?<46NVQhvM`qD#~uK|L-bUBmbrfbmkGR46xmDE%=l)j!@iv0$yZW<%JPKee!2QB2P zMash`Zc4P#km{j^1zc(rRHAAdOQ~NA41NSzYD#jw#=o7II83UZQ)HpZMI{?#iYdbc zD&&YTcY{is|CP$p$PNGm=>ItdRwidIOvKtD?V7+8>jJfz04=qi{rkj?0vS+ z)oGjT{M+k1lGf=(4lG8M(_|Q1c4M&Rbc);uWyL!}S)`wTz%S6S&sJ#P*52<9`aM2} z_zdd^s2d3pCuU3ak`6*&Z|!7X+HQmme^e8Xn2%jJ4rgCDo2APUtG6(t7NX-OKQMGL z5<@@et81!W!?;zQ7x~%y8SuUN#?+?3TfMA?#O5Au*WaAJpv*y(x&Yk4ZP^=%5L zT5T~g&CuFUd7lf|Yr)jOMIOxgfNi?+Eu=8PXV<>I9RmgHjh57(X7jF$ei>kXp8y&a K9>O_xKKD=R(AG@= literal 0 HcmV?d00001 diff --git a/classwinstd_1_1event-members.html b/classwinstd_1_1event-members.html new file mode 100644 index 00000000..c8204085 --- /dev/null +++ b/classwinstd_1_1event-members.html @@ -0,0 +1,108 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
create(_In_ BOOL bManualReset, _In_ BOOL bInitialState, _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes=NULL, _In_opt_z_ LPCTSTR lpName=NULL) noexceptwinstd::eventinline
detach()winstd::handle< HANDLE, INVALID >inline
free()winstd::handle< HANDLE, INVALID >inline
free_internal() noexcept overridewinstd::win_handle< NULL >inlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle_type typedefwinstd::handle< HANDLE, INVALID >
invalidwinstd::handle< HANDLE, INVALID >static
m_hwinstd::handle< HANDLE, INVALID >protected
open(_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_z_ LPCTSTR lpName) noexceptwinstd::eventinline
operator handle_type() constwinstd::handle< HANDLE, INVALID >inline
operator!() constwinstd::handle< HANDLE, INVALID >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator&()winstd::handle< HANDLE, INVALID >inline
operator*() constwinstd::handle< HANDLE, INVALID >inline
operator->() constwinstd::handle< HANDLE, INVALID >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
~win_handle()winstd::win_handle< NULL >inlinevirtual
+ + + + diff --git a/classwinstd_1_1event.html b/classwinstd_1_1event.html new file mode 100644 index 00000000..9c94adfd --- /dev/null +++ b/classwinstd_1_1event.html @@ -0,0 +1,308 @@ + + + + + + + +WinStd: winstd::event Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::event Class Reference
+
+
+ +

Event handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::event:
+
+
+ + +winstd::win_handle< NULL > +winstd::handle< HANDLE, INVALID > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool create (_In_ BOOL bManualReset, _In_ BOOL bInitialState, _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes=NULL, _In_opt_z_ LPCTSTR lpName=NULL) noexcept
 Creates or opens a named or unnamed event object. More...
 
bool open (_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_z_ LPCTSTR lpName) noexcept
 Opens an existing named event object. More...
 
- Public Member Functions inherited from winstd::win_handle< NULL >
virtual ~win_handle ()
 Closes an open object handle. More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, INVALID >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, INVALID >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, INVALID >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Member Functions inherited from winstd::win_handle< NULL >
void free_internal () noexcept override
 Closes an open object handle. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
- Protected Attributes inherited from winstd::handle< HANDLE, INVALID >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Event handle wrapper.

+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::event::create (_In_ BOOL bManualReset,
_In_ BOOL bInitialState,
_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes = NULL,
_In_opt_z_ LPCTSTR lpName = NULL 
)
+
+inlinenoexcept
+
+ +

Creates or opens a named or unnamed event object.

+
See also
CreateEventW function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::event::open (_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_z_ LPCTSTR lpName 
)
+
+inlinenoexcept
+
+ +

Opens an existing named event object.

+
See also
OpenEventW function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event.png b/classwinstd_1_1event.png new file mode 100644 index 0000000000000000000000000000000000000000..6d71c0b1c385736dbe6cad8a70df5f086c61f5d9 GIT binary patch literal 1042 zcmeAS@N?(olHy`uVBq!ia0vp^4}iFXgBeJk3=w|= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ07kaulhEy=Vo%{CMCItak^Y*Q~{(IL2 z3o>qeb25tey$Ji$>^5HJf2zkM+{FSX9h=JRH7V6{flA~xIRg)^V6Eq`w(Wg$BR@K8 zcjb(_rPE_BO6kVW+GC`$((8QrhoA!!&LFtznyjGP537BjZfC!oNKqBDdZ)`2KO86JVCRq^7~(XHVbW-I^CQh`<89O z#$%Q)%^}O?e%ErzK73XA_q`e&_SG|=Ufa#|X8yrT?<5Z#`m20k>2<*eMw4wH#N7AW zBym}$&Di=zOIhx74VTLzTnC=sZ@H=X;NoIo)!*44d=H#k@f;}I-}LH>$cH16YvQjl zR8)0~9lN#u%t75-*3Gg9L>B!N%YAH~`}5YkA{W8yO@tjJU+nmV^to5a(2mq+qngYE;7EaNfzegf3aPoA=gr&A(eQ1 zU@Dhl%S2ZOiEuuSgh&vc&y=%v*(c5P>E~WVTU&5ENXfovyFY#NTh00V+%KPgmb30A z+mfJn+y$L>oDvIsQx|@|af?Ck;!#DZ1wOY+wij&`Y3Fb7{!)2BHK4rVvi@&>RpExy z``NNiAN6LsldF9|b=NO3-MqfHfpZV;x + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_data Member List
+
+
+ +

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

+ + + + + + + + + + + + + +
event_data()winstd::event_datainline
event_data(_In_ const char &data)winstd::event_datainline
event_data(_In_ const unsigned char &data)winstd::event_datainline
event_data(_In_ const int &data)winstd::event_datainline
event_data(_In_ const unsigned int &data)winstd::event_datainline
event_data(_In_ const long &data)winstd::event_datainline
event_data(_In_ const unsigned long &data)winstd::event_datainline
event_data(_In_ const GUID &data)winstd::event_datainline
event_data(_In_opt_z_ const char *data)winstd::event_datainline
event_data(_In_opt_z_ const wchar_t *data)winstd::event_datainline
event_data(_In_ const std::basic_string< _Elem, _Traits, _Ax > &data)winstd::event_datainline
event_data(_In_bytecount_(size) const void *data, _In_ ULONG size)winstd::event_datainline
+ + + + diff --git a/classwinstd_1_1event__data.html b/classwinstd_1_1event__data.html new file mode 100644 index 00000000..6c1733b1 --- /dev/null +++ b/classwinstd_1_1event__data.html @@ -0,0 +1,539 @@ + + + + + + + +WinStd: winstd::event_data Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

EVENT_DATA_DESCRIPTOR wrapper. + More...

+ +

#include <ETW.h>

+
+Inheritance diagram for winstd::event_data:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

event_data ()
 Construct empty class.
 
 event_data (_In_ const char &data)
 Construct class pointing to an char. More...
 
 event_data (_In_ const unsigned char &data)
 Construct class pointing to an unsigned char. More...
 
 event_data (_In_ const int &data)
 Construct class pointing to an int. More...
 
 event_data (_In_ const unsigned int &data)
 Construct class pointing to an unsigned int. More...
 
 event_data (_In_ const long &data)
 Construct class pointing to a long. More...
 
 event_data (_In_ const unsigned long &data)
 Construct class pointing to an unsigned long. More...
 
 event_data (_In_ const GUID &data)
 Construct class pointing to a GUID. More...
 
 event_data (_In_opt_z_ const char *data)
 Construct class pointing to a string. More...
 
 event_data (_In_opt_z_ const wchar_t *data)
 Construct class pointing to a wide string. More...
 
template<class _Elem , class _Traits , class _Ax >
 event_data (_In_ const std::basic_string< _Elem, _Traits, _Ax > &data)
 Template to construct pointing to a std::basic_string<>. More...
 
 event_data (_In_bytecount_(size) const void *data, _In_ ULONG size)
 Construct class pointing to binary data. More...
 
+

Detailed Description

+

EVENT_DATA_DESCRIPTOR wrapper.

+

Constructor & Destructor Documentation

+ +

◆ event_data() [1/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const char & data)
+
+inline
+
+ +

Construct class pointing to an char.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [2/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const unsigned char & data)
+
+inline
+
+ +

Construct class pointing to an unsigned char.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [3/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const int & data)
+
+inline
+
+ +

Construct class pointing to an int.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [4/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const unsigned int & data)
+
+inline
+
+ +

Construct class pointing to an unsigned int.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [5/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const long & data)
+
+inline
+
+ +

Construct class pointing to a long.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [6/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const unsigned long & data)
+
+inline
+
+ +

Construct class pointing to an unsigned long.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [7/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const GUID & data)
+
+inline
+
+ +

Construct class pointing to a GUID.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [8/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_opt_z_ const char * data)
+
+inline
+
+ +

Construct class pointing to a string.

+
Parameters
+ + +
[in]dataEvent data. When NULL, the event data will be "(null)".
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [9/11]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_opt_z_ const wchar_t * data)
+
+inline
+
+ +

Construct class pointing to a wide string.

+
Parameters
+ + +
[in]dataEvent data. When NULL, the event data will be "(null)".
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [10/11]

+ +
+
+
+template<class _Elem , class _Traits , class _Ax >
+ + + + + +
+ + + + + + + + +
winstd::event_data::event_data (_In_ const std::basic_string< _Elem, _Traits, _Ax > & data)
+
+inline
+
+ +

Template to construct pointing to a std::basic_string<>.

+
Parameters
+ + +
[in]dataEvent data
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+ +

◆ event_data() [11/11]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::event_data::event_data (_In_bytecount_(size) const void * data,
_In_ ULONG size 
)
+
+inline
+
+ +

Construct class pointing to binary data.

+
Parameters
+ + + +
[in]dataPointer to event data
[in]sizeSize of data in bytes
+
+
+
Note
This class saves a reference to the data only. Therefore, data must be kept available.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__data.png b/classwinstd_1_1event__data.png new file mode 100644 index 0000000000000000000000000000000000000000..46140f3c55ba16a973ddaf25288aa1f8e39e83de GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0G(24#Ln;{G&W)V**nq=T-#+obb)LUq zM#0T>Tvyj#p7SHqZ+Y~3_TKU!#`tx z*Yl#S|F~u^Y+G-){8rtI=jYz5`Ct6`v-r%~=vm$NozJJ;jDIfqxzc9)a=DeyO!Ds} z)lD(~RsKh7-fC^R9~-@Qho8Cr^XHtKpFVd)hL#H1rsdhSuUeIS*DNHocFF%k=U1(& zk36|%mDGBW2d^K}Q8Jp&ko1LVhL5n({3`3oHCy|)Z1Pv52JO3j zyo~=P9INlmxVip=-HK!Njg|cq`YM0#+E;E@wfs!pud)K0gnRX-j~~R{?`_^${O@G0 z%aOM37r#`xpFg|iUHItvj|w>h`Hg{}+F~~qS4?$1R(W{Rsk=23?&meE-?De|c4I?_ k^ + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_fn_auto Member List
+
+
+ +

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

+ + + + + + + + + + +
event_fn_auto(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName)winstd::event_fn_autoinline
event_fn_auto(_In_ const event_fn_auto &other)winstd::event_fn_autoinline
event_fn_auto(_Inout_ event_fn_auto &&other) noexceptwinstd::event_fn_autoinline
m_epwinstd::event_fn_autoprotected
m_event_destwinstd::event_fn_autoprotected
m_fn_namewinstd::event_fn_autoprotected
operator=(_In_ const event_fn_auto &other)winstd::event_fn_autoinline
operator=(_Inout_ event_fn_auto &&other) noexceptwinstd::event_fn_autoinline
~event_fn_auto()winstd::event_fn_autoinline
+ + + + diff --git a/classwinstd_1_1event__fn__auto.html b/classwinstd_1_1event__fn__auto.html new file mode 100644 index 00000000..a936fe5b --- /dev/null +++ b/classwinstd_1_1event__fn__auto.html @@ -0,0 +1,137 @@ + + + + + + + +WinStd: winstd::event_fn_auto Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Helper class to write an event on entry/exit of scope. + More...

+ +

#include <ETW.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

event_fn_auto (_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName)
 Writes the event_cons event.
 
event_fn_auto (_In_ const event_fn_auto &other)
 Copies the object.
 
event_fn_auto (_Inout_ event_fn_auto &&other) noexcept
 Moves the object.
 
~event_fn_auto ()
 Writes the event_dest event.
 
+event_fn_autooperator= (_In_ const event_fn_auto &other)
 Copies the object.
 
+event_fn_autooperator= (_Inout_ event_fn_auto &&other) noexcept
 Moves the object.
 
+ + + + + + + + + + +

+Protected Attributes

+event_providerm_ep
 Reference to event provider in use.
 
+const EVENT_DESCRIPTOR * m_event_dest
 Event descriptor at destruction.
 
+EVENT_DATA_DESCRIPTOR m_fn_name
 Function name.
 
+

Detailed Description

+

Helper class to write an event on entry/exit of scope.

+

It writes one string event at creation and another at destruction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__fn__auto__ret-members.html b/classwinstd_1_1event__fn__auto__ret-members.html new file mode 100644 index 00000000..7bb82b23 --- /dev/null +++ b/classwinstd_1_1event__fn__auto__ret-members.html @@ -0,0 +1,92 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_fn_auto_ret< T > Member List
+
+
+ +

This is the complete list of members for winstd::event_fn_auto_ret< T >, including all inherited members.

+ + + + + + + + + + + +
event_fn_auto_ret(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName, T &result)winstd::event_fn_auto_ret< T >inline
event_fn_auto_ret(_In_ const event_fn_auto_ret< T > &other)winstd::event_fn_auto_ret< T >inline
event_fn_auto_ret(_Inout_ event_fn_auto_ret< T > &&other)winstd::event_fn_auto_ret< T >inline
m_descwinstd::event_fn_auto_ret< T >protected
m_epwinstd::event_fn_auto_ret< T >protected
m_event_destwinstd::event_fn_auto_ret< T >protected
m_resultwinstd::event_fn_auto_ret< T >protected
operator=(_In_ const event_fn_auto_ret< T > &other)winstd::event_fn_auto_ret< T >inline
operator=(_Inout_ event_fn_auto_ret< T > &&other)winstd::event_fn_auto_ret< T >inline
~event_fn_auto_ret()winstd::event_fn_auto_ret< T >inline
+ + + + diff --git a/classwinstd_1_1event__fn__auto__ret.html b/classwinstd_1_1event__fn__auto__ret.html new file mode 100644 index 00000000..435f8fee --- /dev/null +++ b/classwinstd_1_1event__fn__auto__ret.html @@ -0,0 +1,142 @@ + + + + + + + +WinStd: winstd::event_fn_auto_ret< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::event_fn_auto_ret< T > Class Template Reference
+
+
+ +

Helper template to write an event on entry/exit of scope with one parameter (typically result). + More...

+ +

#include <ETW.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

event_fn_auto_ret (_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName, T &result)
 Writes the event_cons event.
 
event_fn_auto_ret (_In_ const event_fn_auto_ret< T > &other)
 Copies the object.
 
event_fn_auto_ret (_Inout_ event_fn_auto_ret< T > &&other)
 Moves the object.
 
~event_fn_auto_ret ()
 Writes the event_dest event.
 
+event_fn_auto_retoperator= (_In_ const event_fn_auto_ret< T > &other)
 Copies the object.
 
+event_fn_auto_retoperator= (_Inout_ event_fn_auto_ret< T > &&other)
 Moves the object.
 
+ + + + + + + + + + + + + +

+Protected Attributes

+event_providerm_ep
 Reference to event provider in use.
 
+const EVENT_DESCRIPTOR * m_event_dest
 Event descriptor at destruction.
 
+EVENT_DATA_DESCRIPTOR m_desc [2]
 Function name and return value.
 
+T & m_result
 Function result.
 
+

Detailed Description

+
template<class T>
+class winstd::event_fn_auto_ret< T >

Helper template to write an event on entry/exit of scope with one parameter (typically result).

+

It writes one string event at creation and another at destruction, with allowing one sprintf type parameter for string event at destruction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__provider-members.html b/classwinstd_1_1event__provider-members.html new file mode 100644 index 00000000..65ebbf70 --- /dev/null +++ b/classwinstd_1_1event__provider-members.html @@ -0,0 +1,114 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_provider Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< REGHANDLE, NULL >inline
create(_In_ LPCGUID ProviderId)winstd::event_providerinline
detach()winstd::handle< REGHANDLE, NULL >inline
enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData)winstd::event_providerinlineprotectedvirtual
enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext)winstd::event_providerinlineprotectedstatic
free()winstd::handle< REGHANDLE, NULL >inline
free_internal() noexcept overridewinstd::event_providerinlineprotectedvirtual
handle() noexceptwinstd::handle< REGHANDLE, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< REGHANDLE, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< REGHANDLE, NULL >inline
handle_type typedefwinstd::handle< REGHANDLE, NULL >
invalidwinstd::handle< REGHANDLE, NULL >static
m_hwinstd::handle< REGHANDLE, NULL >protected
operator handle_type() constwinstd::handle< REGHANDLE, NULL >inline
operator!() constwinstd::handle< REGHANDLE, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< REGHANDLE, NULL >inline
operator&()winstd::handle< REGHANDLE, NULL >inline
operator*() constwinstd::handle< REGHANDLE, NULL >inline
operator->() constwinstd::handle< REGHANDLE, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< REGHANDLE, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< REGHANDLE, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< REGHANDLE, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< REGHANDLE, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< REGHANDLE, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< REGHANDLE, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< REGHANDLE, NULL >inline
write(_In_ PCEVENT_DESCRIPTOR EventDescriptor)winstd::event_providerinline
write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount=0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData=NULL)winstd::event_providerinline
write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1,...)winstd::event_providerinline
write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)winstd::event_providerinline
write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String,...)winstd::event_providerinline
~event_provider()winstd::event_providerinlinevirtual
+ + + + diff --git a/classwinstd_1_1event__provider.html b/classwinstd_1_1event__provider.html new file mode 100644 index 00000000..ca0ab522 --- /dev/null +++ b/classwinstd_1_1event__provider.html @@ -0,0 +1,686 @@ + + + + + + + +WinStd: winstd::event_provider Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

ETW event provider. + More...

+ +

#include <ETW.h>

+
+Inheritance diagram for winstd::event_provider:
+
+
+ + +winstd::handle< REGHANDLE, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~event_provider ()
 Closes the event provider. More...
 
ULONG create (_In_ LPCGUID ProviderId)
 Registers the event provider. More...
 
ULONG write (_In_ PCEVENT_DESCRIPTOR EventDescriptor)
 Writes an event with no parameters. More...
 
ULONG write (_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount=0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData=NULL)
 Writes an event with parameters stored in array. More...
 
ULONG write (_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1,...)
 Writes an event with one or more parameter. More...
 
ULONG write (_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)
 Writes an event with variable number of parameters. More...
 
ULONG write (_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String,...)
 Writes a string event. More...
 
- Public Member Functions inherited from winstd::handle< REGHANDLE, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Releases the event provider. More...
 
virtual void enable_callback (_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData)
 Receive enable or disable notification requests. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + +

+Static Protected Member Functions

static VOID NTAPI enable_callback (_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext)
 Receive enable or disable notification requests. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< REGHANDLE, NULL >
+typedef REGHANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< REGHANDLE, NULL >
+static const REGHANDLE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< REGHANDLE, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

ETW event provider.

+

Constructor & Destructor Documentation

+ +

◆ ~event_provider()

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

Closes the event provider.

+
See also
EventUnregister function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
ULONG winstd::event_provider::create (_In_ LPCGUID ProviderId)
+
+inline
+
+ +

Registers the event provider.

+
Returns
    +
  • ERROR_SUCCESS when creation succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EventRegister function
+ +
+
+ +

◆ enable_callback() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void winstd::event_provider::enable_callback (_In_ LPCGUID SourceId,
_In_ ULONG IsEnabled,
_In_ UCHAR Level,
_In_ ULONGLONG MatchAnyKeyword,
_In_ ULONGLONG MatchAllKeyword,
_In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData 
)
+
+inlineprotectedvirtual
+
+ +

Receive enable or disable notification requests.

+
See also
EnableCallback callback function
+ +
+
+ +

◆ enable_callback() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static VOID NTAPI winstd::event_provider::enable_callback (_In_ LPCGUID SourceId,
_In_ ULONG IsEnabled,
_In_ UCHAR Level,
_In_ ULONGLONG MatchAnyKeyword,
_In_ ULONGLONG MatchAllKeyword,
_In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData,
_Inout_opt_ PVOID CallbackContext 
)
+
+inlinestaticprotected
+
+ +

Receive enable or disable notification requests.

+
See also
EnableCallback callback function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::event_provider::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Releases the event provider.

+
See also
EventUnregister function
+ +

Implements winstd::handle< REGHANDLE, NULL >.

+ +
+
+ +

◆ write() [1/5]

+ +
+
+ + + + + +
+ + + + + + + + +
ULONG winstd::event_provider::write (_In_ PCEVENT_DESCRIPTOR EventDescriptor)
+
+inline
+
+ +

Writes an event with no parameters.

+
Returns
    +
  • ERROR_SUCCESS when write succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EventWrite function
+ +
+
+ +

◆ write() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ULONG winstd::event_provider::write (_In_ PCEVENT_DESCRIPTOR EventDescriptor,
_In_ const EVENT_DATA_DESCRIPTOR param1,
 ... 
)
+
+inline
+
+ +

Writes an event with one or more parameter.

+
Note
The list must be terminated with winstd::blank_event_data.
+
Returns
    +
  • ERROR_SUCCESS when write succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EventWrite function
+ +
+
+ +

◆ write() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ULONG winstd::event_provider::write (_In_ PCEVENT_DESCRIPTOR EventDescriptor,
_In_ ULONG UserDataCount = 0,
_In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData = NULL 
)
+
+inline
+
+ +

Writes an event with parameters stored in array.

+
Returns
    +
  • ERROR_SUCCESS when write succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EventWrite function
+ +
+
+ +

◆ write() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ULONG winstd::event_provider::write (_In_ PCEVENT_DESCRIPTOR EventDescriptor,
_In_ va_list arg 
)
+
+inline
+
+ +

Writes an event with variable number of parameters.

+
Note
The list must be terminated with winstd::blank_event_data.
+
Returns
    +
  • ERROR_SUCCESS when write succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EventWrite function
+ +
+
+ +

◆ write() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ULONG winstd::event_provider::write (_In_ UCHAR Level,
_In_ ULONGLONG Keyword,
_In_z_ _Printf_format_string_ PCWSTR String,
 ... 
)
+
+inline
+
+ +

Writes a string event.

+
Returns
    +
  • ERROR_SUCCESS when write succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EventWriteString function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__provider.png b/classwinstd_1_1event__provider.png new file mode 100644 index 0000000000000000000000000000000000000000..961dab693f3889a6bdf53f3c8df65a4cc9c108ad GIT binary patch literal 791 zcmeAS@N?(olHy`uVBq!ia0vp^&w)6AgBeI(eLCqrkdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~TIT8E7*fIbcJ9Mzixqg>^gqt2{O^8m zm4s7Em~48v`lU}RGdOk%JkY;v;>#~Exx=G^*H3Vwh147+rNS-GeUy^C*S*gEe^+YT z{-r;+-xZ(ywzcrZx}#TqYAhC%OF-Vf{3$#Z6(Ub_Ff zYjv#KM^)h^=R8Ai|60|)_vp*EHIMEvtz5qPXk=vE6Cb60CiCv?y)I~fEV8s-dbwob z+1n~fr`N65+VSY}jB9h2@$a`Qy>?yPba`QL>-~uN$2OTO+WV{ipZprN3WhkY+c#a(8>6{rAFm&o3|SQ(1Z1{oLc% z!Np6N*UZ27Zu`AY4}RqoJlk{i?=|&OzlO74KG$WRKmV_0*JtDP{IhT7@f)wcZz3WX zY&UBp375doJ9b|a@8h}B|P-tSo_$Z@*>Bz+gEFFu{ z6vzj8Y1%rdG<<+5e6f4ZzS4E_MO8;$^w>AddpGa=Zp-ttnckH47Uyk#RazS>CjYtA zZpE|qM4w3zFT=V876CK2iYGI4z$NRPmSbCyRcE*aJCbU@B(t MboFyt=akR{0Ff_;0RR91 literal 0 HcmV?d00001 diff --git a/classwinstd_1_1event__rec-members.html b/classwinstd_1_1event__rec-members.html new file mode 100644 index 00000000..7d6b07a6 --- /dev/null +++ b/classwinstd_1_1event__rec-members.html @@ -0,0 +1,94 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_rec Member List
+
+
+ +

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

+ + + + + + + + + + + + + +
event_rec()winstd::event_recinline
event_rec(_In_ const event_rec &other)winstd::event_recinline
event_rec(_In_ const EVENT_RECORD &other)winstd::event_recinline
event_rec(_Inout_ event_rec &&other) noexceptwinstd::event_recinline
operator=(_In_ const event_rec &other)winstd::event_recinline
operator=(_In_ const EVENT_RECORD &other)winstd::event_recinline
operator=(_Inout_ event_rec &&other) noexceptwinstd::event_recinline
set_extended_data(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)winstd::event_recinline
set_extended_data_internal(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)winstd::event_recinlineprotected
set_user_data(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)winstd::event_recinline
set_user_data_internal(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)winstd::event_recinlineprotected
~event_rec()winstd::event_recinline
+ + + + diff --git a/classwinstd_1_1event__rec.html b/classwinstd_1_1event__rec.html new file mode 100644 index 00000000..e0c756ee --- /dev/null +++ b/classwinstd_1_1event__rec.html @@ -0,0 +1,530 @@ + + + + + + + +WinStd: winstd::event_rec Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

EVENT_RECORD wrapper. + More...

+ +

#include <ETW.h>

+
+Inheritance diagram for winstd::event_rec:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

event_rec ()
 Constructs a blank event record.
 
 event_rec (_In_ const event_rec &other)
 Copies an existing event record. More...
 
 event_rec (_In_ const EVENT_RECORD &other)
 Copies an existing event record. More...
 
 event_rec (_Inout_ event_rec &&other) noexcept
 Moves the event record. More...
 
~event_rec ()
 Destroys event record data and frees the allocated memory.
 
event_recoperator= (_In_ const event_rec &other)
 Copies an existing event record. More...
 
event_recoperator= (_In_ const EVENT_RECORD &other)
 Copies an existing event record. More...
 
event_recoperator= (_Inout_ event_rec &&other) noexcept
 Moves the event record. More...
 
void set_extended_data (_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
 Sets event record extended data. More...
 
void set_user_data (_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
 Sets event record user data. More...
 
+ + + + + + + +

+Protected Member Functions

void set_extended_data_internal (_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
 Sets event record extended data. More...
 
void set_user_data_internal (_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
 Sets event record user data. More...
 
+

Detailed Description

+

EVENT_RECORD wrapper.

+

Constructor & Destructor Documentation

+ +

◆ event_rec() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_rec::event_rec (_In_ const event_recother)
+
+inline
+
+ +

Copies an existing event record.

+
Parameters
+ + +
[in]otherEvent record to copy from
+
+
+ +
+
+ +

◆ event_rec() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_rec::event_rec (_In_ const EVENT_RECORD & other)
+
+inline
+
+ +

Copies an existing event record.

+
Parameters
+ + +
[in]otherEvent record to copy from
+
+
+ +
+
+ +

◆ event_rec() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_rec::event_rec (_Inout_ event_rec && other)
+
+inlinenoexcept
+
+ +

Moves the event record.

+
Parameters
+ + +
[in]otherEvent record to move
+
+
+ +
+
+

Member Function Documentation

+ +

◆ operator=() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
event_rec & winstd::event_rec::operator= (_In_ const event_recother)
+
+inline
+
+ +

Copies an existing event record.

+
Parameters
+ + +
[in]otherEvent record to copy from
+
+
+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
event_rec & winstd::event_rec::operator= (_In_ const EVENT_RECORD & other)
+
+inline
+
+ +

Copies an existing event record.

+
Parameters
+ + +
[in]otherEvent record to copy from
+
+
+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
event_rec & winstd::event_rec::operator= (_Inout_ event_rec && other)
+
+inlinenoexcept
+
+ +

Moves the event record.

+
Parameters
+ + +
[in]otherEvent record to move
+
+
+ +
+
+ +

◆ set_extended_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::event_rec::set_extended_data (_In_ USHORT count,
_In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM * data 
)
+
+inline
+
+ +

Sets event record extended data.

+
Parameters
+ + + +
[in]countdata size (in number of elements)
[in]dataRecord extended data
+
+
+ +
+
+ +

◆ set_extended_data_internal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::event_rec::set_extended_data_internal (_In_ USHORT count,
_In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM * data 
)
+
+inlineprotected
+
+ +

Sets event record extended data.

+
Parameters
+ + + +
[in]countdata size (in number of elements)
[in]dataRecord extended data
+
+
+ +
+
+ +

◆ set_user_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::event_rec::set_user_data (_In_ USHORT size,
_In_bytecount_(size) LPCVOID data 
)
+
+inline
+
+ +

Sets event record user data.

+
Parameters
+ + + +
[in]sizedata size (in bytes)
[in]dataRecord user data
+
+
+ +
+
+ +

◆ set_user_data_internal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::event_rec::set_user_data_internal (_In_ USHORT size,
_In_bytecount_(size) LPCVOID data 
)
+
+inlineprotected
+
+ +

Sets event record user data.

+
Parameters
+ + + +
[in]sizedata size (in bytes)
[in]dataRecord user data
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__rec.png b/classwinstd_1_1event__rec.png new file mode 100644 index 0000000000000000000000000000000000000000..3517b69c714056a3eab7deeb3178f80738dabf9b GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^1wb6Y!3-q7O=9#1QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;z@qLn;{G&b>QrwE~Y@dES}d`#)Yh zmG5xeSbM2)_NG_uswz30j`@Ouk(w@{rE{59ta`QTJmYzxTkq5JO_nHWH?9m`o4UnR zWV+xCUe<^-y=P{UHv`g7o&B)9TejioRy#-Y)1n*L%NJ~F<7f6hw)vIZtu1H16|m)` z?TJi`3i|%yn2G<9lGc3=^KDJ|G~e)sM)`Z&`rbXbhvD8F=grgiKe?I~XR&J4|D`{o zR;=2k)v#*Sx?7D(O5Cg;baNTBw@U5E?e1LNXq~THX!(IZB$I)$M$~~JoK@gJC?iWj zC<9{*f;+>@C1t5VLn)U+!|FPw3sOPm=6U<&5`H@u{gR!z=E9VqU>-Ggrn{y;u0HehI&M3sa?VQa&{^(6Hd}MgmW4*e zriXHEaC&#(&sF9bn)}2U)`8sBcfPCRgwmdKI;Vst0Ld=e ABLDyZ literal 0 HcmV?d00001 diff --git a/classwinstd_1_1event__session-members.html b/classwinstd_1_1event__session-members.html new file mode 100644 index 00000000..5c4191b1 --- /dev/null +++ b/classwinstd_1_1event__session-members.html @@ -0,0 +1,117 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_session Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h, _In_ EVENT_TRACE_PROPERTIES *prop)winstd::event_sessioninline
handle< TRACEHANDLE, 0 >::attach(_In_opt_ handle_type h) noexceptwinstd::handle< TRACEHANDLE, 0 >inline
create(_In_z_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties)winstd::event_sessioninline
detach()winstd::handle< TRACEHANDLE, 0 >inline
disable_trace(_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)winstd::event_sessioninline
enable_trace(_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)winstd::event_sessioninline
event_session()winstd::event_sessioninline
event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop)winstd::event_sessioninline
event_session(_Inout_ event_session &&other) noexceptwinstd::event_sessioninline
free()winstd::handle< TRACEHANDLE, 0 >inline
free_internal() noexcept overridewinstd::event_sessioninlineprotectedvirtual
handle() noexceptwinstd::handle< TRACEHANDLE, 0 >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< TRACEHANDLE, 0 >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< TRACEHANDLE, 0 >inline
handle_type typedefwinstd::handle< TRACEHANDLE, 0 >
invalidwinstd::handle< TRACEHANDLE, 0 >static
m_hwinstd::handle< TRACEHANDLE, 0 >protected
m_propwinstd::event_sessionprotected
name() constwinstd::event_sessioninline
operator const EVENT_TRACE_PROPERTIES *() constwinstd::event_sessioninline
operator handle_type() constwinstd::handle< TRACEHANDLE, 0 >inline
operator!() constwinstd::handle< TRACEHANDLE, 0 >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, 0 >inline
operator&()winstd::handle< TRACEHANDLE, 0 >inline
operator*() constwinstd::handle< TRACEHANDLE, 0 >inline
operator->() constwinstd::handle< TRACEHANDLE, 0 >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, 0 >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, 0 >inline
operator=(_Inout_ event_session &&other) noexceptwinstd::event_sessioninline
handle< TRACEHANDLE, 0 >::operator=(_In_opt_ handle_type h) noexceptwinstd::handle< TRACEHANDLE, 0 >inline
handle< TRACEHANDLE, 0 >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< TRACEHANDLE, 0 >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, 0 >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, 0 >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, 0 >inline
~event_session()winstd::event_sessioninlinevirtual
+ + + + diff --git a/classwinstd_1_1event__session.html b/classwinstd_1_1event__session.html new file mode 100644 index 00000000..f30f29f4 --- /dev/null +++ b/classwinstd_1_1event__session.html @@ -0,0 +1,690 @@ + + + + + + + +WinStd: winstd::event_session Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

ETW session. + More...

+ +

#include <ETW.h>

+
+Inheritance diagram for winstd::event_session:
+
+
+ + +winstd::handle< TRACEHANDLE, 0 > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

event_session ()
 Initializes a new empty session.
 
 event_session (_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop)
 Initializes a new session with an already available object handle. More...
 
 event_session (_Inout_ event_session &&other) noexcept
 Move constructor. More...
 
virtual ~event_session ()
 Closes the session. More...
 
event_sessionoperator= (_Inout_ event_session &&other) noexcept
 Move assignment. More...
 
 operator const EVENT_TRACE_PROPERTIES * () const
 Auto-typecasting operator. More...
 
LPCTSTR name () const
 Auto-typecasting operator. More...
 
void attach (_In_opt_ handle_type h, _In_ EVENT_TRACE_PROPERTIES *prop)
 Sets a new session handle for the class. More...
 
ULONG create (_In_z_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties)
 Registers and starts an event tracing session. More...
 
ULONG enable_trace (_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
 Enables the specified event trace provider. More...
 
ULONG disable_trace (_In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
 Disables the specified event trace provider. More...
 
- Public Member Functions inherited from winstd::handle< TRACEHANDLE, 0 >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Releases the session. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + +

+Protected Attributes

+std::unique_ptr< EVENT_TRACE_PROPERTIES > m_prop
 Session properties.
 
- Protected Attributes inherited from winstd::handle< TRACEHANDLE, 0 >
+handle_type m_h
 Object handle.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< TRACEHANDLE, 0 >
+typedef TRACEHANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< TRACEHANDLE, 0 >
+static const TRACEHANDLE invalid
 Invalid handle value.
 
+

Detailed Description

+

ETW session.

+

Constructor & Destructor Documentation

+ +

◆ event_session() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::event_session::event_session (_In_opt_ handle_type h,
_In_ const EVENT_TRACE_PROPERTIES * prop 
)
+
+inline
+
+ +

Initializes a new session with an already available object handle.

+
Parameters
+ + + +
[in]hInitial session handle value
[in]propSession properties
+
+
+ +
+
+ +

◆ event_session() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::event_session::event_session (_Inout_ event_session && other)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]otherA rvalue reference of another session
+
+
+ +
+
+ +

◆ ~event_session()

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

Closes the session.

+
See also
ControlTrace function
+ +
+
+

Member Function Documentation

+ +

◆ attach()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::event_session::attach (_In_opt_ handle_type h,
_In_ EVENT_TRACE_PROPERTIES * prop 
)
+
+inline
+
+ +

Sets a new session handle for the class.

+

When the current session handle of the class is non-NULL, the session is destroyed first.

+
Parameters
+ + + +
[in]hNew session handle
[in]propSession properties
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ULONG winstd::event_session::create (_In_z_ LPCTSTR SessionName,
_In_ const EVENT_TRACE_PROPERTIES * Properties 
)
+
+inline
+
+ +

Registers and starts an event tracing session.

+
Returns
    +
  • ERROR_SUCCESS when creation succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
StartTrace function
+ +
+
+ +

◆ disable_trace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ULONG winstd::event_session::disable_trace (_In_ LPCGUID ProviderId,
_In_ UCHAR Level,
_In_opt_ ULONGLONG MatchAnyKeyword = 0,
_In_opt_ ULONGLONG MatchAllKeyword = 0,
_In_opt_ ULONG EnableProperty = 0,
_In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL 
)
+
+inline
+
+ +

Disables the specified event trace provider.

+
Returns
    +
  • ERROR_SUCCESS when succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EnableTraceEx function
+ +
+
+ +

◆ enable_trace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ULONG winstd::event_session::enable_trace (_In_ LPCGUID ProviderId,
_In_ UCHAR Level,
_In_opt_ ULONGLONG MatchAnyKeyword = 0,
_In_opt_ ULONGLONG MatchAllKeyword = 0,
_In_opt_ ULONG EnableProperty = 0,
_In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL 
)
+
+inline
+
+ +

Enables the specified event trace provider.

+
Returns
    +
  • ERROR_SUCCESS when succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
EnableTraceEx function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::event_session::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Releases the session.

+
See also
ControlTrace function
+ +

Implements winstd::handle< TRACEHANDLE, 0 >.

+ +
+
+ +

◆ name()

+ +
+
+ + + + + +
+ + + + + + + +
LPCTSTR winstd::event_session::name () const
+
+inline
+
+ +

Auto-typecasting operator.

+
Returns
Session properties
+ +
+
+ +

◆ operator const EVENT_TRACE_PROPERTIES *()

+ +
+
+ + + + + +
+ + + + + + + +
winstd::event_session::operator const EVENT_TRACE_PROPERTIES * () const
+
+inline
+
+ +

Auto-typecasting operator.

+
Returns
Session properties
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
event_session & winstd::event_session::operator= (_Inout_ event_session && other)
+
+inlinenoexcept
+
+ +

Move assignment.

+
Parameters
+ + +
[in,out]otherA rvalue reference of another object
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__session.png b/classwinstd_1_1event__session.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7fb02f57c5703934ff365320a7a5c11ad2bc3f GIT binary patch literal 763 zcmeAS@N?(olHy`uVBq!ia0vp^_klQogBeJ!I~X7gq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0x;$MRLn;{G&V9XYvlfr5`f0;&zwJM* zoa*gx=jyeM)rZ_q2Q>=JobVuiT52SlShouA>XYi8b*4X6POkq}<2Xro#}dW z<-VQ2`?_6{w@Js@yV-JcY$Wn`x=xbXdvAaL&r1^3hMUa~ue$a&Y^KfiM+suf)*qj~ zYkuAJt$z2mxB432(n(6+;=im=Y;WnC&u^!#IXqo0%D<#b&(2!fHK&|Dmu@=qlTdQh=g{3V%=Rn^cx&`D{+!n0N827{e_nrY|DCVW_tQ#` zg!i?~(x0a~$!q22<4!Vf|3)f`0WSNiN$mC_t*P+ zXspoF|LONUes1dB&ztK`%HPnHo|p7z)l7O4KG}cLpI7n^qNk-whBMT!ly7J> zwYY!&{Edd@&$b`h*ktDB&zsLM&-5q5pR7-eKdwGu{;>Ka`-AYw{0G*n$v4FN+A-{( zRl@)bX%qzoi=8+U69gIB;2PvVZEa5eJLSBv+x+!^&;BkqmOqeQ)txW9>1APU%sjno zuYc{0lhebX#jH2QI#IopF-c@MZRh(*7=;}!ocT#|Le(H_PfOTIrcZqQBL zwlr?-k%wp9vR=>ul~_8<%}|mzil_ zd-r_%4$Ut^C#GjLHw82{m(9y?{~8m mxE23L@)dhLhhop_{|tw(=)SJ=D) + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_trace Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
create(_Inout_ PEVENT_TRACE_LOGFILE Logfile)winstd::event_traceinline
detach()winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
free()winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
free_internal() noexcept overridewinstd::event_traceinlineprotectedvirtual
handle() noexceptwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
handle_type typedefwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >
invalidwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >static
m_hwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >protected
operator handle_type() constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator!() constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator&()winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator*() constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator->() constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >inline
~event_trace()winstd::event_traceinlinevirtual
+ + + + diff --git a/classwinstd_1_1event__trace.html b/classwinstd_1_1event__trace.html new file mode 100644 index 00000000..8f00294d --- /dev/null +++ b/classwinstd_1_1event__trace.html @@ -0,0 +1,293 @@ + + + + + + + +WinStd: winstd::event_trace Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

ETW trace. + More...

+ +

#include <ETW.h>

+
+Inheritance diagram for winstd::event_trace:
+
+
+ + +winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~event_trace ()
 Closes the trace. More...
 
bool create (_Inout_ PEVENT_TRACE_LOGFILE Logfile)
 Opens a real-time trace session or log file for consuming. More...
 
- Public Member Functions inherited from winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes the trace. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >
+typedef TRACEHANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >
+static const TRACEHANDLE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

ETW trace.

+

Constructor & Destructor Documentation

+ +

◆ ~event_trace()

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

Closes the trace.

+
See also
CloseTrace function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::event_trace::create (_Inout_ PEVENT_TRACE_LOGFILE Logfile)
+
+inline
+
+ +

Opens a real-time trace session or log file for consuming.

+
Returns
    +
  • ERROR_SUCCESS when creation succeeds;
  • +
  • error code otherwise.
  • +
+
+
See also
OpenTrace function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::event_trace::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1event__trace.png b/classwinstd_1_1event__trace.png new file mode 100644 index 0000000000000000000000000000000000000000..689965b7fe7657fbfb383b9bd45923ca226421f8 GIT binary patch literal 1078 zcmeAS@N?(olHy`uVBq!ia0y~yU|a`e2XHV0$+9Dfr9es|z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opIUbvoK-#(&%>9qdsz4s^_%SNSTC*OI#+|&A+1RX|_bqbCY7J=Oo^h z-ji}HUTIBw6!`x3hK-(|^t}_5$~ou2bqg{$&5^=Wj31Y`N$#Gvl6Egv-Cn=suY_4!UD~pnSC5uj?`{iy7ISDq ztauXt{9l<#bB})&ez?}ZY2DZShzowDb7P|{j=zyoe-m?k!u9*tOfyTDzCL$P^xE0m zg?nZ18SZXl2@S0O6L|gY-qrDktdCx<*f#I@`uHG=q^EV!^F27$^4~0a_Hf@i=fmcQ zXTOaVjx9Be3H1p(HLEZB>e`$L4*f%`xL@rnKl}LR^&7RaFSj*%KI++Zi(9Swp2d-{ zM2R@47skHc#p54jQx-cZ<%Eiw=dYzZUjN#*_UrGz@hSfwtbViEd(uC-py?_% zC+t!=*@hDJ{IRDu>73l8)6K}Rf1-W^%Ynu#tPc)d5C6qvpjgVdAKbHg1kJvG>0d>B_i#ynU3c~F>ov8xu}8TN zJWpD_`as2z*(X!=x&O|+%Jw5cM(i-t#~bSPbDr*8cSGqFzb%hHqn&VY?CVJt7ry@4 zy5QB_o$L16Y+?NoV^gxWe($`G`%cgN@FOHVK4C-Q%okGX+a1b#x)Uv8Q^ViIGW=&e zesXR1LoMwmk)h$|Z+BUG+)FR)Jdle$ap<>x<)HzwW09$Ip{yfjrc emx?g|W1Mgz^rzRmNv^<5&fw|l=d#Wzp$P!GHV?-D literal 0 HcmV?d00001 diff --git a/classwinstd_1_1event__trace__enabler-members.html b/classwinstd_1_1event__trace__enabler-members.html new file mode 100644 index 00000000..047e0f45 --- /dev/null +++ b/classwinstd_1_1event__trace__enabler-members.html @@ -0,0 +1,95 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::event_trace_enabler Member List
+
+
+ +

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

+ + + + + + + + + + + + + + +
event_trace_enabler(_In_opt_ LPCGUID SourceId, _In_ TRACEHANDLE TraceHandle, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)winstd::event_trace_enablerinline
event_trace_enabler(_In_ const event_session &session, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)winstd::event_trace_enablerinline
m_enable_filter_descwinstd::event_trace_enablerprotected
m_enable_propertywinstd::event_trace_enablerprotected
m_levelwinstd::event_trace_enablerprotected
m_match_all_keywordwinstd::event_trace_enablerprotected
m_match_any_keywordwinstd::event_trace_enablerprotected
m_provider_idwinstd::event_trace_enablerprotected
m_source_idwinstd::event_trace_enablerprotected
m_statuswinstd::event_trace_enablerprotected
m_trace_handlewinstd::event_trace_enablerprotected
status() constwinstd::event_trace_enablerinline
~event_trace_enabler()winstd::event_trace_enablerinlinevirtual
+ + + + diff --git a/classwinstd_1_1event__trace__enabler.html b/classwinstd_1_1event__trace__enabler.html new file mode 100644 index 00000000..40094c26 --- /dev/null +++ b/classwinstd_1_1event__trace__enabler.html @@ -0,0 +1,350 @@ + + + + + + + +WinStd: winstd::event_trace_enabler Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Helper class to enable event provider in constructor and disables it in destructor. + More...

+ +

#include <ETW.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 event_trace_enabler (_In_opt_ LPCGUID SourceId, _In_ TRACEHANDLE TraceHandle, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
 Enables event trace. More...
 
 event_trace_enabler (_In_ const event_session &session, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)
 Enables event trace. More...
 
ULONG status () const
 Return result of EnableTraceEx() call. More...
 
virtual ~event_trace_enabler ()
 Disables event trace. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+ULONG m_status
 Result of EnableTraceEx call.
 
+LPCGUID m_provider_id
 Provider ID.
 
+LPCGUID m_source_id
 Session ID.
 
+TRACEHANDLE m_trace_handle
 Trace handle.
 
+UCHAR m_level
 Logging level.
 
+ULONGLONG m_match_any_keyword
 Keyword match mask (any)
 
+ULONGLONG m_match_all_keyword
 Keyword match mask (all)
 
+ULONG m_enable_property
 Enable property.
 
+PEVENT_FILTER_DESCRIPTOR m_enable_filter_desc
 Event filter descriptor.
 
+

Detailed Description

+

Helper class to enable event provider in constructor and disables it in destructor.

+

Constructor & Destructor Documentation

+ +

◆ event_trace_enabler() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
winstd::event_trace_enabler::event_trace_enabler (_In_opt_ LPCGUID SourceId,
_In_ TRACEHANDLE TraceHandle,
_In_ LPCGUID ProviderId,
_In_ UCHAR Level,
_In_opt_ ULONGLONG MatchAnyKeyword = 0,
_In_opt_ ULONGLONG MatchAllKeyword = 0,
_In_opt_ ULONG EnableProperty = 0,
_In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL 
)
+
+inline
+
+ +

Enables event trace.

+
See also
EnableTraceEx function
+ +
+
+ +

◆ event_trace_enabler() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
winstd::event_trace_enabler::event_trace_enabler (_In_ const event_sessionsession,
_In_ LPCGUID ProviderId,
_In_ UCHAR Level,
_In_opt_ ULONGLONG MatchAnyKeyword = 0,
_In_opt_ ULONGLONG MatchAllKeyword = 0,
_In_opt_ ULONG EnableProperty = 0,
_In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc = NULL 
)
+
+inline
+
+ +

Enables event trace.

+
See also
EnableTraceEx function
+ +
+
+ +

◆ ~event_trace_enabler()

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

Disables event trace.

+
See also
EnableTraceEx function
+ +
+
+

Member Function Documentation

+ +

◆ status()

+ +
+
+ + + + + +
+ + + + + + + +
ULONG winstd::event_trace_enabler::status () const
+
+inline
+
+ +

Return result of EnableTraceEx() call.

+
See also
EnableTraceEx function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1file-members.html b/classwinstd_1_1file-members.html new file mode 100644 index 00000000..e707da4a --- /dev/null +++ b/classwinstd_1_1file-members.html @@ -0,0 +1,107 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::file Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
create(_In_z_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_ DWORD dwCreationDisposition, _In_opt_ DWORD dwFlagsAndAttributes=FILE_ATTRIBUTE_NORMAL, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes=NULL, _In_opt_ HANDLE hTemplateFile=NULL) noexceptwinstd::fileinline
detach()winstd::handle< HANDLE, INVALID >inline
free()winstd::handle< HANDLE, INVALID >inline
free_internal() noexcept overridewinstd::win_handle< INVALID_HANDLE_VALUE >inlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle_type typedefwinstd::handle< HANDLE, INVALID >
invalidwinstd::handle< HANDLE, INVALID >static
m_hwinstd::handle< HANDLE, INVALID >protected
operator handle_type() constwinstd::handle< HANDLE, INVALID >inline
operator!() constwinstd::handle< HANDLE, INVALID >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator&()winstd::handle< HANDLE, INVALID >inline
operator*() constwinstd::handle< HANDLE, INVALID >inline
operator->() constwinstd::handle< HANDLE, INVALID >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
~win_handle()winstd::win_handle< INVALID_HANDLE_VALUE >inlinevirtual
+ + + + diff --git a/classwinstd_1_1file.html b/classwinstd_1_1file.html new file mode 100644 index 00000000..5b1dc720 --- /dev/null +++ b/classwinstd_1_1file.html @@ -0,0 +1,273 @@ + + + + + + + +WinStd: winstd::file Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::file Class Reference
+
+
+ +

File handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::file:
+
+
+ + +winstd::win_handle< INVALID_HANDLE_VALUE > +winstd::handle< HANDLE, INVALID > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool create (_In_z_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_ DWORD dwCreationDisposition, _In_opt_ DWORD dwFlagsAndAttributes=FILE_ATTRIBUTE_NORMAL, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes=NULL, _In_opt_ HANDLE hTemplateFile=NULL) noexcept
 Opens file handle. More...
 
- Public Member Functions inherited from winstd::win_handle< INVALID_HANDLE_VALUE >
virtual ~win_handle ()
 Closes an open object handle. More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, INVALID >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, INVALID >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, INVALID >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Member Functions inherited from winstd::win_handle< INVALID_HANDLE_VALUE >
void free_internal () noexcept override
 Closes an open object handle. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
- Protected Attributes inherited from winstd::handle< HANDLE, INVALID >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

File handle wrapper.

+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::file::create (_In_z_ LPCTSTR lpFileName,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode,
_In_ DWORD dwCreationDisposition,
_In_opt_ DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL,
_In_opt_ HANDLE hTemplateFile = NULL 
)
+
+inlinenoexcept
+
+ +

Opens file handle.

+
See also
CreateFile function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1file.png b/classwinstd_1_1file.png new file mode 100644 index 0000000000000000000000000000000000000000..b81a4bc7df8ea0e142e07da17f9c251ba55b5a21 GIT binary patch literal 1363 zcmeAS@N?(olHy`uVBq!ia0y~yVAKGzJ2;quWb&rALLem(;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|!1Bn`#WAFU@$KB#lQwIKu+Db9y63;L zyt)?CqCDfzsxz&$7f#i7ACy6|; z4D<||JMI3{!vFj9Eb7edW#cY?U;b{X%?s(Z#&@@7dQ5uv$y)I1>P44|qMwR**6Noo z_I`-mlliOi>mTmbvaM$?4@k>8+T60Y}ZEy1Cp9`5GKpobSHqndDnn+j-w7uYFb0Z6g$TcT(zL^}C-I zYrJ}4*75J}#;?wS%~9*SSL8)%tn{6}h^abcb|mwsPghn;y`S zw=PysafjGmyRU3BOTD9v&gPkMOp6PN{Qvi!nrGs>&PhwoKYZ!weJS?eh85GReq9z+ z_0&JSNJX>3)ia2pd(sjHF;!1SP*D0TDmr)b$(+xc4D!dt8yGE)FJf5t^VcTL25%j% z2eVF2_GOGo3}jGT!>Q2V%E+=oqk%z;Rp7uP2BruR2ZnAYj)Xu4Mjb8+BoDZEow7`y zTzu~N1l5xsmn2~hgT?U%@u@0TGk@N-m$SJkelxD;{#5bOWxMU})z+8U@~&U{B5L>A z>T9RN>J4ta?ywS3_2fO@sinN;_-&uk*+&z0W#3#j^Zn_HJL!Ap@RSH|HT%25HrDGs z|6bv2=EF^|S8u%)l#rY9vi`sSSznX2a^0(*8O(YYw72`hLng}?PdNiUUtOLhEgEw? zz^lC1b*C03<}^VP54Idx)|)ZN_+ zR&1IalA~+7XqWBtppfm$*WNS^EMED0(X)Bq7RjCe?OVy+{x$5|;{X@aLrj9Dmrhr_ z)MZ}ha`t}S#2%MkuCPUYd8vE93SRA$^7$GNBL2nPh4=JZ*SE^6xRX@3W(rsY28vf- z`L@9R<$C|UX2ILeJPv-pX8H{|(^>yzW<9;~`rD+ + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::find_file Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
detach()winstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
find(_In_ LPCTSTR lpFileName, _Out_ LPWIN32_FIND_DATA lpFindFileData) noexceptwinstd::find_fileinline
free()winstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
free_internal() noexcept overridewinstd::find_fileinlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
handle_type typedefwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >
invalidwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >static
m_hwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >protected
operator handle_type() constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator!() constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator&()winstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator*() constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator->() constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >inline
~find_file()winstd::find_fileinlinevirtual
+ + + + diff --git a/classwinstd_1_1find__file.html b/classwinstd_1_1find__file.html new file mode 100644 index 00000000..0c5505f7 --- /dev/null +++ b/classwinstd_1_1find__file.html @@ -0,0 +1,303 @@ + + + + + + + +WinStd: winstd::find_file Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Find-file handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::find_file:
+
+
+ + +winstd::handle< HANDLE, INVALID_HANDLE_VALUE > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~find_file ()
 Closes a file search handle. More...
 
bool find (_In_ LPCTSTR lpFileName, _Out_ LPWIN32_FIND_DATA lpFindFileData) noexcept
 Searches a directory for a file or subdirectory with a name that matches a specific name (or partial name if wildcards are used). More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, INVALID_HANDLE_VALUE >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes a file search handle. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, INVALID_HANDLE_VALUE >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, INVALID_HANDLE_VALUE >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HANDLE, INVALID_HANDLE_VALUE >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Find-file handle wrapper.

+

Constructor & Destructor Documentation

+ +

◆ ~find_file()

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

Closes a file search handle.

+
See also
FindClose function
+ +
+
+

Member Function Documentation

+ +

◆ find()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool winstd::find_file::find (_In_ LPCTSTR lpFileName,
_Out_ LPWIN32_FIND_DATA lpFindFileData 
)
+
+inlinenoexcept
+
+ +

Searches a directory for a file or subdirectory with a name that matches a specific name (or partial name if wildcards are used).

+
See also
FindFirstFile function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::find_file::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes a file search handle.

+
See also
FindClose function
+ +

Implements winstd::handle< HANDLE, INVALID_HANDLE_VALUE >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1find__file.png b/classwinstd_1_1find__file.png new file mode 100644 index 0000000000000000000000000000000000000000..6394efa580f23e9332167db6f283313e7717f78a GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0y~yVDtjA12~w0q{rDabwElYz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op6Raz6KP7-Mf^$Ow$)AUr# z303n54`r>TDf-q)P-7?OQP(u z*JUoAGB>REb=|8IM{hq*mUFd~c(SVK-LJ3T3L+Nm|HsJOdTM7;mc9AhMLGYI_x8_z zWGZ<*e5Fe0o0U3o`vpELoZ_77ndSZb)r+5#*sg9^r6C@2Ev`TGpT#rBDQizD!0Vu0{GuQUX!DidH4M7H8z69`d;--{>{1}ef4Km?uPCxk4h^|kMNx}KkQ~@cKFkk zGpYltw6;gy^kGrG`gH9n{%faxCHcMDZe4LPviMH|yS-qs{i*cqRQIPQ2dB&Knfo_b z>b&p$_YdZFSKgedw@P%~G-AU%Q;vGu6wpif^v})FtYl1Ewzb zU1z;r4WUdf z1~ayJH@pT435anDG=(y?Bur&c1adjTsLDO`K44~$m)g=P>ztSj7_M*dY7kf>q`Q{JG`hzO2nraj%wTH$+$Tonpz=%%8j`H)S4pq zr!(@^L+k!CynC27^>O^$<&%@h?Dy|cS{{p!@*C9wkAb8QYbZpsPu6Rx>=(46~a z$lc(d^6wuo{1@0C{xo~?PE+2-O%~dWPH1ihaoMJ7E=>vYdZ|>;utd(OMxi$~6qt<| NJYD@<);T3K0Ra8fpKJgC literal 0 HcmV?d00001 diff --git a/classwinstd_1_1gdi__handle-members.html b/classwinstd_1_1gdi__handle-members.html new file mode 100644 index 00000000..3bfbf3e5 --- /dev/null +++ b/classwinstd_1_1gdi__handle-members.html @@ -0,0 +1,106 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::gdi_handle< T > Member List
+
+
+ +

This is the complete list of members for winstd::gdi_handle< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< T, NULL >inline
detach()winstd::handle< T, NULL >inline
free()winstd::handle< T, NULL >inline
free_internal() noexcept overridewinstd::gdi_handle< T >inlineprotectedvirtual
handle() noexceptwinstd::handle< T, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< T, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T, NULL >inline
handle_type typedefwinstd::handle< T, NULL >
invalidwinstd::handle< T, NULL >static
m_hwinstd::handle< T, NULL >protected
operator handle_type() constwinstd::handle< T, NULL >inline
operator!() constwinstd::handle< T, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< T, NULL >inline
operator&()winstd::handle< T, NULL >inline
operator*() constwinstd::handle< T, NULL >inline
operator->() constwinstd::handle< T, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< T, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< T, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< T, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< T, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< T, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< T, NULL >inline
~gdi_handle()winstd::gdi_handle< T >inlinevirtual
+ + + + diff --git a/classwinstd_1_1gdi__handle.html b/classwinstd_1_1gdi__handle.html new file mode 100644 index 00000000..067feee2 --- /dev/null +++ b/classwinstd_1_1gdi__handle.html @@ -0,0 +1,261 @@ + + + + + + + +WinStd: winstd::gdi_handle< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::gdi_handle< T > Class Template Reference
+
+
+ +

Windows HGDIOBJ wrapper class. + More...

+ +

#include <GDI.h>

+
+Inheritance diagram for winstd::gdi_handle< T >:
+
+
+ + +winstd::handle< T, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~gdi_handle ()
 Closes an open object handle. More...
 
- Public Member Functions inherited from winstd::handle< T, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes an open object handle. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< T, NULL >
+typedef T handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< T, NULL >
+static const T invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< T, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+
template<class T>
+class winstd::gdi_handle< T >

Windows HGDIOBJ wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~gdi_handle()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
virtual winstd::gdi_handle< T >::~gdi_handle ()
+
+inlinevirtual
+
+ +

Closes an open object handle.

+
See also
DeleteObject function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void winstd::gdi_handle< T >::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes an open object handle.

+
See also
DeleteObject function
+ +

Implements winstd::handle< T, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1gdi__handle.png b/classwinstd_1_1gdi__handle.png new file mode 100644 index 0000000000000000000000000000000000000000..64a3d9fe313f17ca860f2b3b6477541e09c69aa5 GIT binary patch literal 682 zcmeAS@N?(olHy`uVBq!ia0vp^i-0(QgBeJ!EsL`TQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;->-G?b%`OZo6wq;J5!Dm%G_WP5zrW>sb(=w6fghNP%XL zXtw|7UTxld&t;9(^IkrsQcc^dTdpRB1Xn)Ux{A|viHPa>E8Ue1#z!(toqIGdDBHc7 zefHh`qL?{3B~nYAdhVxfUe>Yscw+gxqv8V9`e7GWsOwBD>#I-|>kru@*3Eom%SFq@ zw>3QS?0x2^m6R3C)R*Pf%=q&0r+(h_mz`QlM%U$)_Idu8TfU{^L=eJD){lVxyu|cl zO&&vbcI}bdxs}Jh3chbyZCuB=DBYwXwvQuWsxni=(+-9(OQnWT+}yv@I}}?sY~x_i zJ}t<&rpSe1^|OxL+A8^(_g{N`Ejf8=m3vmf03N>v7>MI z_m{3R*4lf-{q51k!BWp9lp=d&(j0g$Ok-HO!d>ya$*H)j>WBFXPu#!4y2AV81gU*G zZa1%VznNvaC@Jv&Z3DVUVDGH<`V|Py4k)vdn~GD+Sowh#I7e8ddIfs zsO0VANreqF%&gK&{LXs1O+Vu+Hveo!!}YJ~=9hnWXc@%sP+_0tN%L(CUWY`e&? pU(cOo!zrL=ZmmBp;1m&Qf4WP_D&+9XR$#(n@O1TaS?83{1OR2bHs=5U literal 0 HcmV?d00001 diff --git a/classwinstd_1_1handle-members.html b/classwinstd_1_1handle-members.html new file mode 100644 index 00000000..b3ae2517 --- /dev/null +++ b/classwinstd_1_1handle-members.html @@ -0,0 +1,105 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::handle< T, INVAL > Member List
+
+
+ +

This is the complete list of members for winstd::handle< T, INVAL >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< T, INVAL >inline
detach()winstd::handle< T, INVAL >inline
free()winstd::handle< T, INVAL >inline
free_internal() noexcept=0winstd::handle< T, INVAL >protectedpure virtual
handle() noexceptwinstd::handle< T, INVAL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< T, INVAL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T, INVAL >inline
handle_type typedefwinstd::handle< T, INVAL >
invalidwinstd::handle< T, INVAL >static
m_hwinstd::handle< T, INVAL >protected
operator handle_type() constwinstd::handle< T, INVAL >inline
operator!() constwinstd::handle< T, INVAL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator&()winstd::handle< T, INVAL >inline
operator*() constwinstd::handle< T, INVAL >inline
operator->() constwinstd::handle< T, INVAL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< T, INVAL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< T, INVAL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< T, INVAL >inline
+ + + + diff --git a/classwinstd_1_1handle.html b/classwinstd_1_1handle.html new file mode 100644 index 00000000..49a17c4e --- /dev/null +++ b/classwinstd_1_1handle.html @@ -0,0 +1,841 @@ + + + + + + + +WinStd: winstd::handle< T, INVAL > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Base abstract template class to support generic object handle keeping. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::handle< T, INVAL >:
+
+
+ + +winstd::dplhandle< T, INVAL > + +
+ + + + + +

+Public Types

+typedef T handle_type
 Datatype of the object handle this template class handles.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + +

+Static Public Attributes

+static const T invalid = INVAL
 Invalid handle value.
 
+ + + + +

+Protected Member Functions

virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + +

+Protected Attributes

+handle_type m_h
 Object handle.
 
+

Detailed Description

+
template<class T, const T INVAL>
+class winstd::handle< T, INVAL >

Base abstract template class to support generic object handle keeping.

+

It provides basic operators and methods common to all descendands of this class establishing a base to ease the replacement of native object handle type with classes in object-oriented approach.

+

Constructor & Destructor Documentation

+ +

◆ handle() [1/2]

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
winstd::handle< T, INVAL >::handle (_In_opt_ handle_type h)
+
+inlinenoexcept
+
+ +

Initializes a new class instance with an already available object handle.

+
Parameters
+ + +
[in]hInitial object handle value
+
+
+ +
+
+ +

◆ handle() [2/2]

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
winstd::handle< T, INVAL >::handle (_Inout_ handle< handle_type, INVAL > && h)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+

Member Function Documentation

+ +

◆ attach()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
void winstd::handle< T, INVAL >::attach (_In_opt_ handle_type h)
+
+inlinenoexcept
+
+ +

Sets a new object handle for the class.

+

When the current object handle of the class is non-INVAL, the object is destroyed first.

+
Parameters
+ + +
[in]hNew object handle
+
+
+ +
+
+ +

◆ detach()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + +
handle_type winstd::handle< T, INVAL >::detach ()
+
+inline
+
+ +

Dismisses the object handle from this class.

+
Returns
Object handle
+ +
+
+ +

◆ free_internal()

+ + + +

◆ operator handle_type()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + +
winstd::handle< T, INVAL >::operator handle_type () const
+
+inline
+
+ +

Auto-typecasting operator.

+
Returns
Object handle
+ +
+
+ +

◆ operator!()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + +
bool winstd::handle< T, INVAL >::operator! () const
+
+inline
+
+ +

Tests if the object handle is INVAL.

+
Returns
    +
  • Non zero when object handle is INVAL;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::handle< T, INVAL >::operator!= (_In_opt_ handle_type h) const
+
+inline
+
+ +

Is handle not equal to?

+
Parameters
+ + +
[in]hObject handle to compare against
+
+
+
Returns
    +
  • Non zero when object handle is not equal to h;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator&()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + +
handle_type * winstd::handle< T, INVAL >::operator& ()
+
+inline
+
+ +

Returns the object handle reference.

+
Returns
Object handle reference
+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + +
handle_type *& winstd::handle< T, INVAL >::operator* () const
+
+inline
+
+ +

Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.).

+
Returns
Object handle value
+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + +
handle_type winstd::handle< T, INVAL >::operator-> () const
+
+inline
+
+ +

Provides object handle member access when the object handle is a pointer to a class or struct.

+
Returns
Object handle
+ +
+
+ +

◆ operator<()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::handle< T, INVAL >::operator< (_In_opt_ handle_type h) const
+
+inline
+
+ +

Is handle less than?

+
Parameters
+ + +
[in]hObject handle to compare against
+
+
+
Returns
    +
  • Non zero when object handle is less than h;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator<=()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::handle< T, INVAL >::operator<= (_In_opt_ handle_type h) const
+
+inline
+
+ +

Is handle less than or equal to?

+
Parameters
+ + +
[in]hObject handle to compare against
+
+
+
Returns
    +
  • Non zero when object handle is less than or equal to h;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
handle< handle_type, INVAL > & winstd::handle< T, INVAL >::operator= (_In_opt_ handle_type h)
+
+inlinenoexcept
+
+ +

Attaches already available object handle.

+
Parameters
+ + +
[in]hObject handle value
+
+
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
handle< handle_type, INVAL > & winstd::handle< T, INVAL >::operator= (_Inout_ handle< handle_type, INVAL > && h)
+
+inlinenoexcept
+
+ +

Move assignment.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::handle< T, INVAL >::operator== (_In_opt_ handle_type h) const
+
+inline
+
+ +

Is handle equal to?

+
Parameters
+ + +
[in]hObject handle to compare against
+
+
+
Returns
    +
  • Non zero when object handle is equal to h;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator>()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::handle< T, INVAL >::operator> (_In_opt_ handle_type h) const
+
+inline
+
+ +

Is handle greater than?

+
Parameters
+ + +
[in]hObject handle to compare against
+
+
+
Returns
    +
  • Non zero when object handle is greater than h;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator>=()

+ +
+
+
+template<class T , const T INVAL>
+ + + + + +
+ + + + + + + + +
bool winstd::handle< T, INVAL >::operator>= (_In_opt_ handle_type h) const
+
+inline
+
+ +

Is handle greater than or equal to?

+
Parameters
+ + +
[in]hObject handle to compare against
+
+
+
Returns
    +
  • Non zero when object handle is greater than or equal to h;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1handle.png b/classwinstd_1_1handle.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8fe716b2328f557740305019131f14d10f4fc0 GIT binary patch literal 751 zcmeAS@N?(olHy`uVBq!ia0vp^JApWWgBeH`S*WN0DTx4|5ZC|z{{xvX-h3_XKQsZz z0^A z`SOfMKW;iN{p6tT%577^xMqtu&%ZWpi|k*cd2iS*T+`pTaQ@E6{3q;74#z){c~Glc z)UYw?2}81}>CWPFXEhquzhpC5x=eNd-89$v)Bf<;Y5v;tWc4i@bARWqG*i#(-PyXtu+hfcQktmMAF?Dvix z^QQ{W>)ZKvz2J=bBJQ3>Rr5ZdpB!$|e_-wLNxOe2drnpQnOt$*%vxuQ?#}hI4?Z(g zv(gcG&c-+Sp5D$mDPN>^PCoT)$>N)RC1EVH{!Qor1!&MUU~p>YPyK#rO3nrs?Ps?V zC;w#I+4**2`sqLJ^L{?$`T6hK)x**C4`+z|eAu_c^`O=8ndo%sGgsrmfm?{$xk zEVtA@(VcbqeC0mNXWQB{eH9IkSXYA^>bP0l+XkKD>`V= literal 0 HcmV?d00001 diff --git a/classwinstd_1_1heap-members.html b/classwinstd_1_1heap-members.html new file mode 100644 index 00000000..46d3eaa0 --- /dev/null +++ b/classwinstd_1_1heap-members.html @@ -0,0 +1,108 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::heap Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, NULL >inline
create(_In_ DWORD flOptions, _In_ SIZE_T dwInitialSize, _In_ SIZE_T dwMaximumSize) noexceptwinstd::heapinline
detach()winstd::handle< HANDLE, NULL >inline
enumerate() noexceptwinstd::heapinline
free()winstd::handle< HANDLE, NULL >inline
free_internal() noexcept overridewinstd::heapinlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, NULL >inline
handle_type typedefwinstd::handle< HANDLE, NULL >
invalidwinstd::handle< HANDLE, NULL >static
m_hwinstd::handle< HANDLE, NULL >protected
operator handle_type() constwinstd::handle< HANDLE, NULL >inline
operator!() constwinstd::handle< HANDLE, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator&()winstd::handle< HANDLE, NULL >inline
operator*() constwinstd::handle< HANDLE, NULL >inline
operator->() constwinstd::handle< HANDLE, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
~heap()winstd::heapinlinevirtual
+ + + + diff --git a/classwinstd_1_1heap.html b/classwinstd_1_1heap.html new file mode 100644 index 00000000..095e97a8 --- /dev/null +++ b/classwinstd_1_1heap.html @@ -0,0 +1,344 @@ + + + + + + + +WinStd: winstd::heap Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Heap handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::heap:
+
+
+ + +winstd::handle< HANDLE, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~heap ()
 Destroys the heap. More...
 
bool create (_In_ DWORD flOptions, _In_ SIZE_T dwInitialSize, _In_ SIZE_T dwMaximumSize) noexcept
 Creates the heap. More...
 
bool enumerate () noexcept
 Enumerates allocated heap blocks using OutputDebugString() More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Destroys the heap. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, NULL >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, NULL >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HANDLE, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Heap handle wrapper.

+

Constructor & Destructor Documentation

+ +

◆ ~heap()

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

Destroys the heap.

+
See also
HeapDestroy function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::heap::create (_In_ DWORD flOptions,
_In_ SIZE_T dwInitialSize,
_In_ SIZE_T dwMaximumSize 
)
+
+inlinenoexcept
+
+ +

Creates the heap.

+
See also
HeapCreate function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+ +

◆ enumerate()

+ +
+
+ + + + + +
+ + + + + + + +
bool winstd::heap::enumerate ()
+
+inlinenoexcept
+
+ +

Enumerates allocated heap blocks using OutputDebugString()

+
Returns
    +
  • true if any blocks found;
  • +
  • false otherwise.
  • +
+
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::heap::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Destroys the heap.

+
See also
HeapDestroy function
+ +

Implements winstd::handle< HANDLE, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1heap.png b/classwinstd_1_1heap.png new file mode 100644 index 0000000000000000000000000000000000000000..82b82fb689654cff6a3f4c4d265945849c21f756 GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^=YTkXgBeJst=)ALNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~nR&W6hEy=Vo%?XpVg(*I{`tnW|J~!( zo?vUq-oCYblaH3X!m<`-#($f1P8;<{sAP(<_Ni2cKJb_nKDTg^%Ir_onR)x85C7Y~ zckArsZ`1cqY5TUnJ=9vpQ!RG=xwRIW;#VJR%P~1M`DwO=`*i>M?65s{>e*8dTH2-k zK5X)PReE_t@sHK&``d#f_jOKQVpf`Ezjb=&+5#>8?GI=C)IK;(WwzhGRSCauFE?CU z*wbI@e8u9}E~(V?_Y$WC%YUBsx7dA^BmH~zvC3`Vw-?|1skTNx{CHF!?`G%b&Gxa&`^w{zG?$F$r&R|gs;r;I zpB_0aRf_RXn;gUE481wWleOmUEC`!5vqJ4~=Vaak>zUXOtR@~mm_Ieh>vIQ-K{rg# zyJMNvr{6FAd3y5qw^x7a7jCmFTl;gC?e9CE-m2ZuVtf80qieC?1LIm|b;sFOrqNHd z4y5nWydiX>MC99ECiC32tOsuYk~=5opgia8cJ|r+bN;SuzrXML>dUd(4g4k7Pkt-^ zK4Z}>LtBRR)ytbFH?N(OldCdq^4p&~tZp*cU8r^DkZGtkmE=2M%O%6G9)xe@ZI}`? c%e9`tVxE>$(77BtV5(y9boFyt=akR{00&w+0{{R3 literal 0 HcmV?d00001 diff --git a/classwinstd_1_1heap__allocator-members.html b/classwinstd_1_1heap__allocator-members.html new file mode 100644 index 00000000..559f1c6c --- /dev/null +++ b/classwinstd_1_1heap__allocator-members.html @@ -0,0 +1,98 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::heap_allocator< _Ty > Member List
+
+
+ +

This is the complete list of members for winstd::heap_allocator< _Ty >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
allocate(_In_ size_type count)winstd::heap_allocator< _Ty >inline
const_pointer typedefwinstd::heap_allocator< _Ty >
const_reference typedefwinstd::heap_allocator< _Ty >
construct(_Inout_ pointer ptr, _In_ const _Ty &val)winstd::heap_allocator< _Ty >inline
construct(_Inout_ pointer ptr, _Inout_ _Ty &&val)winstd::heap_allocator< _Ty >inline
deallocate(_In_ pointer ptr, _In_ size_type size)winstd::heap_allocator< _Ty >inline
destroy(_Inout_ pointer ptr)winstd::heap_allocator< _Ty >inline
difference_type typedefwinstd::heap_allocator< _Ty >
heap_allocator(_In_ HANDLE heap)winstd::heap_allocator< _Ty >inline
heap_allocator(_In_ const heap_allocator< _Other > &other)winstd::heap_allocator< _Ty >inline
m_heapwinstd::heap_allocator< _Ty >
max_size() constwinstd::heap_allocator< _Ty >inline
pointer typedefwinstd::heap_allocator< _Ty >
reference typedefwinstd::heap_allocator< _Ty >
size_type typedefwinstd::heap_allocator< _Ty >
value_type typedefwinstd::heap_allocator< _Ty >
+ + + + diff --git a/classwinstd_1_1heap__allocator.html b/classwinstd_1_1heap__allocator.html new file mode 100644 index 00000000..1963022b --- /dev/null +++ b/classwinstd_1_1heap__allocator.html @@ -0,0 +1,460 @@ + + + + + + + +WinStd: winstd::heap_allocator< _Ty > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::heap_allocator< _Ty > Class Template Reference
+
+
+ +

HeapAlloc allocator. + More...

+ +

#include <Win.h>

+ + + + + +

+Classes

struct  rebind
 A structure that enables an allocator for objects of one type to allocate storage for objects of another type. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef _Ty value_type
 A type that is managed by the allocator.
 
+typedef _Ty * pointer
 A type that provides a pointer to the type of object managed by the allocator.
 
+typedef _Ty & reference
 A type that provides a reference to the type of object managed by the allocator.
 
+typedef const _Ty * const_pointer
 A type that provides a constant pointer to the type of object managed by the allocator.
 
+typedef const _Ty & const_reference
 A type that provides a constant reference to type of object managed by the allocator.
 
+typedef SIZE_T size_type
 An unsigned integral type that can represent the length of any sequence that an object of template class heap_allocator can allocate.
 
+typedef ptrdiff_t difference_type
 A signed integral type that can represent the difference between values of pointers to the type of object managed by the allocator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 heap_allocator (_In_ HANDLE heap)
 Constructs allocator. More...
 
template<class _Other >
 heap_allocator (_In_ const heap_allocator< _Other > &other)
 Constructs allocator from another type. More...
 
pointer allocate (_In_ size_type count)
 Allocates a new memory block. More...
 
void deallocate (_In_ pointer ptr, _In_ size_type size)
 Frees memory block. More...
 
void construct (_Inout_ pointer ptr, _In_ const _Ty &val)
 Calls copying constructor for the element. More...
 
void construct (_Inout_ pointer ptr, _Inout_ _Ty &&val)
 Calls moving constructor for the element. More...
 
void destroy (_Inout_ pointer ptr)
 Calls destructor for the element. More...
 
+size_type max_size () const
 Returns maximum memory block size.
 
+ + + + +

+Public Attributes

+HANDLE m_heap
 Heap handle.
 
+

Detailed Description

+
template<class _Ty>
+class winstd::heap_allocator< _Ty >

HeapAlloc allocator.

+

Constructor & Destructor Documentation

+ +

◆ heap_allocator() [1/2]

+ +
+
+
+template<class _Ty >
+ + + + + +
+ + + + + + + + +
winstd::heap_allocator< _Ty >::heap_allocator (_In_ HANDLE heap)
+
+inline
+
+ +

Constructs allocator.

+
Parameters
+ + +
[in]heapHandle to existing heap
+
+
+ +
+
+ +

◆ heap_allocator() [2/2]

+ +
+
+
+template<class _Ty >
+
+template<class _Other >
+ + + + + +
+ + + + + + + + +
winstd::heap_allocator< _Ty >::heap_allocator (_In_ const heap_allocator< _Other > & other)
+
+inline
+
+ +

Constructs allocator from another type.

+
Parameters
+ + +
[in]otherAnother allocator of the heap_allocator kind
+
+
+ +
+
+

Member Function Documentation

+ +

◆ allocate()

+ +
+
+
+template<class _Ty >
+ + + + + +
+ + + + + + + + +
pointer winstd::heap_allocator< _Ty >::allocate (_In_ size_type count)
+
+inline
+
+ +

Allocates a new memory block.

+
Parameters
+ + +
[in]countNumber of elements
+
+
+
Returns
Pointer to new memory block
+ +
+
+ +

◆ construct() [1/2]

+ +
+
+
+template<class _Ty >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::heap_allocator< _Ty >::construct (_Inout_ pointer ptr,
_In_ const _Ty & val 
)
+
+inline
+
+ +

Calls copying constructor for the element.

+
Parameters
+ + + +
[in]ptrPointer to memory block
[in]valSource element
+
+
+ +
+
+ +

◆ construct() [2/2]

+ +
+
+
+template<class _Ty >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::heap_allocator< _Ty >::construct (_Inout_ pointer ptr,
_Inout_ _Ty && val 
)
+
+inline
+
+ +

Calls moving constructor for the element.

+
Parameters
+ + + +
[in]ptrPointer to memory block
[in]valSource element
+
+
+ +
+
+ +

◆ deallocate()

+ +
+
+
+template<class _Ty >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::heap_allocator< _Ty >::deallocate (_In_ pointer ptr,
_In_ size_type size 
)
+
+inline
+
+ +

Frees memory block.

+
Parameters
+ + + +
[in]ptrPointer to memory block
[in]sizeSize of memory block (in bytes)
+
+
+ +
+
+ +

◆ destroy()

+ +
+
+
+template<class _Ty >
+ + + + + +
+ + + + + + + + +
void winstd::heap_allocator< _Ty >::destroy (_Inout_ pointer ptr)
+
+inline
+
+ +

Calls destructor for the element.

+
Parameters
+ + +
[in]ptrPointer to memory block
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1library-members.html b/classwinstd_1_1library-members.html new file mode 100644 index 00000000..1d5500a8 --- /dev/null +++ b/classwinstd_1_1library-members.html @@ -0,0 +1,107 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::library Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HMODULE, NULL >inline
detach()winstd::handle< HMODULE, NULL >inline
free()winstd::handle< HMODULE, NULL >inline
free_internal() noexcept overridewinstd::libraryinlineprotectedvirtual
handle() noexceptwinstd::handle< HMODULE, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HMODULE, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HMODULE, NULL >inline
handle_type typedefwinstd::handle< HMODULE, NULL >
invalidwinstd::handle< HMODULE, NULL >static
load(_In_z_ LPCTSTR lpFileName, __reserved handle_type hFile, _In_ DWORD dwFlags) noexceptwinstd::libraryinline
m_hwinstd::handle< HMODULE, NULL >protected
operator handle_type() constwinstd::handle< HMODULE, NULL >inline
operator!() constwinstd::handle< HMODULE, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HMODULE, NULL >inline
operator&()winstd::handle< HMODULE, NULL >inline
operator*() constwinstd::handle< HMODULE, NULL >inline
operator->() constwinstd::handle< HMODULE, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HMODULE, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HMODULE, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HMODULE, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HMODULE, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HMODULE, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HMODULE, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HMODULE, NULL >inline
~library()winstd::libraryinlinevirtual
+ + + + diff --git a/classwinstd_1_1library.html b/classwinstd_1_1library.html new file mode 100644 index 00000000..3960c52a --- /dev/null +++ b/classwinstd_1_1library.html @@ -0,0 +1,309 @@ + + + + + + + +WinStd: winstd::library Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Module handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::library:
+
+
+ + +winstd::handle< HMODULE, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~library ()
 Frees the module. More...
 
bool load (_In_z_ LPCTSTR lpFileName, __reserved handle_type hFile, _In_ DWORD dwFlags) noexcept
 Loads the specified module into the address space of the calling process. More...
 
- Public Member Functions inherited from winstd::handle< HMODULE, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Frees the module. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HMODULE, NULL >
+typedef HMODULE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HMODULE, NULL >
+static const HMODULE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HMODULE, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Module handle wrapper.

+

Constructor & Destructor Documentation

+ +

◆ ~library()

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

Frees the module.

+
See also
FreeLibrary function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::library::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Frees the module.

+
See also
FreeLibrary function
+ +

Implements winstd::handle< HMODULE, NULL >.

+ +
+
+ +

◆ load()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::library::load (_In_z_ LPCTSTR lpFileName,
__reserved handle_type hFile,
_In_ DWORD dwFlags 
)
+
+inlinenoexcept
+
+ +

Loads the specified module into the address space of the calling process.

+
See also
LoadLibraryEx function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1library.png b/classwinstd_1_1library.png new file mode 100644 index 0000000000000000000000000000000000000000..d858d6148bb5743b5f2c1d47433f55742a95578a GIT binary patch literal 700 zcmeAS@N?(olHy`uVBq!ia0vp^H-R{SgBeIJzON7hq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0yggkULn;{G&b?jqT7kz^{I>DW|NeG* zW)d4bixq7J7f-W|@p16>_;6~I&gm&h6PIv4O_`M9?Wg9stwfD`(y2|~KNtMoJE!7r zuC%V*ajP};EAL5tU1Jfa7oi{QGiAxtGtKV`7o?fio?|79Yhta9u<-}S8P z?rqZfz3bJ|y;<(xPw=glv+FwBW`45i%Czoldq2K;Y}Lc{ytZY{hpfJ13R9nMNf+(i z8XGz_w&cym)H9b;#4F2kE|xm}J88RVj==PklQ*X6^pywOC+;mtTN?gL`1@Y&O>g&i zuF#8Ie@Zc8&dvBqbI-3ivE|k|3H+RLm_BqS! z3e3ZJ-d0a@3kq7sug)IpJ7r1K{{88bzQkXxbx>Wo{=Is&;F&`+Juh(=8F_9}RiCU9 zJ!@7@b#y>Oj7=p8+Hr>t*+md-QY=h^;XR4of3m%v?hv&dF;_-vpR)IrPlo)(8 z)R{M^0`by^DQ}Ca?fKXDu4SkRlDFT?y@|W7;h>bux6LP(RVchp7K%UhBkI_(muJ3d zZYEujTk)h^F=Wiszs8F*1*fsVW0)@NbCp9*gNuiK>iKu#fg@x~YZ zUIz>(4XHySOFg z@tU7Tn;MVR#F{YiOq|SkV-gTwIzL&`i9`66{9i+ze8&kh-T{*ugQu&X%Q~loCIF + + + + + + +WinStd: Member List + + + + + + + + + + +
+
winstd::num_runtime_error< _Tn > Member List
+
+
+ +

This is the complete list of members for winstd::num_runtime_error< _Tn >, including all inherited members.

+ + + + + + +
error_type typedefwinstd::num_runtime_error< _Tn >
m_numwinstd::num_runtime_error< _Tn >protected
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::num_runtime_error< _Tn >inline
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::num_runtime_error< _Tn >inline
number() constwinstd::num_runtime_error< _Tn >inline
+ + + + diff --git a/classwinstd_1_1num__runtime__error.html b/classwinstd_1_1num__runtime__error.html new file mode 100644 index 00000000..ad6301fe --- /dev/null +++ b/classwinstd_1_1num__runtime__error.html @@ -0,0 +1,224 @@ + + + + + + + +WinStd: winstd::num_runtime_error< _Tn > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::num_runtime_error< _Tn > Class Template Reference
+
+
+ +

Numerical runtime error. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::num_runtime_error< _Tn >:
+
+
+ +
+ + + + + +

+Public Types

+typedef _Tn error_type
 Error number type.
 
+ + + + + + + + + + +

+Public Member Functions

 num_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 num_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+error_type number () const
 Returns the Windows error number.
 
+ + + + +

+Protected Attributes

+error_type m_num
 Numeric error code.
 
+

Detailed Description

+
template<typename _Tn>
+class winstd::num_runtime_error< _Tn >

Numerical runtime error.

+

Constructor & Destructor Documentation

+ +

◆ num_runtime_error() [1/2]

+ +
+
+
+template<typename _Tn >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::num_runtime_error< _Tn >::num_runtime_error (_In_ error_type num,
_In_ const std::string & msg 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numNumeric error code
[in]msgError message
+
+
+ +
+
+ +

◆ num_runtime_error() [2/2]

+ +
+
+
+template<typename _Tn >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::num_runtime_error< _Tn >::num_runtime_error (_In_ error_type num,
_In_opt_z_ const char * msg = nullptr 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numNumeric error code
[in]msgError message
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1num__runtime__error.png b/classwinstd_1_1num__runtime__error.png new file mode 100644 index 0000000000000000000000000000000000000000..951f55a2d2bbc6855fb8998759f68ed8ec9b7926 GIT binary patch literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^XMs3?gBeKn&SE?Uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0%spKkLn;{G&b>Qrv4Q~G>ikc8|4ZkG zOmRDzVw$&X`sHE`=1;~V7b?1E-ZV&}lvJ?b&rQ-E8T5e`lN5`?km3-!O5> z`+}Rtmbu2uiOt$t;q~HRs)9x5&6_X75^6=00B4>uH+1)AaT}-BYtCPG5hw z=KfQVF!O9Fk-0B_%1^F&Wj@_UcT&lue!p9yvtOQ<-%=`b@`{qD`p*Yq6`OCY|NgAP z_0Kk-A+k9&KRm82+o7Jj`|=-`*%jZfdQX2hH|+PdJwW3&zwcFXeN>+F?8W{HZtqLl zMfob4YH&ASK6WNYgkj$S<^+khO_eromn2U;(=?uNF2byGIirheE<@5JGX|jd8fGlv zb?~{wrl6L|EHHTsV~6K0h9fE{(gz~XoM~fZmS};>KFRpJs3!K;&ClCJqu1*-@V)>3 zj8D2@_m9jSSJSHW&Uo*9;eWnT^^a?u7WdLx>x8x1%qG0Ix9X~1Kem_Q#^!6^R{b_( z`+eo))S%yIwXPmdyw>)*epT`8NcpqfZ=WYTzIMU%W?IsN;Mh-pSz=NzC))2#o}Bg} zx!53Tm-K}#cYgj!*(|%VI(L>qoVV@lx-I27ul&Mh7d@JNvwYg;zP*;mzMQT8oF^qa zTTSoV)$Mb(TrYeqzDU?yR$6>k-u0NL+Oy5>@z4ET9`!c*Geh+*^|$Nyn=}09F2A|w rrw6mipV{Abnj=DGo>^Mj;t%X+lNE!ftDnm{r-UW|{a-%F literal 0 HcmV?d00001 diff --git a/classwinstd_1_1process-members.html b/classwinstd_1_1process-members.html new file mode 100644 index 00000000..0cfa9d67 --- /dev/null +++ b/classwinstd_1_1process-members.html @@ -0,0 +1,107 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::process Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
detach()winstd::handle< HANDLE, INVALID >inline
free()winstd::handle< HANDLE, INVALID >inline
free_internal() noexcept overridewinstd::win_handle< NULL >inlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle_type typedefwinstd::handle< HANDLE, INVALID >
invalidwinstd::handle< HANDLE, INVALID >static
m_hwinstd::handle< HANDLE, INVALID >protected
open(_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwProcessId) noexceptwinstd::processinline
operator handle_type() constwinstd::handle< HANDLE, INVALID >inline
operator!() constwinstd::handle< HANDLE, INVALID >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator&()winstd::handle< HANDLE, INVALID >inline
operator*() constwinstd::handle< HANDLE, INVALID >inline
operator->() constwinstd::handle< HANDLE, INVALID >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
~win_handle()winstd::win_handle< NULL >inlinevirtual
+ + + + diff --git a/classwinstd_1_1process.html b/classwinstd_1_1process.html new file mode 100644 index 00000000..cd0ce62e --- /dev/null +++ b/classwinstd_1_1process.html @@ -0,0 +1,249 @@ + + + + + + + +WinStd: winstd::process Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::process Class Reference
+
+
+ +

Process handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::process:
+
+
+ + +winstd::win_handle< NULL > +winstd::handle< HANDLE, INVALID > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool open (_In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwProcessId) noexcept
 Opens process handle. More...
 
- Public Member Functions inherited from winstd::win_handle< NULL >
virtual ~win_handle ()
 Closes an open object handle. More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, INVALID >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, INVALID >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, INVALID >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Member Functions inherited from winstd::win_handle< NULL >
void free_internal () noexcept override
 Closes an open object handle. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
- Protected Attributes inherited from winstd::handle< HANDLE, INVALID >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Process handle wrapper.

+

Member Function Documentation

+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::process::open (_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ DWORD dwProcessId 
)
+
+inlinenoexcept
+
+ +

Opens process handle.

+
See also
OpenProcess function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1process.png b/classwinstd_1_1process.png new file mode 100644 index 0000000000000000000000000000000000000000..accaa559be5bfe611bd2fe2a58db0d7126ccbdac GIT binary patch literal 1052 zcmeAS@N?(olHy`uVBq!ia0vp^4}iFXgBeJk3=w|= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0S9`iRhEy=Vo%?#*CoLXV^=`wO|L%6% zmWpUx-LMVg*>_(UMVENFH`pGsOPFx$Qe{=h{Ov25*6i8C7;*U> zW4Gx!MX4p5-s}lijFMiLck}zRWXp)NI@|AwCj94_R(762?43NL-rhcj=`-IjKL1rV z>FA7S26Jv6RNInm?XEa$Spb9Hf3-7wjQx3YHEu3HXwGQ8c;5R2VLPr>r-Kg&r*Ei> zV1AG(rrWbMerB`IE$e3410stoySIIuy{+c$FPrW%xliQ=t~J6n{dV=YKYZWUJn2iV zY+bJEOVPg?4^nIFcQ;Qe=>&z$X;2XT<8LrLX0d@`-zw^ui=G!&zt<+bXwK?PFCx(J^(_GD}X1IRdF{LWFVtKfy)zWfMn124H^I*@t^=o&i z#A@Dm^xUMwK1Jnpk%Q-^HP#6|hI~2=>tC@MY;t4YbC*qBM)t!wbF+sZ8s@n&=A33^ z1O`3PcwGpGVvi2ffgME-3_$Z4PVbW0U^@NY|C>g2HSFw+b9!`k#lN3^^F_&AJD1DO z-zG^vpO=07*S1*3dzalAn71sgz4dNxv>rqLt5pKL0n>7uZddOX@jZUmpyB&h#{;UT z;uz-C?U!1#d2R^<_kwS-9Mx|>U6?w%B2p|@O=f|Xbi&S~ZRZlw4{5p-i^ZOv + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::process_information Member List
+
+
+ +

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

+ + + +
process_information() noexceptwinstd::process_informationinline
~process_information()winstd::process_informationinline
+ + + + diff --git a/classwinstd_1_1process__information.html b/classwinstd_1_1process__information.html new file mode 100644 index 00000000..55287d05 --- /dev/null +++ b/classwinstd_1_1process__information.html @@ -0,0 +1,110 @@ + + + + + + + +WinStd: winstd::process_information Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::process_information Class Reference
+
+
+ +

PROCESS_INFORMATION struct wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::process_information:
+
+
+ +
+ + + + + + + + +

+Public Member Functions

process_information () noexcept
 Constructs blank PROCESS_INFORMATION.
 
~process_information ()
 Closes process and thread handles.
 
+

Detailed Description

+

PROCESS_INFORMATION struct wrapper.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1process__information.png b/classwinstd_1_1process__information.png new file mode 100644 index 0000000000000000000000000000000000000000..0610c0fca7cc5eabb69fb9b92a9309fbe9414043 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^%Yit6gBeJA$4{*XQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;>B=r8${Zsryua;|DgogeVnX_tD zT~$$6N6kKlJzp7iH0B-pS#gK?i`pFjGtmwAT8&@H9tb|j`C$12mJh)NOg}U&82^aO zVW{KsW3XpcZmsk7 z$@=Ts{i}7CrlwiEu6K=Q8E~i z&w2elxBR}p#pT1|7OxXme*P;lA<%i{SIxZ#b{b1q{NBOjyLwLY7VqbuYv + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::ref_unique_ptr< _Ty, _Dx > Member List
+
+ + + + + diff --git a/classwinstd_1_1ref__unique__ptr.html b/classwinstd_1_1ref__unique__ptr.html new file mode 100644 index 00000000..490e13fb --- /dev/null +++ b/classwinstd_1_1ref__unique__ptr.html @@ -0,0 +1,259 @@ + + + + + + + +WinStd: winstd::ref_unique_ptr< _Ty, _Dx > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::ref_unique_ptr< _Ty, _Dx > Class Template Reference
+
+
+ +

Helper class for returning pointers to std::unique_ptr. + More...

+ +

#include <Common.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 ref_unique_ptr (_Inout_ std::unique_ptr< _Ty, _Dx > &owner)
 Takes ownership of the pointer. More...
 
 ref_unique_ptr (_Inout_ ref_unique_ptr< _Ty, _Dx > &&other)
 Moves object. More...
 
~ref_unique_ptr ()
 Returns ownership of the pointer.
 
 operator typename _Ty ** ()
 Operator for pointer-to-pointer parameters by value use-cases. More...
 
 operator typename _Ty *& ()
 Operator for reverence-to-pointer parameters by value use-cases. More...
 
+ + + + + + + +

+Protected Attributes

+std::unique_ptr< _Ty, _Dx > & m_own
 Original owner of the pointer.
 
+_Ty * m_ptr
 Pointer.
 
+

Detailed Description

+
template<class _Ty, class _Dx>
+class winstd::ref_unique_ptr< _Ty, _Dx >

Helper class for returning pointers to std::unique_ptr.

+

Constructor & Destructor Documentation

+ +

◆ ref_unique_ptr() [1/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
winstd::ref_unique_ptr< _Ty, _Dx >::ref_unique_ptr (_Inout_ std::unique_ptr< _Ty, _Dx > & owner)
+
+inline
+
+ +

Takes ownership of the pointer.

+
Parameters
+ + +
[in,out]ownerObject to attach helper to
+
+
+ +
+
+ +

◆ ref_unique_ptr() [2/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
winstd::ref_unique_ptr< _Ty, _Dx >::ref_unique_ptr (_Inout_ ref_unique_ptr< _Ty, _Dx > && other)
+
+inline
+
+ +

Moves object.

+
Parameters
+ + +
[in,out]otherSource object
+
+
+ +
+
+

Member Function Documentation

+ +

◆ operator typename _Ty *&()

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + +
winstd::ref_unique_ptr< _Ty, _Dx >::operator typename _Ty *& ()
+
+inline
+
+ +

Operator for reverence-to-pointer parameters by value use-cases.

+
Returns
Reference to the pointer
+ +
+
+ +

◆ operator typename _Ty **()

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + +
winstd::ref_unique_ptr< _Ty, _Dx >::operator typename _Ty ** ()
+
+inline
+
+ +

Operator for pointer-to-pointer parameters by value use-cases.

+
Returns
Pointer to the pointer
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + 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 new file mode 100644 index 00000000..d75a51a0 --- /dev/null +++ b/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4-members.html @@ -0,0 +1,91 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::ref_unique_ptr< _Ty[], _Dx > Member List
+
+
+ +

This is the complete list of members for winstd::ref_unique_ptr< _Ty[], _Dx >, including all inherited members.

+ + + + + + + + + + +
m_ownwinstd::ref_unique_ptr< _Ty[], _Dx >protected
m_ptrwinstd::ref_unique_ptr< _Ty[], _Dx >protected
operator typename _Ty *&()winstd::ref_unique_ptr< _Ty[], _Dx >inline
operator typename _Ty **() noexceptwinstd::ref_unique_ptr< _Ty[], _Dx >inline
operator=(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexceptwinstd::ref_unique_ptr< _Ty[], _Dx >inline
operator=(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)winstd::ref_unique_ptr< _Ty[], _Dx >inline
ref_unique_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexceptwinstd::ref_unique_ptr< _Ty[], _Dx >inline
ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)winstd::ref_unique_ptr< _Ty[], _Dx >inline
~ref_unique_ptr()winstd::ref_unique_ptr< _Ty[], _Dx >inlinevirtual
+ + + + 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 new file mode 100644 index 00000000..15ceb56b --- /dev/null +++ b/classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html @@ -0,0 +1,339 @@ + + + + + + + +WinStd: winstd::ref_unique_ptr< _Ty[], _Dx > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::ref_unique_ptr< _Ty[], _Dx > Class Template Reference
+
+
+ +

Helper class for returning pointers to std::unique_ptr (specialization for arrays) + More...

+ +

#include <Common.h>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ref_unique_ptr (_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept
 Takes ownership of the pointer. More...
 
ref_unique_ptroperator= (_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept
 Takes ownership of the pointer. More...
 
 ref_unique_ptr (_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)
 Moves object. More...
 
ref_unique_ptroperator= (_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)
 Moves object. More...
 
+virtual ~ref_unique_ptr ()
 Returns ownership of the pointer.
 
 operator typename _Ty ** () noexcept
 Operator for pointer-to-pointer parameters by value use-cases. More...
 
 operator typename _Ty *& ()
 Operator for reverence-to-pointer parameters by value use-cases. More...
 
+ + + + + + + +

+Protected Attributes

+std::unique_ptr< _Ty[], _Dx > & m_own
 Original owner of the pointer.
 
+_Ty * m_ptr
 Pointer.
 
+

Detailed Description

+
template<class _Ty, class _Dx>
+class winstd::ref_unique_ptr< _Ty[], _Dx >

Helper class for returning pointers to std::unique_ptr (specialization for arrays)

+

Constructor & Destructor Documentation

+ +

◆ ref_unique_ptr() [1/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr (_Inout_ std::unique_ptr< _Ty[], _Dx > & owner)
+
+inlinenoexcept
+
+ +

Takes ownership of the pointer.

+
Parameters
+ + +
[in,out]ownerObject to attach helper to
+
+
+ +
+
+ +

◆ ref_unique_ptr() [2/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr (_Inout_ ref_unique_ptr< _Ty[], _Dx > && other)
+
+inline
+
+ +

Moves object.

+
Parameters
+ + +
[in,out]otherSource object
+
+
+ +
+
+

Member Function Documentation

+ +

◆ operator typename _Ty *&()

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + +
winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *& ()
+
+inline
+
+ +

Operator for reverence-to-pointer parameters by value use-cases.

+
Returns
Reference to the pointer
+ +
+
+ +

◆ operator typename _Ty **()

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + +
winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty ** ()
+
+inlinenoexcept
+
+ +

Operator for pointer-to-pointer parameters by value use-cases.

+
Returns
Pointer to the pointer
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
ref_unique_ptr & winstd::ref_unique_ptr< _Ty[], _Dx >::operator= (_Inout_ ref_unique_ptr< _Ty[], _Dx > && other)
+
+inline
+
+ +

Moves object.

+
Parameters
+ + +
[in,out]otherSource object
+
+
+
Returns
Reference to this object
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
ref_unique_ptr & winstd::ref_unique_ptr< _Ty[], _Dx >::operator= (_Inout_ std::unique_ptr< _Ty[], _Dx > & owner)
+
+inlinenoexcept
+
+ +

Takes ownership of the pointer.

+
Parameters
+ + +
[in,out]ownerObject to attach helper to
+
+
+
Returns
Reference to this object
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1reg__key-members.html b/classwinstd_1_1reg__key-members.html new file mode 100644 index 00000000..a402a3f8 --- /dev/null +++ b/classwinstd_1_1reg__key-members.html @@ -0,0 +1,109 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::reg_key Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HKEY, NULL >inline
create(_In_ HKEY hKey, _In_z_ LPCTSTR lpSubKey, _In_opt_ LPTSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes=NULL, _Out_opt_ LPDWORD lpdwDisposition=NULL) noexceptwinstd::reg_keyinline
delete_subkey(_In_z_ LPCTSTR szSubkey)winstd::reg_keyinline
detach()winstd::handle< HKEY, NULL >inline
free()winstd::handle< HKEY, NULL >inline
free_internal() noexcept overridewinstd::reg_keyinlineprotectedvirtual
handle() noexceptwinstd::handle< HKEY, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HKEY, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HKEY, NULL >inline
handle_type typedefwinstd::handle< HKEY, NULL >
invalidwinstd::handle< HKEY, NULL >static
m_hwinstd::handle< HKEY, NULL >protected
open(_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired) noexceptwinstd::reg_keyinline
operator handle_type() constwinstd::handle< HKEY, NULL >inline
operator!() constwinstd::handle< HKEY, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HKEY, NULL >inline
operator&()winstd::handle< HKEY, NULL >inline
operator*() constwinstd::handle< HKEY, NULL >inline
operator->() constwinstd::handle< HKEY, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HKEY, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HKEY, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HKEY, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HKEY, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HKEY, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HKEY, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HKEY, NULL >inline
~reg_key()winstd::reg_keyinlinevirtual
+ + + + diff --git a/classwinstd_1_1reg__key.html b/classwinstd_1_1reg__key.html new file mode 100644 index 00000000..616cd7f9 --- /dev/null +++ b/classwinstd_1_1reg__key.html @@ -0,0 +1,434 @@ + + + + + + + +WinStd: winstd::reg_key Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Registry wrapper class. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::reg_key:
+
+
+ + +winstd::handle< HKEY, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~reg_key ()
 Closes a handle to the registry key. More...
 
bool create (_In_ HKEY hKey, _In_z_ LPCTSTR lpSubKey, _In_opt_ LPTSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes=NULL, _Out_opt_ LPDWORD lpdwDisposition=NULL) noexcept
 Creates the specified registry key. If the key already exists, the function opens it. More...
 
bool open (_In_ HKEY hKey, _In_opt_z_ LPCTSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired) noexcept
 Opens the specified registry key. More...
 
bool delete_subkey (_In_z_ LPCTSTR szSubkey)
 Deletes the specified registry subkey. More...
 
- Public Member Functions inherited from winstd::handle< HKEY, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes a handle to the registry key. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HKEY, NULL >
+typedef HKEY handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HKEY, NULL >
+static const HKEY invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HKEY, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

Registry wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~reg_key()

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

Closes a handle to the registry key.

+
See also
RegCloseKey function
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::reg_key::create (_In_ HKEY hKey,
_In_z_ LPCTSTR lpSubKey,
_In_opt_ LPTSTR lpClass,
_In_ DWORD dwOptions,
_In_ REGSAM samDesired,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL,
_Out_opt_ LPDWORD lpdwDisposition = NULL 
)
+
+inlinenoexcept
+
+ +

Creates the specified registry key. If the key already exists, the function opens it.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
RegCreateKeyEx function
+ +
+
+ +

◆ delete_subkey()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::reg_key::delete_subkey (_In_z_ LPCTSTR szSubkey)
+
+inline
+
+ +

Deletes the specified registry subkey.

+
Parameters
+ + +
[in]szSubkeyName of the subkey to delete
+
+
+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::reg_key::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes a handle to the registry key.

+
See also
RegCloseKey function
+ +

Implements winstd::handle< HKEY, NULL >.

+ +
+
+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::reg_key::open (_In_ HKEY hKey,
_In_opt_z_ LPCTSTR lpSubKey,
_In_ DWORD ulOptions,
_In_ REGSAM samDesired 
)
+
+inlinenoexcept
+
+ +

Opens the specified registry key.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
RegOpenKeyEx function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1reg__key.png b/classwinstd_1_1reg__key.png new file mode 100644 index 0000000000000000000000000000000000000000..11297d2c5ecb9feece8d22ee7f0de4a38007cea6 GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^dx1EBgBeIxUv7y5QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;k5@!jc?{Of(k zw^__S`?~VC=HbrQFBjE6|9ARJWbeXVW>@qtUq5hLS<~yx<+6n@HXHs-zuqIR&h};I zswk=VJI=L#aa-4%E zem{Pv{>Jk!7GLk!x35C?ui5>O^E-;lR2O!A-%=D*<0}9E?mPaM?#qMpw7xIi{!Qzz z-FK^!!$GTm&H1-<*Zr-_n19KL$+}GZl zt$WXJFZ&@VC@A?_?u+=t_mipxCvt;*YPq+gqj%Zz_-Uy#LmB=D@;79fn*M!kX#DTW z7ylofAD=J#K94y;bvgTniI6*#m- ziNQw;D*VFv*T07)|DDdPS9yDS=lsUHT9sFoHFDboUKhSS@Y=OkGPbMT?1;c@P3{M> zwT*TT_NPMkg|wwT%=#s3+nDy`GUG`B!`$P(FO<(2{{7}_zf6Cb_xppPzkcLr{;r<; zJGSupshqqW@hMX&KPP*C*UYjr#y`1VB-^WTr#%XZv&`!cxoi2Q=% yt{w5u>iGY@Z2x|ID)R?dm`9ej0^MEni`{UFy29-VshfeRiow&>&t;ucLK6TWu2P)< literal 0 HcmV?d00001 diff --git a/classwinstd_1_1sanitizing__allocator-members.html b/classwinstd_1_1sanitizing__allocator-members.html new file mode 100644 index 00000000..3dfc29a8 --- /dev/null +++ b/classwinstd_1_1sanitizing__allocator-members.html @@ -0,0 +1,87 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::sanitizing_allocator< _Ty > Member List
+
+
+ +

This is the complete list of members for winstd::sanitizing_allocator< _Ty >, including all inherited members.

+ + + + + + +
_Mybase typedefwinstd::sanitizing_allocator< _Ty >
deallocate(_In_ pointer _Ptr, _In_ size_type _Size)winstd::sanitizing_allocator< _Ty >inline
sanitizing_allocator() noexceptwinstd::sanitizing_allocator< _Ty >inline
sanitizing_allocator(_In_ const sanitizing_allocator< _Ty > &_Othr)winstd::sanitizing_allocator< _Ty >inline
sanitizing_allocator(_In_ const sanitizing_allocator< _Other > &_Othr) noexceptwinstd::sanitizing_allocator< _Ty >inline
+ + + + diff --git a/classwinstd_1_1sanitizing__allocator.html b/classwinstd_1_1sanitizing__allocator.html new file mode 100644 index 00000000..53839600 --- /dev/null +++ b/classwinstd_1_1sanitizing__allocator.html @@ -0,0 +1,136 @@ + + + + + + + +WinStd: winstd::sanitizing_allocator< _Ty > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::sanitizing_allocator< _Ty > Class Template Reference
+
+
+ +

An allocator template that sanitizes each memory block before it is destroyed or reallocated. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::sanitizing_allocator< _Ty >:
+
+
+ +
+ + + + + +

+Classes

struct  rebind
 Convert this type to sanitizing_allocator<_Other> More...
 
+ + + + +

+Public Types

+typedef std::allocator< _Ty > _Mybase
 Base type.
 
+ + + + + + + + + + + + + + +

+Public Member Functions

sanitizing_allocator () noexcept
 Construct default allocator.
 
sanitizing_allocator (_In_ const sanitizing_allocator< _Ty > &_Othr)
 Construct by copying.
 
+template<class _Other >
 sanitizing_allocator (_In_ const sanitizing_allocator< _Other > &_Othr) noexcept
 Construct from a related allocator.
 
+void deallocate (_In_ pointer _Ptr, _In_ size_type _Size)
 Deallocate object at _Ptr sanitizing its content first.
 
+

Detailed Description

+
template<class _Ty>
+class winstd::sanitizing_allocator< _Ty >

An allocator template that sanitizes each memory block before it is destroyed or reallocated.

+
Note
sanitizing_allocator introduces a performance penalty. However, it provides an additional level of security. Use for security sensitive data memory storage only.
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1sanitizing__allocator.png b/classwinstd_1_1sanitizing__allocator.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7878c921c11d10452590a7109f7ddeba9f7e72 GIT binary patch literal 763 zcmeAS@N?(olHy`uVBq!ia0vp^=YTkXgBeJst=)ALNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~b$PlthEy=VoqK!J5(OUD@VImT{@cs# zW_=>G_3BGw9#_-o)6XX92p!T+OMA>Qc}bv2p~}i|Um4F=q2CJ*&8d3zY47%1E2jp` zRC(FB>)_9V9u?UaM(47b@9*A`F?-j$>;s&$=j`8hJo`l7$qT<*UTgJvMxVA%xi#x| zS6^FCmhkF>JLgrK7jT)^UeJ20HOJO}?u!`KT~l*(&sBBB&e@~=b*G!M-%ju8e|86Q zc|D(`Y;EDUN!D$-P1OB9ph?z8Kb}7~Z#nO|@8|tIwuRi>lq9x)?x}5mKAlqY>?=F9 zU!`_c_4huNTHpWX=T?Wb?6BSMv%CA8ak-U`ndh$6oywkjvmSW_t&b`=bEZx3K>iE% z1exB}&!3G&&PP~qpY^b5et6~-+lBRNd=BepSug+!bnZMk^s z+TD|XzWuPVwLW|B#^I0W`kI9&>4t6#nV6&+rLMmI^r>lV;Zt?>o`!7ODzoeq&|5E_ zS?n)okbCLP_K($X*Ob0>MGe7Mvwy6vwYKutWUzS~w=v$|tl|EpBaAOXK_RqMD=W>c b;UB}Uj_QSXtxjkFQ!0a}tDnm{r-UW|$K-T& literal 0 HcmV?d00001 diff --git a/classwinstd_1_1sanitizing__blob-members.html b/classwinstd_1_1sanitizing__blob-members.html new file mode 100644 index 00000000..a9f5ae60 --- /dev/null +++ b/classwinstd_1_1sanitizing__blob-members.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::sanitizing_blob< N > Member List
+
+
+ +

This is the complete list of members for winstd::sanitizing_blob< N >, including all inherited members.

+ + + + +
m_datawinstd::sanitizing_blob< N >
sanitizing_blob()winstd::sanitizing_blob< N >inline
~sanitizing_blob()winstd::sanitizing_blob< N >inline
+ + + + diff --git a/classwinstd_1_1sanitizing__blob.html b/classwinstd_1_1sanitizing__blob.html new file mode 100644 index 00000000..199c813d --- /dev/null +++ b/classwinstd_1_1sanitizing__blob.html @@ -0,0 +1,113 @@ + + + + + + + +WinStd: winstd::sanitizing_blob< N > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::sanitizing_blob< N > Class Template Reference
+
+
+ +

Sanitizing BLOB. + More...

+ +

#include <Common.h>

+ + + + + + + + +

+Public Member Functions

sanitizing_blob ()
 Constructs uninitialized BLOB.
 
~sanitizing_blob ()
 Sanitizes BLOB.
 
+ + + + +

+Public Attributes

+unsigned char m_data [N]
 BLOB data.
 
+

Detailed Description

+
template<size_t N>
+class winstd::sanitizing_blob< N >

Sanitizing BLOB.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1sec__buffer__desc-members.html b/classwinstd_1_1sec__buffer__desc-members.html new file mode 100644 index 00000000..4d1f858e --- /dev/null +++ b/classwinstd_1_1sec__buffer__desc-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::sec_buffer_desc Member List
+
+
+ +

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

+ + + +
sec_buffer_desc(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version=SECBUFFER_VERSION)winstd::sec_buffer_descinline
~sec_buffer_desc()winstd::sec_buffer_descinlinevirtual
+ + + + diff --git a/classwinstd_1_1sec__buffer__desc.html b/classwinstd_1_1sec__buffer__desc.html new file mode 100644 index 00000000..3e18dda5 --- /dev/null +++ b/classwinstd_1_1sec__buffer__desc.html @@ -0,0 +1,138 @@ + + + + + + + +WinStd: winstd::sec_buffer_desc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::sec_buffer_desc Class Reference
+
+
+ +

SecBufferDesc wrapper class. + More...

+ +

#include <Sec.h>

+
+Inheritance diagram for winstd::sec_buffer_desc:
+
+
+ +
+ + + + + + + + +

+Public Member Functions

sec_buffer_desc (_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version=SECBUFFER_VERSION)
 Initializes security buffer descriptor.
 
virtual ~sec_buffer_desc ()
 Frees the security buffer descriptor. More...
 
+

Detailed Description

+

SecBufferDesc wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~sec_buffer_desc()

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

Frees the security buffer descriptor.

+
See also
FreeContextBuffer function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1sec__buffer__desc.png b/classwinstd_1_1sec__buffer__desc.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1001288d6975b23a27571ff0ae51d923783922 GIT binary patch literal 634 zcmeAS@N?(olHy`uVBq!ia0vp^Q-C;tgBeJkn7zgYNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~aeBHqhEy=VoqK!IV+9`8Xno87|Bp+@ z?`U2;^Hg47^eWH(=7|d#PgWj1lVfh+d8>QEBo%%|RZlsYAa_fTpu>?WzP}$Sx=gC6 znP&C7eZjkTAJ_KJwAb*QU*L6DTYtLAcmQCa}HBbK^!h5$> z+Uzs?czSZJ^Q32ge6nT*Xa4sI^1u5d%Wvs*-{{(>dB&mZ_WiQ`D!$5p(m!303!S_s z*|bbisk{+->P(I?!@eWj3Fc)}s`i>~xfS^8?Uwmhrv(MpGT1qB9dPzwtl-dO;8$dQ zptyv=rbVQoeFD=5fglDsB+37~r_8*Wm%vah2oXQ5u{ERm&h8oIqH`H~Y9@Lj^_Sm9ybH~fZwM*tP?S8j4#IC2%ex1Df@++cNlf7)6%eSVM zJB11zK6h>QcCWW5{dl75B@s! zL-vQ5+OyhcfL^`*L3E{Y;`R6MZ(u@U@O1Ta JS?83{1OQ&&Cffi2 literal 0 HcmV?d00001 diff --git a/classwinstd_1_1sec__context-members.html b/classwinstd_1_1sec__context-members.html new file mode 100644 index 00000000..9e643a9d --- /dev/null +++ b/classwinstd_1_1sec__context-members.html @@ -0,0 +1,113 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::sec_context Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< PCtxtHandle, NULL >inline
detach()winstd::handle< PCtxtHandle, NULL >inline
free()winstd::handle< PCtxtHandle, NULL >inline
free_internal() noexcept overridewinstd::sec_contextinlineprotectedvirtual
handle() noexceptwinstd::handle< PCtxtHandle, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< PCtxtHandle, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCtxtHandle, NULL >inline
handle_type typedefwinstd::handle< PCtxtHandle, NULL >
initialize(_In_opt_ PCredHandle phCredential, _In_opt_z_ LPCTSTR pszTargetName, _In_ ULONG fContextReq, _In_ ULONG TargetDataRep, _In_opt_ PSecBufferDesc pInput, _Inout_opt_ PSecBufferDesc pOutput)winstd::sec_contextinline
invalidwinstd::handle< PCtxtHandle, NULL >static
m_attribwinstd::sec_context
m_expireswinstd::sec_context
m_hwinstd::handle< PCtxtHandle, NULL >protected
operator handle_type() constwinstd::handle< PCtxtHandle, NULL >inline
operator!() constwinstd::handle< PCtxtHandle, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< PCtxtHandle, NULL >inline
operator&()winstd::handle< PCtxtHandle, NULL >inline
operator*() constwinstd::handle< PCtxtHandle, NULL >inline
operator->() constwinstd::handle< PCtxtHandle, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< PCtxtHandle, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< PCtxtHandle, NULL >inline
operator=(_Inout_ sec_context &&h) noexceptwinstd::sec_contextinline
handle< PCtxtHandle, NULL >::operator=(_In_opt_ handle_type h) noexceptwinstd::handle< PCtxtHandle, NULL >inline
handle< PCtxtHandle, NULL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCtxtHandle, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< PCtxtHandle, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< PCtxtHandle, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< PCtxtHandle, NULL >inline
process(_In_opt_ PCredHandle phCredential, _In_opt_z_ LPCTSTR pszTargetName, _In_ ULONG fContextReq, _In_ ULONG TargetDataRep, _In_opt_ PSecBufferDesc pInput, _Inout_opt_ PSecBufferDesc pOutput)winstd::sec_contextinline
sec_context()winstd::sec_contextinline
sec_context(_Inout_ sec_context &&h) noexceptwinstd::sec_contextinline
~sec_context()winstd::sec_contextinlinevirtual
+ + + + diff --git a/classwinstd_1_1sec__context.html b/classwinstd_1_1sec__context.html new file mode 100644 index 00000000..21e5e563 --- /dev/null +++ b/classwinstd_1_1sec__context.html @@ -0,0 +1,488 @@ + + + + + + + +WinStd: winstd::sec_context Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

PCtxtHandle wrapper class. + More...

+ +

#include <Sec.h>

+
+Inheritance diagram for winstd::sec_context:
+
+
+ + +winstd::handle< PCtxtHandle, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

sec_context ()
 Initializes a new class instance with the object handle set to NULL.
 
 sec_context (_Inout_ sec_context &&h) noexcept
 Move constructor. More...
 
virtual ~sec_context ()
 Frees the security context. More...
 
sec_contextoperator= (_Inout_ sec_context &&h) noexcept
 Move assignment. More...
 
SECURITY_STATUS initialize (_In_opt_ PCredHandle phCredential, _In_opt_z_ LPCTSTR pszTargetName, _In_ ULONG fContextReq, _In_ ULONG TargetDataRep, _In_opt_ PSecBufferDesc pInput, _Inout_opt_ PSecBufferDesc pOutput)
 Initializes security context. More...
 
SECURITY_STATUS process (_In_opt_ PCredHandle phCredential, _In_opt_z_ LPCTSTR pszTargetName, _In_ ULONG fContextReq, _In_ ULONG TargetDataRep, _In_opt_ PSecBufferDesc pInput, _Inout_opt_ PSecBufferDesc pOutput)
 Continue security context. More...
 
- Public Member Functions inherited from winstd::handle< PCtxtHandle, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Public Attributes

+ULONG m_attrib
 Context attributes.
 
+TimeStamp m_expires
 Context expiration time.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Frees the security context. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< PCtxtHandle, NULL >
+typedef PCtxtHandle handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< PCtxtHandle, NULL >
+static const PCtxtHandle invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< PCtxtHandle, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

PCtxtHandle wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ sec_context()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::sec_context::sec_context (_Inout_ sec_context && h)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+ +

◆ ~sec_context()

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

Frees the security context.

+
See also
DeleteSecurityContext function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::sec_context::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Frees the security context.

+
See also
DeleteSecurityContext function
+ +

Implements winstd::handle< PCtxtHandle, NULL >.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SECURITY_STATUS winstd::sec_context::initialize (_In_opt_ PCredHandle phCredential,
_In_opt_z_ LPCTSTR pszTargetName,
_In_ ULONG fContextReq,
_In_ ULONG TargetDataRep,
_In_opt_ PSecBufferDesc pInput,
_Inout_opt_ PSecBufferDesc pOutput 
)
+
+inline
+
+ +

Initializes security context.

+
Returns
    +
  • SEC_E_OK when succeeds;
  • +
  • Error code when fails.
  • +
+
+
See also
InitializeSecurityContext (General) function
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
sec_context & winstd::sec_context::operator= (_Inout_ sec_context && h)
+
+inlinenoexcept
+
+ +

Move assignment.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+ +

◆ process()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SECURITY_STATUS winstd::sec_context::process (_In_opt_ PCredHandle phCredential,
_In_opt_z_ LPCTSTR pszTargetName,
_In_ ULONG fContextReq,
_In_ ULONG TargetDataRep,
_In_opt_ PSecBufferDesc pInput,
_Inout_opt_ PSecBufferDesc pOutput 
)
+
+inline
+
+ +

Continue security context.

+
Returns
    +
  • SEC_E_OK when succeeds;
  • +
  • Error code when fails.
  • +
+
+
See also
InitializeSecurityContext (General) function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1sec__context.png b/classwinstd_1_1sec__context.png new file mode 100644 index 0000000000000000000000000000000000000000..61ee18b2331aba5f151c4152ef017ece4deac04e GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^4}ds;gBeJgTXrr3QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;6PN3?S!TTcx!fOy1RK-fD!~n#ilhwc?*9yLn!5F^|I;N&=@Rno zZTYVGxr~oLzqoMRlzE=Xi}*_63!ZN`Ubd>5H*MGZ9X9`#9Q@pHbkY)m(xA#Wwbs(7 z%(@qTt?9}?BD2Oumoq7DDC_mX*#&LuH;=F^|4bl8!krC17ISYAysIb3I;aTf^Adm0Zr*d8P zat3FKrCPU+Wit~HqU%U9IaAVNR9@1?}yT#fnn*i~OjU%6Yax>Db`LI0EF zrv)l|7r+DMANzsS$Z3tNA6D;T>{)Y>F@O6(PIvY_pL=~RY#yvx#IVhjkx?g`i7Db5 z3(JNzoE!;}!U6|2sVOw1`Z_S2p4Gqr3|kZhA3QCe-#KxJv1c_*u^sb`TO8l@XTQ6_ zykph;j}H_YUeAvE{`v2h4O`}2znh+$a(UzWJx^*a;`dDb@b7Tejg^dXm!31oZfS3R zrlGfWV#Q5K8B4}>uh$Bc2FO)v>AF?znwu+lR(D$XUO9&8UosDvEIj7FPrLnY@d1Gu z^*k^Bn+8mA#cBvZLzFXN6?-&bXvJLG$=r6p_mPaXEz2lt(*5l-Ma7U7zF{-xHe zY~OW@js`KtTsr@znIV3WJ#&r7L~|SF0=LV}NM763Y4!Zhj$iC=<@H!Pk1>GKGlQqA KpUXO@geCw + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::sec_credentials Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
acquire(_In_opt_ LPTSTR pszPrincipal, _In_ LPTSTR pszPackage, _In_ unsigned long fCredentialUse, _In_opt_ void *pvLogonId, _In_opt_ void *pAuthData, _In_opt_ SEC_GET_KEY_FN pGetKeyFn=NULL, _In_opt_ void *pvGetKeyArgument=NULL)winstd::sec_credentialsinline
attach(_In_opt_ handle_type h) noexceptwinstd::handle< PCredHandle, NULL >inline
detach()winstd::handle< PCredHandle, NULL >inline
free()winstd::handle< PCredHandle, NULL >inline
free_internal() noexcept overridewinstd::sec_credentialsinlineprotectedvirtual
handle() noexceptwinstd::handle< PCredHandle, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< PCredHandle, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCredHandle, NULL >inline
handle_type typedefwinstd::handle< PCredHandle, NULL >
invalidwinstd::handle< PCredHandle, NULL >static
m_expireswinstd::sec_credentials
m_hwinstd::handle< PCredHandle, NULL >protected
operator handle_type() constwinstd::handle< PCredHandle, NULL >inline
operator!() constwinstd::handle< PCredHandle, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< PCredHandle, NULL >inline
operator&()winstd::handle< PCredHandle, NULL >inline
operator*() constwinstd::handle< PCredHandle, NULL >inline
operator->() constwinstd::handle< PCredHandle, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< PCredHandle, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< PCredHandle, NULL >inline
operator=(_Inout_ sec_credentials &&h) noexceptwinstd::sec_credentialsinline
handle< PCredHandle, NULL >::operator=(_In_opt_ handle_type h) noexceptwinstd::handle< PCredHandle, NULL >inline
handle< PCredHandle, NULL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PCredHandle, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< PCredHandle, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< PCredHandle, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< PCredHandle, NULL >inline
sec_credentials()winstd::sec_credentialsinline
sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires)winstd::sec_credentialsinline
sec_credentials(_Inout_ sec_credentials &&h) noexceptwinstd::sec_credentialsinline
~sec_credentials()winstd::sec_credentialsinlinevirtual
+ + + + diff --git a/classwinstd_1_1sec__credentials.html b/classwinstd_1_1sec__credentials.html new file mode 100644 index 00000000..05f4e983 --- /dev/null +++ b/classwinstd_1_1sec__credentials.html @@ -0,0 +1,467 @@ + + + + + + + +WinStd: winstd::sec_credentials Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

PCredHandle wrapper class. + More...

+ +

#include <Sec.h>

+
+Inheritance diagram for winstd::sec_credentials:
+
+
+ + +winstd::handle< PCredHandle, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

sec_credentials ()
 Initializes a new class instance with the object handle set to NULL.
 
 sec_credentials (_In_opt_ handle_type h, _In_ const TimeStamp expires)
 Initializes a new class with an already available object handle. More...
 
 sec_credentials (_Inout_ sec_credentials &&h) noexcept
 Move constructor. More...
 
virtual ~sec_credentials ()
 Frees the security credentials. More...
 
sec_credentialsoperator= (_Inout_ sec_credentials &&h) noexcept
 Move assignment. More...
 
SECURITY_STATUS acquire (_In_opt_ LPTSTR pszPrincipal, _In_ LPTSTR pszPackage, _In_ unsigned long fCredentialUse, _In_opt_ void *pvLogonId, _In_opt_ void *pAuthData, _In_opt_ SEC_GET_KEY_FN pGetKeyFn=NULL, _In_opt_ void *pvGetKeyArgument=NULL)
 Acquires the security credentials. More...
 
- Public Member Functions inherited from winstd::handle< PCredHandle, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + +

+Public Attributes

+TimeStamp m_expires
 Credentials expiration time.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Frees the security credentials. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< PCredHandle, NULL >
+typedef PCredHandle handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< PCredHandle, NULL >
+static const PCredHandle invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< PCredHandle, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

PCredHandle wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ sec_credentials() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::sec_credentials::sec_credentials (_In_opt_ handle_type h,
_In_ const TimeStamp expires 
)
+
+inline
+
+ +

Initializes a new class with an already available object handle.

+
Parameters
+ + + +
[in]hInitial class handle value
[in]expiresCredentials expiration
+
+
+ +
+
+ +

◆ sec_credentials() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::sec_credentials::sec_credentials (_Inout_ sec_credentials && h)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+ +

◆ ~sec_credentials()

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

Frees the security credentials.

+
See also
FreeCredentialsHandle function
+ +
+
+

Member Function Documentation

+ +

◆ acquire()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SECURITY_STATUS winstd::sec_credentials::acquire (_In_opt_ LPTSTR pszPrincipal,
_In_ LPTSTR pszPackage,
_In_ unsigned long fCredentialUse,
_In_opt_ void * pvLogonId,
_In_opt_ void * pAuthData,
_In_opt_ SEC_GET_KEY_FN pGetKeyFn = NULL,
_In_opt_ void * pvGetKeyArgument = NULL 
)
+
+inline
+
+ +

Acquires the security credentials.

+
Returns
    +
  • SEC_E_OK when succeeds;
  • +
  • Error code when fails.
  • +
+
+
See also
AcquireCredentialsHandle (General) function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::sec_credentials::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Frees the security credentials.

+
See also
FreeCredentialsHandle function
+ +

Implements winstd::handle< PCredHandle, NULL >.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
sec_credentials & winstd::sec_credentials::operator= (_Inout_ sec_credentials && h)
+
+inlinenoexcept
+
+ +

Move assignment.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1sec__credentials.png b/classwinstd_1_1sec__credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..5a159f81182ed5d42156efb3e87089e33aa44384 GIT binary patch literal 782 zcmeAS@N?(olHy`uVBq!ia0vp^&w)6AgBeI(eLCqrkdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~n(OJ}7*fIbcJ9lf*9tst{GWX8{hyeh zWVW%=d)Dn!OKMCLREj4w?AJNH>5hYrlF~C%OIMdS8AV+kHv&(;ba9z}!SC+ZYTFI} z&+V;SsiqX98CmxBcirTJQ74nxF5m8d&TjE|e~6%9tX`p5O}ph|lR4&`adD;p{fm!H zPppxV+IO{W%`DGfUb!pZmjC@Fx%cEtmsgio=6+o+`o36;eP`)~_l162jWqM;cIX|I z62BkNTa;lb|Fw6AeW{JK_y619qtiae*<9AyX7P80;PUxl*7LXSKe171ot3>dJNut$ ze#OW7KbuKt`uz`odT&DU7mond(Du!R=bH)hqh=Vs5({mbFIH}|jQx7D?C z@6VS#H(~qBJ!>ahsW`~&s=X)neYw?!-Ot~)-7orBv}k$lh5d`azxNlM7{BDiEadNQBkv_HM9UZcFJBlNx9o@&UZ!P-)-V)(+#~;frFn?H+bdTwa z-ki^SST`&=$(i6jS@=MontFq*uOEZ;tT_y2CYFrAaAmr2@d?X@#i$Az%%`r1u}BH z|Dt^Vb|zD1!}s0W_B^ime01Lnp$9$po|goOvxf%u-|{qc*e>&;Nm;xhc-NHed?hFE zugeU|x88f>RJU2ple-0ipPJ{`&AqjvbxwDoRKYVwyU^7N?TYu$-M*@k<99T4`|Hm| z*7JPt%nrF4$z0%d{oL)mO`^Xy`)&RBPiG=qFvg888#-}D!1+Ozc&2J(fyUg z`(TY-bv@G`zuLLQwyEomvOHLoW`h&}>dTAI-MnsJ=&CFVdQ&MBb@ E01OU(WdHyG literal 0 HcmV?d00001 diff --git a/classwinstd_1_1sec__runtime__error-members.html b/classwinstd_1_1sec__runtime__error-members.html new file mode 100644 index 00000000..44e44f19 --- /dev/null +++ b/classwinstd_1_1sec__runtime__error-members.html @@ -0,0 +1,90 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::sec_runtime_error Member List
+
+
+ +

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

+ + + + + + + + + +
error_type typedefwinstd::num_runtime_error< SECURITY_STATUS >
m_numwinstd::num_runtime_error< SECURITY_STATUS >protected
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::num_runtime_error< SECURITY_STATUS >inline
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::num_runtime_error< SECURITY_STATUS >inline
number() constwinstd::num_runtime_error< SECURITY_STATUS >inline
sec_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::sec_runtime_errorinline
sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::sec_runtime_errorinline
sec_runtime_error(const sec_runtime_error &other)winstd::sec_runtime_errorinline
+ + + + diff --git a/classwinstd_1_1sec__runtime__error.html b/classwinstd_1_1sec__runtime__error.html new file mode 100644 index 00000000..41288c89 --- /dev/null +++ b/classwinstd_1_1sec__runtime__error.html @@ -0,0 +1,264 @@ + + + + + + + +WinStd: winstd::sec_runtime_error Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::sec_runtime_error Class Reference
+
+
+ +

Security runtime error. + More...

+ +

#include <Sec.h>

+
+Inheritance diagram for winstd::sec_runtime_error:
+
+
+ + +winstd::num_runtime_error< SECURITY_STATUS > + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 sec_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 sec_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
 sec_runtime_error (const sec_runtime_error &other)
 Copies an exception. More...
 
- Public Member Functions inherited from winstd::num_runtime_error< SECURITY_STATUS >
 num_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 num_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+error_type number () const
 Returns the Windows error number.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::num_runtime_error< SECURITY_STATUS >
+typedef SECURITY_STATUS error_type
 Error number type.
 
- Protected Attributes inherited from winstd::num_runtime_error< SECURITY_STATUS >
+error_type m_num
 Numeric error code.
 
+

Detailed Description

+

Security runtime error.

+
Note
Must be defined as derived class from num_runtime_error<> to allow correct type info for dynamic typecasting and prevent folding with other derivates of num_runtime_error<>.
+

Constructor & Destructor Documentation

+ +

◆ sec_runtime_error() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::sec_runtime_error::sec_runtime_error (_In_ error_type num,
_In_ const std::string & msg 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numSecurity provider error code
[in]msgError message
+
+
+ +
+
+ +

◆ sec_runtime_error() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::sec_runtime_error::sec_runtime_error (_In_ error_type num,
_In_opt_z_ const char * msg = nullptr 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numSecurity provider error code
[in]msgError message
+
+
+ +
+
+ +

◆ sec_runtime_error() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::sec_runtime_error::sec_runtime_error (const sec_runtime_errorother)
+
+inline
+
+ +

Copies an exception.

+
Parameters
+ + +
[in]otherException to copy from
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1sec__runtime__error.png b/classwinstd_1_1sec__runtime__error.png new file mode 100644 index 0000000000000000000000000000000000000000..0570a44e255def255c19159a0aa73aa2e6946182 GIT binary patch literal 1361 zcmeAS@N?(olHy`uVBq!ia0y~yVAKM#J2;quWV(Bp50H`w@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+s)%MpO$v$%o`3JB_|gb8~0U8NE-qXvyE;4+Lj?sj z?N(+*zP#CVecSrl()-J`lpbmSoS?P4_4J?cmpkU(U-xd~ma>`pV%gsfuj&-1z6=KH z-81$4icK9s+ctmQvNpCRZ&%jl)Ck+MbsZfQ+Va7nLKh$0eBJDNCH0Q&p+%}nkM`CS zFz;LR>f7q?_pSU}T)kb6RR4^Kvgeq5JaFszpZ~XLb!((9U*#7mcx~GMmuz?THEeBF zYrKB;^Mr@u8+vq~3kv2xO_nxLdQ|>dI^^!9XsvyzFT)~kC#4q-Ml(;-TtQq_BXYznQnW%^Yqsn_kY|;&b@c++TH7_ckWvE zEq=uV)LVZdEhWOxVqNU%PqnAdzFM&Kong?{ee-|6xZORo_P*$S|5ed<;-1~vI`?~6 z;H_z#v-;jz-@f<$+VWKr9Pj)6Lvs1IR;M3d1vKy2sxy1_n>RmQ^=*gg`{j|=+rIB# zyZfK1=zm@DSa>ZuKpU5%f!C-?sPtjgQF+2_oDHkUKxX~b2VHE;Hp zavDT2_&wtNU3pjeX`cJWfcDGUpxnFP=jz4eYtkPI*JXVYIkw=>KVFM~(51K4?#-)Z zeEv;s_x5?m;tv>Yo5MWk@J*o01NV7cwYB~KfcgLBe+>0ai?C(0uGLz`#))ZV2kLjP Xf9uGl+ + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::security_id Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< PSID, NULL >inline
detach()winstd::handle< PSID, NULL >inline
free()winstd::handle< PSID, NULL >inline
free_internal() noexcept overridewinstd::security_idinlineprotectedvirtual
handle() noexceptwinstd::handle< PSID, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< PSID, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PSID, NULL >inline
handle_type typedefwinstd::handle< PSID, NULL >
invalidwinstd::handle< PSID, NULL >static
m_hwinstd::handle< PSID, NULL >protected
operator handle_type() constwinstd::handle< PSID, NULL >inline
operator!() constwinstd::handle< PSID, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< PSID, NULL >inline
operator&()winstd::handle< PSID, NULL >inline
operator*() constwinstd::handle< PSID, NULL >inline
operator->() constwinstd::handle< PSID, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< PSID, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< PSID, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< PSID, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< PSID, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< PSID, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< PSID, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< PSID, NULL >inline
~security_id()winstd::security_idinlinevirtual
+ + + + diff --git a/classwinstd_1_1security__id.html b/classwinstd_1_1security__id.html new file mode 100644 index 00000000..f51a515d --- /dev/null +++ b/classwinstd_1_1security__id.html @@ -0,0 +1,256 @@ + + + + + + + +WinStd: winstd::security_id Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

SID wrapper class. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::security_id:
+
+
+ + +winstd::handle< PSID, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~security_id ()
 Closes a handle to the SID. More...
 
- Public Member Functions inherited from winstd::handle< PSID, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes a handle to the SID. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< PSID, NULL >
+typedef PSID handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< PSID, NULL >
+static const PSID invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< PSID, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

SID wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~security_id()

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

Closes a handle to the SID.

+
See also
FreeSid function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::security_id::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes a handle to the SID.

+
See also
FreeSid function
+ +

Implements winstd::handle< PSID, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1security__id.png b/classwinstd_1_1security__id.png new file mode 100644 index 0000000000000000000000000000000000000000..d58223695a9b711ce05d8144a3dd113a44334978 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^+krTMgBeKXd=!}uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Ts>VJLn;{G&V4(nS%Jruzi`?6|0l9t z4QevNcOOet(=A^jaKiB3qxfZ+v)Du?cbq6F$`cf{w%p#)F*oX+g3_+F`#%@hu4n#T z{P3^mTvG$y(9BD6x8tl|+Fk$6zax6lm8<6Eoz-g(uSxY>bv|h3(#1Q9KX%1yhR2?0 zOL_h3z>J69?-YWz`@PSw2@fb-KJoOORZ2J29bL93eeQL=n`pQ-wuo_?%&9Xs@5{bB z<#e~|d2IiVZXMq8mdu^gKOWLv+W&p$WKaIuP4Cw1c)Y#p+U`5m({uPj-(PzkzVmjK zcKdXZ+133!?SJe(9Bbdc=eT5j`Ht}UPd+a(yZEai=*7p%P33jd&9_S$v~E%V`@bUo z-9A1Smv3K9zPrA8{#sY5$nl)6Qj+>}F~N~>9dW#Z+_bDTmSv$9QKXo1^XW_npSmI{YB9aef@@|n{%f;yW+aO zPQUMAmS;?vb$P=s))i6Jnv1>OmGU>7w<_&s*|zQGmbMd%Pn}FX`+Z0L$8v_dML(?s z3bmwOG(<1mH`TiCw9MW|S6kVfR_0hRzcbTkyt>7|>fg2h=VjkT|GE3nug@dhaaQK} z$t4j>zRqPYxm?NgVf!z&&&_vUW*+&ke}L2W_}|!j>a|P-p-{hGJ|pYI@%SZsQ UpLg~NU?OAiboFyt=akR{0NgxOegFUf literal 0 HcmV?d00001 diff --git a/classwinstd_1_1setup__device__info__list-members.html b/classwinstd_1_1setup__device__info__list-members.html new file mode 100644 index 00000000..c50996f8 --- /dev/null +++ b/classwinstd_1_1setup__device__info__list-members.html @@ -0,0 +1,108 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::setup_device_info_list Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
create(_In_opt_ const GUID *ClassGuid, _In_opt_ HWND hwndParent) noexceptwinstd::setup_device_info_listinline
create(_In_opt_ const GUID *ClassGuid, _In_opt_ PCTSTR Enumerator, _In_opt_ HWND hwndParent, _In_ DWORD Flags, _In_opt_ HDEVINFO DeviceInfoSet, _In_opt_ PCTSTR MachineName, _Reserved_ PVOID Reserved) noexceptwinstd::setup_device_info_listinline
detach()winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
free()winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
free_internal() noexcept overridewinstd::setup_device_info_listinlineprotectedvirtual
handle() noexceptwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
handle_type typedefwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >
invalidwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >static
m_hwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >protected
operator handle_type() constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator!() constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator&()winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator*() constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator->() constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >inline
~setup_device_info_list()winstd::setup_device_info_listinlinevirtual
+ + + + diff --git a/classwinstd_1_1setup__device__info__list.html b/classwinstd_1_1setup__device__info__list.html new file mode 100644 index 00000000..95f9743c --- /dev/null +++ b/classwinstd_1_1setup__device__info__list.html @@ -0,0 +1,380 @@ + + + + + + + +WinStd: winstd::setup_device_info_list Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::setup_device_info_list Class Reference
+
+
+ +

HDEVINFO wrapper class. + More...

+ +

#include <SetupAPI.h>

+
+Inheritance diagram for winstd::setup_device_info_list:
+
+
+ + +winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~setup_device_info_list ()
 Frees the device information set. More...
 
bool create (_In_opt_ const GUID *ClassGuid, _In_opt_ HWND hwndParent) noexcept
 Creates an empty device information set and optionally associates the set with a device setup class and a top-level window. More...
 
bool create (_In_opt_ const GUID *ClassGuid, _In_opt_ PCTSTR Enumerator, _In_opt_ HWND hwndParent, _In_ DWORD Flags, _In_opt_ HDEVINFO DeviceInfoSet, _In_opt_ PCTSTR MachineName, _Reserved_ PVOID Reserved) noexcept
 Creates a device information set that contains requested device information elements for a local or a remote computer. More...
 
- Public Member Functions inherited from winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Frees the device information set. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >
+typedef HDEVINFO handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >
+static const HDEVINFO invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

HDEVINFO wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~setup_device_info_list()

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

Frees the device information set.

+
See also
SetupDiDestroyDeviceInfoList function
+ +
+
+

Member Function Documentation

+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool winstd::setup_device_info_list::create (_In_opt_ const GUID * ClassGuid,
_In_opt_ HWND hwndParent 
)
+
+inlinenoexcept
+
+ +

Creates an empty device information set and optionally associates the set with a device setup class and a top-level window.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
SetupDiCreateDeviceInfoList function
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::setup_device_info_list::create (_In_opt_ const GUID * ClassGuid,
_In_opt_ PCTSTR Enumerator,
_In_opt_ HWND hwndParent,
_In_ DWORD Flags,
_In_opt_ HDEVINFO DeviceInfoSet,
_In_opt_ PCTSTR MachineName,
_Reserved_ PVOID Reserved 
)
+
+inlinenoexcept
+
+ +

Creates a device information set that contains requested device information elements for a local or a remote computer.

+
Returns
    +
  • true when creation succeeds;
  • +
  • false when creation fails. For extended error information, call GetLastError().
  • +
+
+
See also
SetupDiGetClassDevsExW function
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::setup_device_info_list::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Frees the device information set.

+
See also
SetupDiDestroyDeviceInfoList function
+ +

Implements winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1setup__device__info__list.png b/classwinstd_1_1setup__device__info__list.png new file mode 100644 index 0000000000000000000000000000000000000000..e3988cdbdf03c75787299541bddd910060dc5334 GIT binary patch literal 1086 zcmeAS@N?(olHy`uVBq!ia0y~yV2l8=12~w0WcIYVtAUh6fKQ0)|NsAi%olIImi8Z- z0AzvjfddCvJMYK?xf~@ye!&btMIdnXREQA+1M^u=7srqa#^aTT9EbKigE z`6|!&wq3sVs&jwf>9Qmhfi)Z-r%NQ49F=&yRmp3T_oQ`Gny0ETTSj;qO@J{j@R)gI zMOW$HUA(t6=JvLG%YXj-{%hX8(9yfE-WfdBHX|}d&84k{kC03Yr=vq zpELgEwc)4k@6v?RLAwj@PT3q?_4>jYW$}G?P0r40)0J_xyivqDdwE@NosHKQ-OZPl zWd57ucQ?Av=zm@Dq|!H&wh8nWZoGVL?ZS<0w|in9zFc&5!|J2&U4Am&Q0UG5_;$s9 zm80?vZ#Ctc-+ue4yPfLxKP{;h{Qa+nCP=|-emF>YB-e0@% zE__x`GNW8p#N%uCJ-IjRc6^p$JvDvT&vOUXWxZj_(PEX};yTwub6)J`wc5;oXBAmy zaa~Td`tBEO)Mq^9mC2QpcNH$rdM347Tvb2soBTnqOUtu17I^+jxy$sXe`nsyFOwhI z%U7=MnYv{5$%9^#8fDg~NS;7p$R#BATog_2na=gV>=#o3V~jRCcfsC$`{w8zcv`f9 z;ri=?S5Gp<=(2MsC>`fYPyo`j#0#Puc@20mqqI-llY+t*P@m3h$1Ewge^|jO19?Xl&e8_v_%748Z zn}iscZ#LciSMBlmcSY#_i5p8F)*d@o`i0?5ueamwmG53$ld_gOw~s;o%8g$))^1$B z^g%q+Z2sDPk8dYO=6%R|qxW|0<~vVX^Ik>V`*Sllb#)`-x@npb4e>9E!`TWJooD~O zYwEqTYm}eo`?7q{t~|yh@nZ5praNJLVh0?MG5-d|mIqvlE#6<{Kc%=n5PC5MSVAx` Nc)I$ztaD0e0ss + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::setup_driver_info_list_builder Member List
+
+
+ +

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

+ + + + + + + + +
m_DeviceInfoData (defined in winstd::setup_driver_info_list_builder)winstd::setup_driver_info_list_builderprotected
m_DeviceInfoSet (defined in winstd::setup_driver_info_list_builder)winstd::setup_driver_info_list_builderprotected
m_DriverType (defined in winstd::setup_driver_info_list_builder)winstd::setup_driver_info_list_builderprotected
m_resultwinstd::setup_driver_info_list_builderprotected
setup_driver_info_list_builder(_In_ HDEVINFO DeviceInfoSet, _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData, _In_ DWORD DriverType) noexceptwinstd::setup_driver_info_list_builderinline
status() const noexceptwinstd::setup_driver_info_list_builderinline
~setup_driver_info_list_builder()winstd::setup_driver_info_list_builderinlinevirtual
+ + + + diff --git a/classwinstd_1_1setup__driver__info__list__builder.html b/classwinstd_1_1setup__driver__info__list__builder.html new file mode 100644 index 00000000..dc8e4b56 --- /dev/null +++ b/classwinstd_1_1setup__driver__info__list__builder.html @@ -0,0 +1,225 @@ + + + + + + + +WinStd: winstd::setup_driver_info_list_builder Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::setup_driver_info_list_builder Class Reference
+
+
+ +

Builds a list of drivers in constructor and deletes it in destructor. + More...

+ +

#include <SetupAPI.h>

+ + + + + + + + + + + +

+Public Member Functions

 setup_driver_info_list_builder (_In_ HDEVINFO DeviceInfoSet, _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData, _In_ DWORD DriverType) noexcept
 Construct the builder and builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set. More...
 
virtual ~setup_driver_info_list_builder ()
 Deletes a driver list and destructs the builder. More...
 
BOOL status () const noexcept
 Return result of SetupDiBuildDriverInfoList() call. More...
 
+ + + + + + + + + + +

+Protected Attributes

+HDEVINFO m_DeviceInfoSet
 
+PSP_DEVINFO_DATA m_DeviceInfoData
 
+DWORD m_DriverType
 
+BOOL m_result
 Did building succeed?
 
+

Detailed Description

+

Builds a list of drivers in constructor and deletes it in destructor.

+

Constructor & Destructor Documentation

+ +

◆ setup_driver_info_list_builder()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
winstd::setup_driver_info_list_builder::setup_driver_info_list_builder (_In_ HDEVINFO DeviceInfoSet,
_Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData,
_In_ DWORD DriverType 
)
+
+inlinenoexcept
+
+ +

Construct the builder and builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set.

+
See also
SetupDiBuildDriverInfoList function
+ +
+
+ +

◆ ~setup_driver_info_list_builder()

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

Deletes a driver list and destructs the builder.

+
See also
SetupDiDestroyDriverInfoList function
+ +
+
+

Member Function Documentation

+ +

◆ status()

+ +
+
+ + + + + +
+ + + + + + + +
BOOL winstd::setup_driver_info_list_builder::status () const
+
+inlinenoexcept
+
+ +

Return result of SetupDiBuildDriverInfoList() call.

+
See also
SetupDiBuildDriverInfoList function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1string__guid-members.html b/classwinstd_1_1string__guid-members.html new file mode 100644 index 00000000..032f2297 --- /dev/null +++ b/classwinstd_1_1string__guid-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::string_guid Member List
+
+
+ +

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

+ + + +
basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const char *format)winstd::basic_string_guid< char, std::char_traits< char >, std::allocator< char > >inline
string_guid(_In_ const GUID &guid)winstd::string_guidinline
+ + + + diff --git a/classwinstd_1_1string__guid.html b/classwinstd_1_1string__guid.html new file mode 100644 index 00000000..38cec186 --- /dev/null +++ b/classwinstd_1_1string__guid.html @@ -0,0 +1,147 @@ + + + + + + + +WinStd: winstd::string_guid Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::string_guid Class Reference
+
+
+ +

Single-byte character implementation of a class to support converting GUID to string. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::string_guid:
+
+
+ + +winstd::basic_string_guid< char, std::char_traits< char >, std::allocator< char > > + +
+ + + + + + + + + + +

+Public Member Functions

Initializing string using template in memory
 string_guid (_In_ const GUID &guid)
 Initializes a new string and formats its contents to string representation of given GUID. More...
 
- Public Member Functions inherited from winstd::basic_string_guid< char, std::char_traits< char >, std::allocator< char > >
 basic_string_guid (_In_ const GUID &guid, _In_z_ _Printf_format_string_ const char *format)
 Initializes a new string and formats its contents to string representation of given GUID. More...
 
+

Detailed Description

+

Single-byte character implementation of a class to support converting GUID to string.

+

Constructor & Destructor Documentation

+ +

◆ string_guid()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::string_guid::string_guid (_In_ const GUID & guid)
+
+inline
+
+ +

Initializes a new string and formats its contents to string representation of given GUID.

+
Parameters
+ + +
[in]guidGUID to convert
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1string__guid.png b/classwinstd_1_1string__guid.png new file mode 100644 index 0000000000000000000000000000000000000000..b0fdd9abb3d307a9a20a18feba82d36b9f23980e GIT binary patch literal 1859 zcmd6oc~DbV6vhL}A_13HL8OW(1tl231QG~~3#eglq_oz`qRopD5H%2$0E$dev4Dig zk{D7HA`lhfl`s()qJm2jh$6&3BvPsYDM@5$La9m9XYDwh{@OS=p1yGff{ zhZb&kbd{Lr&s4BTHl*-Jj;=%-*GDUoibI#s!H^3_nl$YMaieY${En?4;5G6zP(>qFA@-rWi_V$A(mCocKQxr(1JK2Htm$73>I&4pC~6evU4xs?$YS03>~*Kdu1s7e?QtGtv6M}3XCdq2;cD;aK~&Ds z6^xpjS($Qs>F@Z9%0kW0l42&(42uyFP(@H5wWFP~WZj9L>ZpFU!sqJ_3P%dOWI{gh z+tNInL7?poR75Y@^BF)Y9#&y_nmK=mXxjb*oWE&txN z)zFaSN-cBtVRRX!y{L^5ov1kG?LeoI&z3SXs^*rxjbP|i7&I}j*4H=$_vN`7mwx#9 z4}b$V)-A7PF})DM1zx8SV#j2Au}flNjlJ0U9pRc`S`Cx?=nC?~z4WFs z+5!A~|6(zOd(+iH2NbgF_j(o}QvlNPG2!k%gt5;!l@yxFKlrefEJ|bZcB1 zTUJ;kYWTLf6!!BPNdoL=e2EA82^sdY%rnN_e8Yt|7G*J?|Lx}_dFp1t?s2b(_}c8X zB7rbBzL9#!(7|Gdly|ZO_0Hp;^>_xrhe)#lluOl(hDCe{mNz5honQNw;a^m?r@F-@ zUeOY{k00!>P?3yrF6l)#0-gRIg)||kXxu3l18&(Z{udQwY~u1>WC7wTJ{4&*i=I!By>_Z zZj8B9njNk}Rt$Y3KMTKU3{+36{6|!F1Ja|+a=UM*RKut*0jM5%QH#h6gJlY}pwLLd$ zV8esVP39Qs(?bfGx+_*$3IOuyqDBB{QpH%zE&$%NF+?YOJtJP;=0xZYM`A!);NIB{ zJ20Ts;NNV@kt-)-Q{}piHJ#X7P-nRMw6VLnAvCgna z$1E4EMH~sMw3yoU51m7Tx~2SVT~=SU(~&N_)3`gTY9$VNgzb%-;)$$+k1<}XDajk= zQM12Uzjws14je5JH9!yKgeC?K_;_IB)=TBb!)jVPCvqT5vD3^80kfMu#tY;*H%x}t z=SnV-DvN@UQzOKS*T}o+wdDAFp5hUp1Dk@(L5U3T9oHsq|1w-UC`5 + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::user_impersonator Member List
+
+
+ +

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

+ + + + +
m_cookiewinstd::user_impersonatorprotected
user_impersonator(_In_opt_ HANDLE hToken) noexceptwinstd::user_impersonatorinline
~user_impersonator()winstd::user_impersonatorinlinevirtual
+ + + + diff --git a/classwinstd_1_1user__impersonator.html b/classwinstd_1_1user__impersonator.html new file mode 100644 index 00000000..f0d174a3 --- /dev/null +++ b/classwinstd_1_1user__impersonator.html @@ -0,0 +1,174 @@ + + + + + + + +WinStd: winstd::user_impersonator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::user_impersonator Class Reference
+
+
+ +

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

+ +

#include <Win.h>

+ + + + + + + + +

+Public Member Functions

 user_impersonator (_In_opt_ HANDLE hToken) noexcept
 Construct the impersonator and impersonates the given user. More...
 
virtual ~user_impersonator ()
 Reverts to current user and destructs the impersonator. More...
 
+ + + + +

+Protected Attributes

+BOOL m_cookie
 Did impersonation succeed?
 
+

Detailed Description

+

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

+

Constructor & Destructor Documentation

+ +

◆ user_impersonator()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::user_impersonator::user_impersonator (_In_opt_ HANDLE hToken)
+
+inlinenoexcept
+
+ +

Construct the impersonator and impersonates the given user.

+
Parameters
+ + +
[in]hTokenA handle to a primary or impersonation access token that represents a logged-on user or NULL for no impersonation.
+
+
+
See also
ImpersonateLoggedOnUser function
+ +
+
+ +

◆ ~user_impersonator()

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

Reverts to current user and destructs the impersonator.

+
See also
RevertToSelf function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1variant-members.html b/classwinstd_1_1variant-members.html new file mode 100644 index 00000000..feed75a6 --- /dev/null +++ b/classwinstd_1_1variant-members.html @@ -0,0 +1,143 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::variant Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
change_type(_In_ VARTYPE _vt, _In_opt_ USHORT wFlags=0) noexceptwinstd::variantinline
operator!=(_In_ const VARIANT &varSrc) const noexceptwinstd::variantinline
operator<(_In_ const VARIANT &varSrc) const noexceptwinstd::variantinline
operator<=(_In_ const VARIANT &varSrc) const noexceptwinstd::variantinline
operator=(_In_ const VARIANT &varSrc)winstd::variantinline
operator=(_Inout_ VARIANT &&varSrc) noexceptwinstd::variantinline
operator=(_In_ bool bSrc) noexceptwinstd::variantinline
operator=(_In_ char cSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned char nSrc) noexceptwinstd::variantinline
operator=(_In_ short nSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned short nSrc) noexceptwinstd::variantinline
operator=(_In_ int nSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned int nSrc) noexceptwinstd::variantinline
operator=(_In_ long nSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned long nSrc) noexceptwinstd::variantinline
operator=(_In_ long long nSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned long long nSrc) noexceptwinstd::variantinline
operator=(_In_ float fltSrc) noexceptwinstd::variantinline
operator=(_In_ double dblSrc) noexceptwinstd::variantinline
operator=(_In_ CY cySrc) noexceptwinstd::variantinline
operator=(_In_z_ LPCOLESTR lpszSrc) noexceptwinstd::variantinline
operator=(_Inout_opt_ IDispatch *pSrc)winstd::variantinline
operator=(_Inout_opt_ IUnknown *pSrc)winstd::variantinline
operator=(_In_ unsigned char *pbSrc) noexceptwinstd::variantinline
operator=(_In_ short *pnSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned short *pnSrc) noexceptwinstd::variantinline
operator=(_In_ int *pnSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned int *pnSrc) noexceptwinstd::variantinline
operator=(_In_ long *pnSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned long *pnSrc) noexceptwinstd::variantinline
operator=(_In_ long long *pnSrc) noexceptwinstd::variantinline
operator=(_In_ unsigned long long *pnSrc) noexceptwinstd::variantinline
operator=(_In_ float *pfSrc) noexceptwinstd::variantinline
operator=(_In_ double *pfSrc) noexceptwinstd::variantinline
operator=(_In_ const SAFEARRAY *pSrc) noexceptwinstd::variantinline
operator==(_In_ const VARIANT &varSrc) const noexceptwinstd::variantinline
operator>(_In_ const VARIANT &varSrc) const noexceptwinstd::variantinline
operator>=(_In_ const VARIANT &varSrc) const noexceptwinstd::variantinline
variant() noexceptwinstd::variantinline
variant(_In_ const VARIANT &varSrc)winstd::variantinline
variant(_Inout_ VARIANT &&varSrc) noexceptwinstd::variantinline
variant(_In_ bool bSrc) noexceptwinstd::variantinline
variant(_In_ char cSrc) noexceptwinstd::variantinline
variant(_In_ unsigned char nSrc) noexceptwinstd::variantinline
variant(_In_ short nSrc) noexceptwinstd::variantinline
variant(_In_ unsigned short nSrc) noexceptwinstd::variantinline
variant(_In_ int nSrc, _In_ VARTYPE vtSrc=VT_I4) noexceptwinstd::variantinline
variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc=VT_UI4) noexceptwinstd::variantinline
variant(_In_ long nSrc, _In_ VARTYPE vtSrc=VT_I4) noexceptwinstd::variantinline
variant(_In_ unsigned long nSrc) noexceptwinstd::variantinline
variant(_In_ float fltSrc) noexceptwinstd::variantinline
variant(_In_ double dblSrc, _In_ VARTYPE vtSrc=VT_R8) noexceptwinstd::variantinline
variant(_In_ long long nSrc) noexceptwinstd::variantinline
variant(_In_ unsigned long long nSrc) noexceptwinstd::variantinline
variant(_In_ CY cySrc) noexceptwinstd::variantinline
variant(_In_z_ LPCOLESTR lpszSrc) noexceptwinstd::variantinline
variant(_In_z_ BSTR bstr) noexceptwinstd::variantinline
variant(_In_opt_ IDispatch *pSrc)winstd::variantinline
variant(_In_opt_ IUnknown *pSrc)winstd::variantinline
variant(_In_ const SAFEARRAY *pSrc)winstd::variantinline
~variant()winstd::variantinlinevirtual
+ + + + diff --git a/classwinstd_1_1variant.html b/classwinstd_1_1variant.html new file mode 100644 index 00000000..cdd015d6 --- /dev/null +++ b/classwinstd_1_1variant.html @@ -0,0 +1,613 @@ + + + + + + + +WinStd: winstd::variant Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::variant Class Reference
+
+
+ +

VARIANT struct wrapper. + More...

+ +

#include <COM.h>

+
+Inheritance diagram for winstd::variant:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

variant () noexcept
 Constructs blank VARIANT.
 
variant (_In_ const VARIANT &varSrc)
 Constructs VARIANT from another.
 
variant (_Inout_ VARIANT &&varSrc) noexcept
 Moves VARIANT from another.
 
variant (_In_ bool bSrc) noexcept
 Constructs VARIANT from bool.
 
variant (_In_ char cSrc) noexcept
 Constructs VARIANT from character.
 
variant (_In_ unsigned char nSrc) noexcept
 Constructs VARIANT from byte.
 
variant (_In_ short nSrc) noexcept
 Constructs VARIANT from short.
 
variant (_In_ unsigned short nSrc) noexcept
 Constructs VARIANT from unsigned short.
 
variant (_In_ int nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept
 Constructs VARIANT from integer.
 
variant (_In_ unsigned int nSrc, _In_ VARTYPE vtSrc=VT_UI4) noexcept
 Constructs VARIANT from unsigned integer.
 
variant (_In_ long nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept
 Constructs VARIANT from long.
 
variant (_In_ unsigned long nSrc) noexcept
 Constructs VARIANT from unsigned long.
 
variant (_In_ float fltSrc) noexcept
 Constructs VARIANT from float.
 
variant (_In_ double dblSrc, _In_ VARTYPE vtSrc=VT_R8) noexcept
 Constructs VARIANT from double or variant date.
 
variant (_In_ long long nSrc) noexcept
 Constructs VARIANT from 64-bit integer.
 
variant (_In_ unsigned long long nSrc) noexcept
 Constructs VARIANT from unsigned integer.
 
variant (_In_ CY cySrc) noexcept
 Constructs VARIANT from CY (64-bit integer)
 
variant (_In_z_ LPCOLESTR lpszSrc) noexcept
 Constructs VARIANT from OLE string.
 
variant (_In_z_ BSTR bstr) noexcept
 Constructs VARIANT from BSTR.
 
variant (_In_opt_ IDispatch *pSrc)
 Constructs VARIANT from IDispatch.
 
variant (_In_opt_ IUnknown *pSrc)
 Constructs VARIANT from IUnknown.
 
variant (_In_ const SAFEARRAY *pSrc)
 Constructs VARIANT from SAFEARRAY.
 
+virtual ~variant ()
 Destroys VARIANT.
 
+variantoperator= (_In_ const VARIANT &varSrc)
 Copy from another VARIANT.
 
+variantoperator= (_Inout_ VARIANT &&varSrc) noexcept
 Moves from another VARIANT.
 
+variantoperator= (_In_ bool bSrc) noexcept
 Copy from bool value.
 
+variantoperator= (_In_ char cSrc) noexcept
 Copy from char value.
 
+variantoperator= (_In_ unsigned char nSrc) noexcept
 Copy from unsigned char value.
 
+variantoperator= (_In_ short nSrc) noexcept
 Copy from short value.
 
+variantoperator= (_In_ unsigned short nSrc) noexcept
 Copy from unsigned short value.
 
+variantoperator= (_In_ int nSrc) noexcept
 Copy from int value.
 
+variantoperator= (_In_ unsigned int nSrc) noexcept
 Copy from unsigned int value.
 
+variantoperator= (_In_ long nSrc) noexcept
 Copy from long value.
 
+variantoperator= (_In_ unsigned long nSrc) noexcept
 Copy from unsigned long value.
 
+variantoperator= (_In_ long long nSrc) noexcept
 Copy from long long value.
 
+variantoperator= (_In_ unsigned long long nSrc) noexcept
 Copy from unsigned long long value.
 
+variantoperator= (_In_ float fltSrc) noexcept
 Copy from float value.
 
+variantoperator= (_In_ double dblSrc) noexcept
 Copy from double value.
 
+variantoperator= (_In_ CY cySrc) noexcept
 Copy from CY value.
 
+variantoperator= (_In_z_ LPCOLESTR lpszSrc) noexcept
 Copy from OLE string value.
 
+variantoperator= (_Inout_opt_ IDispatch *pSrc)
 Copy from IDispatch.
 
+variantoperator= (_Inout_opt_ IUnknown *pSrc)
 Copy from IUnknown.
 
+variantoperator= (_In_ unsigned char *pbSrc) noexcept
 Copy from unsigned char reference.
 
+variantoperator= (_In_ short *pnSrc) noexcept
 Copy from short reference.
 
+variantoperator= (_In_ unsigned short *pnSrc) noexcept
 Copy from unsigned short reference.
 
+variantoperator= (_In_ int *pnSrc) noexcept
 Copy from int reference.
 
+variantoperator= (_In_ unsigned int *pnSrc) noexcept
 Copy from unsigned int reference.
 
+variantoperator= (_In_ long *pnSrc) noexcept
 Copy from long reference.
 
+variantoperator= (_In_ unsigned long *pnSrc) noexcept
 Copy from unsigned long reference.
 
+variantoperator= (_In_ long long *pnSrc) noexcept
 Copy from long long reference.
 
+variantoperator= (_In_ unsigned long long *pnSrc) noexcept
 Copy from unsigned long long reference.
 
+variantoperator= (_In_ float *pfSrc) noexcept
 Copy from float reference.
 
+variantoperator= (_In_ double *pfSrc) noexcept
 Copy from double reference.
 
+variantoperator= (_In_ const SAFEARRAY *pSrc) noexcept
 Copy from SAFEARRAY.
 
bool operator== (_In_ const VARIANT &varSrc) const noexcept
 Is variant equal to? More...
 
bool operator!= (_In_ const VARIANT &varSrc) const noexcept
 Is variant not equal to? More...
 
bool operator< (_In_ const VARIANT &varSrc) const noexcept
 Is variant less than? More...
 
bool operator> (_In_ const VARIANT &varSrc) const noexcept
 Is variant greater than? More...
 
bool operator<= (_In_ const VARIANT &varSrc) const noexcept
 Is variant less than or equal to? More...
 
bool operator>= (_In_ const VARIANT &varSrc) const noexcept
 Is variant greater than or equal to? More...
 
HRESULT change_type (_In_ VARTYPE _vt, _In_opt_ USHORT wFlags=0) noexcept
 Converts a variant from one type to another. More...
 
+

Detailed Description

+

VARIANT struct wrapper.

+

Member Function Documentation

+ +

◆ change_type()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
HRESULT winstd::variant::change_type (_In_ VARTYPE _vt,
_In_opt_ USHORT wFlags = 0 
)
+
+inlinenoexcept
+
+ +

Converts a variant from one type to another.

+
See also
VariantChangeType function
+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::variant::operator!= (_In_ const VARIANT & varSrc) const
+
+inlinenoexcept
+
+ +

Is variant not equal to?

+
Parameters
+ + +
[in]varSrcVariant to compare against
+
+
+
Returns
    +
  • Non zero when variant is not equal to varSrc;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::variant::operator< (_In_ const VARIANT & varSrc) const
+
+inlinenoexcept
+
+ +

Is variant less than?

+
Parameters
+ + +
[in]varSrcVariant to compare against
+
+
+
Returns
    +
  • Non zero when variant is less than varSrc;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator<=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::variant::operator<= (_In_ const VARIANT & varSrc) const
+
+inlinenoexcept
+
+ +

Is variant less than or equal to?

+
Parameters
+ + +
[in]varSrcVariant to compare against
+
+
+
Returns
    +
  • Non zero when variant is less than or equal to varSrc;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::variant::operator== (_In_ const VARIANT & varSrc) const
+
+inlinenoexcept
+
+ +

Is variant equal to?

+
Parameters
+ + +
[in]varSrcVariant to compare against
+
+
+
Returns
    +
  • Non zero when variant is equal to varSrc;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator>()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::variant::operator> (_In_ const VARIANT & varSrc) const
+
+inlinenoexcept
+
+ +

Is variant greater than?

+
Parameters
+ + +
[in]varSrcVariant to compare against
+
+
+
Returns
    +
  • Non zero when variant is greater than varSrc;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+ +

◆ operator>=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool winstd::variant::operator>= (_In_ const VARIANT & varSrc) const
+
+inlinenoexcept
+
+ +

Is variant greater than or equal to?

+
Parameters
+ + +
[in]varSrcVariant to compare against
+
+
+
Returns
    +
  • Non zero when variant is greater than or equal to varSrc;
  • +
  • Zero otherwise.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1variant.png b/classwinstd_1_1variant.png new file mode 100644 index 0000000000000000000000000000000000000000..64217887a8d587c880c8af2b31b4fc626f5b10b8 GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^F+d!^!3-o9e|{tgq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg13g_FLn;{G&OKOk$bg46T>Reu|AoRy zGAETBn6s7#8%GL9f9lgcB5S-^%fNG0;we?lkKCVfb$ebvuS@BUT|DW}=a7AGO5Ydi zx~OD6SfKN7!tqbGZ|D5^_UNhg{7JiKS%2H@ap^?h_ARsTPjB1$`P0ACyEe6K4gR$8 zdEb+LsVbTuw*9$sQuSr*vY1Ii!FryZSvzM&3NqY(z!c!R^iPrImhe;J<#YFj{A=Hx zdWz8~m~X<2qJ|?=m{pd^C>TCv=+tEQ_#+L}A}Zm)3zYnk`19bOi;_WW-dC1=5`V(b z=(w*>`t%N->sL!-c9+(^{50=o(X6D|dDhV{9P$k8>K^TjQCQZxN#aMkf8nBno`OY+ zpILu~%?Yf#UG%rQUCVaT_E)SoE$(mUd9wb3Zn?4ZS!ew{+WDz3?-t#@s&`eqdixh^ j-n&d63Zbq6J3fB%a + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::vector_queue< T > Member List
+
+
+ +

This is the complete list of members for winstd::vector_queue< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
abs(_In_ size_type pos) constwinstd::vector_queue< T >inline
at(_In_ size_type pos)winstd::vector_queue< T >inline
at(_In_ size_type pos) constwinstd::vector_queue< T >inline
at_abs(_In_ size_type pos)winstd::vector_queue< T >inline
at_abs(_In_ size_type pos) constwinstd::vector_queue< T >inline
back()winstd::vector_queue< T >inline
back() constwinstd::vector_queue< T >inline
capacity() constwinstd::vector_queue< T >inline
clear()winstd::vector_queue< T >inline
const_pointer typedefwinstd::vector_queue< T >
const_reference typedefwinstd::vector_queue< T >
empty() constwinstd::vector_queue< T >inline
front()winstd::vector_queue< T >inline
front() constwinstd::vector_queue< T >inline
head() constwinstd::vector_queue< T >inline
m_countwinstd::vector_queue< T >protected
m_datawinstd::vector_queue< T >protected
m_headwinstd::vector_queue< T >protected
m_size_maxwinstd::vector_queue< T >protected
operator=(_In_ const vector_queue< value_type > &other)winstd::vector_queue< T >inline
operator=(_Inout_ vector_queue< value_type > &&other)winstd::vector_queue< T >inline
operator[](_In_ size_type pos)winstd::vector_queue< T >inline
operator[](_In_ size_type pos) constwinstd::vector_queue< T >inline
pointer typedefwinstd::vector_queue< T >
pop_back()winstd::vector_queue< T >inline
pop_front()winstd::vector_queue< T >inline
push_back(_In_ const value_type &v)winstd::vector_queue< T >inline
push_back(_Inout_ value_type &&v)winstd::vector_queue< T >inline
push_front(_In_ const value_type &v)winstd::vector_queue< T >inline
push_front(_Inout_ value_type &&v)winstd::vector_queue< T >inline
reference typedefwinstd::vector_queue< T >
size() constwinstd::vector_queue< T >inline
size_type typedefwinstd::vector_queue< T >
tail() constwinstd::vector_queue< T >inline
value_type typedefwinstd::vector_queue< T >
vector_queue(_In_ size_type size_max)winstd::vector_queue< T >inline
vector_queue(_In_ const vector_queue< value_type > &other)winstd::vector_queue< T >inline
vector_queue(_Inout_ vector_queue< value_type > &&other)winstd::vector_queue< T >inline
~vector_queue()winstd::vector_queue< T >inlinevirtual
+ + + + diff --git a/classwinstd_1_1vector__queue.html b/classwinstd_1_1vector__queue.html new file mode 100644 index 00000000..6bc3f48d --- /dev/null +++ b/classwinstd_1_1vector__queue.html @@ -0,0 +1,794 @@ + + + + + + + +WinStd: winstd::vector_queue< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::vector_queue< T > Class Template Reference
+
+
+ +

Helper class to allow limited size FIFO queues implemented as vector of elements. + More...

+ +

#include <Common.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef size_t size_type
 Type to measure element count and indices in.
 
+typedef T value_type
 Element type.
 
+typedef T & reference
 Reference to element type.
 
+typedef const T & const_reference
 Constant reference to element type.
 
+typedef T * pointer
 Pointer to element.
 
+typedef const T * const_pointer
 Constant pointer to element.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 vector_queue (_In_ size_type size_max)
 Construct queue of fixed size. More...
 
 vector_queue (_In_ const vector_queue< value_type > &other)
 Copies existing queue. More...
 
+virtual ~vector_queue ()
 Destroys the queue.
 
 vector_queue (_Inout_ vector_queue< value_type > &&other)
 Moves existing queue. More...
 
vector_queue< value_type > & operator= (_In_ const vector_queue< value_type > &other)
 Copies existing queue. More...
 
vector_queue< value_type > & operator= (_Inout_ vector_queue< value_type > &&other)
 Moves existing queue. More...
 
+size_type size () const
 Returns the number of elements in the vector.
 
+size_type capacity () const
 Returns the number of elements that the queue can contain before overwriting head ones.
 
+void clear ()
 Erases the elements of the queue.
 
+bool empty () const
 Tests if the queue is empty.
 
reference at (_In_ size_type pos)
 Returns a reference to the element at a specified location in the queue. More...
 
reference operator[] (_In_ size_type pos)
 Returns a reference to the element at a specified location in the queue. More...
 
const_reference at (_In_ size_type pos) const
 Returns a constant reference to the element at a specified location in the queue. More...
 
const_reference operator[] (_In_ size_type pos) const
 Returns a constant reference to the element at a specified location in the queue. More...
 
reference at_abs (_In_ size_type pos)
 Returns a reference to the element at the absolute location in the queue. More...
 
const_reference at_abs (_In_ size_type pos) const
 Returns a constant reference to the element at the absolute location in the queue: measured from the beginning of the storage. More...
 
size_type push_back (_In_ const value_type &v)
 Copies an existing element to the end of the queue, overriding the first one when queue is out of space. More...
 
size_type push_back (_Inout_ value_type &&v)
 Moves the element to the end of the queue, overriding the first one when queue is out of space. More...
 
+void pop_back ()
 Removes (dequeues) the last element of the queue.
 
size_type push_front (_In_ const value_type &v)
 Copies an existing element to the head of the queue, overriding the last one when queue is out of space and moving all others one place right. More...
 
size_type push_front (_Inout_ value_type &&v)
 Moves the element to the head of the queue, overriding the last one when queue is out of space and moving all others one place right. More...
 
+void pop_front ()
 Removes (dequeues) the head element of the queue.
 
+reference front ()
 Returns a reference to the head element in the queue.
 
+const_reference front () const
 Returns a constant reference to the head element in the queue.
 
+reference back ()
 Returns a reference to the last element in the queue.
 
+const_reference back () const
 Returns a constant reference to the last element in the queue.
 
+size_type head () const
 Returns absolute subscript or position number of the head element in the queue. The element does not need to exist.
 
+size_type tail () const
 Returns absolute subscript or position number of the last element in the queue. The element must exist.
 
+size_type abs (_In_ size_type pos) const
 Returns absolute subscript or position number of the given element in the queue.
 
+ + + + + + + + + + + + + +

+Protected Attributes

+value_typem_data
 Underlying data container.
 
+size_type m_head
 Index of the first element.
 
+size_type m_count
 Number of elements.
 
+size_type m_size_max
 Maximum size.
 
+

Detailed Description

+
template<class T>
+class winstd::vector_queue< T >

Helper class to allow limited size FIFO queues implemented as vector of elements.

+

Constructor & Destructor Documentation

+ +

◆ vector_queue() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
winstd::vector_queue< T >::vector_queue (_In_ size_type size_max)
+
+inline
+
+ +

Construct queue of fixed size.

+
Parameters
+ + +
[in]size_maxMaximum number of elements. Please note this cannot be changed later.
+
+
+ +
+
+ +

◆ vector_queue() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
winstd::vector_queue< T >::vector_queue (_In_ const vector_queue< value_type > & other)
+
+inline
+
+ +

Copies existing queue.

+
Parameters
+ + +
[in]otherQueue to copy from
+
+
+ +
+
+ +

◆ vector_queue() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
winstd::vector_queue< T >::vector_queue (_Inout_ vector_queue< value_type > && other)
+
+inline
+
+ +

Moves existing queue.

+
Parameters
+ + +
[in,out]otherQueue to move
+
+
+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
reference winstd::vector_queue< T >::at (_In_ size_type pos)
+
+inline
+
+ +

Returns a reference to the element at a specified location in the queue.

+
Parameters
+ + +
[in]posThe subscript or position number of the element to reference in the queue.
+
+
+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
const_reference winstd::vector_queue< T >::at (_In_ size_type pos) const
+
+inline
+
+ +

Returns a constant reference to the element at a specified location in the queue.

+
Parameters
+ + +
[in]posThe subscript or position number of the element to reference in the queue.
+
+
+ +
+
+ +

◆ at_abs() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
reference winstd::vector_queue< T >::at_abs (_In_ size_type pos)
+
+inline
+
+ +

Returns a reference to the element at the absolute location in the queue.

+
Note
Absolute means "measured from the beginning of the storage".
+
Parameters
+ + +
[in]posThe absolute subscript or position number of the element to reference in the queue.
+
+
+ +
+
+ +

◆ at_abs() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
const_reference winstd::vector_queue< T >::at_abs (_In_ size_type pos) const
+
+inline
+
+ +

Returns a constant reference to the element at the absolute location in the queue: measured from the beginning of the storage.

+
Note
Absolute means "measured from the beginning of the storage".
+
Parameters
+ + +
[in]posThe absolute subscript or position number of the element to reference in the queue.
+
+
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
vector_queue< value_type > & winstd::vector_queue< T >::operator= (_In_ const vector_queue< value_type > & other)
+
+inline
+
+ +

Copies existing queue.

+
Parameters
+ + +
[in]otherQueue to copy from
+
+
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
vector_queue< value_type > & winstd::vector_queue< T >::operator= (_Inout_ vector_queue< value_type > && other)
+
+inline
+
+ +

Moves existing queue.

+
Parameters
+ + +
[in,out]otherQueue to move
+
+
+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
reference winstd::vector_queue< T >::operator[] (_In_ size_type pos)
+
+inline
+
+ +

Returns a reference to the element at a specified location in the queue.

+
Parameters
+ + +
[in]posThe subscript or position number of the element to reference in the queue.
+
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
const_reference winstd::vector_queue< T >::operator[] (_In_ size_type pos) const
+
+inline
+
+ +

Returns a constant reference to the element at a specified location in the queue.

+
Parameters
+ + +
[in]posThe subscript or position number of the element to reference in the queue.
+
+
+ +
+
+ +

◆ push_back() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
size_type winstd::vector_queue< T >::push_back (_In_ const value_typev)
+
+inline
+
+ +

Copies an existing element to the end of the queue, overriding the first one when queue is out of space.

+
Parameters
+ + +
[in]vElement to copy to the end of the queue.
+
+
+
Returns
The absolute subscript or position number the element was copied to.
+ +
+
+ +

◆ push_back() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
size_type winstd::vector_queue< T >::push_back (_Inout_ value_type && v)
+
+inline
+
+ +

Moves the element to the end of the queue, overriding the first one when queue is out of space.

+
Parameters
+ + +
[in]vElement to move to the end of the queue.
+
+
+
Returns
The absolute subscript or position number the element was moved to.
+ +
+
+ +

◆ push_front() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
size_type winstd::vector_queue< T >::push_front (_In_ const value_typev)
+
+inline
+
+ +

Copies an existing element to the head of the queue, overriding the last one when queue is out of space and moving all others one place right.

+
Parameters
+ + +
[in]vElement to copy to the head of the queue.
+
+
+
Returns
The absolute subscript or position number the element was copied to.
+ +
+
+ +

◆ push_front() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
size_type winstd::vector_queue< T >::push_front (_Inout_ value_type && v)
+
+inline
+
+ +

Moves the element to the head of the queue, overriding the last one when queue is out of space and moving all others one place right.

+
Parameters
+ + +
[in]vElement to move to the head of the queue.
+
+
+
Returns
The absolute subscript or position number the element was moved to.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1vmemory-members.html b/classwinstd_1_1vmemory-members.html new file mode 100644 index 00000000..e9a66f4f --- /dev/null +++ b/classwinstd_1_1vmemory-members.html @@ -0,0 +1,113 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::vmemory Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alloc(_In_ HANDLE hProcess, _In_opt_ LPVOID lpAddress, _In_ SIZE_T dwSize, _In_ DWORD flAllocationType, _In_ DWORD flProtect) noexceptwinstd::vmemoryinline
attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexceptwinstd::vmemoryinline
handle< LPVOID, NULL >::attach(_In_opt_ handle_type h) noexceptwinstd::handle< LPVOID, NULL >inline
detach()winstd::handle< LPVOID, NULL >inline
free()winstd::handle< LPVOID, NULL >inline
free_internal() noexcept overridewinstd::vmemoryinlineprotectedvirtual
handle() noexceptwinstd::handle< LPVOID, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< LPVOID, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< LPVOID, NULL >inline
handle_type typedefwinstd::handle< LPVOID, NULL >
invalidwinstd::handle< LPVOID, NULL >static
m_hwinstd::handle< LPVOID, NULL >protected
m_procwinstd::vmemoryprotected
operator handle_type() constwinstd::handle< LPVOID, NULL >inline
operator!() constwinstd::handle< LPVOID, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< LPVOID, NULL >inline
operator&()winstd::handle< LPVOID, NULL >inline
operator*() constwinstd::handle< LPVOID, NULL >inline
operator->() constwinstd::handle< LPVOID, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< LPVOID, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< LPVOID, NULL >inline
operator=(_Inout_ vmemory &&other) noexceptwinstd::vmemoryinline
handle< LPVOID, NULL >::operator=(_In_opt_ handle_type h) noexceptwinstd::handle< LPVOID, NULL >inline
handle< LPVOID, NULL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< LPVOID, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< LPVOID, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< LPVOID, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< LPVOID, NULL >inline
vmemory() noexceptwinstd::vmemoryinline
vmemory(_In_ handle_type h, _In_ HANDLE proc) noexceptwinstd::vmemoryinline
vmemory(_Inout_ vmemory &&h) noexceptwinstd::vmemoryinline
~vmemory()winstd::vmemoryinlinevirtual
+ + + + diff --git a/classwinstd_1_1vmemory.html b/classwinstd_1_1vmemory.html new file mode 100644 index 00000000..7121f0a0 --- /dev/null +++ b/classwinstd_1_1vmemory.html @@ -0,0 +1,504 @@ + + + + + + + +WinStd: winstd::vmemory Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Memory in virtual address space of a process handle wrapper. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::vmemory:
+
+
+ + +winstd::handle< LPVOID, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

vmemory () noexcept
 Initializes a new class instance with the memory handle set to INVAL.
 
 vmemory (_In_ handle_type h, _In_ HANDLE proc) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 vmemory (_Inout_ vmemory &&h) noexcept
 Move constructor. More...
 
virtual ~vmemory ()
 Frees the memory. More...
 
vmemoryoperator= (_Inout_ vmemory &&other) noexcept
 Move assignment. More...
 
void attach (_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
 Sets a new memory handle for the class. More...
 
bool alloc (_In_ HANDLE hProcess, _In_opt_ LPVOID lpAddress, _In_ SIZE_T dwSize, _In_ DWORD flAllocationType, _In_ DWORD flProtect) noexcept
 Reserves, commits, or changes the state of a region of memory within the virtual address space of a specified process. The function initializes the memory it allocates to zero. More...
 
- Public Member Functions inherited from winstd::handle< LPVOID, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Frees the memory. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + +

+Protected Attributes

+HANDLE m_proc
 Handle of memory's process.
 
- Protected Attributes inherited from winstd::handle< LPVOID, NULL >
+handle_type m_h
 Object handle.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< LPVOID, NULL >
+typedef LPVOID handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< LPVOID, NULL >
+static const LPVOID invalid
 Invalid handle value.
 
+

Detailed Description

+

Memory in virtual address space of a process handle wrapper.

+

Constructor & Destructor Documentation

+ +

◆ vmemory() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::vmemory::vmemory (_In_ handle_type h,
_In_ HANDLE proc 
)
+
+inlinenoexcept
+
+ +

Initializes a new class instance with an already available object handle.

+
Parameters
+ + + +
[in]procHandle of process the memory belongs to
[in]hInitial object handle value
+
+
+ +
+
+ +

◆ vmemory() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::vmemory::vmemory (_Inout_ vmemory && h)
+
+inlinenoexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in,out]hA rvalue reference of another object
+
+
+ +
+
+ +

◆ ~vmemory()

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

Frees the memory.

+
See also
VirtualFreeEx function
+ +
+
+

Member Function Documentation

+ +

◆ alloc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool winstd::vmemory::alloc (_In_ HANDLE hProcess,
_In_opt_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD flAllocationType,
_In_ DWORD flProtect 
)
+
+inlinenoexcept
+
+ +

Reserves, commits, or changes the state of a region of memory within the virtual address space of a specified process. The function initializes the memory it allocates to zero.

+
See also
VirtualAllocEx function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+ +

◆ attach()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void winstd::vmemory::attach (_In_ HANDLE proc,
_In_opt_ handle_type h 
)
+
+inlinenoexcept
+
+ +

Sets a new memory handle for the class.

+

When the current object handle of the class is non-INVAL, the object is destroyed first.

+
Parameters
+ + + +
[in]procHandle of process the memory belongs to
[in]hInitial object handle value
+
+
+ +
+
+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::vmemory::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Frees the memory.

+
See also
VirtualFreeEx function
+ +

Implements winstd::handle< LPVOID, NULL >.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
vmemory & winstd::vmemory::operator= (_Inout_ vmemory && other)
+
+inlinenoexcept
+
+ +

Move assignment.

+
Parameters
+ + +
[in,out]otherA rvalue reference of another object
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1vmemory.png b/classwinstd_1_1vmemory.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e5fb0e1a777804a2cac0f092b2ce9fd1586e5f GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^CxJMCgBeJ+6fWEYq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Ts&PILn;{G&V4)SlLC($|I425^(WVh zal{|J8a8*2Pg$kb7M3E9hW$CWx9KXH2~K2vqN1d<4NRC!Vi8>Fo%QH(-b&~zE ze><~ht&YFdxMbq52-j6UC396ezC2ykR zwX2-F2K}i#AbHQ@c(KjPyRF6eJMuN^Ur&u6fdLS7pF)i ze-fQ!s8)JLdjBcC3cpXc>}I~3)4bW6fA05hCmB6Y>Dli7b;aB9OziXYaL*&}RP6Wo z-(uD1T=SU6y#K0oT~%Ud$C=drCn_CBXLNMTnJ~GdE8Zb?9XR}VzCce)3u?*Lqs4xJ7h-kcCyG3A{0Am89C1-;!2*;|wd>j1xIro>J zGydeO@ULF+`}4mW?v*z3?7tT;I=pP&%H%x6flgW^dVi z^t>mBiEH?dvUR;DFYL@TXQ~LFuhMC0rn6Sfw=c}+0O!e zW6^MKcG+u*1)5hkoIEbR=`gtReRDpP@wI_$-ng#XAdo&x1<{mf=Ok)h5u6{1-oD!M + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::win_handle< INVALID > Member List
+
+
+ +

This is the complete list of members for winstd::win_handle< INVALID >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
detach()winstd::handle< HANDLE, INVALID >inline
free()winstd::handle< HANDLE, INVALID >inline
free_internal() noexcept overridewinstd::win_handle< INVALID >inlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
handle_type typedefwinstd::handle< HANDLE, INVALID >
invalidwinstd::handle< HANDLE, INVALID >static
m_hwinstd::handle< HANDLE, INVALID >protected
operator handle_type() constwinstd::handle< HANDLE, INVALID >inline
operator!() constwinstd::handle< HANDLE, INVALID >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator&()winstd::handle< HANDLE, INVALID >inline
operator*() constwinstd::handle< HANDLE, INVALID >inline
operator->() constwinstd::handle< HANDLE, INVALID >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, INVALID >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, INVALID >inline
~win_handle()winstd::win_handle< INVALID >inlinevirtual
+ + + + diff --git a/classwinstd_1_1win__handle.html b/classwinstd_1_1win__handle.html new file mode 100644 index 00000000..820a598e --- /dev/null +++ b/classwinstd_1_1win__handle.html @@ -0,0 +1,261 @@ + + + + + + + +WinStd: winstd::win_handle< INVALID > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::win_handle< INVALID > Class Template Reference
+
+
+ +

Windows HANDLE wrapper class. + More...

+ +

#include <Win.h>

+
+Inheritance diagram for winstd::win_handle< INVALID >:
+
+
+ + +winstd::handle< HANDLE, INVALID > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~win_handle ()
 Closes an open object handle. More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, INVALID >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes an open object handle. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, INVALID >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, INVALID >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HANDLE, INVALID >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+
template<HANDLE INVALID>
+class winstd::win_handle< INVALID >

Windows HANDLE wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~win_handle()

+ +
+
+
+template<HANDLE INVALID>
+ + + + + +
+ + + + + + + +
virtual winstd::win_handle< INVALID >::~win_handle ()
+
+inlinevirtual
+
+ +

Closes an open object handle.

+
See also
CloseHandle function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+
+template<HANDLE INVALID>
+ + + + + +
+ + + + + + + +
void winstd::win_handle< INVALID >::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes an open object handle.

+
See also
CloseHandle function
+ +

Implements winstd::handle< HANDLE, INVALID >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1win__handle.png b/classwinstd_1_1win__handle.png new file mode 100644 index 0000000000000000000000000000000000000000..ad2ef1128c2b0d447024cb66982d924c7daac9f1 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^4}ds;gBeJgTXrr3QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Mi%-%_L!u3UHeDafeCT!A#I;GPx0&B_%%5_&$pgIZt@#t`F@$> z{}Sc282Znp)X!L!`AYvLm(JPeVas_}C`f)~h;GR}pz!n3in&{#ry4b+P0MG9x+S&Y z$1zLS=8$PwWs?_O+gSN@=ltR$y-yd_L`fg`Ca3fF9;41Od*+@n+XE7wygRo4R_Hd& zGrkk)IQ`Z&e|^_r4%UP}J563QeT(bWS=oOupUKQEcKrfxdDfdnoE6FZw@yuDn7%yY z;hFnJbAz{RWtVQybp5RP>a)4-&%~zuGh8-QMP_(-41^{lJ-7vL7BN7ah9EC|^@7?8m>u zFR)?bRt83(QWl9wZh?dpU5AE=1O>{qS_IO>7!!cu4^_?UkU!zy`s1OxvDf?i%HrQ? zXusR}{q1w*15@{HXo_`USiGL`ovoOGYb3+Ho(C)+Hd|(WpT4YDK7YN;<5_JtE2XCK z@TqGasS;hp{dg;XMfV4_1cvy&sM8-lOk6ux`0_j+e+J!L-im2!|BCPiOv|c%Qpk8J zh$+l*W_aK2o`TwPhVugPOg(jR>^lful)V@i!FyiUmZ)q|9$5B4G#EctyMU1BC3HwIh&EGXAOG-hoaA#dd + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::win_runtime_error Member List
+
+
+ +

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

+ + + + + + + + + + + +
error_type typedefwinstd::num_runtime_error< DWORD >
m_numwinstd::num_runtime_error< DWORD >protected
msg(_In_opt_ DWORD dwLanguageId=0) constwinstd::win_runtime_errorinline
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::num_runtime_error< DWORD >inline
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::num_runtime_error< DWORD >inline
number() constwinstd::num_runtime_error< DWORD >inline
win_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::win_runtime_errorinline
win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::win_runtime_errorinline
win_runtime_error(_In_ const std::string &msg)winstd::win_runtime_errorinline
win_runtime_error(_In_opt_z_ const char *msg=nullptr)winstd::win_runtime_errorinline
+ + + + diff --git a/classwinstd_1_1win__runtime__error.html b/classwinstd_1_1win__runtime__error.html new file mode 100644 index 00000000..0b5e28bf --- /dev/null +++ b/classwinstd_1_1win__runtime__error.html @@ -0,0 +1,334 @@ + + + + + + + +WinStd: winstd::win_runtime_error Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::win_runtime_error Class Reference
+
+
+ +

Windows runtime error. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::win_runtime_error:
+
+
+ + +winstd::num_runtime_error< DWORD > +winstd::eap_runtime_error + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 win_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 win_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
 win_runtime_error (_In_ const std::string &msg)
 Constructs an exception using GetLastError() More...
 
 win_runtime_error (_In_opt_z_ const char *msg=nullptr)
 Constructs an exception using GetLastError() More...
 
tstring msg (_In_opt_ DWORD dwLanguageId=0) const
 Returns a user-readable Windows error message. More...
 
- Public Member Functions inherited from winstd::num_runtime_error< DWORD >
 num_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 num_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+error_type number () const
 Returns the Windows error number.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::num_runtime_error< DWORD >
+typedef DWORD error_type
 Error number type.
 
- Protected Attributes inherited from winstd::num_runtime_error< DWORD >
+error_type m_num
 Numeric error code.
 
+

Detailed Description

+

Windows runtime error.

+

Constructor & Destructor Documentation

+ +

◆ win_runtime_error() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::win_runtime_error::win_runtime_error (_In_ error_type num,
_In_ const std::string & msg 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numWindows error code
[in]msgError message
+
+
+ +
+
+ +

◆ win_runtime_error() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::win_runtime_error::win_runtime_error (_In_ error_type num,
_In_opt_z_ const char * msg = nullptr 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numWindows error code
[in]msgError message
+
+
+ +
+
+ +

◆ win_runtime_error() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::win_runtime_error::win_runtime_error (_In_ const std::string & msg)
+
+inline
+
+ +

Constructs an exception using GetLastError()

+
Parameters
+ + +
[in]msgError message
+
+
+ +
+
+ +

◆ win_runtime_error() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::win_runtime_error::win_runtime_error (_In_opt_z_ const char * msg = nullptr)
+
+inline
+
+ +

Constructs an exception using GetLastError()

+
Parameters
+ + +
[in]msgError message
+
+
+ +
+
+

Member Function Documentation

+ +

◆ msg()

+ +
+
+ + + + + +
+ + + + + + + + +
tstring winstd::win_runtime_error::msg (_In_opt_ DWORD dwLanguageId = 0) const
+
+inline
+
+ +

Returns a user-readable Windows error message.

+
See also
FormatMessage function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1win__runtime__error.png b/classwinstd_1_1win__runtime__error.png new file mode 100644 index 0000000000000000000000000000000000000000..c86989f79c2b2050e011c59954a40a93b3d54861 GIT binary patch literal 1431 zcma)6eKebA6n}kdcQjo)Q%=Kl)U3pcPPH)%)u5OpD??P7jQUPPQlD#0(5>23%Uklc z-A0CrmJvls)kjM-+RzB9iSINjCcdJ`UOhW!XZvGk&pG$G_n!OQKc4&h-CwS+x4X`E zgY5tS=wOb!`oVr0HjcI$d_TUBRRX&`zFs&trBVrpGqX$N{I<(*^v*aOjz;c?5u9qD z_4CF8@T09W(2cVO0FC_^S7#hW@8F{E=9E{e z@boYb2IwG|(#Gd<5#q>*DVmxCGaIT)&RFq$bgq#J3a#RQB)&F_YW@JVk*2iejs=CM z78THrxE%heBH$-bXt!6FM)2wzSBz+uw@N{7;t=KfaKFWXBqNCJ z*=(s>k%Mh9th61EVHL}Ixh*1&oX?%*Eoh->tE6^eXvA_(k&lgyV-^zxjo$qtnOESq zfZzy602Id!9mhVCLui+?sN0@ZQjRri%)3%lSB=ps>pLMJUE2q6%reU~YTM00h_{Jo z^Xl_1|0rh~{VZ*qQ|-ghQ`)d}xQ9MLt0K~IWfCgG5+h5fR!}ELJd}3H;SrB5U!h7( z@RFreL$Ns~q$YvO>gc5#mwVI_S@s2xd*q(m;)rtegOZ}|!VUc%RPUk=PDA>BNJOML zHaz;+nW!*@Q{AcSCE4E%+hC;q4aHEmvp*rO7<>=)C?q4f1*hNR6X~0#EGHhk)zf&w z53KOO3-Su_KajiFZl5Dle^#ty)`|nv zX{XCB7UrX+Ikn{@m)IRw2GO1J#OmzZtj!LEIY#N|PTip-DNkMq`7dJCJJM; z=@SGzhV+J%q+o$UOB5Xo=!y10?BPSMR%28_bJh$V{qd+OW#9irVhbn^;)Z|;cDf{-T zNaDlM1;8gq@iz_QSG>$kl|V_ajz~4AU7pmGJ>!O!-6-7oAdlD{2>ARbd;d-DRpUmM z)O+d$IXKz+EPVo+FED}k#zY~u;hB_s@#RMX>7!zTj9)=t+|k9IUV-R~S7-m2ZL+cU zax!QXgzzcmYey%zj-+R$;Ju0G$3voEDPRs&)+d7dT;Ns`&!h^g@ZIc}CZ>Wf>(^Eyp=9LkTI%8GM-*gnfe#B%bq5 zseGLpwkxk;QJflkp+6U@Zfqd15z9nI@vkv!FUiC67Huwv`1Yeal;mdQ8JyZzp7rna z!Bm30WbbGyIcT;wpT1ZiN7E=Z;}(N~1iImFIm||FAIyRa#e;4%2L%hrn+h$0!$gd1 T7c&f2Q2^uS?aKP{)cHRF(w^B< literal 0 HcmV?d00001 diff --git a/classwinstd_1_1window__dc-members.html b/classwinstd_1_1window__dc-members.html new file mode 100644 index 00000000..edd6e240 --- /dev/null +++ b/classwinstd_1_1window__dc-members.html @@ -0,0 +1,111 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::window_dc Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HDC, NULL >inline
detach()winstd::handle< HDC, NULL >inline
free()winstd::handle< HDC, NULL >inline
free_internal() noexcept overridewinstd::window_dcinlineprotectedvirtual
handle() noexceptwinstd::handle< HDC, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HDC, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HDC, NULL >inline
handle_type typedefwinstd::handle< HDC, NULL >
invalidwinstd::handle< HDC, NULL >static
m_hwinstd::handle< HDC, NULL >protected
m_hwndwinstd::window_dcprotected
operator handle_type() constwinstd::handle< HDC, NULL >inline
operator!() constwinstd::handle< HDC, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator&()winstd::handle< HDC, NULL >inline
operator*() constwinstd::handle< HDC, NULL >inline
operator->() constwinstd::handle< HDC, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator=(_Inout_ window_dc &&h) noexcept (defined in winstd::window_dc)winstd::window_dcinline
handle< HDC, NULL >::operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HDC, NULL >inline
handle< HDC, NULL >::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HDC, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HDC, NULL >inline
window_dc() noexcept (defined in winstd::window_dc)winstd::window_dcinline
window_dc(_In_opt_ handle_type h, _In_opt_ HWND hwnd) noexcept (defined in winstd::window_dc)winstd::window_dcinline
window_dc(_Inout_ window_dc &&h) noexcept (defined in winstd::window_dc)winstd::window_dcinline
~window_dc()winstd::window_dcinlinevirtual
+ + + + diff --git a/classwinstd_1_1window__dc.html b/classwinstd_1_1window__dc.html new file mode 100644 index 00000000..456e26de --- /dev/null +++ b/classwinstd_1_1window__dc.html @@ -0,0 +1,273 @@ + + + + + + + +WinStd: winstd::window_dc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Device context wrapper class. + More...

+ +

#include <GDI.h>

+
+Inheritance diagram for winstd::window_dc:
+
+
+ + +winstd::handle< HDC, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

window_dc (_In_opt_ handle_type h, _In_opt_ HWND hwnd) noexcept
 
window_dc (_Inout_ window_dc &&h) noexcept
 
+window_dcoperator= (_Inout_ window_dc &&h) noexcept
 
virtual ~window_dc ()
 Releases a device context (DC), freeing it for use by other applications. More...
 
- Public Member Functions inherited from winstd::handle< HDC, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Releases a device context (DC), freeing it for use by other applications. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + +

+Protected Attributes

+HWND m_hwnd
 Window handle.
 
- Protected Attributes inherited from winstd::handle< HDC, NULL >
+handle_type m_h
 Object handle.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HDC, NULL >
+typedef HDC handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HDC, NULL >
+static const HDC invalid
 Invalid handle value.
 
+

Detailed Description

+

Device context wrapper class.

+

Constructor & Destructor Documentation

+ +

◆ ~window_dc()

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

Releases a device context (DC), freeing it for use by other applications.

+
See also
ReleaseDC function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::window_dc::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Releases a device context (DC), freeing it for use by other applications.

+
See also
ReleaseDC function
+ +

Implements winstd::handle< HDC, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1window__dc.png b/classwinstd_1_1window__dc.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f5a000ed4f2dde9f152c37bea61f9eb78d37aa GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Uam+I5|s4q(^X1RJuW7=F{oSC#btZN{N1k$Wh-p9 zebqaBTK(J8)mF=5R&BohIj3I8`u^K?k>Ce$$Ku+|*9Je*if+5c-8z>oxrVE^Iy5t9 zL%)3f?FaL3I4;R!4^RJV*(iS`?B@wJPNiL@yG7J)UJqHQy6sl-){>f4cH3s%KU)^} zg{QjvRpNUU)o-`rC7woY+wAD?Df7-Rw{x`1rwi;ZKEH8& z)$U-=BF>7lx7lx8RM|P{3SXDKKiA#>&s)3h+C)it*0=9E@c&r!rr%-$f-hgEy)j>z ze|}rX3F)F7K|yWHZ5;mwm9 z3}Hn%4BD1v4O3;L4|w(QCa4}~+b}7aIpX9-#xEWOt=*`lvDfNbV8in&VQYuG zmqPUon9Xk-)i_WbYwpQ#_mb!R`D|j#Z6Z^jh|d4RU0r-&eRBSNq0Rg3`PTRw9$<>D z-sBfu@;o!)YkJ7-x~sR@O+dl1B}FUXYM0c9?x`#f%1hM0&AI!O`NJxk+XyeEy%BJd b@T-rPP<^uT-t$mk3S#hd^>bP0l+XkKsJAM0 literal 0 HcmV?d00001 diff --git a/classwinstd_1_1wintrust-members.html b/classwinstd_1_1wintrust-members.html new file mode 100644 index 00000000..a80f2714 --- /dev/null +++ b/classwinstd_1_1wintrust-members.html @@ -0,0 +1,87 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::wintrust Member List
+
+
+ +

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

+ + + + + + +
m_action (defined in winstd::wintrust)winstd::wintrustprotected
m_hwnd (defined in winstd::wintrust)winstd::wintrustprotected
m_wtd (defined in winstd::wintrust)winstd::wintrustprotected
wintrust(_In_opt_ HWND hwnd, _In_ const GUID &action, _Inout_ WINTRUST_DATA &wtd)winstd::wintrustinline
~wintrust()winstd::wintrustinlinevirtual
+ + + + diff --git a/classwinstd_1_1wintrust.html b/classwinstd_1_1wintrust.html new file mode 100644 index 00000000..1753748e --- /dev/null +++ b/classwinstd_1_1wintrust.html @@ -0,0 +1,117 @@ + + + + + + + +WinStd: winstd::wintrust Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

WinTrust engine wrapper class. + More...

+ +

#include <WinTrust.h>

+ + + + + + + + +

+Public Member Functions

wintrust (_In_opt_ HWND hwnd, _In_ const GUID &action, _Inout_ WINTRUST_DATA &wtd)
 Initializes a new class instance.
 
+virtual ~wintrust ()
 Destroys the WinTrust context.
 
+ + + + + + + +

+Protected Attributes

+HWND m_hwnd
 
+GUID m_action
 
+WINTRUST_DATA & m_wtd
 
+

Detailed Description

+

WinTrust engine wrapper class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1wlan__handle-members.html b/classwinstd_1_1wlan__handle-members.html new file mode 100644 index 00000000..34e8d3bc --- /dev/null +++ b/classwinstd_1_1wlan__handle-members.html @@ -0,0 +1,107 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::wlan_handle Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
attach(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, NULL >inline
detach()winstd::handle< HANDLE, NULL >inline
free()winstd::handle< HANDLE, NULL >inline
free_internal() noexcept overridewinstd::wlan_handleinlineprotectedvirtual
handle() noexceptwinstd::handle< HANDLE, NULL >inline
handle(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, NULL >inline
handle(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, NULL >inline
handle_type typedefwinstd::handle< HANDLE, NULL >
invalidwinstd::handle< HANDLE, NULL >static
m_hwinstd::handle< HANDLE, NULL >protected
open(_In_ DWORD dwClientVersion, _Out_ PDWORD pdwNegotiatedVersion) noexceptwinstd::wlan_handleinline
operator handle_type() constwinstd::handle< HANDLE, NULL >inline
operator!() constwinstd::handle< HANDLE, NULL >inline
operator!=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator&()winstd::handle< HANDLE, NULL >inline
operator*() constwinstd::handle< HANDLE, NULL >inline
operator->() constwinstd::handle< HANDLE, NULL >inline
operator<(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator<=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator=(_In_opt_ handle_type h) noexceptwinstd::handle< HANDLE, NULL >inline
operator=(_Inout_ handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HANDLE, NULL >inline
operator==(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator>(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
operator>=(_In_opt_ handle_type h) constwinstd::handle< HANDLE, NULL >inline
~wlan_handle()winstd::wlan_handleinlinevirtual
+ + + + diff --git a/classwinstd_1_1wlan__handle.html b/classwinstd_1_1wlan__handle.html new file mode 100644 index 00000000..5afe3913 --- /dev/null +++ b/classwinstd_1_1wlan__handle.html @@ -0,0 +1,303 @@ + + + + + + + +WinStd: winstd::wlan_handle Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::wlan_handle Class Reference
+
+
+ +

WLAN handle wrapper. + More...

+ +

#include <WLAN.h>

+
+Inheritance diagram for winstd::wlan_handle:
+
+
+ + +winstd::handle< HANDLE, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~wlan_handle ()
 Closes a connection to the server. More...
 
bool open (_In_ DWORD dwClientVersion, _Out_ PDWORD pdwNegotiatedVersion) noexcept
 Opens a connection to the server. More...
 
- Public Member Functions inherited from winstd::handle< HANDLE, NULL >
handle () noexcept
 Initializes a new class instance with the object handle set to INVAL.
 
 handle (_In_opt_ handle_type h) noexcept
 Initializes a new class instance with an already available object handle. More...
 
 handle (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move constructor. More...
 
handle< handle_type, INVAL > & operator= (_In_opt_ handle_type h) noexcept
 Attaches already available object handle. More...
 
handle< handle_type, INVAL > & operator= (_Inout_ handle< handle_type, INVAL > &&h) noexcept
 Move assignment. More...
 
 operator handle_type () const
 Auto-typecasting operator. More...
 
handle_type *& operator* () const
 Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.). More...
 
handle_typeoperator& ()
 Returns the object handle reference. More...
 
handle_type operator-> () const
 Provides object handle member access when the object handle is a pointer to a class or struct. More...
 
bool operator! () const
 Tests if the object handle is INVAL. More...
 
bool operator< (_In_opt_ handle_type h) const
 Is handle less than? More...
 
bool operator<= (_In_opt_ handle_type h) const
 Is handle less than or equal to? More...
 
bool operator>= (_In_opt_ handle_type h) const
 Is handle greater than or equal to? More...
 
bool operator> (_In_opt_ handle_type h) const
 Is handle greater than? More...
 
bool operator!= (_In_opt_ handle_type h) const
 Is handle not equal to? More...
 
bool operator== (_In_opt_ handle_type h) const
 Is handle equal to? More...
 
void attach (_In_opt_ handle_type h) noexcept
 Sets a new object handle for the class. More...
 
handle_type detach ()
 Dismisses the object handle from this class. More...
 
+void free ()
 Destroys the object.
 
+ + + + + + + +

+Protected Member Functions

void free_internal () noexcept override
 Closes a connection to the server. More...
 
virtual void free_internal () noexcept=0
 Abstract member function that must be implemented by child classes to do the actual object destruction. More...
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::handle< HANDLE, NULL >
+typedef HANDLE handle_type
 Datatype of the object handle this template class handles.
 
- Static Public Attributes inherited from winstd::handle< HANDLE, NULL >
+static const HANDLE invalid
 Invalid handle value.
 
- Protected Attributes inherited from winstd::handle< HANDLE, NULL >
+handle_type m_h
 Object handle.
 
+

Detailed Description

+

WLAN handle wrapper.

+

Constructor & Destructor Documentation

+ +

◆ ~wlan_handle()

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

Closes a connection to the server.

+
See also
WlanCloseHandle function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

+ +
+
+ + + + + +
+ + + + + + + +
void winstd::wlan_handle::free_internal ()
+
+inlineoverrideprotectedvirtualnoexcept
+
+ +

Closes a connection to the server.

+
See also
WlanCloseHandle function
+ +

Implements winstd::handle< HANDLE, NULL >.

+ +
+
+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool winstd::wlan_handle::open (_In_ DWORD dwClientVersion,
_Out_ PDWORD pdwNegotiatedVersion 
)
+
+inlinenoexcept
+
+ +

Opens a connection to the server.

+
See also
WlanOpenHandle function
+
Returns
    +
  • true when succeeds;
  • +
  • false when fails. Use GetLastError() for failure reason.
  • +
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1wlan__handle.png b/classwinstd_1_1wlan__handle.png new file mode 100644 index 0000000000000000000000000000000000000000..757ef2fa53dac865b16983a6a0e8b14b40b34e1e GIT binary patch literal 724 zcmeAS@N?(olHy`uVBq!ia0vp^=YTkXgBeJst=)ALNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~C40I!hEy=Vo%?pvY6Tuw@!K=^{a23H z?qFQ_wZh7FCy(xJ{*D$_#XqT$(^6$NdR)?&WijbVsIdE_J+FF%Rc=nYS6q5GkN0-& z#%-0n=jVT&r2Q(te07z@B%jLtR`N$VUxx9#t9;q}DW#G({e98r?Qxr~=WYs2Pu|g-mQ18uLt=DmyK} z&TY~;ZNT)SO^)GlhR&Sh$r|%E7KF{3SiyF9=1krL>(%%g!hK~J*3YtFh%+r@*pu~$ zq2lTh#t*AHnID7-vmaQErl4+(fRltfOGBUuOtF5!EB?#BckZ9pzV7+fhtF2n?Xdc< zdhW7KR`IU1UvJ;sI=B99;`{XmJ!@~;{q~E$z3s-)kGuy`{|c!)#C}`eb=&M2vyHyX z&G10}f=GM*Z4BFFCIXPeiBOOoulV>F|8oU_CV_0gPs42e)MwY zN|+T^ZMVMpz%9+%%=P7Ojz8gT;syJ5l}j!50S4FXTuY`?OWK1s+`RJf>KV2N;q{H1 s-+r8b-sXVy*{evt3!4M + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::ws2_runtime_error Member List
+
+
+ +

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

+ + + + + + + + + + + +
error_type typedefwinstd::num_runtime_error< int >
m_numwinstd::num_runtime_error< int >protected
msg(_In_opt_ DWORD dwLanguageId=0) constwinstd::ws2_runtime_errorinline
num_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::num_runtime_error< int >inline
num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::num_runtime_error< int >inline
number() constwinstd::num_runtime_error< int >inline
ws2_runtime_error(_In_ error_type num, _In_ const std::string &msg)winstd::ws2_runtime_errorinline
ws2_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)winstd::ws2_runtime_errorinline
ws2_runtime_error(_In_ const std::string &msg)winstd::ws2_runtime_errorinline
ws2_runtime_error(_In_opt_z_ const char *msg=nullptr)winstd::ws2_runtime_errorinline
+ + + + diff --git a/classwinstd_1_1ws2__runtime__error.html b/classwinstd_1_1ws2__runtime__error.html new file mode 100644 index 00000000..854e1a92 --- /dev/null +++ b/classwinstd_1_1ws2__runtime__error.html @@ -0,0 +1,333 @@ + + + + + + + +WinStd: winstd::ws2_runtime_error Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::ws2_runtime_error Class Reference
+
+
+ +

WinSock2 runtime error. + More...

+ +

#include <WinSock2.h>

+
+Inheritance diagram for winstd::ws2_runtime_error:
+
+
+ + +winstd::num_runtime_error< int > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ws2_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 ws2_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
 ws2_runtime_error (_In_ const std::string &msg)
 Constructs an exception using WSAGetLastError() More...
 
 ws2_runtime_error (_In_opt_z_ const char *msg=nullptr)
 Constructs an exception using WSAGetLastError() More...
 
tstring msg (_In_opt_ DWORD dwLanguageId=0) const
 Returns a user-readable Windows error message. More...
 
- Public Member Functions inherited from winstd::num_runtime_error< int >
 num_runtime_error (_In_ error_type num, _In_ const std::string &msg)
 Constructs an exception. More...
 
 num_runtime_error (_In_ error_type num, _In_opt_z_ const char *msg=nullptr)
 Constructs an exception. More...
 
+error_type number () const
 Returns the Windows error number.
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from winstd::num_runtime_error< int >
+typedef int error_type
 Error number type.
 
- Protected Attributes inherited from winstd::num_runtime_error< int >
+error_type m_num
 Numeric error code.
 
+

Detailed Description

+

WinSock2 runtime error.

+

Constructor & Destructor Documentation

+ +

◆ ws2_runtime_error() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::ws2_runtime_error::ws2_runtime_error (_In_ error_type num,
_In_ const std::string & msg 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numWinSock2 error code
[in]msgError message
+
+
+ +
+
+ +

◆ ws2_runtime_error() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
winstd::ws2_runtime_error::ws2_runtime_error (_In_ error_type num,
_In_opt_z_ const char * msg = nullptr 
)
+
+inline
+
+ +

Constructs an exception.

+
Parameters
+ + + +
[in]numWinSock2 error code
[in]msgError message
+
+
+ +
+
+ +

◆ ws2_runtime_error() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::ws2_runtime_error::ws2_runtime_error (_In_ const std::string & msg)
+
+inline
+
+ +

Constructs an exception using WSAGetLastError()

+
Parameters
+ + +
[in]msgError message
+
+
+ +
+
+ +

◆ ws2_runtime_error() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::ws2_runtime_error::ws2_runtime_error (_In_opt_z_ const char * msg = nullptr)
+
+inline
+
+ +

Constructs an exception using WSAGetLastError()

+
Parameters
+ + +
[in]msgError message
+
+
+ +
+
+

Member Function Documentation

+ +

◆ msg()

+ +
+
+ + + + + +
+ + + + + + + + +
tstring winstd::ws2_runtime_error::msg (_In_opt_ DWORD dwLanguageId = 0) const
+
+inline
+
+ +

Returns a user-readable Windows error message.

+
See also
FormatMessage function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1ws2__runtime__error.png b/classwinstd_1_1ws2__runtime__error.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4a150a44dc216adc73866180f3a81f1ddd7539 GIT binary patch literal 1033 zcmeAS@N?(olHy`uVBq!ia0vp^M}fG5gBeIBDBLdqQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;!>Ft_b zvz}a98F{a)Dlx5W&SWvom(qt%{qKy7yY(L=<-ad26(RjDD=^=IplH{LX4W9f=a_X&R)yA72|9QRt zZdzKpMETdw%U90i^hdy5edy4cGwgd?J5JnX{9&lyaQiby_x0DDQvDlVsLCz)$kT1H zm|>5A7=s-LH-mf&YXkowrUUGWj1QVOFnn-~VECb+!%%}N{eUC(dg=CdztFGGT3T1F z;y>gRdX+tzJMikBGv~i%hh9zoqI=#vk7xD8o6ooI07`x}x);F{D*X7$NeQc%)Ll!q z6+b;AGrvB$D|WY}l?Kysx!^y4R*FpCyCS?qcEYM>OLG-hm1f>K>%a3+)ZVvgoH6^R zsFkJc6w$v{|8;uzDxJkHruv$D{uP8pnyhHw%ByL0zioBbv?t7K+e1V4Z;l9l9@YI& z-+zUvV|KUEXDP94k2J&d62n)=zQk@6yS=vRVpPqqn!}4u{ND9zQqQVyu9+8aiSu^n zoK9UmCG=h7l;0JXchtHq-S%?d+`!-IQ&zpI-FYhM&eGn%t~-i5I(VfgkUd;Q$q!Py@VCRP03cK!79|Gh_zW*9En-_v-wbk3_c zJ${YF0hSjO3s%P6_UA8-*;)2ESZwlMh8smUoEGSvj$Imk{+rD9x2YvwQ@^H9_x{L~ zaC&!-&XEQ$Nho-Ov+XV!7TK{L9a%qm(hk$dx Qf%%rf)78&qol`;+0I|OE*8l(j literal 0 HcmV?d00001 diff --git a/classwinstd_1_1wstring__guid-members.html b/classwinstd_1_1wstring__guid-members.html new file mode 100644 index 00000000..663c0f76 --- /dev/null +++ b/classwinstd_1_1wstring__guid-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
winstd::wstring_guid Member List
+
+
+ +

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

+ + + +
basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const wchar_t *format)winstd::basic_string_guid< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >inline
wstring_guid(_In_ const GUID &guid)winstd::wstring_guidinline
+ + + + diff --git a/classwinstd_1_1wstring__guid.html b/classwinstd_1_1wstring__guid.html new file mode 100644 index 00000000..9a673a41 --- /dev/null +++ b/classwinstd_1_1wstring__guid.html @@ -0,0 +1,147 @@ + + + + + + + +WinStd: winstd::wstring_guid Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
winstd::wstring_guid Class Reference
+
+
+ +

Wide character implementation of a class to support converting GUID to string. + More...

+ +

#include <Common.h>

+
+Inheritance diagram for winstd::wstring_guid:
+
+
+ + +winstd::basic_string_guid< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > + +
+ + + + + + + + + + +

+Public Member Functions

Initializing string using template in memory
 wstring_guid (_In_ const GUID &guid)
 Initializes a new string and formats its contents to string representation of given GUID. More...
 
- Public Member Functions inherited from winstd::basic_string_guid< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >
 basic_string_guid (_In_ const GUID &guid, _In_z_ _Printf_format_string_ const wchar_t *format)
 Initializes a new string and formats its contents to string representation of given GUID. More...
 
+

Detailed Description

+

Wide character implementation of a class to support converting GUID to string.

+

Constructor & Destructor Documentation

+ +

◆ wstring_guid()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::wstring_guid::wstring_guid (_In_ const GUID & guid)
+
+inline
+
+ +

Initializes a new string and formats its contents to string representation of given GUID.

+
Parameters
+ + +
[in]guidGUID to convert
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1wstring__guid.png b/classwinstd_1_1wstring__guid.png new file mode 100644 index 0000000000000000000000000000000000000000..46255fa6c5b49f1767337300968dce1788311b6a GIT binary patch literal 1960 zcmbuAdo-JQ8pmI%2Suf6wLRKt1gSwJ^P&V{@&;JJONfV^Fr-G=Bixw->pgEy zrms{vPtn19)B>+Q$o zgzc+cIx%ymlf-jiwsoG|CrEUl%%B{K-jHl0Dj?ZD^%w9ymcU$$nOR`lxEx#;0%TV58J!Q-7npYQMEZ+zfZV<)fb z1-1k!VpWG~nnnLnY9FrwLasY3NhqSp3?gvP?xtrTh}lgPg;|eoNGwaF(;H zmyWNB_e4zUO?C+j%N#2r;)M48f^+wn75nU-r@Op80K>eOZWl{+aFInia6--5#KVQI3{ayvZ3UUv_>6XNH|GspO*fuY9^_G*Cv8h zyn9qVoo%6rftMQ{{`}@iSZqgXLU%QVrPTR$Up`C8?UGHwUcTn17tGzOWhvpRLa5yj z;(k8+JKQ{vKZ?B3T`3I?mq^ZBgRDgsC6UTqaEN2+RuV}cf73XFD2yZRkw|(B)MV7> zvRHAX;(voi^bn0fk|}=BjV-R6=XMbdeX-x~VVuBH>LZKDK>ky)JcdC5M1I zJi300KqwV1OvOX4*$=G5ACg7J8~=UvGH(jgO&xco?)B~CJnr8amam;oht}cb-iU>( zv{bjZ&cx5&iaP&@7~V%wsUl_NiGcyU@T%epxg^I%cQyH_;bmA)#e*Di#g5Z%A`0_I zhg{ljMjc$1eZLe=)_Au<}|#7;0oxhbry}!_040crk zmyJPYZagu}u%d_D%E*8xvRj6Y!>Y&EH%p;24_^fc&Sg$J`&>v1Ag5^C-+lX0o^w=c z4faGoiP^?iI^-2KGfW15s7h!?P3t|&^Ex`GhhT>FykIbpxt;#xHe~o&#Cn%wv5TKT z-IeeU_s&!+`d_nM@YA3PirlD4R*!-ZA6HxXf(FmN4Hw;`V~vqIOX2D zNg!??>}tthITsq9h=UoHR-Fq>HHteyPyF30V=!b_aZr`SOlp8?8mTDzh9Tuqtx?L| zOSuQ=k%V>qNe>i?RX%rbPIZ64XGmd z3-dKqRT@&KDjNpqmZhqt_KD=e(B~llQe!Rn`dmz`vejulKY%T65`53qU(@}x15sWB z@98&jeZBvt(K`k{23|?XGW^|)3Uu5~N&nn?#Y;EKEdCcy#Z>gRUNLw`Y^V9yKh>1~ l$8+Nf0=xk0DR(+xDh<@B3Yy8!4ekIKUhY_Qi`)4d{{*SMiBbRn literal 0 HcmV?d00001 diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/dir_6f50bb204833d887b928571856c82fbe.html b/dir_6f50bb204833d887b928571856c82fbe.html new file mode 100644 index 00000000..da6a7a42 --- /dev/null +++ b/dir_6f50bb204833d887b928571856c82fbe.html @@ -0,0 +1,113 @@ + + + + + + + +WinStd: include/WinStd Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
WinStd Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  COM.h [code]
 
file  Common.h [code]
 
file  Cred.h [code]
 
file  Crypt.h [code]
 
file  EAP.h [code]
 
file  ETW.h [code]
 
file  GDI.h [code]
 
file  MSI.h [code]
 
file  Sec.h [code]
 
file  SetupAPI.h [code]
 
file  Shell.h [code]
 
file  Win.h [code]
 
file  WinSock2.h [code]
 
file  WinTrust.h [code]
 
file  WLAN.h [code]
 
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 00000000..6a7080da --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  WinStd
 
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 00000000..90367372 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1841 @@ +/* The standard CSS for doxygen 1.9.3 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +code.JavaDocCode + direction:ltr; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 00000000..d42dad52 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 00000000..3174bd7b --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +WinStd: File List + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + +
  include
  WinStd
 COM.h
 Common.h
 Cred.h
 Crypt.h
 EAP.h
 ETW.h
 GDI.h
 MSI.h
 Sec.h
 SetupAPI.h
 Shell.h
 Win.h
 WinSock2.h
 WinTrust.h
 WLAN.h
+
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 00000000..b48a90a2 --- /dev/null +++ b/functions.html @@ -0,0 +1,78 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_a.html b/functions_a.html new file mode 100644 index 00000000..b71d51c2 --- /dev/null +++ b/functions_a.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 00000000..c898408c --- /dev/null +++ b/functions_b.html @@ -0,0 +1,81 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 00000000..352773fa --- /dev/null +++ b/functions_c.html @@ -0,0 +1,92 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 00000000..de017d80 --- /dev/null +++ b/functions_d.html @@ -0,0 +1,89 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+ + + + diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 00000000..ad4991e4 --- /dev/null +++ b/functions_e.html @@ -0,0 +1,95 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 00000000..67c332a5 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 00000000..e4c38968 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,85 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 00000000..cfdc82e9 --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,81 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 00000000..dd0a513e --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,90 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 00000000..a391ed00 --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,88 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 00000000..ffc83681 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,94 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 00000000..ed517270 --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_g.html b/functions_func_g.html new file mode 100644 index 00000000..68089f0f --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,78 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 00000000..a4e988cb --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 00000000..543d96fd --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,79 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 00000000..280e8951 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,79 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 00000000..5df5546a --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,78 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 00000000..d3091016 --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,79 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 00000000..c0086d0a --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,95 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 00000000..aa940a2a --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,82 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 00000000..3e9cb7a5 --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,77 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 00000000..11dfbba6 --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,82 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 00000000..3768b248 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,90 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 00000000..c6055950 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,78 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 00000000..29e2dd91 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,77 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 00000000..501a3564 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,79 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 00000000..1876bff9 --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,82 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 00000000..85c7ce06 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,124 @@ + + + + + + + +WinStd: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- ~ -

+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 00000000..477e1d39 --- /dev/null +++ b/functions_g.html @@ -0,0 +1,78 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 00000000..0d6767d5 --- /dev/null +++ b/functions_h.html @@ -0,0 +1,81 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 00000000..231e4e00 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 00000000..554325d6 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,79 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 00000000..16d63d57 --- /dev/null +++ b/functions_m.html @@ -0,0 +1,117 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 00000000..b6a6ae6f --- /dev/null +++ b/functions_n.html @@ -0,0 +1,79 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 00000000..1ac904df --- /dev/null +++ b/functions_o.html @@ -0,0 +1,96 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 00000000..e935a893 --- /dev/null +++ b/functions_p.html @@ -0,0 +1,83 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+ + + + diff --git a/functions_q.html b/functions_q.html new file mode 100644 index 00000000..5f8c68e9 --- /dev/null +++ b/functions_q.html @@ -0,0 +1,77 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- q -

+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 00000000..7baf1035 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,83 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 00000000..039c6f31 --- /dev/null +++ b/functions_s.html @@ -0,0 +1,91 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 00000000..e4389ea0 --- /dev/null +++ b/functions_t.html @@ -0,0 +1,78 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 00000000..70883700 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Class Members - Typedefs + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 00000000..1b0aed14 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,77 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 00000000..f0fc5fe8 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 00000000..11a36a05 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,120 @@ + + + + + + + +WinStd: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+ + +

- m -

+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 00000000..a7843f12 --- /dev/null +++ b/functions_w.html @@ -0,0 +1,82 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+ + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 00000000..e4f23a1f --- /dev/null +++ b/functions_~.html @@ -0,0 +1,124 @@ + + + + + + + +WinStd: Class Members + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+ + + + diff --git a/group___setup_a_p_i.html b/group___setup_a_p_i.html new file mode 100644 index 00000000..66ad59f1 --- /dev/null +++ b/group___setup_a_p_i.html @@ -0,0 +1,92 @@ + + + + + + + +WinStd: Setup API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Setup API
+
+
+ +

Integrates WinStd classes with Microsoft Setup API. +More...

+ + + + + + + + +

+Classes

class  winstd::setup_device_info_list
 HDEVINFO wrapper class. More...
 
class  winstd::setup_driver_info_list_builder
 Builds a list of drivers in constructor and deletes it in destructor. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft Setup API.

+
+ + + + diff --git a/group___win_sock2_a_p_i.html b/group___win_sock2_a_p_i.html new file mode 100644 index 00000000..d2049dc1 --- /dev/null +++ b/group___win_sock2_a_p_i.html @@ -0,0 +1,92 @@ + + + + + + + +WinStd: WinSock2 API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
WinSock2 API
+
+
+ +

Integrates WinStd classes with Microsoft WinSock2 API. +More...

+ + + + + + + + +

+Classes

class  winstd::ws2_runtime_error
 WinSock2 runtime error. More...
 
class  winstd::addrinfo
 SID wrapper class. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft WinSock2 API.

+
+ + + + diff --git a/group___win_std_c_o_m.html b/group___win_std_c_o_m.html new file mode 100644 index 00000000..a7712de4 --- /dev/null +++ b/group___win_std_c_o_m.html @@ -0,0 +1,101 @@ + + + + + + + +WinStd: COM object management + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
COM object management
+
+
+ +

Provides helper templates for Windows COM object manipulation. +More...

+ + + + + + + + + + + + + + + + + +

+Classes

struct  winstd::CoTaskMemFree_delete
 Deleter for unique_ptr using CoTaskMemFree. More...
 
class  winstd::com_obj< T >
 COM object wrapper template. More...
 
class  winstd::bstr
 BSTR string wrapper. More...
 
class  winstd::variant
 VARIANT struct wrapper. More...
 
class  winstd::com_initializer
 Context scope automatic COM (un)initialization. More...
 
+

Detailed Description

+

Provides helper templates for Windows COM object manipulation.

+
+ + + + diff --git a/group___win_std_cred_a_p_i.html b/group___win_std_cred_a_p_i.html new file mode 100644 index 00000000..d34603d3 --- /dev/null +++ b/group___win_std_cred_a_p_i.html @@ -0,0 +1,92 @@ + + + + + + + +WinStd: Credentials API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Credentials API
+
+
+ +

Integrates WinStd classes with Microsoft Credentials API. +More...

+ + + + + + + + +

+Classes

struct  winstd::CredFree_delete< _Ty >
 Deleter for unique_ptr using CredFree. More...
 
struct  winstd::CredFree_delete< _Ty[]>
 Deleter for unique_ptr to array of unknown size using CredFree. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft Credentials API.

+
+ + + + diff --git a/group___win_std_crypto_a_p_i.html b/group___win_std_crypto_a_p_i.html new file mode 100644 index 00000000..d1c8855b --- /dev/null +++ b/group___win_std_crypto_a_p_i.html @@ -0,0 +1,232 @@ + + + + + + + +WinStd: Cryptography API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Cryptography API
+
+
+ +

Integrates WinStd classes with Microsoft Cryptography API. +More...

+ + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  winstd::cert_context
 PCCERT_CONTEXT wrapper class. More...
 
class  winstd::cert_chain_context
 PCCERT_CHAIN_CONTEXT wrapper class. More...
 
class  winstd::cert_store
 HCERTSTORE wrapper class. More...
 
class  winstd::crypt_prov
 HCRYPTPROV wrapper class. More...
 
class  winstd::crypt_hash
 HCRYPTHASH wrapper class. More...
 
class  winstd::crypt_key
 HCRYPTKEY wrapper class. More...
 
class  winstd::data_blob
 DATA_BLOB wrapper class. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

if (CertGetCertificateContextProperty(pCertContext, dwPropId, buf, &dwSize))
 
+else if (GetLastError()==ERROR_MORE_DATA)
 
if (CryptGetHashParam(hHash, dwParam, buf, &dwSize, dwFlags))
 
+return CryptGetHashParam (hHash, dwParam,(BYTE *)&data, &dwSize, dwFlags)
 
if (CryptGetKeyParam(hKey, dwParam, buf, &dwSize, dwFlags))
 
if (CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, NULL, &dwKeyBLOBSize))
 
if (dwBufLen)
 
+else if (CryptEncrypt(hKey, NULL, Final, dwFlags, NULL, &dwEncLen, 0))
 
if (dwResult==ERROR_MORE_DATA)
 
if (CryptDecrypt(hKey, hHash, Final, dwFlags,(BYTE *) aData.data(), &dwDataLen))
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

+static _In_ DWORD dwPropId
 
static _In_ DWORD _Out_ std::vector< _Ty, _Ax > & aData
 
+DWORD dwSize = WINSTD_STACK_BUFFER_BYTES
 
+return FALSE
 
+static _In_ DWORD dwParam
 
static _In_ DWORD _Out_ std::vector< _Ty, _Ax > _In_ DWORD dwFlags
 
+static _In_ DWORD _Out_ T & data
 
+static _In_ HCRYPTKEY hExpKey
 
+static _In_ HCRYPTKEY _In_ DWORD dwBlobType
 
+static _In_opt_ HCRYPTHASH hHash
 
+static _In_opt_ HCRYPTHASH _In_ BOOL Final
 
+else dwResult = GetLastError()
 
 else
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft Cryptography API.

+

Variable Documentation

+ +

◆ aData

+ +
+
+ + + + +
static _In_opt_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ std::vector< _Ty, _Ax > & aData
+
+Initial value:
{
+ +
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
+
+
+ +

◆ dwFlags

+ +
+
+ + + + +
static _In_ DWORD dwFlags
+
+Initial value: +
+
+ +

◆ else

+ +
+
+ + + + +
else
+
+Initial value:
{
+
+
aData.resize((dwDataLen + sizeof(_Ty) - 1) / sizeof(_Ty))
+
+
+
+
+ + + + diff --git a/group___win_std_e_a_p_a_p_i.html b/group___win_std_e_a_p_a_p_i.html new file mode 100644 index 00000000..df7b361e --- /dev/null +++ b/group___win_std_e_a_p_a_p_i.html @@ -0,0 +1,228 @@ + + + + + + + +WinStd: Extensible Authentication Protocol API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Extensible Authentication Protocol API
+
+
+ +

Integrates WinStd classes with Microsoft EAP API. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  winstd::EapHostPeerFreeMemory_delete
 Deleter for unique_ptr using EapHostPeerFreeMemory. More...
 
struct  winstd::EapHostPeerFreeRuntimeMemory_delete
 Deleter for unique_ptr using EapHostPeerFreeRuntimeMemory. More...
 
struct  winstd::EapHostPeerFreeErrorMemory_delete
 Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory. More...
 
struct  winstd::EapHostPeerFreeEapError_delete
 Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError. More...
 
class  winstd::eap_attr
 EAP_ATTRIBUTE wrapper class. More...
 
class  winstd::eap_method_prop
 EAP_METHOD_PROPERTY wrapper class. More...
 
class  winstd::eap_packet
 EapPacket wrapper class. More...
 
class  winstd::eap_method_info_array
 EAP_METHOD_INFO_ARRAY wrapper class. More...
 
+ + + + + + + + + + + + + +

+Typedefs

+typedef std::unique_ptr< BYTE[], EapHostPeerFreeMemory_deletewinstd::eap_blob
 EapHost BLOB wrapper class.
 
+typedef std::unique_ptr< BYTE[], EapHostPeerFreeRuntimeMemory_deletewinstd::eap_blob_runtime
 EapHost BLOB wrapper class.
 
+typedef std::unique_ptr< EAP_ERROR, EapHostPeerFreeErrorMemory_deletewinstd::eap_error
 EAP_ERROR wrapper class.
 
+typedef std::unique_ptr< EAP_ERROR, EapHostPeerFreeEapError_deletewinstd::eap_error_runtime
 EAP_ERROR wrapper class.
 
+ + + + +

+Enumerations

enum class  winstd::eap_type_t : unsigned char {
+  eap_type_t::undefined = 0 +, eap_type_t::identity = 1 +, eap_type_t::notification = 2 +, eap_type_t::nak = 3 +,
+  eap_type_t::md5_challenge = 4 +, eap_type_t::otp = 5 +, eap_type_t::gtc = 6 +, eap_type_t::tls = 13 +,
+  eap_type_t::ttls = 21 +, eap_type_t::peap = 25 +, eap_type_t::mschapv2 = 26 +, eap_type_t::ms_auth_tlv = 33 +,
+  eap_type_t::gtcp = 128 + gtc +, eap_type_t::legacy_pap = 192 +, eap_type_t::legacy_mschapv2 = 193 +, eap_type_t::start = 1 +,
+  eap_type_t::end = 192 +, eap_type_t::noneap_start = 192 +, eap_type_t::noneap_end = 254 +
+ }
 EAP method numbers. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft EAP API.

+

Enumeration Type Documentation

+ +

◆ eap_type_t

+ +
+
+ + + + + +
+ + + + +
enum class winstd::eap_type_t : unsigned char
+
+strong
+
+ +

EAP method numbers.

+
See also
Extensible Authentication Protocol (EAP) Registry (Chapter: Method Types)
+ + + + + + + + + + + + + + + + + + + + +
Enumerator
undefined 

Undefined EAP type.

+
identity 

Identity.

+
notification 

Notification.

+
nak 

Legacy Nak.

+
md5_challenge 

MD5-Challenge.

+
otp 

One-Time Password (OTP)

+
gtc 

Generic Token Card (GTC)

+
tls 

EAP-TLS.

+
ttls 

EAP-TTLS.

+
peap 

PEAP.

+
mschapv2 

EAP-MSCHAPv2.

+
ms_auth_tlv 

MS-Authentication-TLV.

+
gtcp 

EAP-GTC using a password.

+
legacy_pap 

PAP (Not actually an EAP method; Moved to the Unassigned area)

+
legacy_mschapv2 

MSCHAPv2 (Not actually an EAP method; Moved to the Unassigned area)

+
start 

Start of EAP methods.

+
end 

End of EAP methods (non-inclusive)

+
noneap_start 

Start of non-EAP methods.

+
noneap_end 

End of non-EAP methods (non-inclusive)

+
+ +
+
+
+ + + + diff --git a/group___win_std_e_t_w_a_p_i.html b/group___win_std_e_t_w_a_p_i.html new file mode 100644 index 00000000..dfd787ba --- /dev/null +++ b/group___win_std_e_t_w_a_p_i.html @@ -0,0 +1,180 @@ + + + + + + + +WinStd: Event Tracing for Windows API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Event Tracing for Windows API
+
+
+ +

Integrates WinStd classes with Event Tracing for Windows API. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  winstd::event_data
 EVENT_DATA_DESCRIPTOR wrapper. More...
 
class  winstd::event_rec
 EVENT_RECORD wrapper. More...
 
class  winstd::event_provider
 ETW event provider. More...
 
class  winstd::event_session
 ETW session. More...
 
class  winstd::event_trace
 ETW trace. More...
 
class  winstd::event_trace_enabler
 Helper class to enable event provider in constructor and disables it in destructor. More...
 
class  winstd::event_fn_auto
 Helper class to write an event on entry/exit of scope. More...
 
class  winstd::event_fn_auto_ret< T >
 Helper template to write an event on entry/exit of scope with one parameter (typically result). More...
 
+ + + + + + + +

+Functions

+static _In_ ULONG _In_reads_opt_ (TdhContextCount) PTDH_CONTEXT pTdhContext
 
+static _In_ ULONG _In_ ULONG _In_reads_ (PropertyDataCount) PPROPERTY_DATA_DESCRIPTOR pPropertyData
 
if (ulResult==ERROR_SUCCESS)
 
+ + + + + + + + + + + + + + + +

+Variables

+static _In_ ULONG TdhContextCount
 
+static _In_ ULONG _In_ ULONG PropertyDataCount
 
static _In_ ULONG _In_ ULONG _Inout_ std::vector< _Ty, _Ax > & aData
 
ulResult = TdhGetPropertySize(pEvent, TdhContextCount, pTdhContext, PropertyDataCount, pPropertyData, &ulSize)
 
static _In_ ULONG _Out_ std::unique_ptr< TRACE_EVENT_INFO > & info
 
+ULONG ulSize = sizeof(szBuffer)
 
+static _In_ LPWSTR pMapName
 
+

Detailed Description

+

Integrates WinStd classes with Event Tracing for Windows API.

+

Variable Documentation

+ +

◆ aData

+ +
+
+ + + + +
_In_ ULONG _In_ ULONG _Inout_ std::vector<_Ty, _Ax>& aData
+
+Initial value:
{
+
ULONG ulSize, ulResult
+
+
+
+ +

◆ info

+ +
+
+ + + + +
static _In_ LPWSTR _Inout_ std::unique_ptr< EVENT_MAP_INFO > & info
+
+Initial value:
{
+ +
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
+
+
+
+ + + + diff --git a/group___win_std_exceptions.html b/group___win_std_exceptions.html new file mode 100644 index 00000000..878031a0 --- /dev/null +++ b/group___win_std_exceptions.html @@ -0,0 +1,101 @@ + + + + + + + +WinStd: Exceptions + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Exceptions
+
+
+ +

Additional exceptions. +More...

+ + + + + + + + + + + + + + + + + +

+Classes

class  winstd::com_runtime_error
 COM runtime error. More...
 
class  winstd::num_runtime_error< _Tn >
 Numerical runtime error. More...
 
class  winstd::win_runtime_error
 Windows runtime error. More...
 
class  winstd::eap_runtime_error
 EapHost runtime error. More...
 
class  winstd::sec_runtime_error
 Security runtime error. More...
 
+

Detailed Description

+

Additional exceptions.

+
+ + + + diff --git a/group___win_std_gdi_a_p_i.html b/group___win_std_gdi_a_p_i.html new file mode 100644 index 00000000..7e633b74 --- /dev/null +++ b/group___win_std_gdi_a_p_i.html @@ -0,0 +1,98 @@ + + + + + + + +WinStd: GDI API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
GDI API
+
+
+ +

Integrates WinStd classes with Microsoft Windows GDI. +More...

+ + + + + + + + + + + + + + +

+Classes

class  winstd::gdi_handle< T >
 Windows HGDIOBJ wrapper class. More...
 
class  winstd::dc
 Device context wrapper class. More...
 
class  winstd::window_dc
 Device context wrapper class. More...
 
class  winstd::dc_selector
 Context scope DC object restorer. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft Windows GDI.

+
+ + + + diff --git a/group___win_std_general.html b/group___win_std_general.html new file mode 100644 index 00000000..aea528f4 --- /dev/null +++ b/group___win_std_general.html @@ -0,0 +1,290 @@ + + + + + + + +WinStd: General + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
General
+
+
+ +

General API. +More...

+ + + + + + + + + + + + + + + + + +

+Classes

struct  winstd::LocalFree_delete< _Ty >
 Deleter for unique_ptr using LocalFree. More...
 
struct  winstd::LocalFree_delete< _Ty[]>
 Deleter for unique_ptr to array of unknown size using LocalFree. More...
 
class  winstd::ref_unique_ptr< _Ty, _Dx >
 Helper class for returning pointers to std::unique_ptr. More...
 
class  winstd::ref_unique_ptr< _Ty[], _Dx >
 Helper class for returning pointers to std::unique_ptr (specialization for arrays) More...
 
class  winstd::vector_queue< T >
 Helper class to allow limited size FIFO queues implemented as vector of elements. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define __L(x)   L ## x
 "L" stringizing macro
 
+#define _L(x)   __L(x)
 Makes string Unicode.
 
+#define WINSTD_STRING_IMPL(x)   #x
 Stringizing macro helper.
 
+#define WINSTD_STRING(x)   WINSTD_STRING_IMPL(x)
 Stringizing macro.
 
#define WINSTD_NONCOPYABLE(C)
 Declares a class as non-copyable. More...
 
#define WINSTD_NONMOVABLE(C)
 Declares a class as non-movable. More...
 
#define WINSTD_STACK_BUFFER_BYTES   1024
 Size of the stack buffer in bytes used for initial system function call. More...
 
+ + + + +

+Typedefs

+typedef std::string winstd::tstring
 Multi-byte / Wide-character string (according to _UNICODE)
 
+ + + + + + + + + +

+Functions

template<class _Ty , class _Dx >
ref_unique_ptr< _Ty, _Dx > winstd::get_ptr (_Inout_ std::unique_ptr< _Ty, _Dx > &owner) noexcept
 Helper function template for returning pointers to std::unique_ptr. More...
 
template<class _Ty , class _Dx >
ref_unique_ptr< _Ty[], _Dx > winstd::get_ptr (_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept
 Helper function template for returning pointers to std::unique_ptr (specialization for arrays) More...
 
+

Detailed Description

+

General API.

+

Macro Definition Documentation

+ +

◆ WINSTD_NONCOPYABLE

+ +
+
+ + + + + + + + +
#define WINSTD_NONCOPYABLE( C)
+
+Value:
private: \
+
C (_In_ const C &h) noexcept; \
+
C& operator=(_In_ const C &h) noexcept;
+
+

Declares a class as non-copyable.

+ +
+
+ +

◆ WINSTD_NONMOVABLE

+ +
+
+ + + + + + + + +
#define WINSTD_NONMOVABLE( C)
+
+Value:
private: \
+
C (_Inout_ C &&h) noexcept; \
+
C& operator=(_Inout_ C &&h) noexcept;
+
+

Declares a class as non-movable.

+ +
+
+ +

◆ WINSTD_STACK_BUFFER_BYTES

+ +
+
+ + + + +
#define WINSTD_STACK_BUFFER_BYTES   1024
+
+ +

Size of the stack buffer in bytes used for initial system function call.

+

Some system functions with variable length output data fail for insufficient buffer sizes, and return an exact buffer length required. The function helpers use a fixed size stack buffer first. If the stack buffer really prooved sufficient, the helper allocates the exact length output on heap and copies the data without calling the system function again. Otherwise it allocates the exact length output on heap and retries.

+
Note
Decrease this value in case of stack overflow.
+ +
+
+

Function Documentation

+ +

◆ get_ptr() [1/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
ref_unique_ptr< _Ty, _Dx > winstd::get_ptr (_Inout_ std::unique_ptr< _Ty, _Dx > & owner)
+
+noexcept
+
+ +

Helper function template for returning pointers to std::unique_ptr.

+
Parameters
+ + +
[in,out]ownerOriginal owner of the pointer
+
+
+
Returns
A helper wrapper class to handle returning a reference to the pointer
+ +
+
+ +

◆ get_ptr() [2/2]

+ +
+
+
+template<class _Ty , class _Dx >
+ + + + + +
+ + + + + + + + +
ref_unique_ptr< _Ty[], _Dx > winstd::get_ptr (_Inout_ std::unique_ptr< _Ty[], _Dx > & owner)
+
+noexcept
+
+ +

Helper function template for returning pointers to std::unique_ptr (specialization for arrays)

+
Parameters
+ + +
[in,out]ownerOriginal owner of the pointer
+
+
+
Returns
A helper wrapper class to handle returning a reference to the pointer
+ +
+
+
+ + + + diff --git a/group___win_std_m_s_i_a_p_i.html b/group___win_std_m_s_i_a_p_i.html new file mode 100644 index 00000000..fa6ec903 --- /dev/null +++ b/group___win_std_m_s_i_a_p_i.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Microsoft Installer API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Microsoft Installer API
+
+
+ +

Integrates WinStd classes with Microsoft Installer API. +More...

+

Detailed Description

+

Integrates WinStd classes with Microsoft Installer API.

+
+ + + + diff --git a/group___win_std_mem_sanitize.html b/group___win_std_mem_sanitize.html new file mode 100644 index 00000000..1f4ce910 --- /dev/null +++ b/group___win_std_mem_sanitize.html @@ -0,0 +1,141 @@ + + + + + + + +WinStd: Auto-sanitize Memory Management + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Auto-sanitize Memory Management
+
+
+ +

Sanitizes memory before dismissed. +More...

+ + + + + + + + +

+Classes

class  winstd::sanitizing_allocator< _Ty >
 An allocator template that sanitizes each memory block before it is destroyed or reallocated. More...
 
class  winstd::sanitizing_blob< N >
 Sanitizing BLOB. More...
 
+ + + + + + + + + + +

+Typedefs

typedef std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > winstd::sanitizing_string
 A sanitizing variant of std::string. More...
 
typedef std::basic_string< wchar_t, std::char_traits< wchar_t >, sanitizing_allocator< wchar_t > > winstd::sanitizing_wstring
 A sanitizing variant of std::wstring. More...
 
+typedef sanitizing_string winstd::sanitizing_tstring
 Multi-byte / Wide-character sanitizing string (according to _UNICODE)
 
+

Detailed Description

+

Sanitizes memory before dismissed.

+

Typedef Documentation

+ +

◆ sanitizing_string

+ +
+
+ + + + +
typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > winstd::sanitizing_string
+
+ +

A sanitizing variant of std::string.

+
Note
sanitizing_string introduces a performance penalty. However, it provides an additional level of security. Use for security sensitive data memory storage only.
+ +
+
+ +

◆ sanitizing_wstring

+ +
+
+ + + + +
typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > winstd::sanitizing_wstring
+
+ +

A sanitizing variant of std::wstring.

+
Note
sanitizing_wstring introduces a performance penalty. However, it provides an additional level of security. Use for security sensitive data memory storage only.
+ +
+
+
+ + + + diff --git a/group___win_std_security_a_p_i.html b/group___win_std_security_a_p_i.html new file mode 100644 index 00000000..4e9e9ba3 --- /dev/null +++ b/group___win_std_security_a_p_i.html @@ -0,0 +1,95 @@ + + + + + + + +WinStd: Security API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Security API
+
+
+ +

Integrates WinStd classes with Microsoft Security API. +More...

+ + + + + + + + + + + +

+Classes

class  winstd::sec_credentials
 PCredHandle wrapper class. More...
 
class  winstd::sec_context
 PCtxtHandle wrapper class. More...
 
class  winstd::sec_buffer_desc
 SecBufferDesc wrapper class. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft Security API.

+
+ + + + diff --git a/group___win_std_shell_w_a_p_i.html b/group___win_std_shell_w_a_p_i.html new file mode 100644 index 00000000..36e7611d --- /dev/null +++ b/group___win_std_shell_w_a_p_i.html @@ -0,0 +1,80 @@ + + + + + + + +WinStd: Shell API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Shell API
+
+
+ +

Integrates WinStd classes with Microsoft Shell API. +More...

+

Detailed Description

+

Integrates WinStd classes with Microsoft Shell API.

+
+ + + + diff --git a/group___win_std_str_format.html b/group___win_std_str_format.html new file mode 100644 index 00000000..6f0fb32d --- /dev/null +++ b/group___win_std_str_format.html @@ -0,0 +1,162 @@ + + + + + + + +WinStd: String Formatting + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
String Formatting
+
+
+ +

Formatted string generation. +More...

+ + + + + + + + + + + + + + + + + +

+Classes

class  winstd::basic_string_printf< _Elem, _Traits, _Ax >
 Base template class to support string formatting using printf() style templates. More...
 
class  winstd::basic_string_msg< _Elem, _Traits, _Ax >
 Base template class to support string formatting using FormatMessage() style templates. More...
 
class  winstd::basic_string_guid< _Elem, _Traits, _Ax >
 Base template class to support converting GUID to string. More...
 
class  winstd::string_guid
 Single-byte character implementation of a class to support converting GUID to string. More...
 
class  winstd::wstring_guid
 Wide character implementation of a class to support converting GUID to string. More...
 
+ + + + + + + + + + + + + + + +

+Macros

+#define PRINTF_LPTSTR   "s"
 LPTSTR printf/scanf format specifier.
 
+#define PRINTF_LPOLESTR   "ls"
 LPOLESTR printf/scanf format specifier.
 
+#define _tcin   (std::cin )
 
+#define _tcout   (std::cout)
 
+#define _tcerr   (std::cerr)
 
+#define _tclog   (std::clog)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef basic_string_printf< char, std::char_traits< char >, std::allocator< char > > winstd::string_printf
 Single-byte character implementation of a class to support string formatting using printf() style templates.
 
+typedef basic_string_printf< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > winstd::wstring_printf
 Wide character implementation of a class to support string formatting using printf() style templates.
 
+typedef string_printf winstd::tstring_printf
 Multi-byte / Wide-character formatted string (according to _UNICODE)
 
+typedef basic_string_msg< char, std::char_traits< char >, std::allocator< char > > winstd::string_msg
 Single-byte character implementation of a class to support string formatting using FormatMessage() style templates.
 
+typedef basic_string_msg< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > winstd::wstring_msg
 Wide character implementation of a class to support string formatting using FormatMessage() style templates.
 
+typedef string_msg winstd::tstring_msg
 Multi-byte / Wide-character formatted string (according to _UNICODE)
 
+typedef string_guid winstd::tstring_guid
 Multi-byte / Wide-character string GUID (according to _UNICODE)
 
+

Detailed Description

+

Formatted string generation.

+
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));
+
Base template class to support string formatting using printf() style templates.
Definition: Common.h:1502
+
+
+ + + + diff --git a/group___win_std_sys_handles.html b/group___win_std_sys_handles.html new file mode 100644 index 00000000..b1be82a6 --- /dev/null +++ b/group___win_std_sys_handles.html @@ -0,0 +1,187 @@ + + + + + + + +WinStd: System Handles + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
System Handles
+
+
+ +

Simplifies work with object handles of various type. +More...

+ + + + + + + + +

+Classes

class  winstd::handle< T, INVAL >
 Base abstract template class to support generic object handle keeping. More...
 
class  winstd::dplhandle< T, INVAL >
 Base abstract template class to support object handle keeping for objects that support handle duplication. More...
 
+ + + + + + + +

+Macros

#define WINSTD_HANDLE_IMPL(C, INVAL)
 Implements default constructors and operators to prevent their auto-generation by compiler. More...
 
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
 Implements default constructors and operators to prevent their auto-generation by compiler. More...
 
+ + + + +

+Variables

+static const T winstd::handle< T, INVAL >::invalid = INVAL
 Invalid handle value.
 
+

Detailed Description

+

Simplifies work with object handles of various type.

+

Macro Definition Documentation

+ +

◆ WINSTD_DPLHANDLE_IMPL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define WINSTD_DPLHANDLE_IMPL( C,
 INVAL 
)
+
+Value:
public: \
+
C ( ) noexcept { } \
+
C (_In_opt_ handle_type h) noexcept : dplhandle<handle_type, INVAL>( h ) { } \
+
C (_In_ const C &h) noexcept : dplhandle<handle_type, INVAL>(duplicate_internal(h.m_h)) { } \
+
C (_Inout_ C &&h) noexcept : dplhandle<handle_type, INVAL>(std::move (h )) { } \
+
C& operator=(_In_opt_ handle_type h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
+
C& operator=(_In_ const C &h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
+
C& operator=(_Inout_ C &&h) noexcept { dplhandle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
+
private:
+
+

Implements default constructors and operators to prevent their auto-generation by compiler.

+ +
+
+ +

◆ WINSTD_HANDLE_IMPL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define WINSTD_HANDLE_IMPL( C,
 INVAL 
)
+
+Value:
public: \
+
C ( ) noexcept { } \
+
C (_In_opt_ handle_type h) noexcept : handle<handle_type, INVAL>( h ) { } \
+
C (_Inout_ C &&h) noexcept : handle<handle_type, INVAL>(std::move(h)) { } \
+
C& operator=(_In_opt_ handle_type h) noexcept { handle<handle_type, INVAL>::operator=( h ); return *this; } \
+
C& operator=(_Inout_ C &&h) noexcept { handle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
+
WINSTD_NONCOPYABLE(C)
+
+

Implements default constructors and operators to prevent their auto-generation by compiler.

+ +
+
+
+ + + + 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 new file mode 100644 index 00000000..f548ff6f --- /dev/null +++ b/group___win_std_w_l_a_n_a_p_i.html @@ -0,0 +1,95 @@ + + + + + + + +WinStd: WLAN API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
WLAN API
+
+
+ +

Integrates WinStd classes with Microsoft WLAN API. +More...

+ + + + + + + + + + + +

+Classes

struct  winstd::WlanFreeMemory_delete< _Ty >
 Deleter for unique_ptr using WlanFreeMemory. More...
 
struct  winstd::WlanFreeMemory_delete< _Ty[]>
 Deleter for unique_ptr to array of unknown size using WlanFreeMemory. More...
 
class  winstd::wlan_handle
 WLAN handle wrapper. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft WLAN API.

+
+ + + + diff --git a/group___win_std_win_a_p_i.html b/group___win_std_win_a_p_i.html new file mode 100644 index 00000000..a868cb6c --- /dev/null +++ b/group___win_std_win_a_p_i.html @@ -0,0 +1,394 @@ + + + + + + + +WinStd: Windows API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
Windows API
+
+
+ +

Integrates WinStd classes with Microsoft Windows API. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  winstd::win_handle< INVALID >
 Windows HANDLE wrapper class. More...
 
class  winstd::library
 Module handle wrapper. More...
 
class  winstd::process
 Process handle wrapper. More...
 
class  winstd::file
 File handle wrapper. More...
 
class  winstd::event
 Event handle wrapper. More...
 
class  winstd::critical_section
 Critical section wrapper. More...
 
class  winstd::find_file
 Find-file handle wrapper. More...
 
class  winstd::heap
 Heap handle wrapper. More...
 
class  winstd::heap_allocator< _Ty >
 HeapAlloc allocator. More...
 
class  winstd::actctx_activator
 Activates given activation context in constructor and deactivates it in destructor. More...
 
class  winstd::user_impersonator
 Lets the calling thread impersonate the security context of a logged-on user. More...
 
class  winstd::console_ctrl_handler
 Console control handler stack management. More...
 
class  winstd::vmemory
 Memory in virtual address space of a process handle wrapper. More...
 
class  winstd::reg_key
 Registry wrapper class. More...
 
class  winstd::security_id
 SID wrapper class. More...
 
class  winstd::process_information
 PROCESS_INFORMATION struct wrapper. More...
 
+ + + + +

+Macros

#define GuidToString   GuidToStringA
 Formats GUID and stores it in a std::wstring string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

if (iResult > 0)
 
+sValue clear ()
 
if (dwVerInfoSize !=0)
 
for (DWORD dwSizeOut=(DWORD) strlen(lpSrc)+0x100;;)
 
+static _Out_ LPGUID _Out_opt_ LPCSTR class _Ax static LSTATUS RegQueryStringValue (_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_ std::basic_string< char, _Traits, _Ax > &sValue) noexcept
 
+static _In_ DWORD _In_z_count_ (cchWideChar) LPCWSTR lpWideCharStr
 
if (cch)
 
+else if (::GetLastError()==ERROR_INSUFFICIENT_BUFFER)
 
SecureZeroMemory (szStackBuffer, sizeof(szStackBuffer))
 
+static _In_ DWORD _In_z_count_ (cbMultiByte) LPCSTR lpMultiByteStr
 
if (cch > 0)
 
if (i)
 
if (iResult)
 
if (LookupAccountSidA(lpSystemName, lpSid, NULL, &dwNameLen, NULL, &dwRefDomainLen, peUse))
 
+else if (GetLastError()==ERROR_MORE_DATA)
 
if (LookupAccountSidW(lpSystemName, lpSid, NULL, &dwNameLen, NULL, &dwRefDomainLen, peUse))
 
if (GetTokenInformation(TokenHandle, TokenInformationClass, szStackBuffer, sizeof(szStackBuffer), &dwSize))
 
if (::QueryFullProcessImageNameA(hProcess, dwFlags, szStackBuffer, &dwSize))
 
if (::QueryFullProcessImageNameW(hProcess, dwFlags, szStackBuffer, &dwSize))
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

static _Out_ std::basic_string< char, _Traits, _Ax > &sValue noexcept
 
+int iResult = ::GetWindowTextLengthA(hWnd)
 
return
 
+static __reserved DWORD dwHandle
 
+DWORD dwVerInfoSize = ::GetFileVersionInfoSizeA(lptstrFilename, &dwHandle)
 
+else return FALSE
 
+static _Out_ LPGUID lpGuid
 
+static _Out_ LPGUID _Out_opt_ LPCSTR * lpszGuidEnd
 
+static _In_ DWORD dwFlags
 
+static _In_ DWORD _In_ int cchWideChar
 
+static _In_ DWORD _In_ int _Out_ std::basic_string< char, _Traits, _Ax > & sMultiByteStr
 
+static _In_ DWORD _In_ int _Out_ std::basic_string< char, _Traits, _Ax > _In_opt_z_ LPCSTR lpDefaultChar
 
+int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar)
 
+static _In_ DWORD _In_ std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr
 
+static _In_ DWORD _In_ int cbMultiByte
 
+static _In_ LPCWSTR lpSrcString
 
+static _In_ LPCWSTR _In_ int cwSrcLength
 
 else
 
+static _In_ const std::basic_string< wchar_t, _Traits1, _Ax1 > & sSrcString
 
+static _In_ UINT uID
 
+int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0)
 
+static _In_ DWORD _In_opt_ const SYSTEMTIME * lpDate
 
+static _In_ DWORD _In_opt_ const SYSTEMTIME _In_opt_z_ LPCSTR lpFormat
 
+static _In_ PSID lpSid
 
+static _In_ PSID _Out_opt_ std::basic_string< char, _Traits, _Ax > * sName
 
+static _In_ PSID _Out_opt_ std::basic_string< char, _Traits, _Ax > _Out_opt_ std::basic_string< char, _Traits, _Ax > * sReferencedDomainName
 
+DWORD dwNameLen = 0
 
+DWORD dwRefDomainLen = 0
 
+static _In_ TOKEN_INFORMATION_CLASS TokenInformationClass
 
+DWORD dwSize = _countof(szStackBuffer)
 
static _In_ DWORD _Inout_ std::basic_string< char, _Traits, _Ax > & sExeName
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft Windows API.

+

Macro Definition Documentation

+ +

◆ GuidToString

+ +
+
+ + + + +
#define GuidToString   GuidToStringA
+
+ +

Formats GUID and stores it in a std::wstring string.

+
Parameters
+ + + +
[in]lpGuidPointer to GUID
[out]strString to store the result to
+
+
+ +
+
+

Variable Documentation

+ +

◆ else

+ +
+
+ + + + +
else
+
+Initial value:
{
+
switch (::GetLastError()) {
+
case ERROR_INSUFFICIENT_BUFFER:
+
for (int i = 10; i--;) {
+
+
cch = -cch;
+
std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szBuffer.get(), cch);
+
if (cch > 0) {
+
sDstString.assign(szBuffer.get(), cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
break;
+
}
+
if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
sDstString.clear();
+
break;
+
}
+
}
+
break;
+
+
case ERROR_SUCCESS:
+
sDstString.clear();
+
break;
+
}
+
}
+
+
return cch
+
+
+
+ +

◆ noexcept

+ +
+
+ + + + +
static _In_ TOKEN_INFORMATION_CLASS _Out_ std::unique_ptr< _Ty > &TokenInformation noexcept
+
+Initial value:
{
+
assert(0)
+
+
+
+ +

◆ sExeName

+ +
+
+ + + + +
static _In_ DWORD _Inout_ std::basic_string< wchar_t, _Traits, _Ax > & sExeName
+
+Initial value:
{
+
char szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(char)]
+
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition: Common.h:80
+
+
+
+
+ + + + diff --git a/group___win_trust_a_p_i.html b/group___win_trust_a_p_i.html new file mode 100644 index 00000000..0050bdab --- /dev/null +++ b/group___win_trust_a_p_i.html @@ -0,0 +1,89 @@ + + + + + + + +WinStd: WinTrust API + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
WinTrust API
+
+
+ +

Integrates WinStd classes with Microsoft WinTrust API. +More...

+ + + + + +

+Classes

class  winstd::wintrust
 WinTrust engine wrapper class. More...
 
+

Detailed Description

+

Integrates WinStd classes with Microsoft WinTrust API.

+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 00000000..e865f694 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,213 @@ + + + + + + + +WinStd: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cwinstd::actctx_activatorActivates given activation context in constructor and deactivates it in destructor
 Cstd::allocator
 Cstd::basic_string
 Cwinstd::com_initializerContext scope automatic COM (un)initialization
 Cwinstd::console_ctrl_handlerConsole control handler stack management
 Cwinstd::CoTaskMemFree_deleteDeleter for unique_ptr using CoTaskMemFree
 Cwinstd::CredFree_delete< _Ty >Deleter for unique_ptr using CredFree
 Cwinstd::CredFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using CredFree
 Cwinstd::critical_sectionCritical section wrapper
 CDATA_BLOB
 Cwinstd::dc_selectorContext scope DC object restorer
 CEAP_ATTRIBUTE
 CEAP_METHOD_INFO_ARRAY
 CEAP_METHOD_PROPERTY
 Cwinstd::EapHostPeerFreeEapError_deleteDeleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError
 Cwinstd::EapHostPeerFreeErrorMemory_deleteDeleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory
 Cwinstd::EapHostPeerFreeMemory_deleteDeleter for unique_ptr using EapHostPeerFreeMemory
 Cwinstd::EapHostPeerFreeRuntimeMemory_deleteDeleter for unique_ptr using EapHostPeerFreeRuntimeMemory
 CEVENT_DATA_DESCRIPTOR
 Cwinstd::event_fn_autoHelper class to write an event on entry/exit of scope
 Cwinstd::event_fn_auto_ret< T >Helper template to write an event on entry/exit of scope with one parameter (typically result)
 CEVENT_RECORD
 Cwinstd::event_trace_enablerHelper class to enable event provider in constructor and disables it in destructor
 Cwinstd::handle< T, INVAL >Base abstract template class to support generic object handle keeping
 Cwinstd::handle< BSTR, INVAL >
 Cwinstd::handle< EapPacket *, INVAL >
 Cwinstd::handle< HANDLE, INVALID >
 Cwinstd::handle< HANDLE, INVALID_HANDLE_VALUE >
 Cwinstd::handle< HANDLE, NULL >
 Cwinstd::handle< HCERTSTORE, NULL >
 Cwinstd::handle< HCRYPTHASH, INVAL >
 Cwinstd::handle< HCRYPTKEY, INVAL >
 Cwinstd::handle< HCRYPTPROV, NULL >
 Cwinstd::handle< HDC, NULL >
 Cwinstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >
 Cwinstd::handle< HKEY, NULL >
 Cwinstd::handle< HMODULE, NULL >
 Cwinstd::handle< LPVOID, NULL >
 Cwinstd::handle< PADDRINFOT, NULL >
 Cwinstd::handle< PCCERT_CHAIN_CONTEXT, INVAL >
 Cwinstd::handle< PCCERT_CONTEXT, INVAL >
 Cwinstd::handle< PCredHandle, NULL >
 Cwinstd::handle< PCtxtHandle, NULL >
 Cwinstd::handle< PSID, NULL >
 Cwinstd::handle< REGHANDLE, NULL >
 Cwinstd::handle< T *, INVAL >
 Cwinstd::handle< T, NULL >
 Cwinstd::handle< TRACEHANDLE, 0 >
 Cwinstd::handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >
 Cwinstd::heap_allocator< _Ty >HeapAlloc allocator
 Cwinstd::LocalFree_delete< _Ty >Deleter for unique_ptr using LocalFree
 Cwinstd::LocalFree_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using LocalFree
 CPROCESS_INFORMATION
 Cwinstd::heap_allocator< _Ty >::rebind< _Other >A structure that enables an allocator for objects of one type to allocate storage for objects of another type
 Cwinstd::sanitizing_allocator< _Ty >::rebind< _Other >Convert this type to sanitizing_allocator<_Other>
 Cwinstd::ref_unique_ptr< _Ty, _Dx >Helper class for returning pointers to std::unique_ptr
 Cwinstd::ref_unique_ptr< _Ty[], _Dx >Helper class for returning pointers to std::unique_ptr (specialization for arrays)
 Cstd::runtime_error
 Cwinstd::sanitizing_blob< N >Sanitizing BLOB
 CSecBufferDesc
 Cwinstd::setup_driver_info_list_builderBuilds a list of drivers in constructor and deletes it in destructor
 Cwinstd::user_impersonatorLets the calling thread impersonate the security context of a logged-on user
 CVARIANT
 Cwinstd::vector_queue< T >Helper class to allow limited size FIFO queues implemented as vector of elements
 Cwinstd::wintrustWinTrust engine wrapper class
 Cwinstd::WlanFreeMemory_delete< _Ty >Deleter for unique_ptr using WlanFreeMemory
 Cwinstd::WlanFreeMemory_delete< _Ty[]>Deleter for unique_ptr to array of unknown size using WlanFreeMemory
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 00000000..0de85ca5 --- /dev/null +++ b/index.html @@ -0,0 +1,139 @@ + + + + + + + +WinStd: WinStd + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Additional templates and function helpers for Microsoft Windows using Standard C++ classes
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
WinStd
+
+
+

Provides additional templates and function helpers for Windows API using Standard C++ in Microsoft Visual C++ 2017-2019

+

+Features

+

+Portable

+

This project does not require building. Just #include individual files from this repository into your source code and get started.

+

+Lightweight Classes

+

...to simplify Windows allocated memory and resources focused on their release to prevent leakage

+

The classes provide unified create methods and free destructors. They are like smart-pointers for various Windows resources. Once created, you use the class instance as a snap-in replacement for pointers/handles parameters in the standard Win32 API functions.

+

+Example

+
{C++}
+
// Load and set icon.
+
winstd::library lib_shell32(LoadLibraryEx(_T("shell32.dll"), NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_AS_IMAGE_RESOURCE));
+
if (!lib_shell32)
+
throw winstd::win_runtime_error("LoadLibraryEx failed");
+
m_note_icon->SetIcon(wxLoadIconFromResource(lib_shell32, MAKEINTRESOURCE(48)));
+

+Functions and Templates

+

...to extend standard Win32 API functions for variable-size outputs

+

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...

+

WinStd provides a subset of Win32 API identically named functions (C++ polymorphism to the rescue), where one can use std::string, std::wstring, std::vector<> etc. as an output parameter. WinStd handles all the dirty work with memory allocation for you, so you can focus on your code.

+

+Example

+
{C++}
+
// Encode response as OEM.
+
std::string response;
+
WideCharToMultiByte(CP_OEMCP, 0, L"Copyright \u00A9 2017", response, NULL, NULL);
+
std::cout << response.c_str() << std::endl;
+

+String Formatters

+

...for those situations where one must quckly compose a temporary string using sprintf() or FormatMessage()

+

+Example

+
{C++}
+
if (dwMaxSendPacketSize < sizeof(EapPacket))
+
throw std::invalid_argument(
+
winstd::string_printf(
+
"Maximum packet size too small (minimum: %zu, available: %u).",
+
sizeof(EapPacket) + 1,
+
dwMaxSendPacketSize));
+

+Usage

+
    +
  1. Clone the repository into your solution folder.
  2. +
  3. Add WinStd's include folder to Additional Include Directories in your project's C/C++ settings.
  4. +
  5. Include .h files from WinStd as needed:
    {C++}
    +
    #include <WinStd/Shell.h>
    +
    #include <string>
    +
    #include <iostream>
    +
    +
    using namespace std;
    +
    +
    void main()
    +
    {
    +
    wstring path;
    +
    PathCanonicalizeW(path, L"C:\\Windows\\Temp\\test\\..");
    +
    wcout << path.c_str() << endl;
    +
    }
    +
  6. +
+

More examples and use-cases can be found in GÉANTLink and ZRCola projects source code. They make heavy use of WinStd.

+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 00000000..c9ed3d99 --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 00000000..54e81cf1 --- /dev/null +++ b/menu.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + var searchBox; + if (searchEnabled) { + if (serverSide) { + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBox='
'+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 00000000..94d6f4bc --- /dev/null +++ b/menudata.js @@ -0,0 +1,85 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions_a.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"i",url:"functions_vars.html#index_i"}, +{text:"m",url:"functions_vars.html#index_m"}]}, +{text:"Typedefs",url:"functions_type.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/modules.html b/modules.html new file mode 100644 index 00000000..35defd5a --- /dev/null +++ b/modules.html @@ -0,0 +1,98 @@ + + + + + + + +WinStd: Modules + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    + + + + + + + + + + + + + + + + + + + + +
     COM object managementProvides helper templates for Windows COM object manipulation
     GeneralGeneral API
     String FormattingFormatted string generation
     System HandlesSimplifies work with object handles of various type
     ExceptionsAdditional exceptions
     Auto-sanitize Memory ManagementSanitizes memory before dismissed
     Credentials APIIntegrates WinStd classes with Microsoft Credentials API
     Cryptography APIIntegrates WinStd classes with Microsoft Cryptography API
     Extensible Authentication Protocol APIIntegrates WinStd classes with Microsoft EAP API
     Event Tracing for Windows APIIntegrates WinStd classes with Event Tracing for Windows API
     GDI APIIntegrates WinStd classes with Microsoft Windows GDI
     Security APIIntegrates WinStd classes with Microsoft Security API
     Setup APIIntegrates WinStd classes with Microsoft Setup API
     Shell APIIntegrates WinStd classes with Microsoft Shell API
     Windows APIIntegrates WinStd classes with Microsoft Windows API
     WinSock2 APIIntegrates WinStd classes with Microsoft WinSock2 API
     WinTrust APIIntegrates WinStd classes with Microsoft WinTrust API
     WLAN APIIntegrates WinStd classes with Microsoft WLAN API
     Microsoft Installer APIIntegrates WinStd classes with Microsoft Installer API
    +
    +
    + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 00000000..4faaa4fc --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5fl_0',['__L',['../group___win_std_general.html#ga2cbff438813b72648c18c8af875f47c9',1,'Common.h']]], + ['_5fl_1',['_L',['../group___win_std_general.html#ga8b08a24569840250e78cb8d510f1324a',1,'Common.h']]], + ['_5fmybase_2',['_Mybase',['../classwinstd_1_1sanitizing__allocator.html#af60051d2fb18f2c2353ffe9bb6a06087',1,'winstd::sanitizing_allocator']]], + ['_5fmyt_3',['_Myt',['../structwinstd_1_1_local_free__delete.html#a1711e7f5b78649499330c8fe8007b3ea',1,'winstd::LocalFree_delete::_Myt()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#a7c9ed5a011c6d31b3189bdf3d212cd0d',1,'winstd::LocalFree_delete< _Ty[]>::_Myt()'],['../structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53',1,'winstd::CredFree_delete::_Myt()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1',1,'winstd::CredFree_delete< _Ty[]>::_Myt()'],['../structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668',1,'winstd::WlanFreeMemory_delete::_Myt()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837',1,'winstd::WlanFreeMemory_delete< _Ty[]>::_Myt()']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 00000000..91cfe8ac --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 00000000..22c489a6 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['abs_0',['abs',['../classwinstd_1_1vector__queue.html#a23b153ce1fb4a6f08c3970a3ba2dd077',1,'winstd::vector_queue']]], + ['acquire_1',['acquire',['../classwinstd_1_1sec__credentials.html#ad78873844214566e36c381c05ac476f9',1,'winstd::sec_credentials']]], + ['actctx_5factivator_2',['actctx_activator',['../classwinstd_1_1actctx__activator.html#a75dc507148041bd81b3376c3a22b3b8f',1,'winstd::actctx_activator::actctx_activator()'],['../classwinstd_1_1actctx__activator.html',1,'winstd::actctx_activator']]], + ['addrinfo_3',['addrinfo',['../classwinstd_1_1addrinfo.html',1,'winstd']]], + ['alloc_4',['alloc',['../classwinstd_1_1vmemory.html#a906c9c53187278e9895e4f875b897812',1,'winstd::vmemory']]], + ['allocate_5',['allocate',['../classwinstd_1_1heap__allocator.html#a9caa7c3f603225c8aa1f4c8aaf7bb81e',1,'winstd::heap_allocator']]], + ['at_6',['at',['../classwinstd_1_1vector__queue.html#ad2253155361c76a095db206529d49150',1,'winstd::vector_queue::at(_In_ size_type pos)'],['../classwinstd_1_1vector__queue.html#aace80530d4f89876c1bdee67d9b5ac17',1,'winstd::vector_queue::at(_In_ size_type pos) const']]], + ['at_5fabs_7',['at_abs',['../classwinstd_1_1vector__queue.html#ad942d55ed484af734cb642f881d6fdf1',1,'winstd::vector_queue::at_abs(_In_ size_type pos)'],['../classwinstd_1_1vector__queue.html#acc6ab5cb1cf6caa1d7b2b1f450a15b6f',1,'winstd::vector_queue::at_abs(_In_ size_type pos) const']]], + ['attach_8',['attach',['../classwinstd_1_1handle.html#a98d09f9c2970890a5c83a0c2aedd3a30',1,'winstd::handle::attach()'],['../classwinstd_1_1event__session.html#a38ff3d6776690f9b6df8d14910952a96',1,'winstd::event_session::attach()'],['../classwinstd_1_1vmemory.html#a478cde9d3bf27d1c438da8726526eaf3',1,'winstd::vmemory::attach()']]], + ['attach_5fduplicated_9',['attach_duplicated',['../classwinstd_1_1dplhandle.html#a4812d286ff9f34df62933f77d2c8b659',1,'winstd::dplhandle']]], + ['auto_2dsanitize_20memory_20management_10',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]] +]; diff --git a/search/all_10.html b/search/all_10.html new file mode 100644 index 00000000..765f5848 --- /dev/null +++ b/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 00000000..26cf512a --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['reason_0',['reason',['../classwinstd_1_1eap__runtime__error.html#a3329eb549dce7f57f5a59e3f5a16705c',1,'winstd::eap_runtime_error']]], + ['rebind_1',['rebind',['../structwinstd_1_1heap__allocator_1_1rebind.html',1,'winstd::heap_allocator< _Ty >::rebind< _Other >'],['../structwinstd_1_1sanitizing__allocator_1_1rebind.html',1,'winstd::sanitizing_allocator< _Ty >::rebind< _Other >']]], + ['ref_5funique_5fptr_2',['ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a2e400c502b75898f06f01ed1da993453',1,'winstd::ref_unique_ptr::ref_unique_ptr(_Inout_ std::unique_ptr< _Ty, _Dx > &owner)'],['../classwinstd_1_1ref__unique__ptr.html#a3982336fd019c82d54f6c9e38412ceeb',1,'winstd::ref_unique_ptr::ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty, _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a09f96b3a6a6e6688272344b186d51aa0',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a7c7ca17c6ae2e64d0c5cb01841fc04a7',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr.html',1,'winstd::ref_unique_ptr< _Ty, _Dx >']]], + ['ref_5funique_5fptr_3c_20_5fty_5b_5d_2c_20_5fdx_20_3e_3',['ref_unique_ptr< _Ty[], _Dx >',['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html',1,'winstd']]], + ['reference_4',['reference',['../classwinstd_1_1vector__queue.html#a59181fbdffe008bf0dc3579ce26931c9',1,'winstd::vector_queue::reference()'],['../classwinstd_1_1heap__allocator.html#a88ed8962cd0d64849119d7a11135b2d0',1,'winstd::heap_allocator::reference()']]], + ['reg_5fkey_5',['reg_key',['../classwinstd_1_1reg__key.html',1,'winstd']]], + ['repair_6',['repair',['../classwinstd_1_1eap__runtime__error.html#a981cb9a1cbf0c6e7e19252d776a2558f',1,'winstd::eap_runtime_error']]], + ['repair_5fid_7',['repair_id',['../classwinstd_1_1eap__runtime__error.html#a1e80ead2a4d348ab2c939bfbbaf9330a',1,'winstd::eap_runtime_error']]], + ['root_5fcause_8',['root_cause',['../classwinstd_1_1eap__runtime__error.html#a0aa17a51b2c110e874b60924281a3743',1,'winstd::eap_runtime_error']]], + ['root_5fcause_5fid_9',['root_cause_id',['../classwinstd_1_1eap__runtime__error.html#ae39b6b32c9505c0be2e199d8692175d1',1,'winstd::eap_runtime_error']]] +]; diff --git a/search/all_11.html b/search/all_11.html new file mode 100644 index 00000000..e2183ee4 --- /dev/null +++ b/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 00000000..4474e7b4 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['sanitizing_5fallocator_0',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html#aee5365a5f25c2682dd5c5a2f8c9ac9c2',1,'winstd::sanitizing_allocator::sanitizing_allocator(_In_ const sanitizing_allocator< _Other > &_Othr) noexcept'],['../classwinstd_1_1sanitizing__allocator.html#a894a7e05b01fdc0adccedc2abdadb066',1,'winstd::sanitizing_allocator::sanitizing_allocator(_In_ const sanitizing_allocator< _Ty > &_Othr)'],['../classwinstd_1_1sanitizing__allocator.html#af89279ba111029e2880c2a43189b4d4c',1,'winstd::sanitizing_allocator::sanitizing_allocator() noexcept'],['../classwinstd_1_1sanitizing__allocator.html',1,'winstd::sanitizing_allocator< _Ty >']]], + ['sanitizing_5fblob_1',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#a3fcdafa229e9a9f4c176b60fd6555685',1,'winstd::sanitizing_blob::sanitizing_blob()'],['../classwinstd_1_1sanitizing__blob.html',1,'winstd::sanitizing_blob< N >']]], + ['sanitizing_5fstring_2',['sanitizing_string',['../group___win_std_mem_sanitize.html#gafaf527687e080349d49b51c2362c32e8',1,'winstd']]], + ['sanitizing_5ftstring_3',['sanitizing_tstring',['../group___win_std_mem_sanitize.html#gaa149b89d04cc80c125023a14e241e8bd',1,'winstd']]], + ['sanitizing_5fwstring_4',['sanitizing_wstring',['../group___win_std_mem_sanitize.html#ga57776f4affaac5040ba220302003eedc',1,'winstd']]], + ['sec_5fbuffer_5fdesc_5',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#aa4922b79094e4c38a04fbbecdd97580c',1,'winstd::sec_buffer_desc::sec_buffer_desc()'],['../classwinstd_1_1sec__buffer__desc.html',1,'winstd::sec_buffer_desc']]], + ['sec_5fcontext_6',['sec_context',['../classwinstd_1_1sec__context.html#a504f0f4cf6abf3edb868b35d588fb597',1,'winstd::sec_context::sec_context(_Inout_ sec_context &&h) noexcept'],['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html',1,'winstd::sec_context']]], + ['sec_5fcredentials_7',['sec_credentials',['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html#af68308c08ff6c3ce1d0f6f9f3ca57dd2',1,'winstd::sec_credentials::sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires)'],['../classwinstd_1_1sec__credentials.html#a1a657671cd68f72e4ff5da496235269f',1,'winstd::sec_credentials::sec_credentials(_Inout_ sec_credentials &&h) noexcept'],['../classwinstd_1_1sec__credentials.html',1,'winstd::sec_credentials']]], + ['sec_5fruntime_5ferror_8',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#a9ad2dce38cb8a47fdfad72afd6ff3ff6',1,'winstd::sec_runtime_error::sec_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#a208aaaed379ef884d20c48a798128df4',1,'winstd::sec_runtime_error::sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)'],['../classwinstd_1_1sec__runtime__error.html',1,'winstd::sec_runtime_error']]], + ['security_20api_9',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], + ['security_5fid_10',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], + ['set_5fextended_5fdata_11',['set_extended_data',['../classwinstd_1_1event__rec.html#af9ae6b77b79cbc687fdcd7b36cabee29',1,'winstd::event_rec']]], + ['set_5fextended_5fdata_5finternal_12',['set_extended_data_internal',['../classwinstd_1_1event__rec.html#a29091b5837f4501a806ba4a8255f0e22',1,'winstd::event_rec']]], + ['set_5fuser_5fdata_13',['set_user_data',['../classwinstd_1_1event__rec.html#a8bcfb3795e3f5be336aaf2c88e0fa596',1,'winstd::event_rec']]], + ['set_5fuser_5fdata_5finternal_14',['set_user_data_internal',['../classwinstd_1_1event__rec.html#ad4e256f057d859dbca215fca698684e5',1,'winstd::event_rec']]], + ['setup_20api_15',['Setup API',['../group___setup_a_p_i.html',1,'']]], + ['setup_5fdevice_5finfo_5flist_16',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], + ['setup_5fdriver_5finfo_5flist_5fbuilder_17',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a457646c5448b031b96f9067d42ca8b05',1,'winstd::setup_driver_info_list_builder::setup_driver_info_list_builder()'],['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd::setup_driver_info_list_builder']]], + ['shell_20api_18',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], + ['size_19',['size',['../classwinstd_1_1eap__packet.html#a2534ad15ae47e2d46354d9f535f4031f',1,'winstd::eap_packet::size()'],['../classwinstd_1_1data__blob.html#ab2ad06e271e8503d7158408773054d23',1,'winstd::data_blob::size()'],['../classwinstd_1_1vector__queue.html#a95206dba2b4f147848dfa56f4d5f577c',1,'winstd::vector_queue::size()']]], + ['size_5ftype_20',['size_type',['../classwinstd_1_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator::size_type()'],['../classwinstd_1_1vector__queue.html#a475377da6315c1756e3787e082f78668',1,'winstd::vector_queue::size_type()']]], + ['start_21',['start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aea2b2676c28c0db26d39331a336c6b92',1,'winstd']]], + ['status_22',['status',['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()'],['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()']]], + ['string_20formatting_23',['String Formatting',['../group___win_std_str_format.html',1,'']]], + ['string_5fguid_24',['string_guid',['../classwinstd_1_1string__guid.html#ad23b6730ff111798ae6809ed4d3974ce',1,'winstd::string_guid::string_guid()'],['../classwinstd_1_1string__guid.html',1,'winstd::string_guid']]], + ['string_5fmsg_25',['string_msg',['../group___win_std_str_format.html#gae63195e25e08e2b3d9a9b9c2987f5740',1,'winstd']]], + ['string_5fprintf_26',['string_printf',['../group___win_std_str_format.html#ga9dda7a9a763b666f6fe00c4c6626621d',1,'winstd']]], + ['system_20handles_27',['System Handles',['../group___win_std_sys_handles.html',1,'']]] +]; diff --git a/search/all_12.html b/search/all_12.html new file mode 100644 index 00000000..9b9621cc --- /dev/null +++ b/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 00000000..4bce0db5 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['tail_0',['tail',['../classwinstd_1_1vector__queue.html#af4e58e356f2d991040d2e49ba49a3196',1,'winstd::vector_queue']]], + ['tls_1',['tls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa60aeea3d4cdbb5049fc37164644bb34',1,'winstd']]], + ['tstring_2',['tstring',['../group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc',1,'winstd']]], + ['tstring_5fguid_3',['tstring_guid',['../group___win_std_str_format.html#ga4c44b6a587f894ee33bb58a10ba27d6b',1,'winstd']]], + ['tstring_5fmsg_4',['tstring_msg',['../group___win_std_str_format.html#gaf47f07aac0b4c8ef47cf42216ab17f1b',1,'winstd']]], + ['tstring_5fprintf_5',['tstring_printf',['../group___win_std_str_format.html#gab805ccda115191833fb01ba4457f208a',1,'winstd']]], + ['ttls_6',['ttls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315accd905a8bbc449980aa7f26fcbd206e2',1,'winstd']]], + ['type_7',['type',['../classwinstd_1_1eap__runtime__error.html#a0562abef7454f9a6f97902d4260b7f50',1,'winstd::eap_runtime_error']]] +]; diff --git a/search/all_13.html b/search/all_13.html new file mode 100644 index 00000000..4acb7f91 --- /dev/null +++ b/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 00000000..bbd1f1aa --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['undefined_0',['undefined',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a5e543256c480ac577d30f76f9120eb74',1,'winstd']]], + ['user_5fimpersonator_1',['user_impersonator',['../classwinstd_1_1user__impersonator.html#a7cdfb136879ff8fcd61e5ef2a3976082',1,'winstd::user_impersonator::user_impersonator()'],['../classwinstd_1_1user__impersonator.html',1,'winstd::user_impersonator']]] +]; diff --git a/search/all_14.html b/search/all_14.html new file mode 100644 index 00000000..abb790c0 --- /dev/null +++ b/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 00000000..32537cfd --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['value_5ftype_0',['value_type',['../classwinstd_1_1vector__queue.html#a63882bccf1b28de14b54d23f00157c06',1,'winstd::vector_queue::value_type()'],['../classwinstd_1_1heap__allocator.html#a091ba3fb46ee75b8350c3fa9e6277c57',1,'winstd::heap_allocator::value_type()']]], + ['variant_1',['variant',['../classwinstd_1_1variant.html#a91e9fc562b5cc4cd27c1c9a682eb9085',1,'winstd::variant::variant(_In_ unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a26c20b800a261cff5fed1fe72848c29c',1,'winstd::variant::variant(_In_opt_ IDispatch *pSrc)'],['../classwinstd_1_1variant.html#aabf5f5e5d1147ab39e4df78159d3df2a',1,'winstd::variant::variant(_In_z_ BSTR bstr) noexcept'],['../classwinstd_1_1variant.html#a2a90318b634577b6d4929bf67131ef7a',1,'winstd::variant::variant(_In_z_ LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ae5a7432031f89195062550805bc18a0a',1,'winstd::variant::variant(_In_ CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a99560b48d48a24f978fb5bfbf64396ce',1,'winstd::variant::variant(_In_ unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a2d606237c1a891909b708a32b3bfdbf9',1,'winstd::variant::variant(_In_ long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a5a5acd6cff4a9f193f8582eab6ce673d',1,'winstd::variant::variant(_In_ double dblSrc, _In_ VARTYPE vtSrc=VT_R8) noexcept'],['../classwinstd_1_1variant.html#a52872aa5ff0279eb2d12a85d42e67fc4',1,'winstd::variant::variant(_In_ float fltSrc) noexcept'],['../classwinstd_1_1variant.html#a57cd72d5caf58774a4737708b4432d4d',1,'winstd::variant::variant(_In_ unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#a5cca53d17432a3d40c5ccb8569dc31cf',1,'winstd::variant::variant(_In_ long nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a6500b19e9fa43b5c0605f549d15054d2',1,'winstd::variant::variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc=VT_UI4) noexcept'],['../classwinstd_1_1variant.html#a3dd035fa775b6f75c446b646d65174c7',1,'winstd::variant::variant(_In_ int nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a90a9a4e578a9b1d20acbc456a8b666b7',1,'winstd::variant::variant(_In_ short nSrc) noexcept'],['../classwinstd_1_1variant.html#a500314b7d65deff04c1339a3bfbaf40c',1,'winstd::variant::variant(_In_ unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#ae0a73f84187ad60f32a2001ce1ba1f8d',1,'winstd::variant::variant(_In_ char cSrc) noexcept'],['../classwinstd_1_1variant.html#af0b2b43f646cc3efe14db8b9d8a4c1d6',1,'winstd::variant::variant(_In_ bool bSrc) noexcept'],['../classwinstd_1_1variant.html#adbe89a8e13dd00157ab1fdd90b1b67ac',1,'winstd::variant::variant(_Inout_ VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#ad8a47c76dcd37b9a869320994d9e58f5',1,'winstd::variant::variant(_In_ const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#ab5b8d68675d23082008f57e9439c3a19',1,'winstd::variant::variant() noexcept'],['../classwinstd_1_1variant.html#ae952c6fac0c8e1de3d7d5512e2573f7b',1,'winstd::variant::variant(_In_opt_ IUnknown *pSrc)'],['../classwinstd_1_1variant.html#af1956163d01e705a8514ed3314cf5e69',1,'winstd::variant::variant(_In_ const SAFEARRAY *pSrc)'],['../classwinstd_1_1variant.html',1,'winstd::variant']]], + ['vector_5fqueue_2',['vector_queue',['../classwinstd_1_1vector__queue.html#af06a86fa0fae86dca1578ea6d14c81e2',1,'winstd::vector_queue::vector_queue(_Inout_ vector_queue< value_type > &&other)'],['../classwinstd_1_1vector__queue.html#aa2007fcdb18f07d8c045dbfd6248bd6f',1,'winstd::vector_queue::vector_queue(_In_ size_type size_max)'],['../classwinstd_1_1vector__queue.html#ad0cf4d22f3ee0e3aa8283a0fa96a4e34',1,'winstd::vector_queue::vector_queue(_In_ const vector_queue< value_type > &other)'],['../classwinstd_1_1vector__queue.html',1,'winstd::vector_queue< T >']]], + ['vmemory_3',['vmemory',['../classwinstd_1_1vmemory.html#ae49dd901cfb090ed736510e68a39be7d',1,'winstd::vmemory::vmemory() noexcept'],['../classwinstd_1_1vmemory.html#ae143065c11b0cb29b92322b0ba13fdc4',1,'winstd::vmemory::vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept'],['../classwinstd_1_1vmemory.html#a211c168314e7850e657a4f9b08c1aaad',1,'winstd::vmemory::vmemory(_Inout_ vmemory &&h) noexcept'],['../classwinstd_1_1vmemory.html',1,'winstd::vmemory']]] +]; diff --git a/search/all_15.html b/search/all_15.html new file mode 100644 index 00000000..33e250bb --- /dev/null +++ b/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 00000000..aa14e13a --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['win_5fhandle_0',['win_handle',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fhandle_3c_20invalid_5fhandle_5fvalue_20_3e_1',['win_handle< INVALID_HANDLE_VALUE >',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fhandle_3c_20null_20_3e_2',['win_handle< NULL >',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fruntime_5ferror_3',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html#a71a13f0228c88c55415926b55450360d',1,'winstd::win_runtime_error::win_runtime_error(_In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#a2ce6109914601a3a3266a517919bce39',1,'winstd::win_runtime_error::win_runtime_error(_In_ const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a5380b16bc57585a6ff4c83d6bbae994e',1,'winstd::win_runtime_error::win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#a7973d300dddb3e27febd68605ebbcb23',1,'winstd::win_runtime_error::win_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html',1,'winstd::win_runtime_error']]], + ['window_5fdc_4',['window_dc',['../classwinstd_1_1window__dc.html',1,'winstd']]], + ['windows_20api_5',['Windows API',['../group___win_std_win_a_p_i.html',1,'']]], + ['winsock2_20api_6',['WinSock2 API',['../group___win_sock2_a_p_i.html',1,'']]], + ['winstd_7',['WinStd',['../index.html',1,'']]], + ['winstd_5fdplhandle_5fimpl_8',['WINSTD_DPLHANDLE_IMPL',['../group___win_std_sys_handles.html#ga2768b80bcf124e3127f0b7fe64395adb',1,'Common.h']]], + ['winstd_5fhandle_5fimpl_9',['WINSTD_HANDLE_IMPL',['../group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60',1,'Common.h']]], + ['winstd_5fnoncopyable_10',['WINSTD_NONCOPYABLE',['../group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c',1,'Common.h']]], + ['winstd_5fnonmovable_11',['WINSTD_NONMOVABLE',['../group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760',1,'Common.h']]], + ['winstd_5fstack_5fbuffer_5fbytes_12',['WINSTD_STACK_BUFFER_BYTES',['../group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986',1,'Common.h']]], + ['winstd_5fstring_13',['WINSTD_STRING',['../group___win_std_general.html#gac2a4fa0600886ba34fd4f7d2116d35da',1,'Common.h']]], + ['winstd_5fstring_5fimpl_14',['WINSTD_STRING_IMPL',['../group___win_std_general.html#ga4a46b36a9276ea0451d0790e51c7621f',1,'Common.h']]], + ['wintrust_15',['wintrust',['../classwinstd_1_1wintrust.html',1,'winstd::wintrust'],['../classwinstd_1_1wintrust.html#a8d9d451a4d94eec56406a64d73970860',1,'winstd::wintrust::wintrust()']]], + ['wintrust_20api_16',['WinTrust API',['../group___win_trust_a_p_i.html',1,'']]], + ['wlan_20api_17',['WLAN API',['../group___win_std_w_l_a_n_a_p_i.html',1,'']]], + ['wlan_5fhandle_18',['wlan_handle',['../classwinstd_1_1wlan__handle.html',1,'winstd']]], + ['wlanfreememory_5fdelete_19',['WlanFreeMemory_delete',['../structwinstd_1_1_wlan_free_memory__delete.html',1,'winstd::WlanFreeMemory_delete< _Ty >'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf',1,'winstd::WlanFreeMemory_delete< _Ty[]>::WlanFreeMemory_delete()'],['../structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546',1,'winstd::WlanFreeMemory_delete::WlanFreeMemory_delete(const WlanFreeMemory_delete< _Ty2 > &)'],['../structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e',1,'winstd::WlanFreeMemory_delete::WlanFreeMemory_delete()']]], + ['wlanfreememory_5fdelete_3c_20_5fty_5b_5d_3e_20',['WlanFreeMemory_delete< _Ty[]>',['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['write_21',['write',['../classwinstd_1_1event__provider.html#a9b12be1ca8b3745f24337d5b55cbdc17',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount=0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData=NULL)'],['../classwinstd_1_1event__provider.html#ab0661bffe0af61100ac169b0715e9710',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1,...)'],['../classwinstd_1_1event__provider.html#af96d250a02b391a86e159080776f7bc5',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)'],['../classwinstd_1_1event__provider.html#abaea0a0f7e453d7692796be0f126bf29',1,'winstd::event_provider::write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String,...)'],['../classwinstd_1_1event__provider.html#aa4a6c28f3e3a2bfbbdcc0f27053908d0',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor)']]], + ['ws2_5fruntime_5ferror_22',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html',1,'winstd::ws2_runtime_error'],['../classwinstd_1_1ws2__runtime__error.html#abec9bd20aad7633c83ade946fc9c907f',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1ws2__runtime__error.html#a38eb9c2360b74a836c325d31d61eaeee',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_ const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#ad2d3e6773809e8aa023ec94aae2b856e',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1ws2__runtime__error.html#a7ee44663b58f4f841e561f18f745d6d5',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_ error_type num, _In_ const std::string &msg)']]], + ['wstring_5fguid_23',['wstring_guid',['../classwinstd_1_1wstring__guid.html',1,'winstd::wstring_guid'],['../classwinstd_1_1wstring__guid.html#a522b4a339dc6979bc2bc8064622d9256',1,'winstd::wstring_guid::wstring_guid()']]], + ['wstring_5fmsg_24',['wstring_msg',['../group___win_std_str_format.html#ga52a88ab19a1a96f778dbf7a2938bc98f',1,'winstd']]], + ['wstring_5fprintf_25',['wstring_printf',['../group___win_std_str_format.html#ga0abdccf0a03840f984b7a889fea13cac',1,'winstd']]] +]; diff --git a/search/all_16.html b/search/all_16.html new file mode 100644 index 00000000..de305d99 --- /dev/null +++ b/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 00000000..15239aa9 --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,51 @@ +var searchData= +[ + ['_7eactctx_5factivator_0',['~actctx_activator',['../classwinstd_1_1actctx__activator.html#a9487820e29c331362b1ecd36de3b692a',1,'winstd::actctx_activator']]], + ['_7eaddrinfo_1',['~addrinfo',['../classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883',1,'winstd::addrinfo']]], + ['_7ebstr_2',['~bstr',['../classwinstd_1_1bstr.html#a317d3e0783e7d3de7cc6516964ea3f5e',1,'winstd::bstr']]], + ['_7ecert_5fchain_5fcontext_3',['~cert_chain_context',['../classwinstd_1_1cert__chain__context.html#a9f8b8604ea5766ffa59726b46e210eb3',1,'winstd::cert_chain_context']]], + ['_7ecert_5fcontext_4',['~cert_context',['../classwinstd_1_1cert__context.html#affa4b97554e6676d392301b5928130fd',1,'winstd::cert_context']]], + ['_7ecert_5fstore_5',['~cert_store',['../classwinstd_1_1cert__store.html#a80783d444ae3555aea01f959c9c01405',1,'winstd::cert_store']]], + ['_7ecom_5finitializer_6',['~com_initializer',['../classwinstd_1_1com__initializer.html#ad53a7697dfaf83d4832f8a57a4cf00f6',1,'winstd::com_initializer']]], + ['_7ecom_5fobj_7',['~com_obj',['../classwinstd_1_1com__obj.html#a91383e6e26266b0d3803c8594b8c5149',1,'winstd::com_obj']]], + ['_7econsole_5fctrl_5fhandler_8',['~console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a2cba550aa8c659f63386ed6322ccbd6e',1,'winstd::console_ctrl_handler']]], + ['_7ecritical_5fsection_9',['~critical_section',['../classwinstd_1_1critical__section.html#a67af5836304f27084f296c0cc17d7d20',1,'winstd::critical_section']]], + ['_7ecrypt_5fhash_10',['~crypt_hash',['../classwinstd_1_1crypt__hash.html#a7c688405c14799681018e0dfc8b51264',1,'winstd::crypt_hash']]], + ['_7ecrypt_5fkey_11',['~crypt_key',['../classwinstd_1_1crypt__key.html#a396a4af75fd99c896757679a890e6e29',1,'winstd::crypt_key']]], + ['_7ecrypt_5fprov_12',['~crypt_prov',['../classwinstd_1_1crypt__prov.html#a91c1f3d10b03ef1b5d1e1da029060289',1,'winstd::crypt_prov']]], + ['_7edata_5fblob_13',['~data_blob',['../classwinstd_1_1data__blob.html#a1c79df4fa5413536c745258d09e69599',1,'winstd::data_blob']]], + ['_7edc_14',['~dc',['../classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c',1,'winstd::dc']]], + ['_7edc_5fselector_15',['~dc_selector',['../classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd',1,'winstd::dc_selector']]], + ['_7eeap_5fattr_16',['~eap_attr',['../classwinstd_1_1eap__attr.html#a085d6ade88a42ba69cf128a97b7c9b0d',1,'winstd::eap_attr']]], + ['_7eeap_5fmethod_5finfo_5farray_17',['~eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html#a6870644e66359b0448094a193ef0b4b8',1,'winstd::eap_method_info_array']]], + ['_7eeap_5fpacket_18',['~eap_packet',['../classwinstd_1_1eap__packet.html#a6abed7e1c0460fd6e2ae5d832fbd7493',1,'winstd::eap_packet']]], + ['_7eevent_5ffn_5fauto_19',['~event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a764a83cffe2ed2ae41e9d973073d5cb0',1,'winstd::event_fn_auto']]], + ['_7eevent_5ffn_5fauto_5fret_20',['~event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a1bd1de5df10856a08187ad112992979f',1,'winstd::event_fn_auto_ret']]], + ['_7eevent_5fprovider_21',['~event_provider',['../classwinstd_1_1event__provider.html#ab219ea75734671f98fabbf41485e558b',1,'winstd::event_provider']]], + ['_7eevent_5frec_22',['~event_rec',['../classwinstd_1_1event__rec.html#a2968045a00cf5994ffc2db1a7eb38601',1,'winstd::event_rec']]], + ['_7eevent_5fsession_23',['~event_session',['../classwinstd_1_1event__session.html#a31fe172bd0ce3fb712924de08445476a',1,'winstd::event_session']]], + ['_7eevent_5ftrace_24',['~event_trace',['../classwinstd_1_1event__trace.html#ab8800a2c88f1b96d5134e7eac24ac582',1,'winstd::event_trace']]], + ['_7eevent_5ftrace_5fenabler_25',['~event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a6be72a0a5dc8da579e26b74a1ac24a4f',1,'winstd::event_trace_enabler']]], + ['_7efind_5ffile_26',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], + ['_7egdi_5fhandle_27',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], + ['_7eheap_28',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], + ['_7elibrary_29',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], + ['_7eprocess_5finformation_30',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_31',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], + ['_7ereg_5fkey_32',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esanitizing_5fblob_33',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esec_5fbuffer_5fdesc_34',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_35',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_36',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fid_37',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_38',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_39',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], + ['_7euser_5fimpersonator_40',['~user_impersonator',['../classwinstd_1_1user__impersonator.html#a986ca1cabf89b994f1634feb911c26a6',1,'winstd::user_impersonator']]], + ['_7evariant_41',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], + ['_7evector_5fqueue_42',['~vector_queue',['../classwinstd_1_1vector__queue.html#a22fc796402dba2b99821eef11bacdbd3',1,'winstd::vector_queue']]], + ['_7evmemory_43',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], + ['_7ewin_5fhandle_44',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], + ['_7ewindow_5fdc_45',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], + ['_7ewintrust_46',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], + ['_7ewlan_5fhandle_47',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 00000000..259dde4f --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 00000000..32fdfde6 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['back_0',['back',['../classwinstd_1_1vector__queue.html#a812e33986336c84659e62ee42c1dca23',1,'winstd::vector_queue::back()'],['../classwinstd_1_1vector__queue.html#a2da766f97942d850bf7295a26edd4ab6',1,'winstd::vector_queue::back() const']]], + ['basic_5fstring_5fguid_1',['basic_string_guid',['../classwinstd_1_1basic__string__guid.html#a924b921415b69fcc1ff5fab54be10f19',1,'winstd::basic_string_guid::basic_string_guid()'],['../classwinstd_1_1basic__string__guid.html',1,'winstd::basic_string_guid< _Elem, _Traits, _Ax >']]], + ['basic_5fstring_5fguid_3c_20char_2c_20std_3a_3achar_5ftraits_3c_20char_20_3e_2c_20std_3a_3aallocator_3c_20char_20_3e_20_3e_2',['basic_string_guid< char, std::char_traits< char >, std::allocator< char > >',['../classwinstd_1_1basic__string__guid.html',1,'winstd']]], + ['basic_5fstring_5fguid_3c_20wchar_5ft_2c_20std_3a_3achar_5ftraits_3c_20wchar_5ft_20_3e_2c_20std_3a_3aallocator_3c_20wchar_5ft_20_3e_20_3e_3',['basic_string_guid< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >',['../classwinstd_1_1basic__string__guid.html',1,'winstd']]], + ['basic_5fstring_5fmsg_4',['basic_string_msg',['../classwinstd_1_1basic__string__msg.html#a30932569a07f12c7b5a282502dd39eec',1,'winstd::basic_string_msg::basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a61d6fe3020f28c502fe18762de7a7f2c',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a83b3f10344f634f66944ea1d050b1e1f',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#acad49c7a6a6ebbb543c3fcbc0977dc97',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a1d0b2d1dd06ba8577341c0986934fd4d',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#acd069536c1a980778368385f0aabd88c',1,'winstd::basic_string_msg::basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#af6b6d09fc171d0086315f374d03266b1',1,'winstd::basic_string_msg::basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format,...)'],['../classwinstd_1_1basic__string__msg.html',1,'winstd::basic_string_msg< _Elem, _Traits, _Ax >']]], + ['basic_5fstring_5fprintf_5',['basic_string_printf',['../classwinstd_1_1basic__string__printf.html#ab394fd3438a22f02baf47f41ba7f1020',1,'winstd::basic_string_printf::basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format,...)'],['../classwinstd_1_1basic__string__printf.html#adad524e2913883cce72f635b90d2d820',1,'winstd::basic_string_printf::basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html#adda133198791d97d15f042ccd79bf23d',1,'winstd::basic_string_printf::basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html',1,'winstd::basic_string_printf< _Elem, _Traits, _Ax >']]], + ['bstr_6',['bstr',['../classwinstd_1_1bstr.html#a9fd6b7039c624f1265c7787424f65843',1,'winstd::bstr::bstr(_In_ LPCOLESTR src) noexcept'],['../classwinstd_1_1bstr.html#af5f7b0ad4e6e6cc9d0ccd3673dd3b721',1,'winstd::bstr::bstr(_In_ LPCOLESTR src, _In_ UINT len) noexcept'],['../classwinstd_1_1bstr.html#a47dbb28d3cd833edbd242d328b86ecde',1,'winstd::bstr::bstr(_In_ const std::basic_string< wchar_t, _Traits, _Ax > &src) noexcept'],['../classwinstd_1_1bstr.html',1,'winstd::bstr']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 00000000..1e60c949 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 00000000..315e5405 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['capacity_0',['capacity',['../classwinstd_1_1vector__queue.html#a9b8491b7a482489bc350d11dbad18afa',1,'winstd::vector_queue']]], + ['cert_5fchain_5fcontext_1',['cert_chain_context',['../classwinstd_1_1cert__chain__context.html',1,'winstd']]], + ['cert_5fcontext_2',['cert_context',['../classwinstd_1_1cert__context.html',1,'winstd']]], + ['cert_5fstore_3',['cert_store',['../classwinstd_1_1cert__store.html',1,'winstd']]], + ['change_5ftype_4',['change_type',['../classwinstd_1_1variant.html#ac22bafa14170d08098a643e8e7ce31d7',1,'winstd::variant']]], + ['clear_5',['clear',['../classwinstd_1_1vector__queue.html#a5a7920ef569276ecc2e4df6433719972',1,'winstd::vector_queue']]], + ['com_20object_20management_6',['COM object management',['../group___win_std_c_o_m.html',1,'']]], + ['com_5finitializer_7',['com_initializer',['../classwinstd_1_1com__initializer.html#a3661b5ceac98e049b72ed2a6fd708b73',1,'winstd::com_initializer::com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept'],['../classwinstd_1_1com__initializer.html#a1cf02a325b1064e1dc37145d3be7924d',1,'winstd::com_initializer::com_initializer(_In_opt_ LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html',1,'winstd::com_initializer']]], + ['com_5fobj_8',['com_obj',['../classwinstd_1_1com__obj.html#a544fcc007dd4588b257867d2e2a805b0',1,'winstd::com_obj::com_obj(_In_ com_obj< _Other > &other)'],['../classwinstd_1_1com__obj.html#a5891697029f9fe6fb93113bd8dd06c25',1,'winstd::com_obj::com_obj(_In_ _Other *other)'],['../classwinstd_1_1com__obj.html#acb2f90ae927378156683517718aa1d1d',1,'winstd::com_obj::com_obj(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, DWORD dwClsContext=CLSCTX_ALL)'],['../classwinstd_1_1com__obj.html',1,'winstd::com_obj< T >']]], + ['com_5fruntime_5ferror_9',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a948a502b8e2c088192c7a8f28b93f0cf',1,'winstd::com_runtime_error::com_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1com__runtime__error.html#ac5974f81a49bc2cf13c048ab1e93a883',1,'winstd::com_runtime_error::com_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html',1,'winstd::com_runtime_error']]], + ['console_5fctrl_5fhandler_10',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#ad195c9300c718b50bc09bc9bfc31ba91',1,'winstd::console_ctrl_handler::console_ctrl_handler()'],['../classwinstd_1_1console__ctrl__handler.html',1,'winstd::console_ctrl_handler']]], + ['const_5fpointer_11',['const_pointer',['../classwinstd_1_1vector__queue.html#aa48eb9766a233e659f6d25d7902a6348',1,'winstd::vector_queue::const_pointer()'],['../classwinstd_1_1heap__allocator.html#adc56ad9f2484d7d34299bef73709ef9c',1,'winstd::heap_allocator::const_pointer()']]], + ['const_5freference_12',['const_reference',['../classwinstd_1_1vector__queue.html#aac615b53f39df47eb897128c2b648387',1,'winstd::vector_queue::const_reference()'],['../classwinstd_1_1heap__allocator.html#ad98c7e8fc3e14da42a8dfc897e75a790',1,'winstd::heap_allocator::const_reference()']]], + ['construct_13',['construct',['../classwinstd_1_1heap__allocator.html#ac9f07c2c98cd2168614e03cdf6730c77',1,'winstd::heap_allocator::construct(_Inout_ pointer ptr, _Inout_ _Ty &&val)'],['../classwinstd_1_1heap__allocator.html#a2fef7b864c8da18f75960f20aea29e1a',1,'winstd::heap_allocator::construct(_Inout_ pointer ptr, _In_ const _Ty &val)']]], + ['cotaskmemfree_5fdelete_14',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete::CoTaskMemFree_delete()'],['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd::CoTaskMemFree_delete']]], + ['create_15',['create',['../classwinstd_1_1event__provider.html#a7fa5797006951b7143e9b34709331507',1,'winstd::event_provider::create()'],['../classwinstd_1_1reg__key.html#a63252cffe53e75e84894ee5567eb5c53',1,'winstd::reg_key::create()'],['../classwinstd_1_1heap.html#a234803fd5abe586e69268e1c3df9f40d',1,'winstd::heap::create()'],['../classwinstd_1_1event.html#a217fa728f6605580a5baf4cea0807cb2',1,'winstd::event::create()'],['../classwinstd_1_1file.html#afb46d6c0ef15fd95f9413d45a2f8fc80',1,'winstd::file::create()'],['../classwinstd_1_1setup__device__info__list.html#a307ebb13ec79a48f78e2208779dc4d8e',1,'winstd::setup_device_info_list::create(_In_opt_ const GUID *ClassGuid, _In_opt_ PCTSTR Enumerator, _In_opt_ HWND hwndParent, _In_ DWORD Flags, _In_opt_ HDEVINFO DeviceInfoSet, _In_opt_ PCTSTR MachineName, _Reserved_ PVOID Reserved) noexcept'],['../classwinstd_1_1setup__device__info__list.html#ac77fbc283dc19bfd8caafdfaf4e213af',1,'winstd::setup_device_info_list::create(_In_opt_ const GUID *ClassGuid, _In_opt_ HWND hwndParent) noexcept'],['../classwinstd_1_1event__trace.html#af15c2a746ade702616f6abfda207e920',1,'winstd::event_trace::create()'],['../classwinstd_1_1event__session.html#a5e204dee8ccd43d963589539727fecfe',1,'winstd::event_session::create()'],['../classwinstd_1_1eap__packet.html#a6ea65c39536a3646a0f7746a2ba40d62',1,'winstd::eap_packet::create()'],['../classwinstd_1_1crypt__hash.html#aee19825d23e4f0325e95c689b7dc9364',1,'winstd::crypt_hash::create()'],['../classwinstd_1_1cert__store.html#a4c56db8f6907668dffa71d66e2208eaf',1,'winstd::cert_store::create()'],['../classwinstd_1_1crypt__prov.html#ae5be9fe3991b004f249d685a9932a0db',1,'winstd::crypt_prov::create()'],['../classwinstd_1_1cert__store.html#ade7fa4cac43ae0f21ed3fdf0fa154c15',1,'winstd::cert_store::create()'],['../classwinstd_1_1cert__chain__context.html#a9f446f3ac5ad702c98d16d296adab7a2',1,'winstd::cert_chain_context::create()'],['../classwinstd_1_1cert__context.html#a23defa4c6756cc3da3965d6fa1911340',1,'winstd::cert_context::create()'],['../classwinstd_1_1com__obj.html#a778ef4c90c978b2dfb9a3a5d9325ce8a',1,'winstd::com_obj::create()']]], + ['create_5fexp1_16',['create_exp1',['../classwinstd_1_1crypt__key.html#a36bfe476dc4785ac005e4e4305aa360e',1,'winstd::crypt_key']]], + ['create_5fms_5fmppe_5fkey_17',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#acd0112e3997ba52c54a905360b4af5e6',1,'winstd::eap_attr']]], + ['credentials_20api_18',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], + ['credfree_5fdelete_19',['CredFree_delete',['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html',1,'winstd::CredFree_delete< _Ty >']]], + ['credfree_5fdelete_3c_20_5fty_5b_5d_3e_20',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['critical_5fsection_21',['critical_section',['../classwinstd_1_1critical__section.html#aa8875ee96e273ba72e86457fe0f4c768',1,'winstd::critical_section::critical_section()'],['../classwinstd_1_1critical__section.html',1,'winstd::critical_section']]], + ['crypt_5fhash_22',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], + ['crypt_5fkey_23',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], + ['crypt_5fprov_24',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]], + ['cryptography_20api_25',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 00000000..08f1aede --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 00000000..56dba0af --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['data_0',['data',['../classwinstd_1_1data__blob.html#a3cb5b805288c8d74cd103cac3acf10bf',1,'winstd::data_blob::data() noexcept'],['../classwinstd_1_1data__blob.html#a498ffe8fa857c8fee0c68803049e9528',1,'winstd::data_blob::data() const noexcept']]], + ['data_5fblob_1',['data_blob',['../classwinstd_1_1data__blob.html#a1bb57925e36a5c6727077f39adfbd146',1,'winstd::data_blob::data_blob(_Inout_ data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#a4ffce3ac1f997d6268c9e2c1cb925b76',1,'winstd::data_blob::data_blob(_In_ const DATA_BLOB &other)'],['../classwinstd_1_1data__blob.html#a962f93ced2fc8fb8721da62d1d80fb0a',1,'winstd::data_blob::data_blob(_In_count_(size) BYTE *data, _In_ DWORD size) noexcept'],['../classwinstd_1_1data__blob.html#a5bed8028538f9688eea5dc8353ff69d8',1,'winstd::data_blob::data_blob() noexcept'],['../classwinstd_1_1data__blob.html',1,'winstd::data_blob']]], + ['dc_2',['dc',['../classwinstd_1_1dc.html',1,'winstd']]], + ['dc_5fselector_3',['dc_selector',['../classwinstd_1_1dc__selector.html#aea810206b4b8977f45137425af16c2cc',1,'winstd::dc_selector::dc_selector()'],['../classwinstd_1_1dc__selector.html',1,'winstd::dc_selector']]], + ['deallocate_4',['deallocate',['../classwinstd_1_1heap__allocator.html#a216a8b605486846660c4c7fd03282ae7',1,'winstd::heap_allocator::deallocate()'],['../classwinstd_1_1sanitizing__allocator.html#a34e2f08aa05e8075fdee38963b6e8283',1,'winstd::sanitizing_allocator::deallocate()']]], + ['delete_5fsubkey_5',['delete_subkey',['../classwinstd_1_1reg__key.html#a383dc95733bec990eae644ad6fcb8b4c',1,'winstd::reg_key']]], + ['derive_6',['derive',['../classwinstd_1_1crypt__key.html#a31e237167b5831c663370902705b243d',1,'winstd::crypt_key']]], + ['destroy_7',['destroy',['../classwinstd_1_1heap__allocator.html#ae22bc5ee2aad749c334a96d623c73f3c',1,'winstd::heap_allocator']]], + ['detach_8',['detach',['../classwinstd_1_1handle.html#ad5acf6ce53e092b8d4d53f909cf321f9',1,'winstd::handle']]], + ['difference_5ftype_9',['difference_type',['../classwinstd_1_1heap__allocator.html#a4b39b8176ea30e1ceb02642c44de7b43',1,'winstd::heap_allocator']]], + ['disable_5ftrace_10',['disable_trace',['../classwinstd_1_1event__session.html#a0ab8aff95095b631a68372f1ad87b0ed',1,'winstd::event_session']]], + ['dplhandle_11',['dplhandle',['../classwinstd_1_1dplhandle.html#a3acfebc61ea283e7520dc6b5ec6b5af4',1,'winstd::dplhandle::dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#abb2b52f07f8e9f85905fb968c8bfbd62',1,'winstd::dplhandle::dplhandle(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1dplhandle.html#ac95cbfb481c0d5e6c60d130f3c270b59',1,'winstd::dplhandle::dplhandle() noexcept'],['../classwinstd_1_1dplhandle.html#a69802162f59013066dc30fcfc8089738',1,'winstd::dplhandle::dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html',1,'winstd::dplhandle< T, INVAL >']]], + ['dplhandle_3c_20bstr_2c_20null_20_3e_12',['dplhandle< BSTR, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20eappacket_20_2a_2c_20null_20_3e_13',['dplhandle< EapPacket *, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20hcrypthash_2c_20null_20_3e_14',['dplhandle< HCRYPTHASH, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20hcryptkey_2c_20null_20_3e_15',['dplhandle< HCRYPTKEY, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20pccert_5fchain_5fcontext_2c_20null_20_3e_16',['dplhandle< PCCERT_CHAIN_CONTEXT, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20pccert_5fcontext_2c_20null_20_3e_17',['dplhandle< PCCERT_CONTEXT, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20t_20_2a_2c_20null_20_3e_18',['dplhandle< T *, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['duplicate_19',['duplicate',['../classwinstd_1_1dplhandle.html#a48e66c8979560019e339867de944a265',1,'winstd::dplhandle']]], + ['duplicate_5finternal_20',['duplicate_internal',['../classwinstd_1_1com__obj.html#a2e16632274f2014e45f3cf593edbf110',1,'winstd::com_obj::duplicate_internal()'],['../classwinstd_1_1bstr.html#aea8518f7b0a9303f9e646c133c7d8039',1,'winstd::bstr::duplicate_internal()'],['../classwinstd_1_1dplhandle.html#aa0094309e30d7780908b261c53e5a07d',1,'winstd::dplhandle::duplicate_internal()'],['../classwinstd_1_1cert__context.html#ae3740c4c2e9fd7caedfda928add3df0f',1,'winstd::cert_context::duplicate_internal()'],['../classwinstd_1_1cert__chain__context.html#a656b1a040b92b732f9d3b2559c663799',1,'winstd::cert_chain_context::duplicate_internal()'],['../classwinstd_1_1crypt__hash.html#ac83439d59f00b673ae3f584e5452cdcb',1,'winstd::crypt_hash::duplicate_internal()'],['../classwinstd_1_1crypt__key.html#ac3babcd9f0cf2fca9922437e47f644d7',1,'winstd::crypt_key::duplicate_internal()'],['../classwinstd_1_1eap__packet.html#ac217972c25aebfdd300a56ff52ee9112',1,'winstd::eap_packet::duplicate_internal()']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 00000000..0d85fcc8 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 00000000..db6822ab --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['eap_5fattr_0',['eap_attr',['../classwinstd_1_1eap__attr.html#a1e59dbfc56d8c9450fd27a6d7e049ff1',1,'winstd::eap_attr::eap_attr(_Inout_ eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#a472e8b06aaef71131a37b3c48d1a9b4f',1,'winstd::eap_attr::eap_attr(_In_ const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1eap__attr.html#a015a82d7f91679f76ca590bbdabc04c1',1,'winstd::eap_attr::eap_attr() noexcept'],['../classwinstd_1_1eap__attr.html',1,'winstd::eap_attr']]], + ['eap_5fblob_1',['eap_blob',['../group___win_std_e_a_p_a_p_i.html#ga25f2a0eea11e8332bfcec6b032a17a05',1,'winstd']]], + ['eap_5fblob_5fruntime_2',['eap_blob_runtime',['../group___win_std_e_a_p_a_p_i.html#gabd2665596cc49191b36e6378147c47ad',1,'winstd']]], + ['eap_5ferror_3',['eap_error',['../group___win_std_e_a_p_a_p_i.html#ga910edec3d3d1ba4f6f306dcafdc2117a',1,'winstd']]], + ['eap_5ferror_5fruntime_4',['eap_error_runtime',['../group___win_std_e_a_p_a_p_i.html#ga102f6e28f2ae479af7b6555894f110ac',1,'winstd']]], + ['eap_5fmethod_5finfo_5farray_5',['eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html#a9d1274021845f1c4bd115a9fa1a0bf51',1,'winstd::eap_method_info_array::eap_method_info_array(_Inout_ eap_method_info_array &&other) noexcept'],['../classwinstd_1_1eap__method__info__array.html#a3dc5d1571c9e85dedd3dd3d6626947b7',1,'winstd::eap_method_info_array::eap_method_info_array() noexcept'],['../classwinstd_1_1eap__method__info__array.html',1,'winstd::eap_method_info_array']]], + ['eap_5fmethod_5fprop_6',['eap_method_prop',['../classwinstd_1_1eap__method__prop.html#a63398838bd2f79c993f968691408692c',1,'winstd::eap_method_prop::eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexcept'],['../classwinstd_1_1eap__method__prop.html#aaef29e7f5af8ed0a1c685166114c21b6',1,'winstd::eap_method_prop::eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexcept'],['../classwinstd_1_1eap__method__prop.html#a6f0cdaaa85b3da835ce220837fd8a86c',1,'winstd::eap_method_prop::eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexcept'],['../classwinstd_1_1eap__method__prop.html',1,'winstd::eap_method_prop']]], + ['eap_5fpacket_7',['eap_packet',['../classwinstd_1_1eap__packet.html',1,'winstd']]], + ['eap_5fruntime_5ferror_8',['eap_runtime_error',['../classwinstd_1_1eap__runtime__error.html#a7c3d33a53ad6258d33a493c92c03d1bd',1,'winstd::eap_runtime_error::eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1eap__runtime__error.html#a8d4f80bde143ee1a06d78bd922b0d295',1,'winstd::eap_runtime_error::eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string &msg)'],['../classwinstd_1_1eap__runtime__error.html',1,'winstd::eap_runtime_error']]], + ['eap_5ftype_5ft_9',['eap_type_t',['../group___win_std_e_a_p_a_p_i.html#ga50f5584ca708165f43cec42c42243315',1,'winstd']]], + ['eaphostpeerfreeeaperror_5fdelete_10',['EapHostPeerFreeEapError_delete',['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ab4dd927d7e4cd40b2ce7068fe252b76e',1,'winstd::EapHostPeerFreeEapError_delete::EapHostPeerFreeEapError_delete()'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html',1,'winstd::EapHostPeerFreeEapError_delete']]], + ['eaphostpeerfreeerrormemory_5fdelete_11',['EapHostPeerFreeErrorMemory_delete',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a43f0b1a440b9a431e9fee807bc1386be',1,'winstd::EapHostPeerFreeErrorMemory_delete::EapHostPeerFreeErrorMemory_delete()'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html',1,'winstd::EapHostPeerFreeErrorMemory_delete']]], + ['eaphostpeerfreememory_5fdelete_12',['EapHostPeerFreeMemory_delete',['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#af6220ac1d99cc114670c363ecfe64557',1,'winstd::EapHostPeerFreeMemory_delete::EapHostPeerFreeMemory_delete()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html',1,'winstd::EapHostPeerFreeMemory_delete']]], + ['eaphostpeerfreeruntimememory_5fdelete_13',['EapHostPeerFreeRuntimeMemory_delete',['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#afdd46f3517e59ce19fdaddebbbaeb10d',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::EapHostPeerFreeRuntimeMemory_delete()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html',1,'winstd::EapHostPeerFreeRuntimeMemory_delete']]], + ['empty_14',['empty',['../classwinstd_1_1vector__queue.html#abcdb14657f7eff95453173e132db3215',1,'winstd::vector_queue']]], + ['enable_5fcallback_15',['enable_callback',['../classwinstd_1_1event__provider.html#ab7e0b19d15847e5d4dadc4b679f38bf2',1,'winstd::event_provider::enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext)'],['../classwinstd_1_1event__provider.html#a418b2304d51174829dd35f3cbc332270',1,'winstd::event_provider::enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData)']]], + ['enable_5ftrace_16',['enable_trace',['../classwinstd_1_1event__session.html#ac99622899bd7849f3cdd6730d1d1a02a',1,'winstd::event_session']]], + ['end_17',['end',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a7f021a1415b86f2d013b2618fb31ae53',1,'winstd']]], + ['enumerate_18',['enumerate',['../classwinstd_1_1heap.html#a938dca2d614e8d33ae5add61b013847f',1,'winstd::heap']]], + ['error_5ftype_19',['error_type',['../classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0',1,'winstd::num_runtime_error']]], + ['event_20',['event',['../classwinstd_1_1event.html',1,'winstd']]], + ['event_20tracing_20for_20windows_20api_21',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]], + ['event_5fdata_22',['event_data',['../classwinstd_1_1event__data.html#a4944c96e443b154bc35594e401f3ee80',1,'winstd::event_data::event_data(_In_ const GUID &data)'],['../classwinstd_1_1event__data.html#a6c89606a2a00bdcbc6399eaab76d38da',1,'winstd::event_data::event_data(_In_bytecount_(size) const void *data, _In_ ULONG size)'],['../classwinstd_1_1event__data.html#a16e3bc35a94bbc8ab15959ae2fe4bac4',1,'winstd::event_data::event_data(_In_ const std::basic_string< _Elem, _Traits, _Ax > &data)'],['../classwinstd_1_1event__data.html#ad4c0e6491b030575b6e6fc8ad6d9ccf0',1,'winstd::event_data::event_data(_In_opt_z_ const wchar_t *data)'],['../classwinstd_1_1event__data.html#a6496df3ae53c55ba1febb7a527390aa4',1,'winstd::event_data::event_data(_In_opt_z_ const char *data)'],['../classwinstd_1_1event__data.html#a5fc13dcb7a81ded6e5fa3acd9eabaf3d',1,'winstd::event_data::event_data(_In_ const unsigned long &data)'],['../classwinstd_1_1event__data.html#ac1e5ee38c9b52548f5a52a44e294565a',1,'winstd::event_data::event_data(_In_ const long &data)'],['../classwinstd_1_1event__data.html#abbb8c154fec1fec0a01d8d82c3211516',1,'winstd::event_data::event_data(_In_ const unsigned int &data)'],['../classwinstd_1_1event__data.html#aebfd39d490ebfd900dbf84b4cac69ce4',1,'winstd::event_data::event_data(_In_ const int &data)'],['../classwinstd_1_1event__data.html#ab8fcf1275490c1d1806fd573ce6010a8',1,'winstd::event_data::event_data(_In_ const unsigned char &data)'],['../classwinstd_1_1event__data.html#acb263040db5d65718adcfa069fb6534e',1,'winstd::event_data::event_data(_In_ const char &data)'],['../classwinstd_1_1event__data.html#acb4032673a3b2376eb0d62115bb37c4f',1,'winstd::event_data::event_data()'],['../classwinstd_1_1event__data.html',1,'winstd::event_data']]], + ['event_5ffn_5fauto_23',['event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a48da2662d143d93453c83b326f9e51f0',1,'winstd::event_fn_auto::event_fn_auto(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName)'],['../classwinstd_1_1event__fn__auto.html#a3f5c7a8583d4906f01e9cf77e7c72d5f',1,'winstd::event_fn_auto::event_fn_auto(_In_ const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#abf49424fe06d79576ce1bd0b88317328',1,'winstd::event_fn_auto::event_fn_auto(_Inout_ event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto.html',1,'winstd::event_fn_auto']]], + ['event_5ffn_5fauto_5fret_24',['event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a904be6ebb7dd6953bb2ec8f4579224a0',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(_In_ const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#a09709a10edf6c5cba0b62f88d662068a',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(_Inout_ event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1event__fn__auto__ret.html#a3ed6ebce9953a658262a56aca99aa53e',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName, T &result)'],['../classwinstd_1_1event__fn__auto__ret.html',1,'winstd::event_fn_auto_ret< T >']]], + ['event_5fprovider_25',['event_provider',['../classwinstd_1_1event__provider.html',1,'winstd']]], + ['event_5frec_26',['event_rec',['../classwinstd_1_1event__rec.html#af2f781ca85c2d92b001bb32bf4839f11',1,'winstd::event_rec::event_rec()'],['../classwinstd_1_1event__rec.html#aee4d608c8a0c0362329d94b271998652',1,'winstd::event_rec::event_rec(_In_ const event_rec &other)'],['../classwinstd_1_1event__rec.html#a696e08b5558b349e9fdcc6794f6abbb3',1,'winstd::event_rec::event_rec(_In_ const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a65423d1cc93ed5df50f1d5a036954e34',1,'winstd::event_rec::event_rec(_Inout_ event_rec &&other) noexcept'],['../classwinstd_1_1event__rec.html',1,'winstd::event_rec']]], + ['event_5fsession_27',['event_session',['../classwinstd_1_1event__session.html#a24a43016accd86270c6a2ca6cf4934de',1,'winstd::event_session::event_session()'],['../classwinstd_1_1event__session.html#a6aea4594abbc58eec32d3798ba773b96',1,'winstd::event_session::event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop)'],['../classwinstd_1_1event__session.html#aa5c94e7ebeecf3b60576e70da95636b8',1,'winstd::event_session::event_session(_Inout_ event_session &&other) noexcept'],['../classwinstd_1_1event__session.html',1,'winstd::event_session']]], + ['event_5ftrace_28',['event_trace',['../classwinstd_1_1event__trace.html',1,'winstd']]], + ['event_5ftrace_5fenabler_29',['event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a2824894d40303156ec40a46eddf05421',1,'winstd::event_trace_enabler::event_trace_enabler(_In_ const event_session &session, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)'],['../classwinstd_1_1event__trace__enabler.html#a50315f6ef0ca3e9a63710249fac75a10',1,'winstd::event_trace_enabler::event_trace_enabler(_In_opt_ LPCGUID SourceId, _In_ TRACEHANDLE TraceHandle, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)'],['../classwinstd_1_1event__trace__enabler.html',1,'winstd::event_trace_enabler']]], + ['exceptions_30',['Exceptions',['../group___win_std_exceptions.html',1,'']]], + ['extensible_20authentication_20protocol_20api_31',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 00000000..7e088b86 --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 00000000..5d0dfa9e --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['file_0',['file',['../classwinstd_1_1file.html',1,'winstd']]], + ['find_1',['find',['../classwinstd_1_1find__file.html#ac266923e34c300f0f888a5cefef8a569',1,'winstd::find_file']]], + ['find_5ffile_2',['find_file',['../classwinstd_1_1find__file.html',1,'winstd']]], + ['free_3',['free',['../classwinstd_1_1handle.html#a706aaab7691a472c608890f8e5dd0d96',1,'winstd::handle']]], + ['free_5finternal_4',['free_internal',['../classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261',1,'winstd::wlan_handle::free_internal()'],['../classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f',1,'winstd::addrinfo::free_internal()'],['../classwinstd_1_1security__id.html#a464626311e64ea1273fd6bca9ef93a73',1,'winstd::security_id::free_internal()'],['../classwinstd_1_1reg__key.html#a3dba00d2105a1c633c571d8ad3131f54',1,'winstd::reg_key::free_internal()'],['../classwinstd_1_1vmemory.html#a616dbfba873b9a3dcf393cff6504fc2e',1,'winstd::vmemory::free_internal()'],['../classwinstd_1_1heap.html#ae25434d96356a74d27c0b3b0e268df45',1,'winstd::heap::free_internal()'],['../classwinstd_1_1find__file.html#a5bb4f7e12689153f991ffcb08dbbe703',1,'winstd::find_file::free_internal()'],['../classwinstd_1_1library.html#a0c602319cb498fa2b6a5c4eda4a150aa',1,'winstd::library::free_internal()'],['../classwinstd_1_1win__handle.html#a456fe19828113913f42e901f112c6455',1,'winstd::win_handle::free_internal()'],['../classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437',1,'winstd::setup_device_info_list::free_internal()'],['../classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9',1,'winstd::sec_context::free_internal()'],['../classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260',1,'winstd::sec_credentials::free_internal()'],['../classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a',1,'winstd::window_dc::free_internal()'],['../classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87',1,'winstd::gdi_handle::free_internal()'],['../classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557',1,'winstd::dc::free_internal()'],['../classwinstd_1_1event__trace.html#ad8ef9b0616775c44e911d9db4676b19c',1,'winstd::event_trace::free_internal()'],['../classwinstd_1_1event__session.html#a4701ad4ae9d18e890ed4066473680751',1,'winstd::event_session::free_internal()'],['../classwinstd_1_1event__provider.html#ad0d7ed652fe897a94f2ef198dd3f41a1',1,'winstd::event_provider::free_internal()'],['../classwinstd_1_1eap__packet.html#a6d68149b92c1564b2683ddb3a87b60f0',1,'winstd::eap_packet::free_internal()'],['../classwinstd_1_1crypt__key.html#acf2f2ad35dd7602adcdeef17f605e391',1,'winstd::crypt_key::free_internal()'],['../classwinstd_1_1crypt__hash.html#a3c19a87b4ff646d9e87524feac4e41b5',1,'winstd::crypt_hash::free_internal()'],['../classwinstd_1_1crypt__prov.html#aa351d2dbc42daf51dddcf847fd95c39f',1,'winstd::crypt_prov::free_internal()'],['../classwinstd_1_1cert__store.html#ab709fe692a4117173eae26e741da2069',1,'winstd::cert_store::free_internal()'],['../classwinstd_1_1cert__chain__context.html#ae15044b1a7be10d96643d3921e149ee6',1,'winstd::cert_chain_context::free_internal()'],['../classwinstd_1_1cert__context.html#a1615ec6693eb68764543456ad418a970',1,'winstd::cert_context::free_internal()'],['../classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629',1,'winstd::handle::free_internal()'],['../classwinstd_1_1bstr.html#a87edcb348af7d69ad86709e32b519870',1,'winstd::bstr::free_internal()'],['../classwinstd_1_1com__obj.html#a028b86f770253f74a62ca3eaebb14de5',1,'winstd::com_obj::free_internal()']]], + ['front_5',['front',['../classwinstd_1_1vector__queue.html#aa13a6c816c2da48c0dfc7ceb055aeda7',1,'winstd::vector_queue::front()'],['../classwinstd_1_1vector__queue.html#acacc09dfa210f52870114857b02e96c1',1,'winstd::vector_queue::front() const']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 00000000..d2b18254 --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 00000000..b87fde4b --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['gdi_20api_0',['GDI API',['../group___win_std_gdi_a_p_i.html',1,'']]], + ['gdi_5fhandle_1',['gdi_handle',['../classwinstd_1_1gdi__handle.html',1,'winstd']]], + ['general_2',['General',['../group___win_std_general.html',1,'']]], + ['generate_3',['generate',['../classwinstd_1_1crypt__key.html#a29bd17cc076234a9ed86bec0f808e920',1,'winstd::crypt_key']]], + ['get_4',['get',['../classwinstd_1_1addrinfo.html#a4dfe202e1a3d0eaa574480f0e54f440f',1,'winstd::addrinfo']]], + ['get_5fptr_5',['get_ptr',['../group___win_std_general.html#gaee918184e7e671bbcda3a884ae316fcf',1,'winstd::get_ptr(_Inout_ std::unique_ptr< _Ty, _Dx > &owner) noexcept'],['../group___win_std_general.html#ga9985d83683c65e4d97387a357bf242d0',1,'winstd::get_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept']]], + ['gtc_6',['gtc',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a3761e7920c97542314b1aa50434f9293',1,'winstd']]], + ['gtcp_7',['gtcp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a811f41353a6e1e0ecf7a03308c4f8e0e',1,'winstd']]], + ['guidtostring_8',['GuidToString',['../group___win_std_win_a_p_i.html#gad08dfb2a0d1254918a2a4ed45061a50d',1,'Win.h']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 00000000..f4e3a2aa --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 00000000..8522010f --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['handle_0',['handle',['../classwinstd_1_1handle.html#a1b9c4f9529c9efa7d16dec8bab3b00e4',1,'winstd::handle::handle() noexcept'],['../classwinstd_1_1handle.html#a200e93ad6b773e634094f5321705ebec',1,'winstd::handle::handle(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1handle.html#a54141e1a6c82fcdd15f6fa3a813baab0',1,'winstd::handle::handle(_Inout_ handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html',1,'winstd::handle< T, INVAL >']]], + ['handle_3c_20bstr_2c_20inval_20_3e_1',['handle< BSTR, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20eappacket_20_2a_2c_20inval_20_3e_2',['handle< EapPacket *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20handle_2c_20invalid_20_3e_3',['handle< HANDLE, INVALID >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20handle_2c_20invalid_5fhandle_5fvalue_20_3e_4',['handle< HANDLE, INVALID_HANDLE_VALUE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20handle_2c_20null_20_3e_5',['handle< HANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcertstore_2c_20null_20_3e_6',['handle< HCERTSTORE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcrypthash_2c_20inval_20_3e_7',['handle< HCRYPTHASH, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcryptkey_2c_20inval_20_3e_8',['handle< HCRYPTKEY, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcryptprov_2c_20null_20_3e_9',['handle< HCRYPTPROV, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hdc_2c_20null_20_3e_10',['handle< HDC, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hdevinfo_2c_20invalid_5fhandle_5fvalue_20_3e_11',['handle< HDEVINFO, INVALID_HANDLE_VALUE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hkey_2c_20null_20_3e_12',['handle< HKEY, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hmodule_2c_20null_20_3e_13',['handle< HMODULE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20lpvoid_2c_20null_20_3e_14',['handle< LPVOID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20paddrinfot_2c_20null_20_3e_15',['handle< PADDRINFOT, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fchain_5fcontext_2c_20inval_20_3e_16',['handle< PCCERT_CHAIN_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fcontext_2c_20inval_20_3e_17',['handle< PCCERT_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pcredhandle_2c_20null_20_3e_18',['handle< PCredHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pctxthandle_2c_20null_20_3e_19',['handle< PCtxtHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20psid_2c_20null_20_3e_20',['handle< PSID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20reghandle_2c_20null_20_3e_21',['handle< REGHANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_20_2a_2c_20inval_20_3e_22',['handle< T *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_2c_20null_20_3e_23',['handle< T, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_200_20_3e_24',['handle< TRACEHANDLE, 0 >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_20invalid_5fprocesstrace_5fhandle_20_3e_25',['handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_5ftype_26',['handle_type',['../classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81',1,'winstd::handle']]], + ['head_27',['head',['../classwinstd_1_1vector__queue.html#a964a0400a8bad322267c8128caa78f5d',1,'winstd::vector_queue']]], + ['heap_28',['heap',['../classwinstd_1_1heap.html',1,'winstd']]], + ['heap_5fallocator_29',['heap_allocator',['../classwinstd_1_1heap__allocator.html#ac5f30e886e7bfff4c18470b990eba118',1,'winstd::heap_allocator::heap_allocator(_In_ HANDLE heap)'],['../classwinstd_1_1heap__allocator.html#aaed5a79d60e4d9ae77d251c900ccd78b',1,'winstd::heap_allocator::heap_allocator(_In_ const heap_allocator< _Other > &other)'],['../classwinstd_1_1heap__allocator.html',1,'winstd::heap_allocator< _Ty >']]], + ['help_5flink_5fid_30',['help_link_id',['../classwinstd_1_1eap__runtime__error.html#af7179a9cc9ff633a0e7d5983a4680171',1,'winstd::eap_runtime_error']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 00000000..89177a82 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 00000000..d81e26c1 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['identity_0',['identity',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aff483d1ff591898a9942916050d2ca3f',1,'winstd']]], + ['import_1',['import',['../classwinstd_1_1crypt__key.html#a838eb6fc602988725a1e0c9747de5e76',1,'winstd::crypt_key']]], + ['import_5fpublic_2',['import_public',['../classwinstd_1_1crypt__key.html#aad8c23f4cc013bba01347ee482c931a6',1,'winstd::crypt_key']]], + ['initialize_3',['initialize',['../classwinstd_1_1sec__context.html#aa74e971e2aeeb1fccde7c377df48e4cb',1,'winstd::sec_context']]], + ['invalid_4',['invalid',['../group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c',1,'winstd::handle']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 00000000..1f90b7a7 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 00000000..31240812 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['legacy_5fmschapv2_0',['legacy_mschapv2',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315adfe86ce1b68c3cdefe90e35904fc744a',1,'winstd']]], + ['legacy_5fpap_1',['legacy_pap',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a262032c7bb2ef8f08d5b85ee63f79eff',1,'winstd']]], + ['length_2',['length',['../classwinstd_1_1bstr.html#aa6970921c6334a993f5f0fc1be5d54e3',1,'winstd::bstr']]], + ['library_3',['library',['../classwinstd_1_1library.html',1,'winstd']]], + ['load_4',['load',['../classwinstd_1_1library.html#ab7b995a7f1703d1d4a6bc1a8ab5734d9',1,'winstd::library']]], + ['localfree_5fdelete_5',['LocalFree_delete',['../structwinstd_1_1_local_free__delete.html#ae7e35dd11650c49de0ebcab4388c9400',1,'winstd::LocalFree_delete::LocalFree_delete()'],['../structwinstd_1_1_local_free__delete.html#abbb52355375f34eca425d61a59261461',1,'winstd::LocalFree_delete::LocalFree_delete(const LocalFree_delete< _Ty2 > &)'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#a34a948cc7b0f12c0f1e4b7e234d8181c',1,'winstd::LocalFree_delete< _Ty[]>::LocalFree_delete()'],['../structwinstd_1_1_local_free__delete.html',1,'winstd::LocalFree_delete< _Ty >']]], + ['localfree_5fdelete_3c_20_5fty_5b_5d_3e_6',['LocalFree_delete< _Ty[]>',['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 00000000..b7ad6e6d --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 00000000..0af1fc06 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,48 @@ +var searchData= +[ + ['m_5fattrib_0',['m_attrib',['../classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f',1,'winstd::sec_context']]], + ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie()'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie()'],['../classwinstd_1_1user__impersonator.html#a28b0a9c7d1759b2be3ae3deb960a287c',1,'winstd::user_impersonator::m_cookie()']]], + ['m_5fcount_2',['m_count',['../classwinstd_1_1vector__queue.html#a539a5aae817c23655ee18c9d8197157a',1,'winstd::vector_queue']]], + ['m_5fdata_3',['m_data',['../classwinstd_1_1vector__queue.html#add5592dce4d7f82967925271c9ed8162',1,'winstd::vector_queue::m_data()'],['../classwinstd_1_1sanitizing__blob.html#a38187ccd591a6a7cfa4a9d0a6f6f7701',1,'winstd::sanitizing_blob::m_data()'],['../classwinstd_1_1critical__section.html#a55b9b9e7f38b94cd5c3fc15a319a6719',1,'winstd::critical_section::m_data()']]], + ['m_5fdesc_4',['m_desc',['../classwinstd_1_1event__fn__auto__ret.html#a23fa88c6a7aea86536cc0e4bee2746cf',1,'winstd::event_fn_auto_ret']]], + ['m_5fenable_5ffilter_5fdesc_5',['m_enable_filter_desc',['../classwinstd_1_1event__trace__enabler.html#a358d20e2dbbc7dcaccbe8d3d303cc3c4',1,'winstd::event_trace_enabler']]], + ['m_5fenable_5fproperty_6',['m_enable_property',['../classwinstd_1_1event__trace__enabler.html#afa99363e0122b520280f1e4a6f0a6c35',1,'winstd::event_trace_enabler']]], + ['m_5fep_7',['m_ep',['../classwinstd_1_1event__fn__auto.html#acbfdaed91d8a3aa3346d33d1a548457a',1,'winstd::event_fn_auto::m_ep()'],['../classwinstd_1_1event__fn__auto__ret.html#a52a16bf54fa9fc800e7c18d3fd75fb53',1,'winstd::event_fn_auto_ret::m_ep()']]], + ['m_5fevent_5fdest_8',['m_event_dest',['../classwinstd_1_1event__fn__auto.html#a03080fbd3201b899cce1ab5bb59dca2f',1,'winstd::event_fn_auto::m_event_dest()'],['../classwinstd_1_1event__fn__auto__ret.html#a8d168be3f57047c78fa329ff3eb2e700',1,'winstd::event_fn_auto_ret::m_event_dest()']]], + ['m_5fexpires_9',['m_expires',['../classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304',1,'winstd::sec_context::m_expires()'],['../classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a',1,'winstd::sec_credentials::m_expires()']]], + ['m_5ffn_5fname_10',['m_fn_name',['../classwinstd_1_1event__fn__auto.html#ad17409fc9cdaa8b78a9f38e39e21a9f0',1,'winstd::event_fn_auto']]], + ['m_5fh_11',['m_h',['../classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59',1,'winstd::handle']]], + ['m_5fhandler_12',['m_handler',['../classwinstd_1_1console__ctrl__handler.html#a9ef863ec7a6cd26788acb94430948e60',1,'winstd::console_ctrl_handler']]], + ['m_5fhdc_13',['m_hdc',['../classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3',1,'winstd::dc_selector']]], + ['m_5fhead_14',['m_head',['../classwinstd_1_1vector__queue.html#ab5388ba90fe41184a3a5b1432eec7b82',1,'winstd::vector_queue']]], + ['m_5fheap_15',['m_heap',['../classwinstd_1_1heap__allocator.html#a36fb89d5fca7564d2718ba54a519eadd',1,'winstd::heap_allocator']]], + ['m_5fhelp_5flink_5fid_16',['m_help_link_id',['../classwinstd_1_1eap__runtime__error.html#aa23bf8c3fc64f54e7021bb97dfefda89',1,'winstd::eap_runtime_error']]], + ['m_5fhwnd_17',['m_hwnd',['../classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3',1,'winstd::window_dc']]], + ['m_5flevel_18',['m_level',['../classwinstd_1_1event__trace__enabler.html#a12535c295825c30360527f963a427e30',1,'winstd::event_trace_enabler']]], + ['m_5fmatch_5fall_5fkeyword_19',['m_match_all_keyword',['../classwinstd_1_1event__trace__enabler.html#acb40cf714473e7c8a193f4f9cef8d1b2',1,'winstd::event_trace_enabler']]], + ['m_5fmatch_5fany_5fkeyword_20',['m_match_any_keyword',['../classwinstd_1_1event__trace__enabler.html#a363083f0792e5bf5429576e6c40c4060',1,'winstd::event_trace_enabler']]], + ['m_5fnum_21',['m_num',['../classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f',1,'winstd::num_runtime_error']]], + ['m_5forig_22',['m_orig',['../classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e',1,'winstd::dc_selector']]], + ['m_5fown_23',['m_own',['../classwinstd_1_1ref__unique__ptr.html#a343d26837b90973a7f562f0ce36fb82d',1,'winstd::ref_unique_ptr::m_own()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a1c6caa9922b023afae5b2adbd2fa40a5',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::m_own()']]], + ['m_5fproc_24',['m_proc',['../classwinstd_1_1vmemory.html#af448989be292da246dd25469d7a70b87',1,'winstd::vmemory']]], + ['m_5fprop_25',['m_prop',['../classwinstd_1_1event__session.html#ad2b5e63572d44c37dc3f4f64feefa3cc',1,'winstd::event_session']]], + ['m_5fprovider_5fid_26',['m_provider_id',['../classwinstd_1_1event__trace__enabler.html#ade3cdf424d3a4eb85f0fdc554dfcf673',1,'winstd::event_trace_enabler']]], + ['m_5fptr_27',['m_ptr',['../classwinstd_1_1ref__unique__ptr.html#a72486d304d712600e6b222fab19d1032',1,'winstd::ref_unique_ptr::m_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a8d9eb2287c86ebcb89a0417842410d0b',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::m_ptr()']]], + ['m_5freason_28',['m_reason',['../classwinstd_1_1eap__runtime__error.html#af7d0e9785475719f4b1b0b59c4ae49e3',1,'winstd::eap_runtime_error']]], + ['m_5frepair_5fdesc_29',['m_repair_desc',['../classwinstd_1_1eap__runtime__error.html#a2b237993f0c860b8b0ad83416d499f18',1,'winstd::eap_runtime_error']]], + ['m_5frepair_5fid_30',['m_repair_id',['../classwinstd_1_1eap__runtime__error.html#a526d2ae63c12d1a439d69412e7f13ec7',1,'winstd::eap_runtime_error']]], + ['m_5fresult_31',['m_result',['../classwinstd_1_1com__initializer.html#ae9478fd05b5b1c82e0f762c2b517155b',1,'winstd::com_initializer::m_result()'],['../classwinstd_1_1event__fn__auto__ret.html#a69f1ae5c23f90aaa4da012b1eb0b8f81',1,'winstd::event_fn_auto_ret::m_result()'],['../classwinstd_1_1setup__driver__info__list__builder.html#ae2c9f0f68a5068823a903092ef940d50',1,'winstd::setup_driver_info_list_builder::m_result()']]], + ['m_5froot_5fcause_5fdesc_32',['m_root_cause_desc',['../classwinstd_1_1eap__runtime__error.html#aea17d371de31216ac0754c1ed1f0b99a',1,'winstd::eap_runtime_error']]], + ['m_5froot_5fcause_5fid_33',['m_root_cause_id',['../classwinstd_1_1eap__runtime__error.html#a084ddacb051932c211a995872fb67b57',1,'winstd::eap_runtime_error']]], + ['m_5fsize_5fmax_34',['m_size_max',['../classwinstd_1_1vector__queue.html#a4e9b41f9a4573e397c943b9f8f3f0857',1,'winstd::vector_queue']]], + ['m_5fsource_5fid_35',['m_source_id',['../classwinstd_1_1event__trace__enabler.html#ae6269d27652b694435656906784e3a7a',1,'winstd::event_trace_enabler']]], + ['m_5fstatus_36',['m_status',['../classwinstd_1_1event__trace__enabler.html#a576839d3b1e1db676ea1175329b02c9f',1,'winstd::event_trace_enabler']]], + ['m_5ftrace_5fhandle_37',['m_trace_handle',['../classwinstd_1_1event__trace__enabler.html#a5ef48960265e3786fb94fe7f64587909',1,'winstd::event_trace_enabler']]], + ['m_5ftype_38',['m_type',['../classwinstd_1_1eap__runtime__error.html#a4d7e04b38831f029d862990b607333aa',1,'winstd::eap_runtime_error']]], + ['max_5fsize_39',['max_size',['../classwinstd_1_1heap__allocator.html#ab2018e74ee3bc84eb3841fae8bc71b01',1,'winstd::heap_allocator']]], + ['md5_5fchallenge_40',['md5_challenge',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a1f61e547b81232a658f0704e85488a6c',1,'winstd']]], + ['microsoft_20installer_20api_41',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]], + ['ms_5fauth_5ftlv_42',['ms_auth_tlv',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ae19141eb8aa04ffb76d616409efcdf03',1,'winstd']]], + ['mschapv2_43',['mschapv2',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315af579ec4460aed7126de9ed539845a0f4',1,'winstd']]], + ['msg_44',['msg',['../classwinstd_1_1win__runtime__error.html#a016e0f951d68ea42b9d33beea39d642b',1,'winstd::win_runtime_error::msg()'],['../classwinstd_1_1ws2__runtime__error.html#a22e0c60032ca14b54cb66440170e9fdf',1,'winstd::ws2_runtime_error::msg()']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 00000000..829c9170 --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 00000000..a7192854 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['nak_0',['nak',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa755bc3c9689ab5eaedd25afc4a79b9f',1,'winstd']]], + ['name_1',['name',['../classwinstd_1_1event__session.html#a029e88ded7419ed152e398388f6a8578',1,'winstd::event_session']]], + ['noneap_5fend_2',['noneap_end',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa93b0d36fa0eb07db651bb830470be12',1,'winstd']]], + ['noneap_5fstart_3',['noneap_start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a8fb40a36c92da4be50f5052602e6fcf4',1,'winstd']]], + ['notification_4',['notification',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a0cfd653d5d3e1e9fdbb644523d77971d',1,'winstd']]], + ['num_5fruntime_5ferror_5',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html#a5f8894c1634e9b80ab67c573d7315824',1,'winstd::num_runtime_error::num_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1num__runtime__error.html#aa775e07ef587393c66cb21a6c809c0ca',1,'winstd::num_runtime_error::num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1num__runtime__error.html',1,'winstd::num_runtime_error< _Tn >']]], + ['num_5fruntime_5ferror_3c_20dword_20_3e_6',['num_runtime_error< DWORD >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20hresult_20_3e_7',['num_runtime_error< HRESULT >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20int_20_3e_8',['num_runtime_error< int >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20security_5fstatus_20_3e_9',['num_runtime_error< SECURITY_STATUS >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['number_10',['number',['../classwinstd_1_1num__runtime__error.html#a6388a483c00628c1a94a5ce45ca63e70',1,'winstd::num_runtime_error']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 00000000..d32b28eb --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 00000000..e626ae25 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['open_0',['open',['../classwinstd_1_1event.html#a607b9549a1fddfee1a32b61aff664610',1,'winstd::event::open()'],['../classwinstd_1_1reg__key.html#a1f6008b49c2a450dfdfecf204a8eab0f',1,'winstd::reg_key::open()'],['../classwinstd_1_1wlan__handle.html#a4de83a8c128da9d644667ff1f62739f7',1,'winstd::wlan_handle::open()'],['../classwinstd_1_1process.html#a290511c02f9170dab6a9ebab2e55f14e',1,'winstd::process::open()']]], + ['operator_20const_20event_5ftrace_5fproperties_20_2a_1',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], + ['operator_20handle_5ftype_2',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], + ['operator_20lpcritical_5fsection_3',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], + ['operator_20typename_20_5fty_20_2a_26_4',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], + ['operator_20typename_20_5fty_20_2a_2a_5',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], + ['operator_21_6',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], + ['operator_21_3d_7',['operator!=',['../classwinstd_1_1variant.html#a8bde27b765d17663ea36f9fb84a530af',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a2c9e218fe1c13a2ffa0a81d829e72fee',1,'winstd::handle::operator!=()'],['../classwinstd_1_1cert__context.html#a27e4d118208c02e4023d0456124522af',1,'winstd::cert_context::operator!=()']]], + ['operator_26_8',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], + ['operator_28_29_9',['operator()',['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#a02210f2d10576d8ffcf38739deed7887',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], + ['operator_2a_10',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], + ['operator_2d_3e_11',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], + ['operator_3c_12',['operator<',['../classwinstd_1_1handle.html#a77b518be4199e6562520ccbcdcec5d07',1,'winstd::handle::operator<()'],['../classwinstd_1_1cert__context.html#a7f320b91ee26685eb9f9702a011ecc74',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#a6e2bed5ef96a45e1dcabced3804d2a37',1,'winstd::variant::operator<(_In_ const VARIANT &varSrc) const noexcept']]], + ['operator_3c_3d_13',['operator<=',['../classwinstd_1_1variant.html#ac62778c2de1a28e3089d096aa264a4ec',1,'winstd::variant::operator<=()'],['../classwinstd_1_1handle.html#a16b52280c04b4cb9f8bd65f76cb2f48d',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a1c545da45189367bcfeead3809c3e393',1,'winstd::cert_context::operator<=()']]], + ['operator_3d_14',['operator=',['../classwinstd_1_1data__blob.html#a3c3c62cee228c581c6eabb37e5cb526b',1,'winstd::data_blob::operator=()'],['../classwinstd_1_1variant.html#a060a0296bb201e8e571ca4aab70f35ed',1,'winstd::variant::operator=()'],['../classwinstd_1_1data__blob.html#a2c1806cf29475d732fe0cdf14f930d48',1,'winstd::data_blob::operator=()'],['../classwinstd_1_1vector__queue.html#af5f7cd73f4fb310d3903de2fe4fd5b71',1,'winstd::vector_queue::operator=(_Inout_ vector_queue< value_type > &&other)'],['../classwinstd_1_1vector__queue.html#a2aefeffa04d6e3fafa40d6ae8d4eb501',1,'winstd::vector_queue::operator=(_In_ const vector_queue< value_type > &other)'],['../classwinstd_1_1dplhandle.html#abfba6b3dca0d5b8511085741d8d32eb6',1,'winstd::dplhandle::operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#a9ad67897459bc81536481a6a1321b302',1,'winstd::dplhandle::operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a6211e58546daef11a28b0c9a8563e063',1,'winstd::dplhandle::operator=(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1handle.html#a96a1bcf085561569ed51ab23968d1308',1,'winstd::handle::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html#a8928de8288f8dc990fc903dee85803e7',1,'winstd::handle::operator=(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a8f2b3b42c673b2036feff62a170e4f31',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator=(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a9616d5e121e7ee39798d7e0103358943',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator=(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept'],['../classwinstd_1_1variant.html#a8b829b758e6e859508a0f0f3817aeaa8',1,'winstd::variant::operator=(_In_ const SAFEARRAY *pSrc) noexcept'],['../classwinstd_1_1variant.html#ad855816c6daa12abd06e43beb08caac7',1,'winstd::variant::operator=(_In_z_ LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1eap__attr.html#af82d813fa541bd218afb672a8886c287',1,'winstd::eap_attr::operator=(_In_ const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1eap__attr.html#a7ad2a3d553168173588261656a151c30',1,'winstd::eap_attr::operator=(_Inout_ eap_attr &&a) noexcept'],['../classwinstd_1_1eap__method__info__array.html#a3619fce0e5d8a683ea5b704f24ff38a7',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1event__rec.html#aff796ec565f99bf03e6542a17056e312',1,'winstd::event_rec::operator=(_In_ const event_rec &other)'],['../classwinstd_1_1event__rec.html#a9dc72f524205e767d1d557b4b7e40201',1,'winstd::event_rec::operator=(_In_ const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#aaa938b515144cfd5026de8f97292bf93',1,'winstd::event_rec::operator=(_Inout_ event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#af84c0054fc0a333400129bad43d847b9',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#a5494dec6a8f6c0c6e209df2c52584cc1',1,'winstd::event_fn_auto::operator=(_In_ const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#a457c12be555c711a3de8381211a681d6',1,'winstd::event_fn_auto::operator=(_Inout_ event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a2258cf83163bec3b98a620934f1aa451',1,'winstd::event_fn_auto_ret::operator=(_In_ const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#a67c2630b95f0fd2ab5b5f218c5d25c58',1,'winstd::event_fn_auto_ret::operator=(_Inout_ event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1sec__credentials.html#aed4c8c2b825574c57b0beaa9da0eed9c',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#ae514c48916fa6859ccb9591fa1313e27',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a660f58d9e608c82f6236ac75b20925bd',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#a42dae05f2aebc59f4b9a8971ef661651',1,'winstd::variant::operator=(_In_ unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#abe65600c073ddcf89faf02e066a9738f',1,'winstd::variant::operator=(_In_ const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#af069314c298c59020052749418e1c940',1,'winstd::variant::operator=(_Inout_ VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#ac22ca62b7cafcd4dc9841680c0a12436',1,'winstd::variant::operator=(_In_ bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a39539bd84a533981524a41ff65780683',1,'winstd::variant::operator=(_In_ char cSrc) noexcept'],['../classwinstd_1_1variant.html#ae79092e97108c3fed94325d3d679fbb6',1,'winstd::variant::operator=(_In_ unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a12a6898c591406981754d09be9c60538',1,'winstd::variant::operator=(_In_ short nSrc) noexcept'],['../classwinstd_1_1variant.html#a38e77a19c8722042827632bda007357c',1,'winstd::variant::operator=(_In_ unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a83be1ae666c090c5eb9f6ac0eca1ca6c',1,'winstd::variant::operator=(_In_ int nSrc) noexcept'],['../classwinstd_1_1variant.html#ae9d6f63e7a4e59705e9ee8fa1df6cd29',1,'winstd::variant::operator=(_In_ unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a7dfb5130045649ff9d51194d9927f445',1,'winstd::variant::operator=(_In_ long nSrc) noexcept'],['../classwinstd_1_1variant.html#ac6f0f3d0b3e908436fa99904996ac94a',1,'winstd::variant::operator=(_In_ unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#a8b07463db82883a101faa45b341c1948',1,'winstd::variant::operator=(_In_ long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a1ce513ce87d06ec275316c288d49eb01',1,'winstd::variant::operator=(_In_ unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#abca411f6a72f6a7ecc117596251b442c',1,'winstd::variant::operator=(_In_ double dblSrc) noexcept'],['../classwinstd_1_1variant.html#a3fb364ce88eee71357376600857cb410',1,'winstd::variant::operator=(_In_ CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a4fc3255f55c166f7fd5754c7e809d666',1,'winstd::variant::operator=(_Inout_opt_ IDispatch *pSrc)'],['../classwinstd_1_1variant.html#a875583fd50e4bc7cd922974a593f2e8d',1,'winstd::variant::operator=(_Inout_opt_ IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a9e2f934ee0c118119e7e61ceccb44758',1,'winstd::variant::operator=(_In_ unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#a0693a3896f5b6fbb6ba30befb5da7d0b',1,'winstd::variant::operator=(_In_ short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af3c84072dcf7c6b35a6350d2a2365d32',1,'winstd::variant::operator=(_In_ unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a31b35fbf0b8a3662573a1d8b01289c62',1,'winstd::variant::operator=(_In_ int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af703f9de3fa0554c37d2f41c7dd407b7',1,'winstd::variant::operator=(_In_ unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af4a8867576603379317a452a2faf3f6f',1,'winstd::variant::operator=(_In_ long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a70c3636a264c1d4935de33411b0ea6f2',1,'winstd::variant::operator=(_In_ unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#ad071b63c62d7c29f96ba09ddf79599d3',1,'winstd::variant::operator=(_In_ long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aed34b9e71663c0e54fac63b2493d81c9',1,'winstd::variant::operator=(_In_ float *pfSrc) noexcept'],['../classwinstd_1_1variant.html#a37b2ffd79fe6495c2c9b52556a45354e',1,'winstd::variant::operator=(_In_ float fltSrc) noexcept']]], + ['operator_3d_3d_15',['operator==',['../classwinstd_1_1variant.html#a9e1f77a641cfa4388a1c7d91b95c7a57',1,'winstd::variant::operator==()'],['../classwinstd_1_1cert__context.html#a094988aa40f5ca3148bad44ff568e448',1,'winstd::cert_context::operator==()'],['../classwinstd_1_1handle.html#a308281d8c28014cc205e72f17f01635f',1,'winstd::handle::operator==()']]], + ['operator_3e_16',['operator>',['../classwinstd_1_1variant.html#a3585d11e34e2358a628155e6e6fe3904',1,'winstd::variant::operator>()'],['../classwinstd_1_1handle.html#aa7db4bb5c15f7de56600ba02497c12eb',1,'winstd::handle::operator>()'],['../classwinstd_1_1cert__context.html#af307ba398c117eed2731e532551c7e32',1,'winstd::cert_context::operator>()']]], + ['operator_3e_3d_17',['operator>=',['../classwinstd_1_1variant.html#a29e844f3313d0337e4ba6f50308f4662',1,'winstd::variant::operator>=()'],['../classwinstd_1_1handle.html#a728f743b87f4bf56e184e45950154a2b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a30e6faf35a3d6a0817927a811f55817d',1,'winstd::cert_context::operator>=()']]], + ['operator_5b_5d_18',['operator[]',['../classwinstd_1_1vector__queue.html#ad4e11813ec32d082b68915978f04e6bd',1,'winstd::vector_queue::operator[](_In_ size_type pos)'],['../classwinstd_1_1vector__queue.html#a6479f66d4095286ff7b11aa3374d8ca9',1,'winstd::vector_queue::operator[](_In_ size_type pos) const']]], + ['other_19',['other',['../structwinstd_1_1sanitizing__allocator_1_1rebind.html#a6a195ba8f7b42d8e82304efb08e18679',1,'winstd::sanitizing_allocator::rebind::other()'],['../structwinstd_1_1heap__allocator_1_1rebind.html#a7916519ada01914c23461a64334ff331',1,'winstd::heap_allocator::rebind::other()']]], + ['otp_20',['otp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d',1,'winstd']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 00000000..ce450a29 --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 00000000..da5c5d5a --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['peap_0',['peap',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ab62d9100a672844bff4ac5cbc8de9fce',1,'winstd']]], + ['pointer_1',['pointer',['../classwinstd_1_1vector__queue.html#ada5239d656b712aa314bd725478c0d5b',1,'winstd::vector_queue::pointer()'],['../classwinstd_1_1heap__allocator.html#ae04bc3ff970d32e6a2967072efdb06cd',1,'winstd::heap_allocator::pointer()']]], + ['pop_5fback_2',['pop_back',['../classwinstd_1_1vector__queue.html#a78eb633dd5881a7f9148be7a60215667',1,'winstd::vector_queue']]], + ['pop_5ffront_3',['pop_front',['../classwinstd_1_1vector__queue.html#a2d4893e6bb2a94a8ebb996db46c70136',1,'winstd::vector_queue']]], + ['printf_5flpolestr_4',['PRINTF_LPOLESTR',['../group___win_std_str_format.html#ga1bb2b564655d7b0dee3ec63a0fda2eb5',1,'Common.h']]], + ['printf_5flptstr_5',['PRINTF_LPTSTR',['../group___win_std_str_format.html#ga145b6285cc6fced0a7a61c4368b0bf12',1,'Common.h']]], + ['process_6',['process',['../classwinstd_1_1sec__context.html#a38fc9a1281be19c1c1627dfcd1c0a5a3',1,'winstd::sec_context::process()'],['../classwinstd_1_1process.html',1,'winstd::process']]], + ['process_5finformation_7',['process_information',['../classwinstd_1_1process__information.html#a8b66efb1e5c75ac7aef0ea02b9f9fd39',1,'winstd::process_information::process_information()'],['../classwinstd_1_1process__information.html',1,'winstd::process_information']]], + ['push_5fback_8',['push_back',['../classwinstd_1_1vector__queue.html#a9b3f5cf245ee1d5e76a9a4025909a503',1,'winstd::vector_queue::push_back(_In_ const value_type &v)'],['../classwinstd_1_1vector__queue.html#a9153a18016a1b8b591617a63550459e4',1,'winstd::vector_queue::push_back(_Inout_ value_type &&v)']]], + ['push_5ffront_9',['push_front',['../classwinstd_1_1vector__queue.html#a1dacce0d4c9a919a6bc1dc9d5d5de65a',1,'winstd::vector_queue::push_front(_In_ const value_type &v)'],['../classwinstd_1_1vector__queue.html#a8fc8158fb53487b7f061177f53a29909',1,'winstd::vector_queue::push_front(_Inout_ value_type &&v)']]] +]; diff --git a/search/all_f.html b/search/all_f.html new file mode 100644 index 00000000..59cfe49c --- /dev/null +++ b/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 00000000..4216e52a --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['query_5finterface_0',['query_interface',['../classwinstd_1_1com__obj.html#adaf8aacd14f27142cdb99edff9ac07a9',1,'winstd::com_obj::query_interface(_Out_ _Other **h) const'],['../classwinstd_1_1com__obj.html#adbce2534b586fb53bce5cd2e5508dbb3',1,'winstd::com_obj::query_interface(_Out_ com_obj< _Other > &h) const']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 00000000..8361bcdc --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 00000000..574202bb --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['actctx_5factivator_0',['actctx_activator',['../classwinstd_1_1actctx__activator.html',1,'winstd']]], + ['addrinfo_1',['addrinfo',['../classwinstd_1_1addrinfo.html',1,'winstd']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 00000000..3c668dea --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 00000000..177aa4b5 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['basic_5fstring_5fguid_0',['basic_string_guid',['../classwinstd_1_1basic__string__guid.html',1,'winstd']]], + ['basic_5fstring_5fguid_3c_20char_2c_20std_3a_3achar_5ftraits_3c_20char_20_3e_2c_20std_3a_3aallocator_3c_20char_20_3e_20_3e_1',['basic_string_guid< char, std::char_traits< char >, std::allocator< char > >',['../classwinstd_1_1basic__string__guid.html',1,'winstd']]], + ['basic_5fstring_5fguid_3c_20wchar_5ft_2c_20std_3a_3achar_5ftraits_3c_20wchar_5ft_20_3e_2c_20std_3a_3aallocator_3c_20wchar_5ft_20_3e_20_3e_2',['basic_string_guid< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > >',['../classwinstd_1_1basic__string__guid.html',1,'winstd']]], + ['basic_5fstring_5fmsg_3',['basic_string_msg',['../classwinstd_1_1basic__string__msg.html',1,'winstd']]], + ['basic_5fstring_5fprintf_4',['basic_string_printf',['../classwinstd_1_1basic__string__printf.html',1,'winstd']]], + ['bstr_5',['bstr',['../classwinstd_1_1bstr.html',1,'winstd']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 00000000..868c1727 --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 00000000..0321b4e2 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['cert_5fchain_5fcontext_0',['cert_chain_context',['../classwinstd_1_1cert__chain__context.html',1,'winstd']]], + ['cert_5fcontext_1',['cert_context',['../classwinstd_1_1cert__context.html',1,'winstd']]], + ['cert_5fstore_2',['cert_store',['../classwinstd_1_1cert__store.html',1,'winstd']]], + ['com_5finitializer_3',['com_initializer',['../classwinstd_1_1com__initializer.html',1,'winstd']]], + ['com_5fobj_4',['com_obj',['../classwinstd_1_1com__obj.html',1,'winstd']]], + ['com_5fruntime_5ferror_5',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html',1,'winstd']]], + ['console_5fctrl_5fhandler_6',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html',1,'winstd']]], + ['cotaskmemfree_5fdelete_7',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd']]], + ['credfree_5fdelete_8',['CredFree_delete',['../structwinstd_1_1_cred_free__delete.html',1,'winstd']]], + ['credfree_5fdelete_3c_20_5fty_5b_5d_3e_9',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['critical_5fsection_10',['critical_section',['../classwinstd_1_1critical__section.html',1,'winstd']]], + ['crypt_5fhash_11',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], + ['crypt_5fkey_12',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], + ['crypt_5fprov_13',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 00000000..995d5d23 --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 00000000..6207d082 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['data_5fblob_0',['data_blob',['../classwinstd_1_1data__blob.html',1,'winstd']]], + ['dc_1',['dc',['../classwinstd_1_1dc.html',1,'winstd']]], + ['dc_5fselector_2',['dc_selector',['../classwinstd_1_1dc__selector.html',1,'winstd']]], + ['dplhandle_3',['dplhandle',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20bstr_2c_20null_20_3e_4',['dplhandle< BSTR, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20eappacket_20_2a_2c_20null_20_3e_5',['dplhandle< EapPacket *, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20hcrypthash_2c_20null_20_3e_6',['dplhandle< HCRYPTHASH, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20hcryptkey_2c_20null_20_3e_7',['dplhandle< HCRYPTKEY, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20pccert_5fchain_5fcontext_2c_20null_20_3e_8',['dplhandle< PCCERT_CHAIN_CONTEXT, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20pccert_5fcontext_2c_20null_20_3e_9',['dplhandle< PCCERT_CONTEXT, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], + ['dplhandle_3c_20t_20_2a_2c_20null_20_3e_10',['dplhandle< T *, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 00000000..b61a53a8 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 00000000..858f53fe --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['eap_5fattr_0',['eap_attr',['../classwinstd_1_1eap__attr.html',1,'winstd']]], + ['eap_5fmethod_5finfo_5farray_1',['eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html',1,'winstd']]], + ['eap_5fmethod_5fprop_2',['eap_method_prop',['../classwinstd_1_1eap__method__prop.html',1,'winstd']]], + ['eap_5fpacket_3',['eap_packet',['../classwinstd_1_1eap__packet.html',1,'winstd']]], + ['eap_5fruntime_5ferror_4',['eap_runtime_error',['../classwinstd_1_1eap__runtime__error.html',1,'winstd']]], + ['eaphostpeerfreeeaperror_5fdelete_5',['EapHostPeerFreeEapError_delete',['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html',1,'winstd']]], + ['eaphostpeerfreeerrormemory_5fdelete_6',['EapHostPeerFreeErrorMemory_delete',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html',1,'winstd']]], + ['eaphostpeerfreememory_5fdelete_7',['EapHostPeerFreeMemory_delete',['../structwinstd_1_1_eap_host_peer_free_memory__delete.html',1,'winstd']]], + ['eaphostpeerfreeruntimememory_5fdelete_8',['EapHostPeerFreeRuntimeMemory_delete',['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html',1,'winstd']]], + ['event_9',['event',['../classwinstd_1_1event.html',1,'winstd']]], + ['event_5fdata_10',['event_data',['../classwinstd_1_1event__data.html',1,'winstd']]], + ['event_5ffn_5fauto_11',['event_fn_auto',['../classwinstd_1_1event__fn__auto.html',1,'winstd']]], + ['event_5ffn_5fauto_5fret_12',['event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html',1,'winstd']]], + ['event_5fprovider_13',['event_provider',['../classwinstd_1_1event__provider.html',1,'winstd']]], + ['event_5frec_14',['event_rec',['../classwinstd_1_1event__rec.html',1,'winstd']]], + ['event_5fsession_15',['event_session',['../classwinstd_1_1event__session.html',1,'winstd']]], + ['event_5ftrace_16',['event_trace',['../classwinstd_1_1event__trace.html',1,'winstd']]], + ['event_5ftrace_5fenabler_17',['event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html',1,'winstd']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 00000000..004dd4b7 --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 00000000..a2f1cf6b --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_0',['file',['../classwinstd_1_1file.html',1,'winstd']]], + ['find_5ffile_1',['find_file',['../classwinstd_1_1find__file.html',1,'winstd']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 00000000..21bf0198 --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 00000000..47f4473f --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gdi_5fhandle_0',['gdi_handle',['../classwinstd_1_1gdi__handle.html',1,'winstd']]] +]; diff --git a/search/classes_7.html b/search/classes_7.html new file mode 100644 index 00000000..0e944515 --- /dev/null +++ b/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 00000000..cd242867 --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['handle_0',['handle',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20bstr_2c_20inval_20_3e_1',['handle< BSTR, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20eappacket_20_2a_2c_20inval_20_3e_2',['handle< EapPacket *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20handle_2c_20invalid_20_3e_3',['handle< HANDLE, INVALID >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20handle_2c_20invalid_5fhandle_5fvalue_20_3e_4',['handle< HANDLE, INVALID_HANDLE_VALUE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20handle_2c_20null_20_3e_5',['handle< HANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcertstore_2c_20null_20_3e_6',['handle< HCERTSTORE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcrypthash_2c_20inval_20_3e_7',['handle< HCRYPTHASH, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcryptkey_2c_20inval_20_3e_8',['handle< HCRYPTKEY, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hcryptprov_2c_20null_20_3e_9',['handle< HCRYPTPROV, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hdc_2c_20null_20_3e_10',['handle< HDC, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hdevinfo_2c_20invalid_5fhandle_5fvalue_20_3e_11',['handle< HDEVINFO, INVALID_HANDLE_VALUE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hkey_2c_20null_20_3e_12',['handle< HKEY, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hmodule_2c_20null_20_3e_13',['handle< HMODULE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20lpvoid_2c_20null_20_3e_14',['handle< LPVOID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20paddrinfot_2c_20null_20_3e_15',['handle< PADDRINFOT, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fchain_5fcontext_2c_20inval_20_3e_16',['handle< PCCERT_CHAIN_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fcontext_2c_20inval_20_3e_17',['handle< PCCERT_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pcredhandle_2c_20null_20_3e_18',['handle< PCredHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pctxthandle_2c_20null_20_3e_19',['handle< PCtxtHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20psid_2c_20null_20_3e_20',['handle< PSID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20reghandle_2c_20null_20_3e_21',['handle< REGHANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_20_2a_2c_20inval_20_3e_22',['handle< T *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_2c_20null_20_3e_23',['handle< T, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_200_20_3e_24',['handle< TRACEHANDLE, 0 >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_20invalid_5fprocesstrace_5fhandle_20_3e_25',['handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['heap_26',['heap',['../classwinstd_1_1heap.html',1,'winstd']]], + ['heap_5fallocator_27',['heap_allocator',['../classwinstd_1_1heap__allocator.html',1,'winstd']]] +]; diff --git a/search/classes_8.html b/search/classes_8.html new file mode 100644 index 00000000..4dfdb1c4 --- /dev/null +++ b/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 00000000..6e503681 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['library_0',['library',['../classwinstd_1_1library.html',1,'winstd']]], + ['localfree_5fdelete_1',['LocalFree_delete',['../structwinstd_1_1_local_free__delete.html',1,'winstd']]], + ['localfree_5fdelete_3c_20_5fty_5b_5d_3e_2',['LocalFree_delete< _Ty[]>',['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]] +]; diff --git a/search/classes_9.html b/search/classes_9.html new file mode 100644 index 00000000..1cd66a9b --- /dev/null +++ b/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 00000000..a739449a --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['num_5fruntime_5ferror_0',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20dword_20_3e_1',['num_runtime_error< DWORD >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20hresult_20_3e_2',['num_runtime_error< HRESULT >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20int_20_3e_3',['num_runtime_error< int >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20security_5fstatus_20_3e_4',['num_runtime_error< SECURITY_STATUS >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]] +]; diff --git a/search/classes_a.html b/search/classes_a.html new file mode 100644 index 00000000..f4608c0b --- /dev/null +++ b/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 00000000..f6f69259 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['process_0',['process',['../classwinstd_1_1process.html',1,'winstd']]], + ['process_5finformation_1',['process_information',['../classwinstd_1_1process__information.html',1,'winstd']]] +]; diff --git a/search/classes_b.html b/search/classes_b.html new file mode 100644 index 00000000..d9949ca9 --- /dev/null +++ b/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 00000000..3be41f51 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rebind_0',['rebind',['../structwinstd_1_1heap__allocator_1_1rebind.html',1,'winstd::heap_allocator< _Ty >::rebind< _Other >'],['../structwinstd_1_1sanitizing__allocator_1_1rebind.html',1,'winstd::sanitizing_allocator< _Ty >::rebind< _Other >']]], + ['ref_5funique_5fptr_1',['ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html',1,'winstd']]], + ['ref_5funique_5fptr_3c_20_5fty_5b_5d_2c_20_5fdx_20_3e_2',['ref_unique_ptr< _Ty[], _Dx >',['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html',1,'winstd']]], + ['reg_5fkey_3',['reg_key',['../classwinstd_1_1reg__key.html',1,'winstd']]] +]; diff --git a/search/classes_c.html b/search/classes_c.html new file mode 100644 index 00000000..026513b6 --- /dev/null +++ b/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 00000000..df760b41 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['sanitizing_5fallocator_0',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html',1,'winstd']]], + ['sanitizing_5fblob_1',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html',1,'winstd']]], + ['sec_5fbuffer_5fdesc_2',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html',1,'winstd']]], + ['sec_5fcontext_3',['sec_context',['../classwinstd_1_1sec__context.html',1,'winstd']]], + ['sec_5fcredentials_4',['sec_credentials',['../classwinstd_1_1sec__credentials.html',1,'winstd']]], + ['sec_5fruntime_5ferror_5',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html',1,'winstd']]], + ['security_5fid_6',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], + ['setup_5fdevice_5finfo_5flist_7',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], + ['setup_5fdriver_5finfo_5flist_5fbuilder_8',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd']]], + ['string_5fguid_9',['string_guid',['../classwinstd_1_1string__guid.html',1,'winstd']]] +]; diff --git a/search/classes_d.html b/search/classes_d.html new file mode 100644 index 00000000..ddb9256b --- /dev/null +++ b/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 00000000..acbf9028 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['user_5fimpersonator_0',['user_impersonator',['../classwinstd_1_1user__impersonator.html',1,'winstd']]] +]; diff --git a/search/classes_e.html b/search/classes_e.html new file mode 100644 index 00000000..68ae15ef --- /dev/null +++ b/search/classes_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 00000000..d8b2e308 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['variant_0',['variant',['../classwinstd_1_1variant.html',1,'winstd']]], + ['vector_5fqueue_1',['vector_queue',['../classwinstd_1_1vector__queue.html',1,'winstd']]], + ['vmemory_2',['vmemory',['../classwinstd_1_1vmemory.html',1,'winstd']]] +]; diff --git a/search/classes_f.html b/search/classes_f.html new file mode 100644 index 00000000..73b281bd --- /dev/null +++ b/search/classes_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 00000000..06e6b274 --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['win_5fhandle_0',['win_handle',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fhandle_3c_20invalid_5fhandle_5fvalue_20_3e_1',['win_handle< INVALID_HANDLE_VALUE >',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fhandle_3c_20null_20_3e_2',['win_handle< NULL >',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fruntime_5ferror_3',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html',1,'winstd']]], + ['window_5fdc_4',['window_dc',['../classwinstd_1_1window__dc.html',1,'winstd']]], + ['wintrust_5',['wintrust',['../classwinstd_1_1wintrust.html',1,'winstd']]], + ['wlan_5fhandle_6',['wlan_handle',['../classwinstd_1_1wlan__handle.html',1,'winstd']]], + ['wlanfreememory_5fdelete_7',['WlanFreeMemory_delete',['../structwinstd_1_1_wlan_free_memory__delete.html',1,'winstd']]], + ['wlanfreememory_5fdelete_3c_20_5fty_5b_5d_3e_8',['WlanFreeMemory_delete< _Ty[]>',['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['ws2_5fruntime_5ferror_9',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html',1,'winstd']]], + ['wstring_5fguid_10',['wstring_guid',['../classwinstd_1_1wstring__guid.html',1,'winstd']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 00000000..a933eea1 --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/enums_0.html b/search/enums_0.html new file mode 100644 index 00000000..eb1f873f --- /dev/null +++ b/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 00000000..53803599 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['eap_5ftype_5ft_0',['eap_type_t',['../group___win_std_e_a_p_a_p_i.html#ga50f5584ca708165f43cec42c42243315',1,'winstd']]] +]; diff --git a/search/enumvalues_0.html b/search/enumvalues_0.html new file mode 100644 index 00000000..7a520ff8 --- /dev/null +++ b/search/enumvalues_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 00000000..4286c539 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['end_0',['end',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a7f021a1415b86f2d013b2618fb31ae53',1,'winstd']]] +]; diff --git a/search/enumvalues_1.html b/search/enumvalues_1.html new file mode 100644 index 00000000..d2e2ce04 --- /dev/null +++ b/search/enumvalues_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 00000000..8f77bcd9 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gtc_0',['gtc',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a3761e7920c97542314b1aa50434f9293',1,'winstd']]], + ['gtcp_1',['gtcp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a811f41353a6e1e0ecf7a03308c4f8e0e',1,'winstd']]] +]; diff --git a/search/enumvalues_2.html b/search/enumvalues_2.html new file mode 100644 index 00000000..9ecc4d3c --- /dev/null +++ b/search/enumvalues_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 00000000..7a9df63e --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['identity_0',['identity',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aff483d1ff591898a9942916050d2ca3f',1,'winstd']]] +]; diff --git a/search/enumvalues_3.html b/search/enumvalues_3.html new file mode 100644 index 00000000..ceb76af1 --- /dev/null +++ b/search/enumvalues_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 00000000..99fd0d0c --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['legacy_5fmschapv2_0',['legacy_mschapv2',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315adfe86ce1b68c3cdefe90e35904fc744a',1,'winstd']]], + ['legacy_5fpap_1',['legacy_pap',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a262032c7bb2ef8f08d5b85ee63f79eff',1,'winstd']]] +]; diff --git a/search/enumvalues_4.html b/search/enumvalues_4.html new file mode 100644 index 00000000..940d7784 --- /dev/null +++ b/search/enumvalues_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 00000000..172ff4f1 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['md5_5fchallenge_0',['md5_challenge',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a1f61e547b81232a658f0704e85488a6c',1,'winstd']]], + ['ms_5fauth_5ftlv_1',['ms_auth_tlv',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ae19141eb8aa04ffb76d616409efcdf03',1,'winstd']]], + ['mschapv2_2',['mschapv2',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315af579ec4460aed7126de9ed539845a0f4',1,'winstd']]] +]; diff --git a/search/enumvalues_5.html b/search/enumvalues_5.html new file mode 100644 index 00000000..f52f5703 --- /dev/null +++ b/search/enumvalues_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 00000000..dd7f48a5 --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['nak_0',['nak',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa755bc3c9689ab5eaedd25afc4a79b9f',1,'winstd']]], + ['noneap_5fend_1',['noneap_end',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa93b0d36fa0eb07db651bb830470be12',1,'winstd']]], + ['noneap_5fstart_2',['noneap_start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a8fb40a36c92da4be50f5052602e6fcf4',1,'winstd']]], + ['notification_3',['notification',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a0cfd653d5d3e1e9fdbb644523d77971d',1,'winstd']]] +]; diff --git a/search/enumvalues_6.html b/search/enumvalues_6.html new file mode 100644 index 00000000..dc9659da --- /dev/null +++ b/search/enumvalues_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 00000000..421a1049 --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['otp_0',['otp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d',1,'winstd']]] +]; diff --git a/search/enumvalues_7.html b/search/enumvalues_7.html new file mode 100644 index 00000000..195ddfe6 --- /dev/null +++ b/search/enumvalues_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 00000000..f2f4bdf1 --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['peap_0',['peap',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ab62d9100a672844bff4ac5cbc8de9fce',1,'winstd']]] +]; diff --git a/search/enumvalues_8.html b/search/enumvalues_8.html new file mode 100644 index 00000000..1238a8c2 --- /dev/null +++ b/search/enumvalues_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js new file mode 100644 index 00000000..1e6bab3b --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['start_0',['start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aea2b2676c28c0db26d39331a336c6b92',1,'winstd']]] +]; diff --git a/search/enumvalues_9.html b/search/enumvalues_9.html new file mode 100644 index 00000000..644bf37c --- /dev/null +++ b/search/enumvalues_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 00000000..4adf9641 --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tls_0',['tls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa60aeea3d4cdbb5049fc37164644bb34',1,'winstd']]], + ['ttls_1',['ttls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315accd905a8bbc449980aa7f26fcbd206e2',1,'winstd']]] +]; diff --git a/search/enumvalues_a.html b/search/enumvalues_a.html new file mode 100644 index 00000000..83a47c88 --- /dev/null +++ b/search/enumvalues_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_a.js b/search/enumvalues_a.js new file mode 100644 index 00000000..b7840f83 --- /dev/null +++ b/search/enumvalues_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['undefined_0',['undefined',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a5e543256c480ac577d30f76f9120eb74',1,'winstd']]] +]; diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 00000000..2d2d9501 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 00000000..5b8ebe4c --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['abs_0',['abs',['../classwinstd_1_1vector__queue.html#a23b153ce1fb4a6f08c3970a3ba2dd077',1,'winstd::vector_queue']]], + ['acquire_1',['acquire',['../classwinstd_1_1sec__credentials.html#ad78873844214566e36c381c05ac476f9',1,'winstd::sec_credentials']]], + ['actctx_5factivator_2',['actctx_activator',['../classwinstd_1_1actctx__activator.html#a75dc507148041bd81b3376c3a22b3b8f',1,'winstd::actctx_activator']]], + ['alloc_3',['alloc',['../classwinstd_1_1vmemory.html#a906c9c53187278e9895e4f875b897812',1,'winstd::vmemory']]], + ['allocate_4',['allocate',['../classwinstd_1_1heap__allocator.html#a9caa7c3f603225c8aa1f4c8aaf7bb81e',1,'winstd::heap_allocator']]], + ['at_5',['at',['../classwinstd_1_1vector__queue.html#ad2253155361c76a095db206529d49150',1,'winstd::vector_queue::at(_In_ size_type pos)'],['../classwinstd_1_1vector__queue.html#aace80530d4f89876c1bdee67d9b5ac17',1,'winstd::vector_queue::at(_In_ size_type pos) const']]], + ['at_5fabs_6',['at_abs',['../classwinstd_1_1vector__queue.html#ad942d55ed484af734cb642f881d6fdf1',1,'winstd::vector_queue::at_abs(_In_ size_type pos)'],['../classwinstd_1_1vector__queue.html#acc6ab5cb1cf6caa1d7b2b1f450a15b6f',1,'winstd::vector_queue::at_abs(_In_ size_type pos) const']]], + ['attach_7',['attach',['../classwinstd_1_1handle.html#a98d09f9c2970890a5c83a0c2aedd3a30',1,'winstd::handle::attach()'],['../classwinstd_1_1event__session.html#a38ff3d6776690f9b6df8d14910952a96',1,'winstd::event_session::attach()'],['../classwinstd_1_1vmemory.html#a478cde9d3bf27d1c438da8726526eaf3',1,'winstd::vmemory::attach()']]], + ['attach_5fduplicated_8',['attach_duplicated',['../classwinstd_1_1dplhandle.html#a4812d286ff9f34df62933f77d2c8b659',1,'winstd::dplhandle']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 00000000..3b96b900 --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 00000000..67388444 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['back_0',['back',['../classwinstd_1_1vector__queue.html#a812e33986336c84659e62ee42c1dca23',1,'winstd::vector_queue::back()'],['../classwinstd_1_1vector__queue.html#a2da766f97942d850bf7295a26edd4ab6',1,'winstd::vector_queue::back() const']]], + ['basic_5fstring_5fguid_1',['basic_string_guid',['../classwinstd_1_1basic__string__guid.html#a924b921415b69fcc1ff5fab54be10f19',1,'winstd::basic_string_guid']]], + ['basic_5fstring_5fmsg_2',['basic_string_msg',['../classwinstd_1_1basic__string__msg.html#af6b6d09fc171d0086315f374d03266b1',1,'winstd::basic_string_msg::basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format,...)'],['../classwinstd_1_1basic__string__msg.html#acd069536c1a980778368385f0aabd88c',1,'winstd::basic_string_msg::basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a30932569a07f12c7b5a282502dd39eec',1,'winstd::basic_string_msg::basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a1d0b2d1dd06ba8577341c0986934fd4d',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#acad49c7a6a6ebbb543c3fcbc0977dc97',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a83b3f10344f634f66944ea1d050b1e1f',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a61d6fe3020f28c502fe18762de7a7f2c',1,'winstd::basic_string_msg::basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)']]], + ['basic_5fstring_5fprintf_3',['basic_string_printf',['../classwinstd_1_1basic__string__printf.html#ab394fd3438a22f02baf47f41ba7f1020',1,'winstd::basic_string_printf::basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format,...)'],['../classwinstd_1_1basic__string__printf.html#adad524e2913883cce72f635b90d2d820',1,'winstd::basic_string_printf::basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html#adda133198791d97d15f042ccd79bf23d',1,'winstd::basic_string_printf::basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID,...)']]], + ['bstr_4',['bstr',['../classwinstd_1_1bstr.html#a9fd6b7039c624f1265c7787424f65843',1,'winstd::bstr::bstr(_In_ LPCOLESTR src) noexcept'],['../classwinstd_1_1bstr.html#af5f7b0ad4e6e6cc9d0ccd3673dd3b721',1,'winstd::bstr::bstr(_In_ LPCOLESTR src, _In_ UINT len) noexcept'],['../classwinstd_1_1bstr.html#a47dbb28d3cd833edbd242d328b86ecde',1,'winstd::bstr::bstr(_In_ const std::basic_string< wchar_t, _Traits, _Ax > &src) noexcept']]] +]; diff --git a/search/functions_10.html b/search/functions_10.html new file mode 100644 index 00000000..f0fe4893 --- /dev/null +++ b/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 00000000..a79d0852 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['sanitizing_5fallocator_0',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html#a894a7e05b01fdc0adccedc2abdadb066',1,'winstd::sanitizing_allocator::sanitizing_allocator(_In_ const sanitizing_allocator< _Ty > &_Othr)'],['../classwinstd_1_1sanitizing__allocator.html#aee5365a5f25c2682dd5c5a2f8c9ac9c2',1,'winstd::sanitizing_allocator::sanitizing_allocator(_In_ const sanitizing_allocator< _Other > &_Othr) noexcept'],['../classwinstd_1_1sanitizing__allocator.html#af89279ba111029e2880c2a43189b4d4c',1,'winstd::sanitizing_allocator::sanitizing_allocator() noexcept']]], + ['sanitizing_5fblob_1',['sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#a3fcdafa229e9a9f4c176b60fd6555685',1,'winstd::sanitizing_blob']]], + ['sec_5fbuffer_5fdesc_2',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#aa4922b79094e4c38a04fbbecdd97580c',1,'winstd::sec_buffer_desc']]], + ['sec_5fcontext_3',['sec_context',['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html#a504f0f4cf6abf3edb868b35d588fb597',1,'winstd::sec_context::sec_context(_Inout_ sec_context &&h) noexcept']]], + ['sec_5fcredentials_4',['sec_credentials',['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html#af68308c08ff6c3ce1d0f6f9f3ca57dd2',1,'winstd::sec_credentials::sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires)'],['../classwinstd_1_1sec__credentials.html#a1a657671cd68f72e4ff5da496235269f',1,'winstd::sec_credentials::sec_credentials(_Inout_ sec_credentials &&h) noexcept']]], + ['sec_5fruntime_5ferror_5',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#a9ad2dce38cb8a47fdfad72afd6ff3ff6',1,'winstd::sec_runtime_error::sec_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#a208aaaed379ef884d20c48a798128df4',1,'winstd::sec_runtime_error::sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)']]], + ['set_5fextended_5fdata_6',['set_extended_data',['../classwinstd_1_1event__rec.html#af9ae6b77b79cbc687fdcd7b36cabee29',1,'winstd::event_rec']]], + ['set_5fextended_5fdata_5finternal_7',['set_extended_data_internal',['../classwinstd_1_1event__rec.html#a29091b5837f4501a806ba4a8255f0e22',1,'winstd::event_rec']]], + ['set_5fuser_5fdata_8',['set_user_data',['../classwinstd_1_1event__rec.html#a8bcfb3795e3f5be336aaf2c88e0fa596',1,'winstd::event_rec']]], + ['set_5fuser_5fdata_5finternal_9',['set_user_data_internal',['../classwinstd_1_1event__rec.html#ad4e256f057d859dbca215fca698684e5',1,'winstd::event_rec']]], + ['setup_5fdriver_5finfo_5flist_5fbuilder_10',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a457646c5448b031b96f9067d42ca8b05',1,'winstd::setup_driver_info_list_builder']]], + ['size_11',['size',['../classwinstd_1_1vector__queue.html#a95206dba2b4f147848dfa56f4d5f577c',1,'winstd::vector_queue::size()'],['../classwinstd_1_1data__blob.html#ab2ad06e271e8503d7158408773054d23',1,'winstd::data_blob::size()'],['../classwinstd_1_1eap__packet.html#a2534ad15ae47e2d46354d9f535f4031f',1,'winstd::eap_packet::size()']]], + ['status_12',['status',['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()'],['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()']]], + ['string_5fguid_13',['string_guid',['../classwinstd_1_1string__guid.html#ad23b6730ff111798ae6809ed4d3974ce',1,'winstd::string_guid']]] +]; diff --git a/search/functions_11.html b/search/functions_11.html new file mode 100644 index 00000000..fb95b058 --- /dev/null +++ b/search/functions_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 00000000..ca7bd790 --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tail_0',['tail',['../classwinstd_1_1vector__queue.html#af4e58e356f2d991040d2e49ba49a3196',1,'winstd::vector_queue']]], + ['type_1',['type',['../classwinstd_1_1eap__runtime__error.html#a0562abef7454f9a6f97902d4260b7f50',1,'winstd::eap_runtime_error']]] +]; diff --git a/search/functions_12.html b/search/functions_12.html new file mode 100644 index 00000000..292fd4a7 --- /dev/null +++ b/search/functions_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 00000000..35ddb65d --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['user_5fimpersonator_0',['user_impersonator',['../classwinstd_1_1user__impersonator.html#a7cdfb136879ff8fcd61e5ef2a3976082',1,'winstd::user_impersonator']]] +]; diff --git a/search/functions_13.html b/search/functions_13.html new file mode 100644 index 00000000..5fcdf9c9 --- /dev/null +++ b/search/functions_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 00000000..9de29586 --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['variant_0',['variant',['../classwinstd_1_1variant.html#ad8a47c76dcd37b9a869320994d9e58f5',1,'winstd::variant::variant(_In_ const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#af1956163d01e705a8514ed3314cf5e69',1,'winstd::variant::variant(_In_ const SAFEARRAY *pSrc)'],['../classwinstd_1_1variant.html#ae952c6fac0c8e1de3d7d5512e2573f7b',1,'winstd::variant::variant(_In_opt_ IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a26c20b800a261cff5fed1fe72848c29c',1,'winstd::variant::variant(_In_opt_ IDispatch *pSrc)'],['../classwinstd_1_1variant.html#aabf5f5e5d1147ab39e4df78159d3df2a',1,'winstd::variant::variant(_In_z_ BSTR bstr) noexcept'],['../classwinstd_1_1variant.html#a2a90318b634577b6d4929bf67131ef7a',1,'winstd::variant::variant(_In_z_ LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ae5a7432031f89195062550805bc18a0a',1,'winstd::variant::variant(_In_ CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a99560b48d48a24f978fb5bfbf64396ce',1,'winstd::variant::variant(_In_ unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a2d606237c1a891909b708a32b3bfdbf9',1,'winstd::variant::variant(_In_ long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a5a5acd6cff4a9f193f8582eab6ce673d',1,'winstd::variant::variant(_In_ double dblSrc, _In_ VARTYPE vtSrc=VT_R8) noexcept'],['../classwinstd_1_1variant.html#a52872aa5ff0279eb2d12a85d42e67fc4',1,'winstd::variant::variant(_In_ float fltSrc) noexcept'],['../classwinstd_1_1variant.html#a5cca53d17432a3d40c5ccb8569dc31cf',1,'winstd::variant::variant(_In_ long nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#ab5b8d68675d23082008f57e9439c3a19',1,'winstd::variant::variant() noexcept'],['../classwinstd_1_1variant.html#adbe89a8e13dd00157ab1fdd90b1b67ac',1,'winstd::variant::variant(_Inout_ VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#af0b2b43f646cc3efe14db8b9d8a4c1d6',1,'winstd::variant::variant(_In_ bool bSrc) noexcept'],['../classwinstd_1_1variant.html#ae0a73f84187ad60f32a2001ce1ba1f8d',1,'winstd::variant::variant(_In_ char cSrc) noexcept'],['../classwinstd_1_1variant.html#a500314b7d65deff04c1339a3bfbaf40c',1,'winstd::variant::variant(_In_ unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a90a9a4e578a9b1d20acbc456a8b666b7',1,'winstd::variant::variant(_In_ short nSrc) noexcept'],['../classwinstd_1_1variant.html#a91e9fc562b5cc4cd27c1c9a682eb9085',1,'winstd::variant::variant(_In_ unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a3dd035fa775b6f75c446b646d65174c7',1,'winstd::variant::variant(_In_ int nSrc, _In_ VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a6500b19e9fa43b5c0605f549d15054d2',1,'winstd::variant::variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc=VT_UI4) noexcept'],['../classwinstd_1_1variant.html#a57cd72d5caf58774a4737708b4432d4d',1,'winstd::variant::variant(_In_ unsigned long nSrc) noexcept']]], + ['vector_5fqueue_1',['vector_queue',['../classwinstd_1_1vector__queue.html#aa2007fcdb18f07d8c045dbfd6248bd6f',1,'winstd::vector_queue::vector_queue(_In_ size_type size_max)'],['../classwinstd_1_1vector__queue.html#ad0cf4d22f3ee0e3aa8283a0fa96a4e34',1,'winstd::vector_queue::vector_queue(_In_ const vector_queue< value_type > &other)'],['../classwinstd_1_1vector__queue.html#af06a86fa0fae86dca1578ea6d14c81e2',1,'winstd::vector_queue::vector_queue(_Inout_ vector_queue< value_type > &&other)']]], + ['vmemory_2',['vmemory',['../classwinstd_1_1vmemory.html#ae49dd901cfb090ed736510e68a39be7d',1,'winstd::vmemory::vmemory() noexcept'],['../classwinstd_1_1vmemory.html#ae143065c11b0cb29b92322b0ba13fdc4',1,'winstd::vmemory::vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept'],['../classwinstd_1_1vmemory.html#a211c168314e7850e657a4f9b08c1aaad',1,'winstd::vmemory::vmemory(_Inout_ vmemory &&h) noexcept']]] +]; diff --git a/search/functions_14.html b/search/functions_14.html new file mode 100644 index 00000000..82c70b0a --- /dev/null +++ b/search/functions_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_14.js b/search/functions_14.js new file mode 100644 index 00000000..43b76e94 --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['win_5fruntime_5ferror_0',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html#a5380b16bc57585a6ff4c83d6bbae994e',1,'winstd::win_runtime_error::win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#a2ce6109914601a3a3266a517919bce39',1,'winstd::win_runtime_error::win_runtime_error(_In_ const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a71a13f0228c88c55415926b55450360d',1,'winstd::win_runtime_error::win_runtime_error(_In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#a7973d300dddb3e27febd68605ebbcb23',1,'winstd::win_runtime_error::win_runtime_error(_In_ error_type num, _In_ const std::string &msg)']]], + ['wintrust_1',['wintrust',['../classwinstd_1_1wintrust.html#a8d9d451a4d94eec56406a64d73970860',1,'winstd::wintrust']]], + ['wlanfreememory_5fdelete_2',['WlanFreeMemory_delete',['../structwinstd_1_1_wlan_free_memory__delete.html#a3e356b7c4a09f33100e3e35a71d1d94e',1,'winstd::WlanFreeMemory_delete::WlanFreeMemory_delete()'],['../structwinstd_1_1_wlan_free_memory__delete.html#ab30e2946800931f214e9a55a527fe546',1,'winstd::WlanFreeMemory_delete::WlanFreeMemory_delete(const WlanFreeMemory_delete< _Ty2 > &)'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a39d42f9429ac337513cd2cad1b5c8fdf',1,'winstd::WlanFreeMemory_delete< _Ty[]>::WlanFreeMemory_delete()']]], + ['write_3',['write',['../classwinstd_1_1event__provider.html#a9b12be1ca8b3745f24337d5b55cbdc17',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount=0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData=NULL)'],['../classwinstd_1_1event__provider.html#abaea0a0f7e453d7692796be0f126bf29',1,'winstd::event_provider::write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String,...)'],['../classwinstd_1_1event__provider.html#af96d250a02b391a86e159080776f7bc5',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)'],['../classwinstd_1_1event__provider.html#ab0661bffe0af61100ac169b0715e9710',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1,...)'],['../classwinstd_1_1event__provider.html#aa4a6c28f3e3a2bfbbdcc0f27053908d0',1,'winstd::event_provider::write(_In_ PCEVENT_DESCRIPTOR EventDescriptor)']]], + ['ws2_5fruntime_5ferror_4',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html#a7ee44663b58f4f841e561f18f745d6d5',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#ad2d3e6773809e8aa023ec94aae2b856e',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)'],['../classwinstd_1_1ws2__runtime__error.html#a38eb9c2360b74a836c325d31d61eaeee',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_ const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#abec9bd20aad7633c83ade946fc9c907f',1,'winstd::ws2_runtime_error::ws2_runtime_error(_In_opt_z_ const char *msg=nullptr)']]], + ['wstring_5fguid_5',['wstring_guid',['../classwinstd_1_1wstring__guid.html#a522b4a339dc6979bc2bc8064622d9256',1,'winstd::wstring_guid']]] +]; diff --git a/search/functions_15.html b/search/functions_15.html new file mode 100644 index 00000000..050aa251 --- /dev/null +++ b/search/functions_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_15.js b/search/functions_15.js new file mode 100644 index 00000000..15239aa9 --- /dev/null +++ b/search/functions_15.js @@ -0,0 +1,51 @@ +var searchData= +[ + ['_7eactctx_5factivator_0',['~actctx_activator',['../classwinstd_1_1actctx__activator.html#a9487820e29c331362b1ecd36de3b692a',1,'winstd::actctx_activator']]], + ['_7eaddrinfo_1',['~addrinfo',['../classwinstd_1_1addrinfo.html#aaa7a9365cde194bb9f54a96ea04f9883',1,'winstd::addrinfo']]], + ['_7ebstr_2',['~bstr',['../classwinstd_1_1bstr.html#a317d3e0783e7d3de7cc6516964ea3f5e',1,'winstd::bstr']]], + ['_7ecert_5fchain_5fcontext_3',['~cert_chain_context',['../classwinstd_1_1cert__chain__context.html#a9f8b8604ea5766ffa59726b46e210eb3',1,'winstd::cert_chain_context']]], + ['_7ecert_5fcontext_4',['~cert_context',['../classwinstd_1_1cert__context.html#affa4b97554e6676d392301b5928130fd',1,'winstd::cert_context']]], + ['_7ecert_5fstore_5',['~cert_store',['../classwinstd_1_1cert__store.html#a80783d444ae3555aea01f959c9c01405',1,'winstd::cert_store']]], + ['_7ecom_5finitializer_6',['~com_initializer',['../classwinstd_1_1com__initializer.html#ad53a7697dfaf83d4832f8a57a4cf00f6',1,'winstd::com_initializer']]], + ['_7ecom_5fobj_7',['~com_obj',['../classwinstd_1_1com__obj.html#a91383e6e26266b0d3803c8594b8c5149',1,'winstd::com_obj']]], + ['_7econsole_5fctrl_5fhandler_8',['~console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a2cba550aa8c659f63386ed6322ccbd6e',1,'winstd::console_ctrl_handler']]], + ['_7ecritical_5fsection_9',['~critical_section',['../classwinstd_1_1critical__section.html#a67af5836304f27084f296c0cc17d7d20',1,'winstd::critical_section']]], + ['_7ecrypt_5fhash_10',['~crypt_hash',['../classwinstd_1_1crypt__hash.html#a7c688405c14799681018e0dfc8b51264',1,'winstd::crypt_hash']]], + ['_7ecrypt_5fkey_11',['~crypt_key',['../classwinstd_1_1crypt__key.html#a396a4af75fd99c896757679a890e6e29',1,'winstd::crypt_key']]], + ['_7ecrypt_5fprov_12',['~crypt_prov',['../classwinstd_1_1crypt__prov.html#a91c1f3d10b03ef1b5d1e1da029060289',1,'winstd::crypt_prov']]], + ['_7edata_5fblob_13',['~data_blob',['../classwinstd_1_1data__blob.html#a1c79df4fa5413536c745258d09e69599',1,'winstd::data_blob']]], + ['_7edc_14',['~dc',['../classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c',1,'winstd::dc']]], + ['_7edc_5fselector_15',['~dc_selector',['../classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd',1,'winstd::dc_selector']]], + ['_7eeap_5fattr_16',['~eap_attr',['../classwinstd_1_1eap__attr.html#a085d6ade88a42ba69cf128a97b7c9b0d',1,'winstd::eap_attr']]], + ['_7eeap_5fmethod_5finfo_5farray_17',['~eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html#a6870644e66359b0448094a193ef0b4b8',1,'winstd::eap_method_info_array']]], + ['_7eeap_5fpacket_18',['~eap_packet',['../classwinstd_1_1eap__packet.html#a6abed7e1c0460fd6e2ae5d832fbd7493',1,'winstd::eap_packet']]], + ['_7eevent_5ffn_5fauto_19',['~event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a764a83cffe2ed2ae41e9d973073d5cb0',1,'winstd::event_fn_auto']]], + ['_7eevent_5ffn_5fauto_5fret_20',['~event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a1bd1de5df10856a08187ad112992979f',1,'winstd::event_fn_auto_ret']]], + ['_7eevent_5fprovider_21',['~event_provider',['../classwinstd_1_1event__provider.html#ab219ea75734671f98fabbf41485e558b',1,'winstd::event_provider']]], + ['_7eevent_5frec_22',['~event_rec',['../classwinstd_1_1event__rec.html#a2968045a00cf5994ffc2db1a7eb38601',1,'winstd::event_rec']]], + ['_7eevent_5fsession_23',['~event_session',['../classwinstd_1_1event__session.html#a31fe172bd0ce3fb712924de08445476a',1,'winstd::event_session']]], + ['_7eevent_5ftrace_24',['~event_trace',['../classwinstd_1_1event__trace.html#ab8800a2c88f1b96d5134e7eac24ac582',1,'winstd::event_trace']]], + ['_7eevent_5ftrace_5fenabler_25',['~event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a6be72a0a5dc8da579e26b74a1ac24a4f',1,'winstd::event_trace_enabler']]], + ['_7efind_5ffile_26',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], + ['_7egdi_5fhandle_27',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], + ['_7eheap_28',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], + ['_7elibrary_29',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], + ['_7eprocess_5finformation_30',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_31',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], + ['_7ereg_5fkey_32',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esanitizing_5fblob_33',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esec_5fbuffer_5fdesc_34',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_35',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_36',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fid_37',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_38',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_39',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], + ['_7euser_5fimpersonator_40',['~user_impersonator',['../classwinstd_1_1user__impersonator.html#a986ca1cabf89b994f1634feb911c26a6',1,'winstd::user_impersonator']]], + ['_7evariant_41',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], + ['_7evector_5fqueue_42',['~vector_queue',['../classwinstd_1_1vector__queue.html#a22fc796402dba2b99821eef11bacdbd3',1,'winstd::vector_queue']]], + ['_7evmemory_43',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], + ['_7ewin_5fhandle_44',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], + ['_7ewindow_5fdc_45',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], + ['_7ewintrust_46',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], + ['_7ewlan_5fhandle_47',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 00000000..1f16d2ae --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 00000000..7c75d72b --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['capacity_0',['capacity',['../classwinstd_1_1vector__queue.html#a9b8491b7a482489bc350d11dbad18afa',1,'winstd::vector_queue']]], + ['change_5ftype_1',['change_type',['../classwinstd_1_1variant.html#ac22bafa14170d08098a643e8e7ce31d7',1,'winstd::variant']]], + ['clear_2',['clear',['../classwinstd_1_1vector__queue.html#a5a7920ef569276ecc2e4df6433719972',1,'winstd::vector_queue']]], + ['com_5finitializer_3',['com_initializer',['../classwinstd_1_1com__initializer.html#a1cf02a325b1064e1dc37145d3be7924d',1,'winstd::com_initializer::com_initializer(_In_opt_ LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a3661b5ceac98e049b72ed2a6fd708b73',1,'winstd::com_initializer::com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept']]], + ['com_5fobj_4',['com_obj',['../classwinstd_1_1com__obj.html#acb2f90ae927378156683517718aa1d1d',1,'winstd::com_obj::com_obj(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter=NULL, DWORD dwClsContext=CLSCTX_ALL)'],['../classwinstd_1_1com__obj.html#a5891697029f9fe6fb93113bd8dd06c25',1,'winstd::com_obj::com_obj(_In_ _Other *other)'],['../classwinstd_1_1com__obj.html#a544fcc007dd4588b257867d2e2a805b0',1,'winstd::com_obj::com_obj(_In_ com_obj< _Other > &other)']]], + ['com_5fruntime_5ferror_5',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#ac5974f81a49bc2cf13c048ab1e93a883',1,'winstd::com_runtime_error::com_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#a948a502b8e2c088192c7a8f28b93f0cf',1,'winstd::com_runtime_error::com_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)']]], + ['console_5fctrl_5fhandler_6',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#ad195c9300c718b50bc09bc9bfc31ba91',1,'winstd::console_ctrl_handler']]], + ['construct_7',['construct',['../classwinstd_1_1heap__allocator.html#a2fef7b864c8da18f75960f20aea29e1a',1,'winstd::heap_allocator::construct(_Inout_ pointer ptr, _In_ const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#ac9f07c2c98cd2168614e03cdf6730c77',1,'winstd::heap_allocator::construct(_Inout_ pointer ptr, _Inout_ _Ty &&val)']]], + ['cotaskmemfree_5fdelete_8',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete']]], + ['create_9',['create',['../classwinstd_1_1reg__key.html#a63252cffe53e75e84894ee5567eb5c53',1,'winstd::reg_key::create()'],['../classwinstd_1_1heap.html#a234803fd5abe586e69268e1c3df9f40d',1,'winstd::heap::create()'],['../classwinstd_1_1event.html#a217fa728f6605580a5baf4cea0807cb2',1,'winstd::event::create()'],['../classwinstd_1_1file.html#afb46d6c0ef15fd95f9413d45a2f8fc80',1,'winstd::file::create()'],['../classwinstd_1_1cert__store.html#a4c56db8f6907668dffa71d66e2208eaf',1,'winstd::cert_store::create()'],['../classwinstd_1_1setup__device__info__list.html#a307ebb13ec79a48f78e2208779dc4d8e',1,'winstd::setup_device_info_list::create(_In_opt_ const GUID *ClassGuid, _In_opt_ PCTSTR Enumerator, _In_opt_ HWND hwndParent, _In_ DWORD Flags, _In_opt_ HDEVINFO DeviceInfoSet, _In_opt_ PCTSTR MachineName, _Reserved_ PVOID Reserved) noexcept'],['../classwinstd_1_1setup__device__info__list.html#ac77fbc283dc19bfd8caafdfaf4e213af',1,'winstd::setup_device_info_list::create(_In_opt_ const GUID *ClassGuid, _In_opt_ HWND hwndParent) noexcept'],['../classwinstd_1_1event__trace.html#af15c2a746ade702616f6abfda207e920',1,'winstd::event_trace::create()'],['../classwinstd_1_1event__session.html#a5e204dee8ccd43d963589539727fecfe',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#a7fa5797006951b7143e9b34709331507',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#a6ea65c39536a3646a0f7746a2ba40d62',1,'winstd::eap_packet::create()'],['../classwinstd_1_1crypt__hash.html#aee19825d23e4f0325e95c689b7dc9364',1,'winstd::crypt_hash::create()'],['../classwinstd_1_1crypt__prov.html#ae5be9fe3991b004f249d685a9932a0db',1,'winstd::crypt_prov::create()'],['../classwinstd_1_1cert__store.html#ade7fa4cac43ae0f21ed3fdf0fa154c15',1,'winstd::cert_store::create()'],['../classwinstd_1_1cert__chain__context.html#a9f446f3ac5ad702c98d16d296adab7a2',1,'winstd::cert_chain_context::create()'],['../classwinstd_1_1cert__context.html#a23defa4c6756cc3da3965d6fa1911340',1,'winstd::cert_context::create()'],['../classwinstd_1_1com__obj.html#a778ef4c90c978b2dfb9a3a5d9325ce8a',1,'winstd::com_obj::create()']]], + ['create_5fexp1_10',['create_exp1',['../classwinstd_1_1crypt__key.html#a36bfe476dc4785ac005e4e4305aa360e',1,'winstd::crypt_key']]], + ['create_5fms_5fmppe_5fkey_11',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#acd0112e3997ba52c54a905360b4af5e6',1,'winstd::eap_attr']]], + ['credfree_5fdelete_12',['CredFree_delete',['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()']]], + ['critical_5fsection_13',['critical_section',['../classwinstd_1_1critical__section.html#aa8875ee96e273ba72e86457fe0f4c768',1,'winstd::critical_section']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 00000000..0b37ee2f --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 00000000..14366120 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['data_0',['data',['../classwinstd_1_1data__blob.html#a3cb5b805288c8d74cd103cac3acf10bf',1,'winstd::data_blob::data() noexcept'],['../classwinstd_1_1data__blob.html#a498ffe8fa857c8fee0c68803049e9528',1,'winstd::data_blob::data() const noexcept']]], + ['data_5fblob_1',['data_blob',['../classwinstd_1_1data__blob.html#a5bed8028538f9688eea5dc8353ff69d8',1,'winstd::data_blob::data_blob() noexcept'],['../classwinstd_1_1data__blob.html#a962f93ced2fc8fb8721da62d1d80fb0a',1,'winstd::data_blob::data_blob(_In_count_(size) BYTE *data, _In_ DWORD size) noexcept'],['../classwinstd_1_1data__blob.html#a4ffce3ac1f997d6268c9e2c1cb925b76',1,'winstd::data_blob::data_blob(_In_ const DATA_BLOB &other)'],['../classwinstd_1_1data__blob.html#a1bb57925e36a5c6727077f39adfbd146',1,'winstd::data_blob::data_blob(_Inout_ data_blob &&other) noexcept']]], + ['dc_5fselector_2',['dc_selector',['../classwinstd_1_1dc__selector.html#aea810206b4b8977f45137425af16c2cc',1,'winstd::dc_selector']]], + ['deallocate_3',['deallocate',['../classwinstd_1_1sanitizing__allocator.html#a34e2f08aa05e8075fdee38963b6e8283',1,'winstd::sanitizing_allocator::deallocate()'],['../classwinstd_1_1heap__allocator.html#a216a8b605486846660c4c7fd03282ae7',1,'winstd::heap_allocator::deallocate()']]], + ['delete_5fsubkey_4',['delete_subkey',['../classwinstd_1_1reg__key.html#a383dc95733bec990eae644ad6fcb8b4c',1,'winstd::reg_key']]], + ['derive_5',['derive',['../classwinstd_1_1crypt__key.html#a31e237167b5831c663370902705b243d',1,'winstd::crypt_key']]], + ['destroy_6',['destroy',['../classwinstd_1_1heap__allocator.html#ae22bc5ee2aad749c334a96d623c73f3c',1,'winstd::heap_allocator']]], + ['detach_7',['detach',['../classwinstd_1_1handle.html#ad5acf6ce53e092b8d4d53f909cf321f9',1,'winstd::handle']]], + ['disable_5ftrace_8',['disable_trace',['../classwinstd_1_1event__session.html#a0ab8aff95095b631a68372f1ad87b0ed',1,'winstd::event_session']]], + ['dplhandle_9',['dplhandle',['../classwinstd_1_1dplhandle.html#ac95cbfb481c0d5e6c60d130f3c270b59',1,'winstd::dplhandle::dplhandle() noexcept'],['../classwinstd_1_1dplhandle.html#abb2b52f07f8e9f85905fb968c8bfbd62',1,'winstd::dplhandle::dplhandle(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1dplhandle.html#a3acfebc61ea283e7520dc6b5ec6b5af4',1,'winstd::dplhandle::dplhandle(_In_ const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a69802162f59013066dc30fcfc8089738',1,'winstd::dplhandle::dplhandle(_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept']]], + ['duplicate_10',['duplicate',['../classwinstd_1_1dplhandle.html#a48e66c8979560019e339867de944a265',1,'winstd::dplhandle']]], + ['duplicate_5finternal_11',['duplicate_internal',['../classwinstd_1_1com__obj.html#a2e16632274f2014e45f3cf593edbf110',1,'winstd::com_obj::duplicate_internal()'],['../classwinstd_1_1bstr.html#aea8518f7b0a9303f9e646c133c7d8039',1,'winstd::bstr::duplicate_internal()'],['../classwinstd_1_1dplhandle.html#aa0094309e30d7780908b261c53e5a07d',1,'winstd::dplhandle::duplicate_internal()'],['../classwinstd_1_1cert__context.html#ae3740c4c2e9fd7caedfda928add3df0f',1,'winstd::cert_context::duplicate_internal()'],['../classwinstd_1_1cert__chain__context.html#a656b1a040b92b732f9d3b2559c663799',1,'winstd::cert_chain_context::duplicate_internal()'],['../classwinstd_1_1crypt__hash.html#ac83439d59f00b673ae3f584e5452cdcb',1,'winstd::crypt_hash::duplicate_internal()'],['../classwinstd_1_1crypt__key.html#ac3babcd9f0cf2fca9922437e47f644d7',1,'winstd::crypt_key::duplicate_internal()'],['../classwinstd_1_1eap__packet.html#ac217972c25aebfdd300a56ff52ee9112',1,'winstd::eap_packet::duplicate_internal()']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 00000000..0eaf2b4a --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 00000000..96d1c510 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['eap_5fattr_0',['eap_attr',['../classwinstd_1_1eap__attr.html#a472e8b06aaef71131a37b3c48d1a9b4f',1,'winstd::eap_attr::eap_attr(_In_ const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1eap__attr.html#a1e59dbfc56d8c9450fd27a6d7e049ff1',1,'winstd::eap_attr::eap_attr(_Inout_ eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#a015a82d7f91679f76ca590bbdabc04c1',1,'winstd::eap_attr::eap_attr() noexcept']]], + ['eap_5fmethod_5finfo_5farray_1',['eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html#a3dc5d1571c9e85dedd3dd3d6626947b7',1,'winstd::eap_method_info_array::eap_method_info_array() noexcept'],['../classwinstd_1_1eap__method__info__array.html#a9d1274021845f1c4bd115a9fa1a0bf51',1,'winstd::eap_method_info_array::eap_method_info_array(_Inout_ eap_method_info_array &&other) noexcept']]], + ['eap_5fmethod_5fprop_2',['eap_method_prop',['../classwinstd_1_1eap__method__prop.html#aaef29e7f5af8ed0a1c685166114c21b6',1,'winstd::eap_method_prop::eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexcept'],['../classwinstd_1_1eap__method__prop.html#a6f0cdaaa85b3da835ce220837fd8a86c',1,'winstd::eap_method_prop::eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexcept'],['../classwinstd_1_1eap__method__prop.html#a63398838bd2f79c993f968691408692c',1,'winstd::eap_method_prop::eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexcept']]], + ['eap_5fruntime_5ferror_3',['eap_runtime_error',['../classwinstd_1_1eap__runtime__error.html#a8d4f80bde143ee1a06d78bd922b0d295',1,'winstd::eap_runtime_error::eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string &msg)'],['../classwinstd_1_1eap__runtime__error.html#a7c3d33a53ad6258d33a493c92c03d1bd',1,'winstd::eap_runtime_error::eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg=nullptr)']]], + ['eaphostpeerfreeeaperror_5fdelete_4',['EapHostPeerFreeEapError_delete',['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ab4dd927d7e4cd40b2ce7068fe252b76e',1,'winstd::EapHostPeerFreeEapError_delete']]], + ['eaphostpeerfreeerrormemory_5fdelete_5',['EapHostPeerFreeErrorMemory_delete',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a43f0b1a440b9a431e9fee807bc1386be',1,'winstd::EapHostPeerFreeErrorMemory_delete']]], + ['eaphostpeerfreememory_5fdelete_6',['EapHostPeerFreeMemory_delete',['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#af6220ac1d99cc114670c363ecfe64557',1,'winstd::EapHostPeerFreeMemory_delete']]], + ['eaphostpeerfreeruntimememory_5fdelete_7',['EapHostPeerFreeRuntimeMemory_delete',['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#afdd46f3517e59ce19fdaddebbbaeb10d',1,'winstd::EapHostPeerFreeRuntimeMemory_delete']]], + ['empty_8',['empty',['../classwinstd_1_1vector__queue.html#abcdb14657f7eff95453173e132db3215',1,'winstd::vector_queue']]], + ['enable_5fcallback_9',['enable_callback',['../classwinstd_1_1event__provider.html#a418b2304d51174829dd35f3cbc332270',1,'winstd::event_provider::enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData)'],['../classwinstd_1_1event__provider.html#ab7e0b19d15847e5d4dadc4b679f38bf2',1,'winstd::event_provider::enable_callback(_In_ LPCGUID SourceId, _In_ ULONG IsEnabled, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext)']]], + ['enable_5ftrace_10',['enable_trace',['../classwinstd_1_1event__session.html#ac99622899bd7849f3cdd6730d1d1a02a',1,'winstd::event_session']]], + ['enumerate_11',['enumerate',['../classwinstd_1_1heap.html#a938dca2d614e8d33ae5add61b013847f',1,'winstd::heap']]], + ['event_5fdata_12',['event_data',['../classwinstd_1_1event__data.html#a6c89606a2a00bdcbc6399eaab76d38da',1,'winstd::event_data::event_data(_In_bytecount_(size) const void *data, _In_ ULONG size)'],['../classwinstd_1_1event__data.html#a16e3bc35a94bbc8ab15959ae2fe4bac4',1,'winstd::event_data::event_data(_In_ const std::basic_string< _Elem, _Traits, _Ax > &data)'],['../classwinstd_1_1event__data.html#ad4c0e6491b030575b6e6fc8ad6d9ccf0',1,'winstd::event_data::event_data(_In_opt_z_ const wchar_t *data)'],['../classwinstd_1_1event__data.html#a6496df3ae53c55ba1febb7a527390aa4',1,'winstd::event_data::event_data(_In_opt_z_ const char *data)'],['../classwinstd_1_1event__data.html#abbb8c154fec1fec0a01d8d82c3211516',1,'winstd::event_data::event_data(_In_ const unsigned int &data)'],['../classwinstd_1_1event__data.html#a4944c96e443b154bc35594e401f3ee80',1,'winstd::event_data::event_data(_In_ const GUID &data)'],['../classwinstd_1_1event__data.html#ac1e5ee38c9b52548f5a52a44e294565a',1,'winstd::event_data::event_data(_In_ const long &data)'],['../classwinstd_1_1event__data.html#aebfd39d490ebfd900dbf84b4cac69ce4',1,'winstd::event_data::event_data(_In_ const int &data)'],['../classwinstd_1_1event__data.html#ab8fcf1275490c1d1806fd573ce6010a8',1,'winstd::event_data::event_data(_In_ const unsigned char &data)'],['../classwinstd_1_1event__data.html#acb263040db5d65718adcfa069fb6534e',1,'winstd::event_data::event_data(_In_ const char &data)'],['../classwinstd_1_1event__data.html#acb4032673a3b2376eb0d62115bb37c4f',1,'winstd::event_data::event_data()'],['../classwinstd_1_1event__data.html#a5fc13dcb7a81ded6e5fa3acd9eabaf3d',1,'winstd::event_data::event_data(_In_ const unsigned long &data)']]], + ['event_5ffn_5fauto_13',['event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a48da2662d143d93453c83b326f9e51f0',1,'winstd::event_fn_auto::event_fn_auto(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName)'],['../classwinstd_1_1event__fn__auto.html#a3f5c7a8583d4906f01e9cf77e7c72d5f',1,'winstd::event_fn_auto::event_fn_auto(_In_ const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#abf49424fe06d79576ce1bd0b88317328',1,'winstd::event_fn_auto::event_fn_auto(_Inout_ event_fn_auto &&other) noexcept']]], + ['event_5ffn_5fauto_5fret_14',['event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a904be6ebb7dd6953bb2ec8f4579224a0',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(_In_ const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#a09709a10edf6c5cba0b62f88d662068a',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(_Inout_ event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1event__fn__auto__ret.html#a3ed6ebce9953a658262a56aca99aa53e',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName, T &result)']]], + ['event_5frec_15',['event_rec',['../classwinstd_1_1event__rec.html#af2f781ca85c2d92b001bb32bf4839f11',1,'winstd::event_rec::event_rec()'],['../classwinstd_1_1event__rec.html#aee4d608c8a0c0362329d94b271998652',1,'winstd::event_rec::event_rec(_In_ const event_rec &other)'],['../classwinstd_1_1event__rec.html#a696e08b5558b349e9fdcc6794f6abbb3',1,'winstd::event_rec::event_rec(_In_ const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a65423d1cc93ed5df50f1d5a036954e34',1,'winstd::event_rec::event_rec(_Inout_ event_rec &&other) noexcept']]], + ['event_5fsession_16',['event_session',['../classwinstd_1_1event__session.html#a24a43016accd86270c6a2ca6cf4934de',1,'winstd::event_session::event_session()'],['../classwinstd_1_1event__session.html#a6aea4594abbc58eec32d3798ba773b96',1,'winstd::event_session::event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop)'],['../classwinstd_1_1event__session.html#aa5c94e7ebeecf3b60576e70da95636b8',1,'winstd::event_session::event_session(_Inout_ event_session &&other) noexcept']]], + ['event_5ftrace_5fenabler_17',['event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a50315f6ef0ca3e9a63710249fac75a10',1,'winstd::event_trace_enabler::event_trace_enabler(_In_opt_ LPCGUID SourceId, _In_ TRACEHANDLE TraceHandle, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)'],['../classwinstd_1_1event__trace__enabler.html#a2824894d40303156ec40a46eddf05421',1,'winstd::event_trace_enabler::event_trace_enabler(_In_ const event_session &session, _In_ LPCGUID ProviderId, _In_ UCHAR Level, _In_opt_ ULONGLONG MatchAnyKeyword=0, _In_opt_ ULONGLONG MatchAllKeyword=0, _In_opt_ ULONG EnableProperty=0, _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 00000000..eaa27697 --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 00000000..46bcaa5a --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['find_0',['find',['../classwinstd_1_1find__file.html#ac266923e34c300f0f888a5cefef8a569',1,'winstd::find_file']]], + ['free_1',['free',['../classwinstd_1_1handle.html#a706aaab7691a472c608890f8e5dd0d96',1,'winstd::handle']]], + ['free_5finternal_2',['free_internal',['../classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557',1,'winstd::dc::free_internal()'],['../classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261',1,'winstd::wlan_handle::free_internal()'],['../classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f',1,'winstd::addrinfo::free_internal()'],['../classwinstd_1_1security__id.html#a464626311e64ea1273fd6bca9ef93a73',1,'winstd::security_id::free_internal()'],['../classwinstd_1_1reg__key.html#a3dba00d2105a1c633c571d8ad3131f54',1,'winstd::reg_key::free_internal()'],['../classwinstd_1_1vmemory.html#a616dbfba873b9a3dcf393cff6504fc2e',1,'winstd::vmemory::free_internal()'],['../classwinstd_1_1heap.html#ae25434d96356a74d27c0b3b0e268df45',1,'winstd::heap::free_internal()'],['../classwinstd_1_1find__file.html#a5bb4f7e12689153f991ffcb08dbbe703',1,'winstd::find_file::free_internal()'],['../classwinstd_1_1library.html#a0c602319cb498fa2b6a5c4eda4a150aa',1,'winstd::library::free_internal()'],['../classwinstd_1_1win__handle.html#a456fe19828113913f42e901f112c6455',1,'winstd::win_handle::free_internal()'],['../classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437',1,'winstd::setup_device_info_list::free_internal()'],['../classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9',1,'winstd::sec_context::free_internal()'],['../classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260',1,'winstd::sec_credentials::free_internal()'],['../classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a',1,'winstd::window_dc::free_internal()'],['../classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87',1,'winstd::gdi_handle::free_internal()'],['../classwinstd_1_1event__trace.html#ad8ef9b0616775c44e911d9db4676b19c',1,'winstd::event_trace::free_internal()'],['../classwinstd_1_1event__session.html#a4701ad4ae9d18e890ed4066473680751',1,'winstd::event_session::free_internal()'],['../classwinstd_1_1event__provider.html#ad0d7ed652fe897a94f2ef198dd3f41a1',1,'winstd::event_provider::free_internal()'],['../classwinstd_1_1eap__packet.html#a6d68149b92c1564b2683ddb3a87b60f0',1,'winstd::eap_packet::free_internal()'],['../classwinstd_1_1crypt__key.html#acf2f2ad35dd7602adcdeef17f605e391',1,'winstd::crypt_key::free_internal()'],['../classwinstd_1_1crypt__hash.html#a3c19a87b4ff646d9e87524feac4e41b5',1,'winstd::crypt_hash::free_internal()'],['../classwinstd_1_1crypt__prov.html#aa351d2dbc42daf51dddcf847fd95c39f',1,'winstd::crypt_prov::free_internal()'],['../classwinstd_1_1cert__store.html#ab709fe692a4117173eae26e741da2069',1,'winstd::cert_store::free_internal()'],['../classwinstd_1_1cert__chain__context.html#ae15044b1a7be10d96643d3921e149ee6',1,'winstd::cert_chain_context::free_internal()'],['../classwinstd_1_1cert__context.html#a1615ec6693eb68764543456ad418a970',1,'winstd::cert_context::free_internal()'],['../classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629',1,'winstd::handle::free_internal()'],['../classwinstd_1_1bstr.html#a87edcb348af7d69ad86709e32b519870',1,'winstd::bstr::free_internal()'],['../classwinstd_1_1com__obj.html#a028b86f770253f74a62ca3eaebb14de5',1,'winstd::com_obj::free_internal()']]], + ['front_3',['front',['../classwinstd_1_1vector__queue.html#aa13a6c816c2da48c0dfc7ceb055aeda7',1,'winstd::vector_queue::front()'],['../classwinstd_1_1vector__queue.html#acacc09dfa210f52870114857b02e96c1',1,'winstd::vector_queue::front() const']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 00000000..25d1cc81 --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 00000000..950b3c53 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['generate_0',['generate',['../classwinstd_1_1crypt__key.html#a29bd17cc076234a9ed86bec0f808e920',1,'winstd::crypt_key']]], + ['get_1',['get',['../classwinstd_1_1addrinfo.html#a4dfe202e1a3d0eaa574480f0e54f440f',1,'winstd::addrinfo']]], + ['get_5fptr_2',['get_ptr',['../group___win_std_general.html#gaee918184e7e671bbcda3a884ae316fcf',1,'winstd::get_ptr(_Inout_ std::unique_ptr< _Ty, _Dx > &owner) noexcept'],['../group___win_std_general.html#ga9985d83683c65e4d97387a357bf242d0',1,'winstd::get_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 00000000..b6392eaa --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 00000000..8fc3399c --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['handle_0',['handle',['../classwinstd_1_1handle.html#a1b9c4f9529c9efa7d16dec8bab3b00e4',1,'winstd::handle::handle() noexcept'],['../classwinstd_1_1handle.html#a200e93ad6b773e634094f5321705ebec',1,'winstd::handle::handle(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1handle.html#a54141e1a6c82fcdd15f6fa3a813baab0',1,'winstd::handle::handle(_Inout_ handle< handle_type, INVAL > &&h) noexcept']]], + ['head_1',['head',['../classwinstd_1_1vector__queue.html#a964a0400a8bad322267c8128caa78f5d',1,'winstd::vector_queue']]], + ['heap_5fallocator_2',['heap_allocator',['../classwinstd_1_1heap__allocator.html#ac5f30e886e7bfff4c18470b990eba118',1,'winstd::heap_allocator::heap_allocator(_In_ HANDLE heap)'],['../classwinstd_1_1heap__allocator.html#aaed5a79d60e4d9ae77d251c900ccd78b',1,'winstd::heap_allocator::heap_allocator(_In_ const heap_allocator< _Other > &other)']]], + ['help_5flink_5fid_3',['help_link_id',['../classwinstd_1_1eap__runtime__error.html#af7179a9cc9ff633a0e7d5983a4680171',1,'winstd::eap_runtime_error']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 00000000..ecf6a892 --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 00000000..1be37746 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['import_0',['import',['../classwinstd_1_1crypt__key.html#a838eb6fc602988725a1e0c9747de5e76',1,'winstd::crypt_key']]], + ['import_5fpublic_1',['import_public',['../classwinstd_1_1crypt__key.html#aad8c23f4cc013bba01347ee482c931a6',1,'winstd::crypt_key']]], + ['initialize_2',['initialize',['../classwinstd_1_1sec__context.html#aa74e971e2aeeb1fccde7c377df48e4cb',1,'winstd::sec_context']]] +]; diff --git a/search/functions_9.html b/search/functions_9.html new file mode 100644 index 00000000..cd70e2b7 --- /dev/null +++ b/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 00000000..1e2e1270 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['length_0',['length',['../classwinstd_1_1bstr.html#aa6970921c6334a993f5f0fc1be5d54e3',1,'winstd::bstr']]], + ['load_1',['load',['../classwinstd_1_1library.html#ab7b995a7f1703d1d4a6bc1a8ab5734d9',1,'winstd::library']]], + ['localfree_5fdelete_2',['LocalFree_delete',['../structwinstd_1_1_local_free__delete.html#ae7e35dd11650c49de0ebcab4388c9400',1,'winstd::LocalFree_delete::LocalFree_delete()'],['../structwinstd_1_1_local_free__delete.html#abbb52355375f34eca425d61a59261461',1,'winstd::LocalFree_delete::LocalFree_delete(const LocalFree_delete< _Ty2 > &)'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#a34a948cc7b0f12c0f1e4b7e234d8181c',1,'winstd::LocalFree_delete< _Ty[]>::LocalFree_delete()']]] +]; diff --git a/search/functions_a.html b/search/functions_a.html new file mode 100644 index 00000000..d2a3de90 --- /dev/null +++ b/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 00000000..18abc401 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['max_5fsize_0',['max_size',['../classwinstd_1_1heap__allocator.html#ab2018e74ee3bc84eb3841fae8bc71b01',1,'winstd::heap_allocator']]], + ['msg_1',['msg',['../classwinstd_1_1win__runtime__error.html#a016e0f951d68ea42b9d33beea39d642b',1,'winstd::win_runtime_error::msg()'],['../classwinstd_1_1ws2__runtime__error.html#a22e0c60032ca14b54cb66440170e9fdf',1,'winstd::ws2_runtime_error::msg()']]] +]; diff --git a/search/functions_b.html b/search/functions_b.html new file mode 100644 index 00000000..e6f34bb2 --- /dev/null +++ b/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 00000000..0e27a236 --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['name_0',['name',['../classwinstd_1_1event__session.html#a029e88ded7419ed152e398388f6a8578',1,'winstd::event_session']]], + ['num_5fruntime_5ferror_1',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html#a5f8894c1634e9b80ab67c573d7315824',1,'winstd::num_runtime_error::num_runtime_error(_In_ error_type num, _In_ const std::string &msg)'],['../classwinstd_1_1num__runtime__error.html#aa775e07ef587393c66cb21a6c809c0ca',1,'winstd::num_runtime_error::num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg=nullptr)']]], + ['number_2',['number',['../classwinstd_1_1num__runtime__error.html#a6388a483c00628c1a94a5ce45ca63e70',1,'winstd::num_runtime_error']]] +]; diff --git a/search/functions_c.html b/search/functions_c.html new file mode 100644 index 00000000..87b4ce26 --- /dev/null +++ b/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 00000000..87797813 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['open_0',['open',['../classwinstd_1_1event.html#a607b9549a1fddfee1a32b61aff664610',1,'winstd::event::open()'],['../classwinstd_1_1reg__key.html#a1f6008b49c2a450dfdfecf204a8eab0f',1,'winstd::reg_key::open()'],['../classwinstd_1_1wlan__handle.html#a4de83a8c128da9d644667ff1f62739f7',1,'winstd::wlan_handle::open()'],['../classwinstd_1_1process.html#a290511c02f9170dab6a9ebab2e55f14e',1,'winstd::process::open()']]], + ['operator_20const_20event_5ftrace_5fproperties_20_2a_1',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], + ['operator_20handle_5ftype_2',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], + ['operator_20lpcritical_5fsection_3',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], + ['operator_20typename_20_5fty_20_2a_26_4',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], + ['operator_20typename_20_5fty_20_2a_2a_5',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], + ['operator_21_6',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], + ['operator_21_3d_7',['operator!=',['../classwinstd_1_1variant.html#a8bde27b765d17663ea36f9fb84a530af',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a2c9e218fe1c13a2ffa0a81d829e72fee',1,'winstd::handle::operator!=()'],['../classwinstd_1_1cert__context.html#a27e4d118208c02e4023d0456124522af',1,'winstd::cert_context::operator!=()']]], + ['operator_26_8',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], + ['operator_28_29_9',['operator()',['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#a02210f2d10576d8ffcf38739deed7887',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], + ['operator_2a_10',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], + ['operator_2d_3e_11',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], + ['operator_3c_12',['operator<',['../classwinstd_1_1handle.html#a77b518be4199e6562520ccbcdcec5d07',1,'winstd::handle::operator<()'],['../classwinstd_1_1cert__context.html#a7f320b91ee26685eb9f9702a011ecc74',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#a6e2bed5ef96a45e1dcabced3804d2a37',1,'winstd::variant::operator<(_In_ const VARIANT &varSrc) const noexcept']]], + ['operator_3c_3d_13',['operator<=',['../classwinstd_1_1variant.html#ac62778c2de1a28e3089d096aa264a4ec',1,'winstd::variant::operator<=()'],['../classwinstd_1_1cert__context.html#a1c545da45189367bcfeead3809c3e393',1,'winstd::cert_context::operator<=()'],['../classwinstd_1_1handle.html#a16b52280c04b4cb9f8bd65f76cb2f48d',1,'winstd::handle::operator<=()']]], + ['operator_3d_14',['operator=',['../classwinstd_1_1variant.html#abca411f6a72f6a7ecc117596251b442c',1,'winstd::variant::operator=(_In_ double dblSrc) noexcept'],['../classwinstd_1_1variant.html#a8b829b758e6e859508a0f0f3817aeaa8',1,'winstd::variant::operator=(_In_ const SAFEARRAY *pSrc) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a9616d5e121e7ee39798d7e0103358943',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator=(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a8f2b3b42c673b2036feff62a170e4f31',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator=(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)'],['../classwinstd_1_1handle.html#a8928de8288f8dc990fc903dee85803e7',1,'winstd::handle::operator=(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1handle.html#a96a1bcf085561569ed51ab23968d1308',1,'winstd::handle::operator=(_Inout_ handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#a6211e58546daef11a28b0c9a8563e063',1,'winstd::dplhandle::operator=(_In_opt_ handle_type h) noexcept'],['../classwinstd_1_1dplhandle.html#a9ad67897459bc81536481a6a1321b302',1,'winstd::dplhandle::operator=(_In_ const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#abfba6b3dca0d5b8511085741d8d32eb6',1,'winstd::dplhandle::operator=(_Inout_ dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1vector__queue.html#a2aefeffa04d6e3fafa40d6ae8d4eb501',1,'winstd::vector_queue::operator=(_In_ const vector_queue< value_type > &other)'],['../classwinstd_1_1vector__queue.html#af5f7cd73f4fb310d3903de2fe4fd5b71',1,'winstd::vector_queue::operator=(_Inout_ vector_queue< value_type > &&other)'],['../classwinstd_1_1data__blob.html#a2c1806cf29475d732fe0cdf14f930d48',1,'winstd::data_blob::operator=(_In_ const DATA_BLOB &other)'],['../classwinstd_1_1data__blob.html#a3c3c62cee228c581c6eabb37e5cb526b',1,'winstd::data_blob::operator=(_Inout_ data_blob &&other) noexcept'],['../classwinstd_1_1variant.html#a060a0296bb201e8e571ca4aab70f35ed',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#af82d813fa541bd218afb672a8886c287',1,'winstd::eap_attr::operator=(_In_ const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1eap__attr.html#a7ad2a3d553168173588261656a151c30',1,'winstd::eap_attr::operator=(_Inout_ eap_attr &&a) noexcept'],['../classwinstd_1_1eap__method__info__array.html#a3619fce0e5d8a683ea5b704f24ff38a7',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1event__rec.html#aff796ec565f99bf03e6542a17056e312',1,'winstd::event_rec::operator=(_In_ const event_rec &other)'],['../classwinstd_1_1event__rec.html#a9dc72f524205e767d1d557b4b7e40201',1,'winstd::event_rec::operator=(_In_ const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#aaa938b515144cfd5026de8f97292bf93',1,'winstd::event_rec::operator=(_Inout_ event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#af84c0054fc0a333400129bad43d847b9',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#a5494dec6a8f6c0c6e209df2c52584cc1',1,'winstd::event_fn_auto::operator=(_In_ const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#a457c12be555c711a3de8381211a681d6',1,'winstd::event_fn_auto::operator=(_Inout_ event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a2258cf83163bec3b98a620934f1aa451',1,'winstd::event_fn_auto_ret::operator=(_In_ const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#a67c2630b95f0fd2ab5b5f218c5d25c58',1,'winstd::event_fn_auto_ret::operator=(_Inout_ event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1sec__credentials.html#aed4c8c2b825574c57b0beaa9da0eed9c',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#ae514c48916fa6859ccb9591fa1313e27',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a660f58d9e608c82f6236ac75b20925bd',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#a42dae05f2aebc59f4b9a8971ef661651',1,'winstd::variant::operator=(_In_ unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#abe65600c073ddcf89faf02e066a9738f',1,'winstd::variant::operator=(_In_ const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#af069314c298c59020052749418e1c940',1,'winstd::variant::operator=(_Inout_ VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#ac22ca62b7cafcd4dc9841680c0a12436',1,'winstd::variant::operator=(_In_ bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a39539bd84a533981524a41ff65780683',1,'winstd::variant::operator=(_In_ char cSrc) noexcept'],['../classwinstd_1_1variant.html#ae79092e97108c3fed94325d3d679fbb6',1,'winstd::variant::operator=(_In_ unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a12a6898c591406981754d09be9c60538',1,'winstd::variant::operator=(_In_ short nSrc) noexcept'],['../classwinstd_1_1variant.html#a38e77a19c8722042827632bda007357c',1,'winstd::variant::operator=(_In_ unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a83be1ae666c090c5eb9f6ac0eca1ca6c',1,'winstd::variant::operator=(_In_ int nSrc) noexcept'],['../classwinstd_1_1variant.html#ae9d6f63e7a4e59705e9ee8fa1df6cd29',1,'winstd::variant::operator=(_In_ unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a7dfb5130045649ff9d51194d9927f445',1,'winstd::variant::operator=(_In_ long nSrc) noexcept'],['../classwinstd_1_1variant.html#ac6f0f3d0b3e908436fa99904996ac94a',1,'winstd::variant::operator=(_In_ unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#a8b07463db82883a101faa45b341c1948',1,'winstd::variant::operator=(_In_ long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a1ce513ce87d06ec275316c288d49eb01',1,'winstd::variant::operator=(_In_ unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a3fb364ce88eee71357376600857cb410',1,'winstd::variant::operator=(_In_ CY cySrc) noexcept'],['../classwinstd_1_1variant.html#aed34b9e71663c0e54fac63b2493d81c9',1,'winstd::variant::operator=(_In_ float *pfSrc) noexcept'],['../classwinstd_1_1variant.html#ad071b63c62d7c29f96ba09ddf79599d3',1,'winstd::variant::operator=(_In_ long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a70c3636a264c1d4935de33411b0ea6f2',1,'winstd::variant::operator=(_In_ unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af4a8867576603379317a452a2faf3f6f',1,'winstd::variant::operator=(_In_ long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af703f9de3fa0554c37d2f41c7dd407b7',1,'winstd::variant::operator=(_In_ unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a31b35fbf0b8a3662573a1d8b01289c62',1,'winstd::variant::operator=(_In_ int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a0693a3896f5b6fbb6ba30befb5da7d0b',1,'winstd::variant::operator=(_In_ short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a9e2f934ee0c118119e7e61ceccb44758',1,'winstd::variant::operator=(_In_ unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#a875583fd50e4bc7cd922974a593f2e8d',1,'winstd::variant::operator=(_Inout_opt_ IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a4fc3255f55c166f7fd5754c7e809d666',1,'winstd::variant::operator=(_Inout_opt_ IDispatch *pSrc)'],['../classwinstd_1_1variant.html#ad855816c6daa12abd06e43beb08caac7',1,'winstd::variant::operator=(_In_z_ LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#a37b2ffd79fe6495c2c9b52556a45354e',1,'winstd::variant::operator=(_In_ float fltSrc) noexcept'],['../classwinstd_1_1variant.html#af3c84072dcf7c6b35a6350d2a2365d32',1,'winstd::variant::operator=(_In_ unsigned short *pnSrc) noexcept']]], + ['operator_3d_3d_15',['operator==',['../classwinstd_1_1cert__context.html#a094988aa40f5ca3148bad44ff568e448',1,'winstd::cert_context::operator==()'],['../classwinstd_1_1handle.html#a308281d8c28014cc205e72f17f01635f',1,'winstd::handle::operator==()'],['../classwinstd_1_1variant.html#a9e1f77a641cfa4388a1c7d91b95c7a57',1,'winstd::variant::operator==(_In_ const VARIANT &varSrc) const noexcept']]], + ['operator_3e_16',['operator>',['../classwinstd_1_1variant.html#a3585d11e34e2358a628155e6e6fe3904',1,'winstd::variant::operator>()'],['../classwinstd_1_1handle.html#aa7db4bb5c15f7de56600ba02497c12eb',1,'winstd::handle::operator>()'],['../classwinstd_1_1cert__context.html#af307ba398c117eed2731e532551c7e32',1,'winstd::cert_context::operator>()']]], + ['operator_3e_3d_17',['operator>=',['../classwinstd_1_1variant.html#a29e844f3313d0337e4ba6f50308f4662',1,'winstd::variant::operator>=()'],['../classwinstd_1_1handle.html#a728f743b87f4bf56e184e45950154a2b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a30e6faf35a3d6a0817927a811f55817d',1,'winstd::cert_context::operator>=()']]], + ['operator_5b_5d_18',['operator[]',['../classwinstd_1_1vector__queue.html#ad4e11813ec32d082b68915978f04e6bd',1,'winstd::vector_queue::operator[](_In_ size_type pos)'],['../classwinstd_1_1vector__queue.html#a6479f66d4095286ff7b11aa3374d8ca9',1,'winstd::vector_queue::operator[](_In_ size_type pos) const']]] +]; diff --git a/search/functions_d.html b/search/functions_d.html new file mode 100644 index 00000000..ada2b817 --- /dev/null +++ b/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 00000000..76947095 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['pop_5fback_0',['pop_back',['../classwinstd_1_1vector__queue.html#a78eb633dd5881a7f9148be7a60215667',1,'winstd::vector_queue']]], + ['pop_5ffront_1',['pop_front',['../classwinstd_1_1vector__queue.html#a2d4893e6bb2a94a8ebb996db46c70136',1,'winstd::vector_queue']]], + ['process_2',['process',['../classwinstd_1_1sec__context.html#a38fc9a1281be19c1c1627dfcd1c0a5a3',1,'winstd::sec_context']]], + ['process_5finformation_3',['process_information',['../classwinstd_1_1process__information.html#a8b66efb1e5c75ac7aef0ea02b9f9fd39',1,'winstd::process_information']]], + ['push_5fback_4',['push_back',['../classwinstd_1_1vector__queue.html#a9b3f5cf245ee1d5e76a9a4025909a503',1,'winstd::vector_queue::push_back(_In_ const value_type &v)'],['../classwinstd_1_1vector__queue.html#a9153a18016a1b8b591617a63550459e4',1,'winstd::vector_queue::push_back(_Inout_ value_type &&v)']]], + ['push_5ffront_5',['push_front',['../classwinstd_1_1vector__queue.html#a1dacce0d4c9a919a6bc1dc9d5d5de65a',1,'winstd::vector_queue::push_front(_In_ const value_type &v)'],['../classwinstd_1_1vector__queue.html#a8fc8158fb53487b7f061177f53a29909',1,'winstd::vector_queue::push_front(_Inout_ value_type &&v)']]] +]; diff --git a/search/functions_e.html b/search/functions_e.html new file mode 100644 index 00000000..12977150 --- /dev/null +++ b/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 00000000..4216e52a --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['query_5finterface_0',['query_interface',['../classwinstd_1_1com__obj.html#adaf8aacd14f27142cdb99edff9ac07a9',1,'winstd::com_obj::query_interface(_Out_ _Other **h) const'],['../classwinstd_1_1com__obj.html#adbce2534b586fb53bce5cd2e5508dbb3',1,'winstd::com_obj::query_interface(_Out_ com_obj< _Other > &h) const']]] +]; diff --git a/search/functions_f.html b/search/functions_f.html new file mode 100644 index 00000000..d2ae3cf5 --- /dev/null +++ b/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 00000000..f93a7c2a --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['reason_0',['reason',['../classwinstd_1_1eap__runtime__error.html#a3329eb549dce7f57f5a59e3f5a16705c',1,'winstd::eap_runtime_error']]], + ['ref_5funique_5fptr_1',['ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a2e400c502b75898f06f01ed1da993453',1,'winstd::ref_unique_ptr::ref_unique_ptr(_Inout_ std::unique_ptr< _Ty, _Dx > &owner)'],['../classwinstd_1_1ref__unique__ptr.html#a3982336fd019c82d54f6c9e38412ceeb',1,'winstd::ref_unique_ptr::ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty, _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a09f96b3a6a6e6688272344b186d51aa0',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(_Inout_ std::unique_ptr< _Ty[], _Dx > &owner) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a7c7ca17c6ae2e64d0c5cb01841fc04a7',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(_Inout_ ref_unique_ptr< _Ty[], _Dx > &&other)']]], + ['repair_2',['repair',['../classwinstd_1_1eap__runtime__error.html#a981cb9a1cbf0c6e7e19252d776a2558f',1,'winstd::eap_runtime_error']]], + ['repair_5fid_3',['repair_id',['../classwinstd_1_1eap__runtime__error.html#a1e80ead2a4d348ab2c939bfbbaf9330a',1,'winstd::eap_runtime_error']]], + ['root_5fcause_4',['root_cause',['../classwinstd_1_1eap__runtime__error.html#a0aa17a51b2c110e874b60924281a3743',1,'winstd::eap_runtime_error']]], + ['root_5fcause_5fid_5',['root_cause_id',['../classwinstd_1_1eap__runtime__error.html#ae39b6b32c9505c0be2e199d8692175d1',1,'winstd::eap_runtime_error']]] +]; diff --git a/search/groups_0.html b/search/groups_0.html new file mode 100644 index 00000000..c8654e6f --- /dev/null +++ b/search/groups_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 00000000..c5e05f0b --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['auto_2dsanitize_20memory_20management_0',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]] +]; diff --git a/search/groups_1.html b/search/groups_1.html new file mode 100644 index 00000000..a2089f4b --- /dev/null +++ b/search/groups_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 00000000..ff67f5a5 --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['com_20object_20management_0',['COM object management',['../group___win_std_c_o_m.html',1,'']]], + ['credentials_20api_1',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], + ['cryptography_20api_2',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] +]; diff --git a/search/groups_2.html b/search/groups_2.html new file mode 100644 index 00000000..5608e063 --- /dev/null +++ b/search/groups_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_2.js b/search/groups_2.js new file mode 100644 index 00000000..7431a3e2 --- /dev/null +++ b/search/groups_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['event_20tracing_20for_20windows_20api_0',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]], + ['exceptions_1',['Exceptions',['../group___win_std_exceptions.html',1,'']]], + ['extensible_20authentication_20protocol_20api_2',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]] +]; diff --git a/search/groups_3.html b/search/groups_3.html new file mode 100644 index 00000000..ab26f1fe --- /dev/null +++ b/search/groups_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_3.js b/search/groups_3.js new file mode 100644 index 00000000..ae3c103b --- /dev/null +++ b/search/groups_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gdi_20api_0',['GDI API',['../group___win_std_gdi_a_p_i.html',1,'']]], + ['general_1',['General',['../group___win_std_general.html',1,'']]] +]; diff --git a/search/groups_4.html b/search/groups_4.html new file mode 100644 index 00000000..9cff75ce --- /dev/null +++ b/search/groups_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_4.js b/search/groups_4.js new file mode 100644 index 00000000..5171c04b --- /dev/null +++ b/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['microsoft_20installer_20api_0',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]] +]; diff --git a/search/groups_5.html b/search/groups_5.html new file mode 100644 index 00000000..4aa3f9d1 --- /dev/null +++ b/search/groups_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_5.js b/search/groups_5.js new file mode 100644 index 00000000..ae95a6b2 --- /dev/null +++ b/search/groups_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['security_20api_0',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], + ['setup_20api_1',['Setup API',['../group___setup_a_p_i.html',1,'']]], + ['shell_20api_2',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], + ['string_20formatting_3',['String Formatting',['../group___win_std_str_format.html',1,'']]], + ['system_20handles_4',['System Handles',['../group___win_std_sys_handles.html',1,'']]] +]; diff --git a/search/groups_6.html b/search/groups_6.html new file mode 100644 index 00000000..03970d92 --- /dev/null +++ b/search/groups_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_6.js b/search/groups_6.js new file mode 100644 index 00000000..8943ad11 --- /dev/null +++ b/search/groups_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['windows_20api_0',['Windows API',['../group___win_std_win_a_p_i.html',1,'']]], + ['winsock2_20api_1',['WinSock2 API',['../group___win_sock2_a_p_i.html',1,'']]], + ['wintrust_20api_2',['WinTrust API',['../group___win_trust_a_p_i.html',1,'']]], + ['wlan_20api_3',['WLAN API',['../group___win_std_w_l_a_n_a_p_i.html',1,'']]] +]; diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 00000000..03626f64 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 00000000..2b9360b6 --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 00000000..e53c280e --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 00000000..ce9389fd --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['winstd_0',['WinStd',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 00000000..648a792f --- /dev/null +++ b/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 00000000..ac8055d1 --- /dev/null +++ b/search/search.js @@ -0,0 +1,794 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/search/search_r.png b/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/search/searchdata.js b/search/searchdata.js new file mode 100644 index 00000000..cd4decf2 --- /dev/null +++ b/search/searchdata.js @@ -0,0 +1,39 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghilmnopqrstuvw~", + 1: "abcdefghlnprsuvw", + 2: "abcdefghilmnopqrstuvw~", + 3: "im", + 4: "_cdehoprstvw", + 5: "e", + 6: "egilmnopstu", + 7: "acegmsw", + 8: "w" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "functions", + 3: "variables", + 4: "typedefs", + 5: "enums", + 6: "enumvalues", + 7: "groups", + 8: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Functions", + 3: "Variables", + 4: "Typedefs", + 5: "Enumerations", + 6: "Enumerator", + 7: "Modules", + 8: "Pages" +}; + diff --git a/search/typedefs_0.html b/search/typedefs_0.html new file mode 100644 index 00000000..882b2a19 --- /dev/null +++ b/search/typedefs_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_0.js b/search/typedefs_0.js new file mode 100644 index 00000000..60ad21c1 --- /dev/null +++ b/search/typedefs_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5fmybase_0',['_Mybase',['../classwinstd_1_1sanitizing__allocator.html#af60051d2fb18f2c2353ffe9bb6a06087',1,'winstd::sanitizing_allocator']]], + ['_5fmyt_1',['_Myt',['../structwinstd_1_1_local_free__delete.html#a1711e7f5b78649499330c8fe8007b3ea',1,'winstd::LocalFree_delete::_Myt()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#a7c9ed5a011c6d31b3189bdf3d212cd0d',1,'winstd::LocalFree_delete< _Ty[]>::_Myt()'],['../structwinstd_1_1_cred_free__delete.html#ab46fe0807ba356084523c04c8c565b53',1,'winstd::CredFree_delete::_Myt()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aa735db2daba14212c29b3c5af0e0b0d1',1,'winstd::CredFree_delete< _Ty[]>::_Myt()'],['../structwinstd_1_1_wlan_free_memory__delete.html#a92dd05a3becb4a67ad858472eb615668',1,'winstd::WlanFreeMemory_delete::_Myt()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a42bc91dcaea20ff32034ba5482027837',1,'winstd::WlanFreeMemory_delete< _Ty[]>::_Myt()']]] +]; diff --git a/search/typedefs_1.html b/search/typedefs_1.html new file mode 100644 index 00000000..54ce58e1 --- /dev/null +++ b/search/typedefs_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_1.js b/search/typedefs_1.js new file mode 100644 index 00000000..81c46084 --- /dev/null +++ b/search/typedefs_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['const_5fpointer_0',['const_pointer',['../classwinstd_1_1vector__queue.html#aa48eb9766a233e659f6d25d7902a6348',1,'winstd::vector_queue::const_pointer()'],['../classwinstd_1_1heap__allocator.html#adc56ad9f2484d7d34299bef73709ef9c',1,'winstd::heap_allocator::const_pointer()']]], + ['const_5freference_1',['const_reference',['../classwinstd_1_1vector__queue.html#aac615b53f39df47eb897128c2b648387',1,'winstd::vector_queue::const_reference()'],['../classwinstd_1_1heap__allocator.html#ad98c7e8fc3e14da42a8dfc897e75a790',1,'winstd::heap_allocator::const_reference()']]] +]; diff --git a/search/typedefs_2.html b/search/typedefs_2.html new file mode 100644 index 00000000..9fc36bdf --- /dev/null +++ b/search/typedefs_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_2.js b/search/typedefs_2.js new file mode 100644 index 00000000..d519699a --- /dev/null +++ b/search/typedefs_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['difference_5ftype_0',['difference_type',['../classwinstd_1_1heap__allocator.html#a4b39b8176ea30e1ceb02642c44de7b43',1,'winstd::heap_allocator']]] +]; diff --git a/search/typedefs_3.html b/search/typedefs_3.html new file mode 100644 index 00000000..05938a18 --- /dev/null +++ b/search/typedefs_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_3.js b/search/typedefs_3.js new file mode 100644 index 00000000..c8ba5444 --- /dev/null +++ b/search/typedefs_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['eap_5fblob_0',['eap_blob',['../group___win_std_e_a_p_a_p_i.html#ga25f2a0eea11e8332bfcec6b032a17a05',1,'winstd']]], + ['eap_5fblob_5fruntime_1',['eap_blob_runtime',['../group___win_std_e_a_p_a_p_i.html#gabd2665596cc49191b36e6378147c47ad',1,'winstd']]], + ['eap_5ferror_2',['eap_error',['../group___win_std_e_a_p_a_p_i.html#ga910edec3d3d1ba4f6f306dcafdc2117a',1,'winstd']]], + ['eap_5ferror_5fruntime_3',['eap_error_runtime',['../group___win_std_e_a_p_a_p_i.html#ga102f6e28f2ae479af7b6555894f110ac',1,'winstd']]], + ['error_5ftype_4',['error_type',['../classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0',1,'winstd::num_runtime_error']]] +]; diff --git a/search/typedefs_4.html b/search/typedefs_4.html new file mode 100644 index 00000000..db3b023d --- /dev/null +++ b/search/typedefs_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_4.js b/search/typedefs_4.js new file mode 100644 index 00000000..1bc908e5 --- /dev/null +++ b/search/typedefs_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handle_5ftype_0',['handle_type',['../classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81',1,'winstd::handle']]] +]; diff --git a/search/typedefs_5.html b/search/typedefs_5.html new file mode 100644 index 00000000..66f92948 --- /dev/null +++ b/search/typedefs_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_5.js b/search/typedefs_5.js new file mode 100644 index 00000000..ffff2749 --- /dev/null +++ b/search/typedefs_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['other_0',['other',['../structwinstd_1_1sanitizing__allocator_1_1rebind.html#a6a195ba8f7b42d8e82304efb08e18679',1,'winstd::sanitizing_allocator::rebind::other()'],['../structwinstd_1_1heap__allocator_1_1rebind.html#a7916519ada01914c23461a64334ff331',1,'winstd::heap_allocator::rebind::other()']]] +]; diff --git a/search/typedefs_6.html b/search/typedefs_6.html new file mode 100644 index 00000000..c23af7c8 --- /dev/null +++ b/search/typedefs_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_6.js b/search/typedefs_6.js new file mode 100644 index 00000000..d8305612 --- /dev/null +++ b/search/typedefs_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pointer_0',['pointer',['../classwinstd_1_1vector__queue.html#ada5239d656b712aa314bd725478c0d5b',1,'winstd::vector_queue::pointer()'],['../classwinstd_1_1heap__allocator.html#ae04bc3ff970d32e6a2967072efdb06cd',1,'winstd::heap_allocator::pointer()']]] +]; diff --git a/search/typedefs_7.html b/search/typedefs_7.html new file mode 100644 index 00000000..252b90bc --- /dev/null +++ b/search/typedefs_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_7.js b/search/typedefs_7.js new file mode 100644 index 00000000..c0251ef0 --- /dev/null +++ b/search/typedefs_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reference_0',['reference',['../classwinstd_1_1vector__queue.html#a59181fbdffe008bf0dc3579ce26931c9',1,'winstd::vector_queue::reference()'],['../classwinstd_1_1heap__allocator.html#a88ed8962cd0d64849119d7a11135b2d0',1,'winstd::heap_allocator::reference()']]] +]; diff --git a/search/typedefs_8.html b/search/typedefs_8.html new file mode 100644 index 00000000..2e018fba --- /dev/null +++ b/search/typedefs_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_8.js b/search/typedefs_8.js new file mode 100644 index 00000000..39de581d --- /dev/null +++ b/search/typedefs_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sanitizing_5fstring_0',['sanitizing_string',['../group___win_std_mem_sanitize.html#gafaf527687e080349d49b51c2362c32e8',1,'winstd']]], + ['sanitizing_5ftstring_1',['sanitizing_tstring',['../group___win_std_mem_sanitize.html#gaa149b89d04cc80c125023a14e241e8bd',1,'winstd']]], + ['sanitizing_5fwstring_2',['sanitizing_wstring',['../group___win_std_mem_sanitize.html#ga57776f4affaac5040ba220302003eedc',1,'winstd']]], + ['size_5ftype_3',['size_type',['../classwinstd_1_1vector__queue.html#a475377da6315c1756e3787e082f78668',1,'winstd::vector_queue::size_type()'],['../classwinstd_1_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator::size_type()']]], + ['string_5fmsg_4',['string_msg',['../group___win_std_str_format.html#gae63195e25e08e2b3d9a9b9c2987f5740',1,'winstd']]], + ['string_5fprintf_5',['string_printf',['../group___win_std_str_format.html#ga9dda7a9a763b666f6fe00c4c6626621d',1,'winstd']]] +]; diff --git a/search/typedefs_9.html b/search/typedefs_9.html new file mode 100644 index 00000000..cab6c5e3 --- /dev/null +++ b/search/typedefs_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_9.js b/search/typedefs_9.js new file mode 100644 index 00000000..2550875c --- /dev/null +++ b/search/typedefs_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['tstring_0',['tstring',['../group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc',1,'winstd']]], + ['tstring_5fguid_1',['tstring_guid',['../group___win_std_str_format.html#ga4c44b6a587f894ee33bb58a10ba27d6b',1,'winstd']]], + ['tstring_5fmsg_2',['tstring_msg',['../group___win_std_str_format.html#gaf47f07aac0b4c8ef47cf42216ab17f1b',1,'winstd']]], + ['tstring_5fprintf_3',['tstring_printf',['../group___win_std_str_format.html#gab805ccda115191833fb01ba4457f208a',1,'winstd']]] +]; diff --git a/search/typedefs_a.html b/search/typedefs_a.html new file mode 100644 index 00000000..f7d65bb9 --- /dev/null +++ b/search/typedefs_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_a.js b/search/typedefs_a.js new file mode 100644 index 00000000..c79d4e71 --- /dev/null +++ b/search/typedefs_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['value_5ftype_0',['value_type',['../classwinstd_1_1vector__queue.html#a63882bccf1b28de14b54d23f00157c06',1,'winstd::vector_queue::value_type()'],['../classwinstd_1_1heap__allocator.html#a091ba3fb46ee75b8350c3fa9e6277c57',1,'winstd::heap_allocator::value_type()']]] +]; diff --git a/search/typedefs_b.html b/search/typedefs_b.html new file mode 100644 index 00000000..f051144b --- /dev/null +++ b/search/typedefs_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_b.js b/search/typedefs_b.js new file mode 100644 index 00000000..ff38f411 --- /dev/null +++ b/search/typedefs_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wstring_5fmsg_0',['wstring_msg',['../group___win_std_str_format.html#ga52a88ab19a1a96f778dbf7a2938bc98f',1,'winstd']]], + ['wstring_5fprintf_1',['wstring_printf',['../group___win_std_str_format.html#ga0abdccf0a03840f984b7a889fea13cac',1,'winstd']]] +]; diff --git a/search/variables_0.html b/search/variables_0.html new file mode 100644 index 00000000..950bfc5f --- /dev/null +++ b/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 00000000..5b7d7821 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['invalid_0',['invalid',['../group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c',1,'winstd::handle']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 00000000..fed58a5d --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 00000000..5c654f73 --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['m_5fattrib_0',['m_attrib',['../classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f',1,'winstd::sec_context']]], + ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie()'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie()'],['../classwinstd_1_1user__impersonator.html#a28b0a9c7d1759b2be3ae3deb960a287c',1,'winstd::user_impersonator::m_cookie()']]], + ['m_5fcount_2',['m_count',['../classwinstd_1_1vector__queue.html#a539a5aae817c23655ee18c9d8197157a',1,'winstd::vector_queue']]], + ['m_5fdata_3',['m_data',['../classwinstd_1_1vector__queue.html#add5592dce4d7f82967925271c9ed8162',1,'winstd::vector_queue::m_data()'],['../classwinstd_1_1sanitizing__blob.html#a38187ccd591a6a7cfa4a9d0a6f6f7701',1,'winstd::sanitizing_blob::m_data()'],['../classwinstd_1_1critical__section.html#a55b9b9e7f38b94cd5c3fc15a319a6719',1,'winstd::critical_section::m_data()']]], + ['m_5fdesc_4',['m_desc',['../classwinstd_1_1event__fn__auto__ret.html#a23fa88c6a7aea86536cc0e4bee2746cf',1,'winstd::event_fn_auto_ret']]], + ['m_5fenable_5ffilter_5fdesc_5',['m_enable_filter_desc',['../classwinstd_1_1event__trace__enabler.html#a358d20e2dbbc7dcaccbe8d3d303cc3c4',1,'winstd::event_trace_enabler']]], + ['m_5fenable_5fproperty_6',['m_enable_property',['../classwinstd_1_1event__trace__enabler.html#afa99363e0122b520280f1e4a6f0a6c35',1,'winstd::event_trace_enabler']]], + ['m_5fep_7',['m_ep',['../classwinstd_1_1event__fn__auto.html#acbfdaed91d8a3aa3346d33d1a548457a',1,'winstd::event_fn_auto::m_ep()'],['../classwinstd_1_1event__fn__auto__ret.html#a52a16bf54fa9fc800e7c18d3fd75fb53',1,'winstd::event_fn_auto_ret::m_ep()']]], + ['m_5fevent_5fdest_8',['m_event_dest',['../classwinstd_1_1event__fn__auto__ret.html#a8d168be3f57047c78fa329ff3eb2e700',1,'winstd::event_fn_auto_ret::m_event_dest()'],['../classwinstd_1_1event__fn__auto.html#a03080fbd3201b899cce1ab5bb59dca2f',1,'winstd::event_fn_auto::m_event_dest()']]], + ['m_5fexpires_9',['m_expires',['../classwinstd_1_1sec__credentials.html#ab2b392dc45e270c5855245fe4c8d159a',1,'winstd::sec_credentials::m_expires()'],['../classwinstd_1_1sec__context.html#a8ea323950689fbfa34e945825f013304',1,'winstd::sec_context::m_expires()']]], + ['m_5ffn_5fname_10',['m_fn_name',['../classwinstd_1_1event__fn__auto.html#ad17409fc9cdaa8b78a9f38e39e21a9f0',1,'winstd::event_fn_auto']]], + ['m_5fh_11',['m_h',['../classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59',1,'winstd::handle']]], + ['m_5fhandler_12',['m_handler',['../classwinstd_1_1console__ctrl__handler.html#a9ef863ec7a6cd26788acb94430948e60',1,'winstd::console_ctrl_handler']]], + ['m_5fhdc_13',['m_hdc',['../classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3',1,'winstd::dc_selector']]], + ['m_5fhead_14',['m_head',['../classwinstd_1_1vector__queue.html#ab5388ba90fe41184a3a5b1432eec7b82',1,'winstd::vector_queue']]], + ['m_5fheap_15',['m_heap',['../classwinstd_1_1heap__allocator.html#a36fb89d5fca7564d2718ba54a519eadd',1,'winstd::heap_allocator']]], + ['m_5fhelp_5flink_5fid_16',['m_help_link_id',['../classwinstd_1_1eap__runtime__error.html#aa23bf8c3fc64f54e7021bb97dfefda89',1,'winstd::eap_runtime_error']]], + ['m_5fhwnd_17',['m_hwnd',['../classwinstd_1_1window__dc.html#a04f6e8a97f6a492cc2f0683738e978d3',1,'winstd::window_dc']]], + ['m_5flevel_18',['m_level',['../classwinstd_1_1event__trace__enabler.html#a12535c295825c30360527f963a427e30',1,'winstd::event_trace_enabler']]], + ['m_5fmatch_5fall_5fkeyword_19',['m_match_all_keyword',['../classwinstd_1_1event__trace__enabler.html#acb40cf714473e7c8a193f4f9cef8d1b2',1,'winstd::event_trace_enabler']]], + ['m_5fmatch_5fany_5fkeyword_20',['m_match_any_keyword',['../classwinstd_1_1event__trace__enabler.html#a363083f0792e5bf5429576e6c40c4060',1,'winstd::event_trace_enabler']]], + ['m_5fnum_21',['m_num',['../classwinstd_1_1num__runtime__error.html#a865b8400a5a5a962c3068bf55f022d1f',1,'winstd::num_runtime_error']]], + ['m_5forig_22',['m_orig',['../classwinstd_1_1dc__selector.html#aa443ed25d281078db2172808e7c74b3e',1,'winstd::dc_selector']]], + ['m_5fown_23',['m_own',['../classwinstd_1_1ref__unique__ptr.html#a343d26837b90973a7f562f0ce36fb82d',1,'winstd::ref_unique_ptr::m_own()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a1c6caa9922b023afae5b2adbd2fa40a5',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::m_own()']]], + ['m_5fproc_24',['m_proc',['../classwinstd_1_1vmemory.html#af448989be292da246dd25469d7a70b87',1,'winstd::vmemory']]], + ['m_5fprop_25',['m_prop',['../classwinstd_1_1event__session.html#ad2b5e63572d44c37dc3f4f64feefa3cc',1,'winstd::event_session']]], + ['m_5fprovider_5fid_26',['m_provider_id',['../classwinstd_1_1event__trace__enabler.html#ade3cdf424d3a4eb85f0fdc554dfcf673',1,'winstd::event_trace_enabler']]], + ['m_5fptr_27',['m_ptr',['../classwinstd_1_1ref__unique__ptr.html#a72486d304d712600e6b222fab19d1032',1,'winstd::ref_unique_ptr::m_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a8d9eb2287c86ebcb89a0417842410d0b',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::m_ptr()']]], + ['m_5freason_28',['m_reason',['../classwinstd_1_1eap__runtime__error.html#af7d0e9785475719f4b1b0b59c4ae49e3',1,'winstd::eap_runtime_error']]], + ['m_5frepair_5fdesc_29',['m_repair_desc',['../classwinstd_1_1eap__runtime__error.html#a2b237993f0c860b8b0ad83416d499f18',1,'winstd::eap_runtime_error']]], + ['m_5frepair_5fid_30',['m_repair_id',['../classwinstd_1_1eap__runtime__error.html#a526d2ae63c12d1a439d69412e7f13ec7',1,'winstd::eap_runtime_error']]], + ['m_5fresult_31',['m_result',['../classwinstd_1_1com__initializer.html#ae9478fd05b5b1c82e0f762c2b517155b',1,'winstd::com_initializer::m_result()'],['../classwinstd_1_1event__fn__auto__ret.html#a69f1ae5c23f90aaa4da012b1eb0b8f81',1,'winstd::event_fn_auto_ret::m_result()'],['../classwinstd_1_1setup__driver__info__list__builder.html#ae2c9f0f68a5068823a903092ef940d50',1,'winstd::setup_driver_info_list_builder::m_result()']]], + ['m_5froot_5fcause_5fdesc_32',['m_root_cause_desc',['../classwinstd_1_1eap__runtime__error.html#aea17d371de31216ac0754c1ed1f0b99a',1,'winstd::eap_runtime_error']]], + ['m_5froot_5fcause_5fid_33',['m_root_cause_id',['../classwinstd_1_1eap__runtime__error.html#a084ddacb051932c211a995872fb67b57',1,'winstd::eap_runtime_error']]], + ['m_5fsize_5fmax_34',['m_size_max',['../classwinstd_1_1vector__queue.html#a4e9b41f9a4573e397c943b9f8f3f0857',1,'winstd::vector_queue']]], + ['m_5fsource_5fid_35',['m_source_id',['../classwinstd_1_1event__trace__enabler.html#ae6269d27652b694435656906784e3a7a',1,'winstd::event_trace_enabler']]], + ['m_5fstatus_36',['m_status',['../classwinstd_1_1event__trace__enabler.html#a576839d3b1e1db676ea1175329b02c9f',1,'winstd::event_trace_enabler']]], + ['m_5ftrace_5fhandle_37',['m_trace_handle',['../classwinstd_1_1event__trace__enabler.html#a5ef48960265e3786fb94fe7f64587909',1,'winstd::event_trace_enabler']]], + ['m_5ftype_38',['m_type',['../classwinstd_1_1eap__runtime__error.html#a4d7e04b38831f029d862990b607333aa',1,'winstd::eap_runtime_error']]] +]; diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/structwinstd_1_1_co_task_mem_free__delete-members.html b/structwinstd_1_1_co_task_mem_free__delete-members.html new file mode 100644 index 00000000..892f55ec --- /dev/null +++ b/structwinstd_1_1_co_task_mem_free__delete-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::CoTaskMemFree_delete Member List
    +
    +
    + +

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

    + + + +
    CoTaskMemFree_delete() noexceptwinstd::CoTaskMemFree_deleteinline
    operator()(_T *_Ptr) constwinstd::CoTaskMemFree_deleteinline
    + + + + diff --git a/structwinstd_1_1_co_task_mem_free__delete.html b/structwinstd_1_1_co_task_mem_free__delete.html new file mode 100644 index 00000000..fa3478fc --- /dev/null +++ b/structwinstd_1_1_co_task_mem_free__delete.html @@ -0,0 +1,136 @@ + + + + + + + +WinStd: winstd::CoTaskMemFree_delete Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::CoTaskMemFree_delete Struct Reference
    +
    +
    + +

    Deleter for unique_ptr using CoTaskMemFree. + More...

    + +

    #include <COM.h>

    + + + + + + + + + +

    +Public Member Functions

    CoTaskMemFree_delete () noexcept
     Default constructor.
     
    template<class _T >
    void operator() (_T *_Ptr) const
     Delete a pointer. More...
     
    +

    Detailed Description

    +

    Deleter for unique_ptr using CoTaskMemFree.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class _T >
    + + + + + +
    + + + + + + + + +
    void winstd::CoTaskMemFree_delete::operator() (_T * _Ptr) const
    +
    +inline
    +
    + +

    Delete a pointer.

    +
    See also
    CoTaskMemFree function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structwinstd_1_1_cred_free__delete-members.html b/structwinstd_1_1_cred_free__delete-members.html new file mode 100644 index 00000000..0cbb4122 --- /dev/null +++ b/structwinstd_1_1_cred_free__delete-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::CredFree_delete< _Ty > Member List
    +
    +
    + +

    This is the complete list of members for winstd::CredFree_delete< _Ty >, including all inherited members.

    + + + + + +
    _Myt typedefwinstd::CredFree_delete< _Ty >
    CredFree_delete()winstd::CredFree_delete< _Ty >inline
    CredFree_delete(const CredFree_delete< _Ty2 > &)winstd::CredFree_delete< _Ty >inline
    operator()(_Ty *_Ptr) constwinstd::CredFree_delete< _Ty >inline
    + + + + diff --git a/structwinstd_1_1_cred_free__delete.html b/structwinstd_1_1_cred_free__delete.html new file mode 100644 index 00000000..f8b9fe63 --- /dev/null +++ b/structwinstd_1_1_cred_free__delete.html @@ -0,0 +1,149 @@ + + + + + + + +WinStd: winstd::CredFree_delete< _Ty > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::CredFree_delete< _Ty > Struct Template Reference
    +
    +
    + +

    Deleter for unique_ptr using CredFree. + More...

    + +

    #include <Cred.h>

    + + + + + +

    +Public Types

    +typedef CredFree_delete< _Ty > _Myt
     This type.
     
    + + + + + + + + + + + +

    +Public Member Functions

    CredFree_delete ()
     Default construct.
     
    +template<class _Ty2 >
     CredFree_delete (const CredFree_delete< _Ty2 > &)
     Construct from another CredFree_delete.
     
    void operator() (_Ty *_Ptr) const
     Delete a pointer. More...
     
    +

    Detailed Description

    +
    template<class _Ty>
    +struct winstd::CredFree_delete< _Ty >

    Deleter for unique_ptr using CredFree.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class _Ty >
    + + + + + +
    + + + + + + + + +
    void winstd::CredFree_delete< _Ty >::operator() (_Ty * _Ptr) const
    +
    +inline
    +
    + +

    Delete a pointer.

    +
    See also
    CredFree function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..09192339 --- /dev/null +++ b/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::CredFree_delete< _Ty[]> Member List
    +
    +
    + +

    This is the complete list of members for winstd::CredFree_delete< _Ty[]>, including all inherited members.

    + + + + + +
    _Myt typedefwinstd::CredFree_delete< _Ty[]>
    CredFree_delete()winstd::CredFree_delete< _Ty[]>inline
    operator()(_Ty *_Ptr) const noexceptwinstd::CredFree_delete< _Ty[]>inline
    operator()(_Other *) constwinstd::CredFree_delete< _Ty[]>inline
    + + + + 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 new file mode 100644 index 00000000..70811bc6 --- /dev/null +++ b/structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html @@ -0,0 +1,181 @@ + + + + + + + +WinStd: winstd::CredFree_delete< _Ty[]> Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::CredFree_delete< _Ty[]> Struct Template Reference
    +
    +
    + +

    Deleter for unique_ptr to array of unknown size using CredFree. + More...

    + +

    #include <Cred.h>

    + + + + + +

    +Public Types

    +typedef CredFree_delete< _Ty > _Myt
     This type.
     
    + + + + + + + + + + + +

    +Public Member Functions

    CredFree_delete ()
     Default construct.
     
    void operator() (_Ty *_Ptr) const noexcept
     Delete a pointer. More...
     
    template<class _Other >
    void operator() (_Other *) const
     Delete a pointer of another type. More...
     
    +

    Detailed Description

    +
    template<class _Ty>
    +struct winstd::CredFree_delete< _Ty[]>

    Deleter for unique_ptr to array of unknown size using CredFree.

    +

    Member Function Documentation

    + +

    ◆ operator()() [1/2]

    + +
    +
    +
    +template<class _Ty >
    +
    +template<class _Other >
    + + + + + +
    + + + + + + + + +
    void winstd::CredFree_delete< _Ty[]>::operator() (_Other * ) const
    +
    +inline
    +
    + +

    Delete a pointer of another type.

    +
    See also
    CredFree function
    + +
    +
    + +

    ◆ operator()() [2/2]

    + +
    +
    +
    +template<class _Ty >
    + + + + + +
    + + + + + + + + +
    void winstd::CredFree_delete< _Ty[]>::operator() (_Ty * _Ptr) const
    +
    +inlinenoexcept
    +
    + +

    Delete a pointer.

    +
    See also
    CredFree function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..ead0de40 --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_eap_error__delete-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::EapHostPeerFreeEapError_delete Member List
    +
    +
    + +

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

    + + + +
    EapHostPeerFreeEapError_delete() noexceptwinstd::EapHostPeerFreeEapError_deleteinline
    operator()(EAP_ERROR *_Ptr) const noexceptwinstd::EapHostPeerFreeEapError_deleteinline
    + + + + 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 new file mode 100644 index 00000000..014f174c --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_eap_error__delete.html @@ -0,0 +1,133 @@ + + + + + + + +WinStd: winstd::EapHostPeerFreeEapError_delete Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::EapHostPeerFreeEapError_delete Struct Reference
    +
    +
    + +

    Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError. + More...

    + +

    #include <EAP.h>

    + + + + + + + + +

    +Public Member Functions

    EapHostPeerFreeEapError_delete () noexcept
     Default constructor.
     
    void operator() (EAP_ERROR *_Ptr) const noexcept
     Delete a pointer. More...
     
    +

    Detailed Description

    +

    Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void winstd::EapHostPeerFreeEapError_delete::operator() (EAP_ERROR * _Ptr) const
    +
    +inlinenoexcept
    +
    + +

    Delete a pointer.

    +
    See also
    EapHostPeerFreeEapError function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..87e65536 --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_error_memory__delete-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::EapHostPeerFreeErrorMemory_delete Member List
    +
    +
    + +

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

    + + + +
    EapHostPeerFreeErrorMemory_delete() noexceptwinstd::EapHostPeerFreeErrorMemory_deleteinline
    operator()(EAP_ERROR *_Ptr) const noexceptwinstd::EapHostPeerFreeErrorMemory_deleteinline
    + + + + 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 new file mode 100644 index 00000000..f2ffc72b --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_error_memory__delete.html @@ -0,0 +1,133 @@ + + + + + + + +WinStd: winstd::EapHostPeerFreeErrorMemory_delete Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::EapHostPeerFreeErrorMemory_delete Struct Reference
    +
    +
    + +

    Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory. + More...

    + +

    #include <EAP.h>

    + + + + + + + + +

    +Public Member Functions

    EapHostPeerFreeErrorMemory_delete () noexcept
     Default constructor.
     
    void operator() (EAP_ERROR *_Ptr) const noexcept
     Delete a pointer. More...
     
    +

    Detailed Description

    +

    Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeErrorMemory.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void winstd::EapHostPeerFreeErrorMemory_delete::operator() (EAP_ERROR * _Ptr) const
    +
    +inlinenoexcept
    +
    + +

    Delete a pointer.

    +
    See also
    EapHostPeerFreeErrorMemory function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..4491de9e --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_memory__delete-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::EapHostPeerFreeMemory_delete Member List
    +
    +
    + +

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

    + + + +
    EapHostPeerFreeMemory_delete() noexceptwinstd::EapHostPeerFreeMemory_deleteinline
    operator()(_T *_Ptr) constwinstd::EapHostPeerFreeMemory_deleteinline
    + + + + diff --git a/structwinstd_1_1_eap_host_peer_free_memory__delete.html b/structwinstd_1_1_eap_host_peer_free_memory__delete.html new file mode 100644 index 00000000..94cb95c5 --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_memory__delete.html @@ -0,0 +1,136 @@ + + + + + + + +WinStd: winstd::EapHostPeerFreeMemory_delete Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::EapHostPeerFreeMemory_delete Struct Reference
    +
    +
    + +

    Deleter for unique_ptr using EapHostPeerFreeMemory. + More...

    + +

    #include <EAP.h>

    + + + + + + + + + +

    +Public Member Functions

    EapHostPeerFreeMemory_delete () noexcept
     Default constructor.
     
    template<class _T >
    void operator() (_T *_Ptr) const
     Delete a pointer. More...
     
    +

    Detailed Description

    +

    Deleter for unique_ptr using EapHostPeerFreeMemory.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class _T >
    + + + + + +
    + + + + + + + + +
    void winstd::EapHostPeerFreeMemory_delete::operator() (_T * _Ptr) const
    +
    +inline
    +
    + +

    Delete a pointer.

    +
    See also
    EapHostPeerFreeMemory function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..40cee276 --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete-members.html @@ -0,0 +1,84 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::EapHostPeerFreeRuntimeMemory_delete Member List
    +
    +
    + +

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

    + + + +
    EapHostPeerFreeRuntimeMemory_delete() noexceptwinstd::EapHostPeerFreeRuntimeMemory_deleteinline
    operator()(_T *_Ptr) constwinstd::EapHostPeerFreeRuntimeMemory_deleteinline
    + + + + 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 new file mode 100644 index 00000000..c5f89fa4 --- /dev/null +++ b/structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html @@ -0,0 +1,105 @@ + + + + + + + +WinStd: winstd::EapHostPeerFreeRuntimeMemory_delete Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::EapHostPeerFreeRuntimeMemory_delete Struct Reference
    +
    +
    + +

    Deleter for unique_ptr using EapHostPeerFreeRuntimeMemory. + More...

    + +

    #include <EAP.h>

    + + + + + + + + + +

    +Public Member Functions

    EapHostPeerFreeRuntimeMemory_delete () noexcept
     Default constructor.
     
    +template<class _T >
    void operator() (_T *_Ptr) const
     Delete a pointer.
     
    +

    Detailed Description

    +

    Deleter for unique_ptr using EapHostPeerFreeRuntimeMemory.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structwinstd_1_1_local_free__delete-members.html b/structwinstd_1_1_local_free__delete-members.html new file mode 100644 index 00000000..dce0bb66 --- /dev/null +++ b/structwinstd_1_1_local_free__delete-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::LocalFree_delete< _Ty > Member List
    +
    +
    + +

    This is the complete list of members for winstd::LocalFree_delete< _Ty >, including all inherited members.

    + + + + + +
    _Myt typedefwinstd::LocalFree_delete< _Ty >
    LocalFree_delete()winstd::LocalFree_delete< _Ty >inline
    LocalFree_delete(const LocalFree_delete< _Ty2 > &)winstd::LocalFree_delete< _Ty >inline
    operator()(_Ty *_Ptr) constwinstd::LocalFree_delete< _Ty >inline
    + + + + diff --git a/structwinstd_1_1_local_free__delete.html b/structwinstd_1_1_local_free__delete.html new file mode 100644 index 00000000..5b165776 --- /dev/null +++ b/structwinstd_1_1_local_free__delete.html @@ -0,0 +1,149 @@ + + + + + + + +WinStd: winstd::LocalFree_delete< _Ty > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::LocalFree_delete< _Ty > Struct Template Reference
    +
    +
    + +

    Deleter for unique_ptr using LocalFree. + More...

    + +

    #include <Common.h>

    + + + + + +

    +Public Types

    +typedef LocalFree_delete< _Ty > _Myt
     This type.
     
    + + + + + + + + + + + +

    +Public Member Functions

    LocalFree_delete ()
     Default construct.
     
    +template<class _Ty2 >
     LocalFree_delete (const LocalFree_delete< _Ty2 > &)
     Construct from another LocalFree_delete.
     
    void operator() (_Ty *_Ptr) const
     Delete a pointer. More...
     
    +

    Detailed Description

    +
    template<class _Ty>
    +struct winstd::LocalFree_delete< _Ty >

    Deleter for unique_ptr using LocalFree.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class _Ty >
    + + + + + +
    + + + + + + + + +
    void winstd::LocalFree_delete< _Ty >::operator() (_Ty * _Ptr) const
    +
    +inline
    +
    + +

    Delete a pointer.

    +
    See also
    LocalFree function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..1f061de0 --- /dev/null +++ b/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::LocalFree_delete< _Ty[]> Member List
    +
    +
    + +

    This is the complete list of members for winstd::LocalFree_delete< _Ty[]>, including all inherited members.

    + + + + + +
    _Myt typedefwinstd::LocalFree_delete< _Ty[]>
    LocalFree_delete() noexceptwinstd::LocalFree_delete< _Ty[]>inline
    operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexceptwinstd::LocalFree_delete< _Ty[]>inline
    operator()(_Other *) constwinstd::LocalFree_delete< _Ty[]>inline
    + + + + 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 new file mode 100644 index 00000000..c2031a96 --- /dev/null +++ b/structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html @@ -0,0 +1,151 @@ + + + + + + + +WinStd: winstd::LocalFree_delete< _Ty[]> Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::LocalFree_delete< _Ty[]> Struct Template Reference
    +
    +
    + +

    Deleter for unique_ptr to array of unknown size using LocalFree. + More...

    + +

    #include <Common.h>

    + + + + + +

    +Public Types

    +typedef LocalFree_delete< _Ty > _Myt
     This type.
     
    + + + + + + + + + + + +

    +Public Member Functions

    LocalFree_delete () noexcept
     Default construct.
     
    +void operator() (_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
     Delete a pointer.
     
    template<class _Other >
    void operator() (_Other *) const
     Delete a pointer of another type. More...
     
    +

    Detailed Description

    +
    template<class _Ty>
    +struct winstd::LocalFree_delete< _Ty[]>

    Deleter for unique_ptr to array of unknown size using LocalFree.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class _Ty >
    +
    +template<class _Other >
    + + + + + +
    + + + + + + + + +
    void winstd::LocalFree_delete< _Ty[]>::operator() (_Other * ) const
    +
    +inline
    +
    + +

    Delete a pointer of another type.

    +
    See also
    LocalFree function
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structwinstd_1_1_wlan_free_memory__delete-members.html b/structwinstd_1_1_wlan_free_memory__delete-members.html new file mode 100644 index 00000000..58eda387 --- /dev/null +++ b/structwinstd_1_1_wlan_free_memory__delete-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::WlanFreeMemory_delete< _Ty > Member List
    +
    +
    + +

    This is the complete list of members for winstd::WlanFreeMemory_delete< _Ty >, including all inherited members.

    + + + + + +
    _Myt typedefwinstd::WlanFreeMemory_delete< _Ty >
    operator()(_Ty *_Ptr) constwinstd::WlanFreeMemory_delete< _Ty >inline
    WlanFreeMemory_delete()winstd::WlanFreeMemory_delete< _Ty >inline
    WlanFreeMemory_delete(const WlanFreeMemory_delete< _Ty2 > &)winstd::WlanFreeMemory_delete< _Ty >inline
    + + + + diff --git a/structwinstd_1_1_wlan_free_memory__delete.html b/structwinstd_1_1_wlan_free_memory__delete.html new file mode 100644 index 00000000..6b547d64 --- /dev/null +++ b/structwinstd_1_1_wlan_free_memory__delete.html @@ -0,0 +1,118 @@ + + + + + + + +WinStd: winstd::WlanFreeMemory_delete< _Ty > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::WlanFreeMemory_delete< _Ty > Struct Template Reference
    +
    +
    + +

    Deleter for unique_ptr using WlanFreeMemory. + More...

    + +

    #include <WLAN.h>

    + + + + + +

    +Public Types

    +typedef WlanFreeMemory_delete< _Ty > _Myt
     This type.
     
    + + + + + + + + + + + +

    +Public Member Functions

    WlanFreeMemory_delete ()
     Default construct.
     
    +template<class _Ty2 >
     WlanFreeMemory_delete (const WlanFreeMemory_delete< _Ty2 > &)
     Construct from another WlanFreeMemory_delete.
     
    +void operator() (_Ty *_Ptr) const
     Delete a pointer.
     
    +

    Detailed Description

    +
    template<class _Ty>
    +struct winstd::WlanFreeMemory_delete< _Ty >

    Deleter for unique_ptr using WlanFreeMemory.

    +

    The documentation for this struct was generated from the following file: +
    + + + + 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 new file mode 100644 index 00000000..69a489af --- /dev/null +++ b/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::WlanFreeMemory_delete< _Ty[]> Member List
    +
    + + + + + 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 new file mode 100644 index 00000000..103d3208 --- /dev/null +++ b/structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html @@ -0,0 +1,118 @@ + + + + + + + +WinStd: winstd::WlanFreeMemory_delete< _Ty[]> Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::WlanFreeMemory_delete< _Ty[]> Struct Template Reference
    +
    +
    + +

    Deleter for unique_ptr to array of unknown size using WlanFreeMemory. + More...

    + +

    #include <WLAN.h>

    + + + + + +

    +Public Types

    +typedef WlanFreeMemory_delete< _Ty > _Myt
     This type.
     
    + + + + + + + + + + + +

    +Public Member Functions

    WlanFreeMemory_delete ()
     Default construct.
     
    +void operator() (_Ty *_Ptr) const
     Delete a pointer.
     
    +template<class _Other >
    void operator() (_Other *) const
     Delete a pointer of another type.
     
    +

    Detailed Description

    +
    template<class _Ty>
    +struct winstd::WlanFreeMemory_delete< _Ty[]>

    Deleter for unique_ptr to array of unknown size using WlanFreeMemory.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structwinstd_1_1heap__allocator_1_1rebind-members.html b/structwinstd_1_1heap__allocator_1_1rebind-members.html new file mode 100644 index 00000000..db00b4b4 --- /dev/null +++ b/structwinstd_1_1heap__allocator_1_1rebind-members.html @@ -0,0 +1,83 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::heap_allocator< _Ty >::rebind< _Other > Member List
    +
    +
    + +

    This is the complete list of members for winstd::heap_allocator< _Ty >::rebind< _Other >, including all inherited members.

    + + +
    other typedefwinstd::heap_allocator< _Ty >::rebind< _Other >
    + + + + diff --git a/structwinstd_1_1heap__allocator_1_1rebind.html b/structwinstd_1_1heap__allocator_1_1rebind.html new file mode 100644 index 00000000..643444cb --- /dev/null +++ b/structwinstd_1_1heap__allocator_1_1rebind.html @@ -0,0 +1,102 @@ + + + + + + + +WinStd: winstd::heap_allocator< _Ty >::rebind< _Other > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::heap_allocator< _Ty >::rebind< _Other > Struct Template Reference
    +
    +
    + +

    A structure that enables an allocator for objects of one type to allocate storage for objects of another type. + More...

    + +

    #include <Win.h>

    + + + + + +

    +Public Types

    +typedef heap_allocator< _Other > other
     Other allocator type.
     
    +

    Detailed Description

    +
    template<class _Ty>
    +template<class _Other>
    +struct winstd::heap_allocator< _Ty >::rebind< _Other >

    A structure that enables an allocator for objects of one type to allocate storage for objects of another type.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html b/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html new file mode 100644 index 00000000..6bc9bb0d --- /dev/null +++ b/structwinstd_1_1sanitizing__allocator_1_1rebind-members.html @@ -0,0 +1,83 @@ + + + + + + + +WinStd: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    winstd::sanitizing_allocator< _Ty >::rebind< _Other > Member List
    +
    +
    + +

    This is the complete list of members for winstd::sanitizing_allocator< _Ty >::rebind< _Other >, including all inherited members.

    + + +
    other typedefwinstd::sanitizing_allocator< _Ty >::rebind< _Other >
    + + + + diff --git a/structwinstd_1_1sanitizing__allocator_1_1rebind.html b/structwinstd_1_1sanitizing__allocator_1_1rebind.html new file mode 100644 index 00000000..38245b46 --- /dev/null +++ b/structwinstd_1_1sanitizing__allocator_1_1rebind.html @@ -0,0 +1,102 @@ + + + + + + + +WinStd: winstd::sanitizing_allocator< _Ty >::rebind< _Other > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    WinStd +
    +
    Additional templates and function helpers for Microsoft Windows using Standard C++ classes
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    winstd::sanitizing_allocator< _Ty >::rebind< _Other > Struct Template Reference
    +
    +
    + +

    Convert this type to sanitizing_allocator<_Other> + More...

    + +

    #include <Common.h>

    + + + + + +

    +Public Types

    +typedef sanitizing_allocator< _Other > other
     Other type.
     
    +

    Detailed Description

    +
    template<class _Ty>
    +template<class _Other>
    +struct winstd::sanitizing_allocator< _Ty >::rebind< _Other >

    Convert this type to sanitizing_allocator<_Other>

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 00000000..00d1c602 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file