diff --git a/_c_o_m_8h_source.html b/_c_o_m_8h_source.html index e3289969..8518934b 100644 --- a/_c_o_m_8h_source.html +++ b/_c_o_m_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/COM.h Source File @@ -30,7 +30,7 @@ - + +
15namespace winstd
16{
19
+
25 class com_runtime_error : public num_runtime_error<HRESULT>
26 {
27 public:
+
34 com_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<HRESULT>(num, msg)
35 {
36 }
+
37
+
44 com_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<HRESULT>(num, msg)
45 {
46 }
+
47 };
+
48
50
53
+
57 struct CoTaskMemFree_delete
58 {
62 CoTaskMemFree_delete() noexcept {}
63
69 template <class _T>
+
70 void operator()(_T *_Ptr) const
71 {
72 CoTaskMemFree(_Ptr);
73 }
+
74 };
+
75
81 template <class T>
+
82 class com_obj : public dplhandle<T*, NULL>
83 {
84 WINSTD_DPLHANDLE_IMPL(com_obj, NULL)
85
86 public:
+
93 _In_ REFCLSID rclsid,
94 _In_opt_ LPUNKNOWN pUnkOuter,
@@ -133,8 +150,10 @@ $(function() {
98 if (FAILED(hr))
99 throw com_runtime_error(hr, "CoCreateInstance failed");
100 }
+
101
107 template <class _Other>
+
108 com_obj(_In_ _Other *other)
109 {
110 assert(other);
@@ -142,30 +161,38 @@ $(function() {
112 if (FAILED(hr))
113 throw com_runtime_error(hr, "QueryInterface failed");
114 }
+
115
121 template <class _Other>
+
123 {
124 HRESULT hr = other->QueryInterface(__uuidof(T), (void**)&m_h);
125 if (FAILED(hr))
126 throw com_runtime_error(hr, "QueryInterface failed");
127 }
+
128
+
132 virtual ~com_obj()
133 {
134 if (m_h != invalid)
136 }
+
137
143 template <class _Other>
+
144 HRESULT query_interface(_Out_ _Other **h) const
145 {
146 assert(h);
147 assert(m_h);
148 return m_h->QueryInterface(__uuidof(_Other), (void**)h);
149 }
+
150
156 template <class _Other>
+
157 HRESULT query_interface(_Out_ com_obj<_Other> &h) const
158 {
159 assert(m_h);
@@ -175,730 +202,908 @@ $(function() {
163 h.attach(_h);
164 return hr;
165 }
+
166
167 protected:
+
173 void free_internal() noexcept override
174 {
175 m_h->Release();
176 }
+
177
+
188 {
189 h->AddRef();
190 return h;
191 }
+
192 };
+
193
+
197 class bstr : public dplhandle<BSTR, NULL>
198 {
199 WINSTD_DPLHANDLE_IMPL(bstr, NULL)
200
201 public:
-
205 bstr(_In_ LPCOLESTR src)
+
+
205 bstr(_In_opt_z_ LPCOLESTR src)
206 {
207 m_h = SysAllocString(src);
208 if (!m_h)
209 throw std::bad_alloc();
210 }
+
211
-
215 bstr(_In_ LPCOLESTR src, _In_ UINT len)
+
+
215 bstr(_In_reads_opt_(len) LPCOLESTR src, _In_ UINT len)
216 {
217 m_h = SysAllocStringLen(src, len);
218 if (!m_h)
219 throw std::bad_alloc();
220 }
+
221
225 template<class _Traits, class _Ax>
-
226 bstr(_In_ const std::basic_string<wchar_t, _Traits, _Ax> &src)
+
+
226 bstr(_In_ const std::basic_string<OLECHAR, _Traits, _Ax> &src)
227 {
-
228 m_h = SysAllocStringLen(src.c_str(), (UINT)src.length());
-
229 if (!m_h)
-
230 throw std::bad_alloc();
-
231 }
-
232
-
238 virtual ~bstr()
-
239 {
-
240 if (m_h != invalid)
- -
242 }
-
243
-
249 UINT length() const noexcept
-
250 {
-
251 return SysStringLen(m_h);
-
252 }
-
253
-
254 protected:
-
260 void free_internal() noexcept override
-
261 {
-
262 SysFreeString(m_h);
-
263 }
-
264
- -
275 {
-
276 handle_type h_new = SysAllocStringLen(h, SysStringLen(h));
-
277 if (h_new != invalid)
-
278 return h_new;
-
279 throw std::bad_alloc();
-
280 }
-
281 };
-
282
-
286 #pragma warning(push)
-
287 #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.
-
288 class variant : public VARIANT
-
289 {
-
290 public:
-
294 variant() noexcept
-
295 {
-
296 VariantInit(this);
-
297 }
-
298
-
302 variant(_In_ const VARIANT& varSrc)
-
303 {
-
304 vt = VT_EMPTY;
-
305 const HRESULT hr = VariantCopy(this, &varSrc);
-
306 if (FAILED(hr))
-
307 throw winstd::com_runtime_error(hr, "VariantCopy failed");
-
308 }
-
309
-
313 #pragma warning(suppress: 26495) // vt member is initialized as a result of memcpy()
-
314 variant(_Inout_ VARIANT&& varSrc) noexcept
-
315 {
-
316 memcpy(this, &varSrc, sizeof(VARIANT));
-
317 varSrc.vt = VT_EMPTY;
-
318 }
-
319
-
323 variant(_In_ bool bSrc) noexcept
-
324 {
-
325 vt = VT_BOOL;
-
326 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
-
327 }
-
328
-
332 variant(_In_ char cSrc) noexcept
-
333 {
-
334 vt = VT_I1;
-
335 cVal = cSrc;
-
336 }
-
337
-
341 variant(_In_ unsigned char nSrc) noexcept
-
342 {
-
343 vt = VT_UI1;
-
344 bVal = nSrc;
-
345 }
-
346
-
350 variant(_In_ short nSrc) noexcept
-
351 {
-
352 vt = VT_I2;
-
353 iVal = nSrc;
-
354 }
-
355
-
359 variant(_In_ unsigned short nSrc) noexcept
-
360 {
-
361 vt = VT_UI2;
-
362 uiVal = nSrc;
-
363 }
-
364
-
368 variant(_In_ int nSrc, _In_ VARTYPE vtSrc = VT_I4) noexcept
-
369 {
-
370 assert(vtSrc == VT_I4 || vtSrc == VT_INT);
-
371 vt = vtSrc;
-
372 intVal = nSrc;
-
373 }
-
374
-
378 variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc = VT_UI4) noexcept
-
379 {
-
380 assert(vtSrc == VT_UI4 || vtSrc == VT_UINT);
-
381 vt = vtSrc;
-
382 uintVal= nSrc;
-
383 }
-
384
-
388 variant(_In_ long nSrc, _In_ VARTYPE vtSrc = VT_I4) noexcept
-
389 {
-
390 assert(vtSrc == VT_I4 || vtSrc == VT_ERROR);
-
391 vt = vtSrc;
-
392 lVal = nSrc;
-
393 }
-
394
-
398 variant(_In_ unsigned long nSrc) noexcept
-
399 {
-
400 vt = VT_UI4;
-
401 ulVal = nSrc;
-
402 }
-
403
-
407 variant(_In_ float fltSrc) noexcept
-
408 {
-
409 vt = VT_R4;
-
410 fltVal = fltSrc;
-
411 }
-
412
-
416 variant(_In_ double dblSrc, _In_ VARTYPE vtSrc = VT_R8) noexcept
-
417 {
-
418 assert(vtSrc == VT_R8 || vtSrc == VT_DATE);
-
419 vt = vtSrc;
-
420 dblVal = dblSrc;
-
421 }
-
422
-
426 variant(_In_ long long nSrc) noexcept
-
427 {
-
428 vt = VT_I8;
-
429 llVal = nSrc;
-
430 }
-
431
-
435 variant(_In_ unsigned long long nSrc) noexcept
-
436 {
-
437 vt = VT_UI8;
-
438 ullVal = nSrc;
-
439 }
-
440
-
444 variant(_In_ CY cySrc) noexcept
-
445 {
-
446 vt = VT_CY;
-
447 cyVal.Hi = cySrc.Hi;
-
448 cyVal.Lo = cySrc.Lo;
-
449 }
-
450
-
454 variant(_In_z_ LPCOLESTR lpszSrc) noexcept
-
455 {
-
456 vt = VT_EMPTY;
-
457 *this = lpszSrc;
-
458 }
-
459
-
463 variant(_In_z_ BSTR bstr) noexcept
-
464 {
-
465 vt = VT_EMPTY;
-
466 *this = bstr;
-
467 }
-
468
-
472 variant(_In_opt_ IDispatch* pSrc)
-
473 {
-
474 vt = VT_DISPATCH;
-
475 pdispVal = pSrc;
-
476
-
477 if (pdispVal != NULL)
-
478 pdispVal->AddRef();
-
479 }
-
480
-
484 variant(_In_opt_ IUnknown* pSrc)
-
485 {
-
486 vt = VT_UNKNOWN;
-
487 punkVal = pSrc;
-
488
-
489 if (punkVal != NULL)
-
490 punkVal->AddRef();
-
491 }
-
492
-
496 variant(_In_ const SAFEARRAY *pSrc)
-
497 {
-
498 assert(pSrc != NULL);
-
499
-
500 LPSAFEARRAY pCopy;
-
501 const HRESULT hr = SafeArrayCopy(const_cast<LPSAFEARRAY>(pSrc), &pCopy);
-
502 if (FAILED(hr))
-
503 throw winstd::com_runtime_error(hr, "SafeArrayCopy failed");
-
504
-
505 SafeArrayGetVartype(const_cast<LPSAFEARRAY>(pSrc), &vt);
-
506 vt |= VT_ARRAY;
-
507 parray = pCopy;
-
508 }
-
509
-
513 virtual ~variant()
-
514 {
-
515 VariantClear(this);
-
516 }
-
517
-
521 variant& operator=(_In_ const VARIANT& varSrc)
-
522 {
-
523 if (this != &varSrc) {
-
524 const HRESULT hr = VariantCopy(this, &varSrc);
-
525 if (FAILED(hr))
-
526 throw winstd::com_runtime_error(hr, "VariantCopy failed");
-
527 }
-
528 return *this;
-
529 }
-
530
-
534 variant& operator=(_Inout_ VARIANT&& varSrc) noexcept
-
535 {
-
536 if (this != &varSrc) {
-
537 VariantClear(this);
-
538 memcpy(this, &varSrc, sizeof(VARIANT));
-
539 varSrc.vt = VT_EMPTY;
-
540 }
-
541 return *this;
-
542 }
-
543
-
547 variant& operator=(_In_ bool bSrc) noexcept
-
548 {
-
549 if (vt != VT_BOOL) {
-
550 VariantClear(this);
-
551 vt = VT_BOOL;
-
552 }
-
553 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
-
554 return *this;
-
555 }
-
556
-
560 variant& operator=(_In_ char cSrc) noexcept
-
561 {
-
562 if (vt != VT_I1) {
-
563 VariantClear(this);
-
564 vt = VT_I1;
-
565 }
-
566 cVal = cSrc;
-
567 return *this;
-
568 }
-
569
-
573 variant& operator=(_In_ unsigned char nSrc) noexcept
-
574 {
-
575 if (vt != VT_UI1) {
-
576 VariantClear(this);
-
577 vt = VT_UI1;
-
578 }
-
579 bVal = nSrc;
-
580 return *this;
-
581 }
-
582
-
586 variant& operator=(_In_ short nSrc) noexcept
-
587 {
-
588 if (vt != VT_I2) {
-
589 VariantClear(this);
-
590 vt = VT_I2;
-
591 }
-
592 iVal = nSrc;
-
593 return *this;
-
594 }
-
595
-
599 variant& operator=(_In_ unsigned short nSrc) noexcept
-
600 {
-
601 if (vt != VT_UI2) {
-
602 VariantClear(this);
-
603 vt = VT_UI2;
-
604 }
-
605 uiVal = nSrc;
-
606 return *this;
-
607 }
-
608
-
612 variant& operator=(_In_ int nSrc) noexcept
-
613 {
-
614 if (vt != VT_I4) {
-
615 VariantClear(this);
-
616 vt = VT_I4;
-
617 }
-
618 intVal = nSrc;
-
619 return *this;
-
620 }
-
621
-
625 variant& operator=(_In_ unsigned int nSrc) noexcept
-
626 {
-
627 if (vt != VT_UI4) {
-
628 VariantClear(this);
-
629 vt = VT_UI4;
-
630 }
-
631 uintVal= nSrc;
-
632 return *this;
-
633 }
-
634
-
638 variant& operator=(_In_ long nSrc) noexcept
-
639 {
-
640 if (vt != VT_I4) {
-
641 VariantClear(this);
-
642 vt = VT_I4;
-
643 }
-
644 lVal = nSrc;
-
645 return *this;
-
646 }
-
647
-
651 variant& operator=(_In_ unsigned long nSrc) noexcept
-
652 {
-
653 if (vt != VT_UI4) {
-
654 VariantClear(this);
-
655 vt = VT_UI4;
-
656 }
-
657 ulVal = nSrc;
-
658 return *this;
-
659 }
-
660
-
664 variant& operator=(_In_ long long nSrc) noexcept
-
665 {
-
666 if (vt != VT_I8) {
-
667 VariantClear(this);
-
668 vt = VT_I8;
-
669 }
-
670 llVal = nSrc;
-
671 return *this;
-
672 }
-
673
-
677 variant& operator=(_In_ unsigned long long nSrc) noexcept
-
678 {
-
679 if (vt != VT_UI8) {
-
680 VariantClear(this);
-
681 vt = VT_UI8;
-
682 }
-
683 ullVal = nSrc;
-
684
-
685 return *this;
-
686 }
-
687
-
691 variant& operator=(_In_ float fltSrc) noexcept
-
692 {
-
693 if (vt != VT_R4) {
-
694 VariantClear(this);
-
695 vt = VT_R4;
-
696 }
-
697 fltVal = fltSrc;
-
698 return *this;
-
699 }
-
700
-
704 variant& operator=(_In_ double dblSrc) noexcept
-
705 {
-
706 if (vt != VT_R8) {
-
707 VariantClear(this);
-
708 vt = VT_R8;
-
709 }
-
710 dblVal = dblSrc;
-
711 return *this;
-
712 }
-
713
-
717 variant& operator=(_In_ CY cySrc) noexcept
-
718 {
-
719 if (vt != VT_CY) {
-
720 VariantClear(this);
-
721 vt = VT_CY;
-
722 }
-
723 cyVal.Hi = cySrc.Hi;
-
724 cyVal.Lo = cySrc.Lo;
-
725 return *this;
-
726 }
-
727
-
731 variant& operator=(_In_z_ LPCOLESTR lpszSrc) noexcept
-
732 {
-
733 VariantClear(this);
-
734 vt = VT_BSTR;
-
735 bstrVal = SysAllocString(lpszSrc);
-
736 return *this;
-
737 }
-
738
-
742 variant& operator=(_Inout_opt_ IDispatch* pSrc)
-
743 {
-
744 VariantClear(this);
-
745 vt = VT_DISPATCH;
-
746 pdispVal = pSrc;
-
747 if (pdispVal != NULL)
-
748 pdispVal->AddRef();
-
749 return *this;
-
750 }
-
751
-
755 variant& operator=(_Inout_opt_ IUnknown* pSrc)
-
756 {
-
757 VariantClear(this);
-
758 vt = VT_UNKNOWN;
-
759 punkVal = pSrc;
-
760 if (punkVal != NULL)
-
761 punkVal->AddRef();
-
762 return *this;
-
763 }
-
764
-
768 variant& operator=(_In_ unsigned char* pbSrc) noexcept
-
769 {
-
770 if (vt != (VT_UI1|VT_BYREF)) {
-
771 VariantClear(this);
-
772 vt = VT_UI1|VT_BYREF;
-
773 }
-
774 pbVal = pbSrc;
-
775 return *this;
-
776 }
-
777
-
781 variant& operator=(_In_ short* pnSrc) noexcept
-
782 {
-
783 if (vt != (VT_I2|VT_BYREF)) {
-
784 VariantClear(this);
-
785 vt = VT_I2|VT_BYREF;
-
786 }
-
787 piVal = pnSrc;
-
788 return *this;
-
789 }
-
790
-
794 variant& operator=(_In_ unsigned short* pnSrc) noexcept
-
795 {
-
796 if (vt != (VT_UI2|VT_BYREF)) {
-
797 VariantClear(this);
-
798 vt = VT_UI2|VT_BYREF;
-
799 }
-
800 puiVal = pnSrc;
-
801 return *this;
-
802 }
-
803
-
807 variant& operator=(_In_ int* pnSrc) noexcept
-
808 {
-
809 if (vt != (VT_I4|VT_BYREF)) {
-
810 VariantClear(this);
-
811 vt = VT_I4|VT_BYREF;
-
812 }
-
813 pintVal = pnSrc;
-
814 return *this;
-
815 }
-
816
-
820 variant& operator=(_In_ unsigned int* pnSrc) noexcept
-
821 {
-
822 if (vt != (VT_UI4|VT_BYREF)) {
-
823 VariantClear(this);
-
824 vt = VT_UI4|VT_BYREF;
-
825 }
-
826 puintVal = pnSrc;
-
827 return *this;
-
828 }
-
829
-
833 variant& operator=(_In_ long* pnSrc) noexcept
-
834 {
-
835 if (vt != (VT_I4|VT_BYREF)) {
-
836 VariantClear(this);
-
837 vt = VT_I4|VT_BYREF;
-
838 }
-
839 plVal = pnSrc;
-
840 return *this;
-
841 }
-
842
-
846 variant& operator=(_In_ unsigned long* pnSrc) noexcept
-
847 {
-
848 if (vt != (VT_UI4|VT_BYREF)) {
-
849 VariantClear(this);
-
850 vt = VT_UI4|VT_BYREF;
-
851 }
-
852 pulVal = pnSrc;
-
853 return *this;
-
854 }
-
855
-
859 variant& operator=(_In_ long long* pnSrc) noexcept
-
860 {
-
861 if (vt != (VT_I8|VT_BYREF)) {
-
862 VariantClear(this);
-
863 vt = VT_I8|VT_BYREF;
-
864 }
-
865 pllVal = pnSrc;
-
866 return *this;
-
867 }
-
868
-
872 variant& operator=(_In_ unsigned long long* pnSrc) noexcept
-
873 {
-
874 if (vt != (VT_UI8|VT_BYREF)) {
-
875 VariantClear(this);
-
876 vt = VT_UI8|VT_BYREF;
-
877 }
-
878 pullVal = pnSrc;
-
879 return *this;
-
880 }
-
881
-
885 variant& operator=(_In_ float* pfSrc) noexcept
-
886 {
-
887 if (vt != (VT_R4|VT_BYREF)) {
-
888 VariantClear(this);
-
889 vt = VT_R4|VT_BYREF;
-
890 }
-
891 pfltVal = pfSrc;
-
892 return *this;
-
893 }
-
894
-
898 variant& operator=(_In_ double* pfSrc) noexcept
-
899 {
-
900 if (vt != (VT_R8|VT_BYREF)) {
-
901 VariantClear(this);
-
902 vt = VT_R8|VT_BYREF;
-
903 }
-
904 pdblVal = pfSrc;
-
905 return *this;
-
906 }
-
907
-
911 variant& operator=(_In_ const SAFEARRAY *pSrc)
-
912 {
-
913 assert(pSrc != NULL);
-
914 VariantClear(this);
-
915
-
916 LPSAFEARRAY pCopy;
-
917 const HRESULT hr = SafeArrayCopy(const_cast<LPSAFEARRAY>(pSrc), &pCopy);
-
918 if (SUCCEEDED(hr)) {
-
919 SafeArrayGetVartype(const_cast<LPSAFEARRAY>(pSrc), &vt);
-
920 vt |= VT_ARRAY;
-
921 parray = pCopy;
-
922 return *this;
-
923 }
-
924 throw com_runtime_error(hr, "SafeArrayCopy failed");
-
925 }
-
926
-
927 public:
-
936 bool operator==(_In_ const VARIANT& varSrc) const noexcept
-
937 {
-
938 if (vt == VT_NULL && varSrc.vt == VT_NULL) return true;
-
939 if (vt != varSrc.vt) return false;
-
940 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0) == static_cast<HRESULT>(VARCMP_EQ);
-
941 }
-
942
-
951 bool operator!=(_In_ const VARIANT& varSrc) const noexcept
-
952 {
-
953 return !operator==(varSrc);
-
954 }
-
955
-
964 bool operator<(_In_ const VARIANT& varSrc) const noexcept
-
965 {
-
966 if (vt == VT_NULL && varSrc.vt == VT_NULL) return false;
-
967 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0)== static_cast<HRESULT>(VARCMP_LT);
-
968 }
-
969
-
978 bool operator>(_In_ const VARIANT& varSrc) const noexcept
-
979 {
-
980 if (vt == VT_NULL && varSrc.vt == VT_NULL) return false;
-
981 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0)== static_cast<HRESULT>(VARCMP_GT);
-
982 }
-
983
-
992 bool operator<=(_In_ const VARIANT& varSrc) const noexcept
-
993 {
-
994 return !operator>(varSrc);
-
995 }
-
996
-
1005 bool operator>=(_In_ const VARIANT& varSrc) const noexcept
-
1006 {
-
1007 return !operator<(varSrc);
-
1008 }
-
1009
-
1015 HRESULT change_type(_In_ VARTYPE _vt, _In_opt_ USHORT wFlags = 0) noexcept
-
1016 {
-
1017 return VariantChangeType(this, this, wFlags, _vt);
-
1018 }
-
1019
-
1020 private:
-
1022 HRESULT compare(_In_ const VARIANT &varLeft, _In_ const VARIANT &varRight, _In_ LCID lcid, _In_ ULONG dwFlags) const noexcept
-
1023 {
-
1024 switch(vt) {
-
1025 case VT_I1: return varLeft.cVal == varRight.cVal ? VARCMP_EQ : varLeft.cVal > varRight.cVal ? VARCMP_GT : VARCMP_LT;
-
1026 case VT_UI2: return varLeft.uiVal == varRight.uiVal ? VARCMP_EQ : varLeft.uiVal > varRight.uiVal ? VARCMP_GT : VARCMP_LT;
-
1027 case VT_UI4: return varLeft.uintVal == varRight.uintVal ? VARCMP_EQ : varLeft.uintVal > varRight.uintVal ? VARCMP_GT : VARCMP_LT;
-
1028 case VT_UI8: return varLeft.ullVal == varRight.ullVal ? VARCMP_EQ : varLeft.ullVal > varRight.ullVal ? VARCMP_GT : VARCMP_LT;
-
1029 default: return VarCmp(const_cast<LPVARIANT>(&varLeft), const_cast<LPVARIANT>(&varRight), lcid, dwFlags);
-
1030 }
-
1031 }
-
1033 };
-
1034 #pragma warning(pop)
-
1035
-
1039 class safearray : public dplhandle<SAFEARRAY*, NULL>
-
1040 {
- -
1042
-
1043 public:
-
1049 virtual ~safearray()
-
1050 {
-
1051 if (m_h != invalid)
-
1052 free_internal();
-
1053 }
-
1054
-
1055 protected:
-
1061 void free_internal() noexcept override
-
1062 {
-
1063 SafeArrayDestroy(m_h);
-
1064 }
-
1065
- -
1076 {
-
1077 handle_type h_new;
-
1078 HRESULT hr = SafeArrayCopy(h, &h_new);
-
1079 if (SUCCEEDED(hr))
-
1080 return h_new;
-
1081 throw com_runtime_error(hr, "SafeArrayCopy failed");
-
1082 }
-
1083 };
-
1084
-
1088 template <class T>
- -
1090 {
- - -
1093
-
1094 public:
-
1100 safearray_accessor(_In_ SAFEARRAY* psa) : m_sa(psa)
-
1101 {
-
1102 HRESULT hr = SafeArrayAccessData(psa, (void HUGEP**)&m_data);
-
1103 if (FAILED(hr))
-
1104 throw com_runtime_error(hr, "SafeArrayAccessData failed");
-
1105 }
-
1106
- -
1113 {
-
1114 SafeArrayUnaccessData(m_sa);
-
1115 }
-
1116
-
1120 T HUGEP* data() const noexcept
-
1121 {
-
1122 return m_data;
-
1123 }
-
1124
-
1125 protected:
-
1126 SAFEARRAY* m_sa;
-
1127 T HUGEP* m_data;
-
1128 };
-
1129
- -
1134 {
- - -
1137
-
1138 public:
-
1144 com_initializer(_In_opt_ LPVOID pvReserved) noexcept
-
1145 {
-
1146 m_result = CoInitialize(pvReserved);
-
1147 }
-
1148
-
1154 com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept
-
1155 {
-
1156 m_result = CoInitializeEx(pvReserved, dwCoInit);
-
1157 }
-
1158
- -
1165 {
-
1166 if (SUCCEEDED(m_result))
-
1167 CoUninitialize();
-
1168 }
-
1169
-
1175 HRESULT status() const noexcept
-
1176 {
-
1177 return m_result;
-
1178 }
-
1179
-
1180 protected:
-
1181 HRESULT m_result;
-
1182 };
-
1183
-
1185}
-
1186
-
1189
-
1195template <class T>
-
1196static _Check_return_ HRESULT CoCreateInstance(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsContext, _Inout_ winstd::com_obj<T> &v)
-
1197{
-
1198 T* ppv;
-
1199 HRESULT hr = CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (LPVOID*)&ppv);
-
1200 if (SUCCEEDED(hr))
-
1201 v.attach(ppv);
-
1202 return hr;
-
1203}
-
1204
-
1210template <class T>
-
1211static _Check_return_ HRESULT CoGetObject(_In_ LPCWSTR pszName, _In_opt_ BIND_OPTS* pBindOptions, _In_ REFIID riid, _Inout_ winstd::com_obj<T>& v)
-
1212{
-
1213 T* ppv;
-
1214 HRESULT hr = CoGetObject(pszName, pBindOptions, riid, (LPVOID*)&ppv);
-
1215 if (SUCCEEDED(hr))
-
1216 v.attach(ppv);
-
1217 return hr;
-
1218}
-
1219
+
228 if (src.length() >= UINT_MAX)
+
229 throw std::invalid_argument("String too long");
+
230 m_h = SysAllocStringLen(src.c_str(), (UINT)src.length());
+
231 if (!m_h)
+
232 throw std::bad_alloc();
+
233 }
+
+
234
+
+
240 virtual ~bstr()
+
241 {
+
242 if (m_h != invalid)
+ +
244 }
+
+
245
+
+
251 UINT length() const noexcept
+
252 {
+
253 return SysStringLen(m_h);
+
254 }
+
+
255
+
256 protected:
+
+
262 void free_internal() noexcept override
+
263 {
+
264 SysFreeString(m_h);
+
265 }
+
+
266
+
+ +
277 {
+
278 handle_type h_new = SysAllocStringLen(h, SysStringLen(h));
+
279 if (h_new != invalid)
+
280 return h_new;
+
281 throw std::bad_alloc();
+
282 }
+
+
283 };
+
+
284
+
288 #pragma warning(push)
+
289 #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.
+
+
290 class variant : public VARIANT
+
291 {
+
292 public:
+
+
296 variant() noexcept
+
297 {
+
298 VariantInit(this);
+
299 }
+
+
300
+
+
304 variant(_In_ const VARIANT& varSrc)
+
305 {
+
306 vt = VT_EMPTY;
+
307 const HRESULT hr = VariantCopy(this, &varSrc);
+
308 if (FAILED(hr))
+
309 throw winstd::com_runtime_error(hr, "VariantCopy failed");
+
310 }
+
+
311
+
315 #pragma warning(suppress: 26495) // vt member is initialized as a result of memcpy()
+
+
316 variant(_Inout_ VARIANT&& varSrc) noexcept
+
317 {
+
318 memcpy(this, &varSrc, sizeof(VARIANT));
+
319 varSrc.vt = VT_EMPTY;
+
320 }
+
+
321
+
+
325 variant(_In_ bool bSrc) noexcept
+
326 {
+
327 vt = VT_BOOL;
+
328 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+
329 }
+
+
330
+
+
334 variant(_In_ char cSrc) noexcept
+
335 {
+
336 vt = VT_I1;
+
337 cVal = cSrc;
+
338 }
+
+
339
+
+
343 variant(_In_ unsigned char nSrc) noexcept
+
344 {
+
345 vt = VT_UI1;
+
346 bVal = nSrc;
+
347 }
+
+
348
+
+
352 variant(_In_ short nSrc) noexcept
+
353 {
+
354 vt = VT_I2;
+
355 iVal = nSrc;
+
356 }
+
+
357
+
+
361 variant(_In_ unsigned short nSrc) noexcept
+
362 {
+
363 vt = VT_UI2;
+
364 uiVal = nSrc;
+
365 }
+
+
366
+
+
370 variant(_In_ int nSrc, _In_ VARTYPE vtSrc = VT_I4) noexcept
+
371 {
+
372 assert(vtSrc == VT_I4 || vtSrc == VT_INT);
+
373 vt = vtSrc;
+
374 intVal = nSrc;
+
375 }
+
+
376
+
+
380 variant(_In_ unsigned int nSrc, _In_ VARTYPE vtSrc = VT_UI4) noexcept
+
381 {
+
382 assert(vtSrc == VT_UI4 || vtSrc == VT_UINT);
+
383 vt = vtSrc;
+
384 uintVal= nSrc;
+
385 }
+
+
386
+
+
390 variant(_In_ long nSrc, _In_ VARTYPE vtSrc = VT_I4) noexcept
+
391 {
+
392 assert(vtSrc == VT_I4 || vtSrc == VT_ERROR);
+
393 vt = vtSrc;
+
394 lVal = nSrc;
+
395 }
+
+
396
+
+
400 variant(_In_ unsigned long nSrc) noexcept
+
401 {
+
402 vt = VT_UI4;
+
403 ulVal = nSrc;
+
404 }
+
+
405
+
+
409 variant(_In_ float fltSrc) noexcept
+
410 {
+
411 vt = VT_R4;
+
412 fltVal = fltSrc;
+
413 }
+
+
414
+
+
418 variant(_In_ double dblSrc, _In_ VARTYPE vtSrc = VT_R8) noexcept
+
419 {
+
420 assert(vtSrc == VT_R8 || vtSrc == VT_DATE);
+
421 vt = vtSrc;
+
422 dblVal = dblSrc;
+
423 }
+
+
424
+
+
428 variant(_In_ long long nSrc) noexcept
+
429 {
+
430 vt = VT_I8;
+
431 llVal = nSrc;
+
432 }
+
+
433
+
+
437 variant(_In_ unsigned long long nSrc) noexcept
+
438 {
+
439 vt = VT_UI8;
+
440 ullVal = nSrc;
+
441 }
+
+
442
+
+
446 variant(_In_ CY cySrc) noexcept
+
447 {
+
448 vt = VT_CY;
+
449 cyVal.Hi = cySrc.Hi;
+
450 cyVal.Lo = cySrc.Lo;
+
451 }
+
+
452
+
+
456 variant(_In_z_ LPCOLESTR lpszSrc) noexcept
+
457 {
+
458 vt = VT_EMPTY;
+
459 *this = lpszSrc;
+
460 }
+
+
461
+
+
465 variant(_In_z_ BSTR bstr) noexcept
+
466 {
+
467 vt = VT_EMPTY;
+
468 *this = bstr;
+
469 }
+
+
470
+
+
474 variant(_In_opt_ IDispatch* pSrc)
+
475 {
+
476 vt = VT_DISPATCH;
+
477 pdispVal = pSrc;
+
478
+
479 if (pdispVal != NULL)
+
480 pdispVal->AddRef();
+
481 }
+
+
482
+
+
486 variant(_In_opt_ IUnknown* pSrc)
+
487 {
+
488 vt = VT_UNKNOWN;
+
489 punkVal = pSrc;
+
490
+
491 if (punkVal != NULL)
+
492 punkVal->AddRef();
+
493 }
+
+
494
+
+
498 variant(_In_ const SAFEARRAY *pSrc)
+
499 {
+
500 assert(pSrc != NULL);
+
501
+
502 LPSAFEARRAY pCopy;
+
503 const HRESULT hr = SafeArrayCopy(const_cast<LPSAFEARRAY>(pSrc), &pCopy);
+
504 if (FAILED(hr))
+
505 throw winstd::com_runtime_error(hr, "SafeArrayCopy failed");
+
506
+
507 SafeArrayGetVartype(const_cast<LPSAFEARRAY>(pSrc), &vt);
+
508 vt |= VT_ARRAY;
+
509 parray = pCopy;
+
510 }
+
+
511
+
+
515 virtual ~variant()
+
516 {
+
517 VariantClear(this);
+
518 }
+
+
519
+
+
523 variant& operator=(_In_ const VARIANT& varSrc)
+
524 {
+
525 if (this != &varSrc) {
+
526 const HRESULT hr = VariantCopy(this, &varSrc);
+
527 if (FAILED(hr))
+
528 throw winstd::com_runtime_error(hr, "VariantCopy failed");
+
529 }
+
530 return *this;
+
531 }
+
+
532
+
+
536 variant& operator=(_Inout_ VARIANT&& varSrc) noexcept
+
537 {
+
538 if (this != &varSrc) {
+
539 VariantClear(this);
+
540 memcpy(this, &varSrc, sizeof(VARIANT));
+
541 varSrc.vt = VT_EMPTY;
+
542 }
+
543 return *this;
+
544 }
+
+
545
+
+
549 variant& operator=(_In_ bool bSrc) noexcept
+
550 {
+
551 if (vt != VT_BOOL) {
+
552 VariantClear(this);
+
553 vt = VT_BOOL;
+
554 }
+
555 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+
556 return *this;
+
557 }
+
+
558
+
+
562 variant& operator=(_In_ char cSrc) noexcept
+
563 {
+
564 if (vt != VT_I1) {
+
565 VariantClear(this);
+
566 vt = VT_I1;
+
567 }
+
568 cVal = cSrc;
+
569 return *this;
+
570 }
+
+
571
+
+
575 variant& operator=(_In_ unsigned char nSrc) noexcept
+
576 {
+
577 if (vt != VT_UI1) {
+
578 VariantClear(this);
+
579 vt = VT_UI1;
+
580 }
+
581 bVal = nSrc;
+
582 return *this;
+
583 }
+
+
584
+
+
588 variant& operator=(_In_ short nSrc) noexcept
+
589 {
+
590 if (vt != VT_I2) {
+
591 VariantClear(this);
+
592 vt = VT_I2;
+
593 }
+
594 iVal = nSrc;
+
595 return *this;
+
596 }
+
+
597
+
+
601 variant& operator=(_In_ unsigned short nSrc) noexcept
+
602 {
+
603 if (vt != VT_UI2) {
+
604 VariantClear(this);
+
605 vt = VT_UI2;
+
606 }
+
607 uiVal = nSrc;
+
608 return *this;
+
609 }
+
+
610
+
+
614 variant& operator=(_In_ int nSrc) noexcept
+
615 {
+
616 if (vt != VT_I4) {
+
617 VariantClear(this);
+
618 vt = VT_I4;
+
619 }
+
620 intVal = nSrc;
+
621 return *this;
+
622 }
+
+
623
+
+
627 variant& operator=(_In_ unsigned int nSrc) noexcept
+
628 {
+
629 if (vt != VT_UI4) {
+
630 VariantClear(this);
+
631 vt = VT_UI4;
+
632 }
+
633 uintVal= nSrc;
+
634 return *this;
+
635 }
+
+
636
+
+
640 variant& operator=(_In_ long nSrc) noexcept
+
641 {
+
642 if (vt != VT_I4) {
+
643 VariantClear(this);
+
644 vt = VT_I4;
+
645 }
+
646 lVal = nSrc;
+
647 return *this;
+
648 }
+
+
649
+
+
653 variant& operator=(_In_ unsigned long nSrc) noexcept
+
654 {
+
655 if (vt != VT_UI4) {
+
656 VariantClear(this);
+
657 vt = VT_UI4;
+
658 }
+
659 ulVal = nSrc;
+
660 return *this;
+
661 }
+
+
662
+
+
666 variant& operator=(_In_ long long nSrc) noexcept
+
667 {
+
668 if (vt != VT_I8) {
+
669 VariantClear(this);
+
670 vt = VT_I8;
+
671 }
+
672 llVal = nSrc;
+
673 return *this;
+
674 }
+
+
675
+
+
679 variant& operator=(_In_ unsigned long long nSrc) noexcept
+
680 {
+
681 if (vt != VT_UI8) {
+
682 VariantClear(this);
+
683 vt = VT_UI8;
+
684 }
+
685 ullVal = nSrc;
+
686
+
687 return *this;
+
688 }
+
+
689
+
+
693 variant& operator=(_In_ float fltSrc) noexcept
+
694 {
+
695 if (vt != VT_R4) {
+
696 VariantClear(this);
+
697 vt = VT_R4;
+
698 }
+
699 fltVal = fltSrc;
+
700 return *this;
+
701 }
+
+
702
+
+
706 variant& operator=(_In_ double dblSrc) noexcept
+
707 {
+
708 if (vt != VT_R8) {
+
709 VariantClear(this);
+
710 vt = VT_R8;
+
711 }
+
712 dblVal = dblSrc;
+
713 return *this;
+
714 }
+
+
715
+
+
719 variant& operator=(_In_ CY cySrc) noexcept
+
720 {
+
721 if (vt != VT_CY) {
+
722 VariantClear(this);
+
723 vt = VT_CY;
+
724 }
+
725 cyVal.Hi = cySrc.Hi;
+
726 cyVal.Lo = cySrc.Lo;
+
727 return *this;
+
728 }
+
+
729
+
+
733 variant& operator=(_In_z_ LPCOLESTR lpszSrc) noexcept
+
734 {
+
735 VariantClear(this);
+
736 vt = VT_BSTR;
+
737 bstrVal = SysAllocString(lpszSrc);
+
738 return *this;
+
739 }
+
+
740
+
+
744 variant& operator=(_Inout_opt_ IDispatch* pSrc)
+
745 {
+
746 VariantClear(this);
+
747 vt = VT_DISPATCH;
+
748 pdispVal = pSrc;
+
749 if (pdispVal != NULL)
+
750 pdispVal->AddRef();
+
751 return *this;
+
752 }
+
+
753
+
+
757 variant& operator=(_Inout_opt_ IUnknown* pSrc)
+
758 {
+
759 VariantClear(this);
+
760 vt = VT_UNKNOWN;
+
761 punkVal = pSrc;
+
762 if (punkVal != NULL)
+
763 punkVal->AddRef();
+
764 return *this;
+
765 }
+
+
766
+
+
770 variant& operator=(_In_ unsigned char* pbSrc) noexcept
+
771 {
+
772 if (vt != (VT_UI1|VT_BYREF)) {
+
773 VariantClear(this);
+
774 vt = VT_UI1|VT_BYREF;
+
775 }
+
776 pbVal = pbSrc;
+
777 return *this;
+
778 }
+
+
779
+
+
783 variant& operator=(_In_ short* pnSrc) noexcept
+
784 {
+
785 if (vt != (VT_I2|VT_BYREF)) {
+
786 VariantClear(this);
+
787 vt = VT_I2|VT_BYREF;
+
788 }
+
789 piVal = pnSrc;
+
790 return *this;
+
791 }
+
+
792
+
+
796 variant& operator=(_In_ unsigned short* pnSrc) noexcept
+
797 {
+
798 if (vt != (VT_UI2|VT_BYREF)) {
+
799 VariantClear(this);
+
800 vt = VT_UI2|VT_BYREF;
+
801 }
+
802 puiVal = pnSrc;
+
803 return *this;
+
804 }
+
+
805
+
+
809 variant& operator=(_In_ int* pnSrc) noexcept
+
810 {
+
811 if (vt != (VT_I4|VT_BYREF)) {
+
812 VariantClear(this);
+
813 vt = VT_I4|VT_BYREF;
+
814 }
+
815 pintVal = pnSrc;
+
816 return *this;
+
817 }
+
+
818
+
+
822 variant& operator=(_In_ unsigned int* pnSrc) noexcept
+
823 {
+
824 if (vt != (VT_UI4|VT_BYREF)) {
+
825 VariantClear(this);
+
826 vt = VT_UI4|VT_BYREF;
+
827 }
+
828 puintVal = pnSrc;
+
829 return *this;
+
830 }
+
+
831
+
+
835 variant& operator=(_In_ long* pnSrc) noexcept
+
836 {
+
837 if (vt != (VT_I4|VT_BYREF)) {
+
838 VariantClear(this);
+
839 vt = VT_I4|VT_BYREF;
+
840 }
+
841 plVal = pnSrc;
+
842 return *this;
+
843 }
+
+
844
+
+
848 variant& operator=(_In_ unsigned long* pnSrc) noexcept
+
849 {
+
850 if (vt != (VT_UI4|VT_BYREF)) {
+
851 VariantClear(this);
+
852 vt = VT_UI4|VT_BYREF;
+
853 }
+
854 pulVal = pnSrc;
+
855 return *this;
+
856 }
+
+
857
+
+
861 variant& operator=(_In_ long long* pnSrc) noexcept
+
862 {
+
863 if (vt != (VT_I8|VT_BYREF)) {
+
864 VariantClear(this);
+
865 vt = VT_I8|VT_BYREF;
+
866 }
+
867 pllVal = pnSrc;
+
868 return *this;
+
869 }
+
+
870
+
+
874 variant& operator=(_In_ unsigned long long* pnSrc) noexcept
+
875 {
+
876 if (vt != (VT_UI8|VT_BYREF)) {
+
877 VariantClear(this);
+
878 vt = VT_UI8|VT_BYREF;
+
879 }
+
880 pullVal = pnSrc;
+
881 return *this;
+
882 }
+
+
883
+
+
887 variant& operator=(_In_ float* pfSrc) noexcept
+
888 {
+
889 if (vt != (VT_R4|VT_BYREF)) {
+
890 VariantClear(this);
+
891 vt = VT_R4|VT_BYREF;
+
892 }
+
893 pfltVal = pfSrc;
+
894 return *this;
+
895 }
+
+
896
+
+
900 variant& operator=(_In_ double* pfSrc) noexcept
+
901 {
+
902 if (vt != (VT_R8|VT_BYREF)) {
+
903 VariantClear(this);
+
904 vt = VT_R8|VT_BYREF;
+
905 }
+
906 pdblVal = pfSrc;
+
907 return *this;
+
908 }
+
+
909
+
+
913 variant& operator=(_In_ const SAFEARRAY *pSrc)
+
914 {
+
915 assert(pSrc != NULL);
+
916 VariantClear(this);
+
917
+
918 LPSAFEARRAY pCopy;
+
919 const HRESULT hr = SafeArrayCopy(const_cast<LPSAFEARRAY>(pSrc), &pCopy);
+
920 if (SUCCEEDED(hr)) {
+
921 SafeArrayGetVartype(const_cast<LPSAFEARRAY>(pSrc), &vt);
+
922 vt |= VT_ARRAY;
+
923 parray = pCopy;
+
924 return *this;
+
925 }
+
926 throw com_runtime_error(hr, "SafeArrayCopy failed");
+
927 }
+
+
928
+
929 public:
+
+
938 bool operator==(_In_ const VARIANT& varSrc) const noexcept
+
939 {
+
940 if (vt == VT_NULL && varSrc.vt == VT_NULL) return true;
+
941 if (vt != varSrc.vt) return false;
+
942 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0) == static_cast<HRESULT>(VARCMP_EQ);
+
943 }
+
+
944
+
+
953 bool operator!=(_In_ const VARIANT& varSrc) const noexcept
+
954 {
+
955 return !operator==(varSrc);
+
956 }
+
+
957
+
+
966 bool operator<(_In_ const VARIANT& varSrc) const noexcept
+
967 {
+
968 if (vt == VT_NULL && varSrc.vt == VT_NULL) return false;
+
969 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0)== static_cast<HRESULT>(VARCMP_LT);
+
970 }
+
+
971
+
+
980 bool operator>(_In_ const VARIANT& varSrc) const noexcept
+
981 {
+
982 if (vt == VT_NULL && varSrc.vt == VT_NULL) return false;
+
983 return compare(static_cast<const VARIANT&>(*this), varSrc, LOCALE_USER_DEFAULT, 0)== static_cast<HRESULT>(VARCMP_GT);
+
984 }
+
+
985
+
+
994 bool operator<=(_In_ const VARIANT& varSrc) const noexcept
+
995 {
+
996 return !operator>(varSrc);
+
997 }
+
+
998
+
+
1007 bool operator>=(_In_ const VARIANT& varSrc) const noexcept
+
1008 {
+
1009 return !operator<(varSrc);
+
1010 }
+
+
1011
+
+
1017 HRESULT change_type(_In_ VARTYPE _vt, _In_opt_ USHORT wFlags = 0) noexcept
+
1018 {
+
1019 return VariantChangeType(this, this, wFlags, _vt);
+
1020 }
+
+
1021
+
1022 private:
+
1024 HRESULT compare(_In_ const VARIANT &varLeft, _In_ const VARIANT &varRight, _In_ LCID lcid, _In_ ULONG dwFlags) const noexcept
+
1025 {
+
1026 switch(vt) {
+
1027 case VT_I1: return varLeft.cVal == varRight.cVal ? VARCMP_EQ : varLeft.cVal > varRight.cVal ? VARCMP_GT : VARCMP_LT;
+
1028 case VT_UI2: return varLeft.uiVal == varRight.uiVal ? VARCMP_EQ : varLeft.uiVal > varRight.uiVal ? VARCMP_GT : VARCMP_LT;
+
1029 case VT_UI4: return varLeft.uintVal == varRight.uintVal ? VARCMP_EQ : varLeft.uintVal > varRight.uintVal ? VARCMP_GT : VARCMP_LT;
+
1030 case VT_UI8: return varLeft.ullVal == varRight.ullVal ? VARCMP_EQ : varLeft.ullVal > varRight.ullVal ? VARCMP_GT : VARCMP_LT;
+
1031 default: return VarCmp(const_cast<LPVARIANT>(&varLeft), const_cast<LPVARIANT>(&varRight), lcid, dwFlags);
+
1032 }
+
1033 }
+
1035 };
+
+
1036 #pragma warning(pop)
+
1037
+
+
1041 class safearray : public dplhandle<SAFEARRAY*, NULL>
+
1042 {
+
1043 WINSTD_DPLHANDLE_IMPL(safearray, NULL)
+
1044
+
1045 public:
+
+
1051 virtual ~safearray()
+
1052 {
+
1053 if (m_h != invalid)
+
1054 free_internal();
+
1055 }
+
+
1056
+
1057 protected:
+
+
1063 void free_internal() noexcept override
+
1064 {
+
1065 SafeArrayDestroy(m_h);
+
1066 }
+
+
1067
+
+ +
1078 {
+
1079 handle_type h_new;
+
1080 HRESULT hr = SafeArrayCopy(h, &h_new);
+
1081 if (SUCCEEDED(hr))
+
1082 return h_new;
+
1083 throw com_runtime_error(hr, "SafeArrayCopy failed");
+
1084 }
+
+
1085 };
+
+
1086
+
1090 template <class T>
+
+
1091 class safearray_accessor
+
1092 {
+
1093 WINSTD_NONCOPYABLE(safearray_accessor)
+
1094 WINSTD_NONMOVABLE(safearray_accessor)
+
1095
+
1096 public:
+
+
1102 safearray_accessor(_In_ SAFEARRAY* psa) : m_sa(psa)
+
1103 {
+
1104 HRESULT hr = SafeArrayAccessData(psa, (void HUGEP**)&m_data);
+
1105 if (FAILED(hr))
+
1106 throw com_runtime_error(hr, "SafeArrayAccessData failed");
+
1107 }
+
+
1108
+
+ +
1115 {
+
1116 SafeArrayUnaccessData(m_sa);
+
1117 }
+
+
1118
+
+
1122 T HUGEP* data() const noexcept
+
1123 {
+
1124 return m_data;
+
1125 }
+
+
1126
+
1127 protected:
+
1128 SAFEARRAY* m_sa;
+
1129 T HUGEP* m_data;
+
1130 };
+
+
1131
+
+
1135 class com_initializer
+
1136 {
+
1137 WINSTD_NONCOPYABLE(com_initializer)
+
1138 WINSTD_NONMOVABLE(com_initializer)
+
1139
+
1140 public:
+
+
1146 com_initializer(_In_opt_ LPVOID pvReserved) noexcept
+
1147 {
+
1148 m_result = CoInitialize(pvReserved);
+
1149 }
+
+
1150
+
+
1156 com_initializer(_In_opt_ LPVOID pvReserved, _In_ DWORD dwCoInit) noexcept
+
1157 {
+
1158 m_result = CoInitializeEx(pvReserved, dwCoInit);
+
1159 }
+
+
1160
+
+ +
1167 {
+
1168 if (SUCCEEDED(m_result))
+
1169 CoUninitialize();
+
1170 }
+
+
1171
+
+
1177 HRESULT status() const noexcept
+
1178 {
+
1179 return m_result;
+
1180 }
+
+
1181
+
1182 protected:
+
1183 HRESULT m_result;
+
1184 };
+
+
1185
+
1187}
+
1188
+
1191
+
1197template <class T>
+
+
1198static _Check_return_ HRESULT CoCreateInstance(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsContext, _Inout_ winstd::com_obj<T> &v)
+
1199{
+
1200 T* ppv;
+
1201 HRESULT hr = CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (LPVOID*)&ppv);
+
1202 if (SUCCEEDED(hr))
+
1203 v.attach(ppv);
+
1204 return hr;
+
1205}
+
+
1206
+
1212template <class T>
+
+
1213static _Check_return_ HRESULT CoGetObject(_In_ LPCWSTR pszName, _In_opt_ BIND_OPTS* pBindOptions, _In_ REFIID riid, _Inout_ winstd::com_obj<T>& v)
+
1214{
+
1215 T* ppv;
+
1216 HRESULT hr = CoGetObject(pszName, pBindOptions, riid, (LPVOID*)&ppv);
+
1217 if (SUCCEEDED(hr))
+
1218 v.attach(ppv);
+
1219 return hr;
+
1220}
+
+
1221
winstd::bstr
BSTR string wrapper.
Definition COM.h:198
winstd::bstr::bstr
bstr(LPCOLESTR src)
Constructs BSTR from OLE string.
Definition COM.h:205
-
winstd::bstr::bstr
bstr(const std::basic_string< wchar_t, _Traits, _Ax > &src)
Constructs BSTR from std::basic_string.
Definition COM.h:226
-
winstd::bstr::duplicate_internal
handle_type duplicate_internal(handle_type h) const override
Duplicates the string.
Definition COM.h:274
-
winstd::bstr::~bstr
virtual ~bstr()
Destroys the string.
Definition COM.h:238
-
winstd::bstr::free_internal
void free_internal() noexcept override
Destroys the string.
Definition COM.h:260
-
winstd::bstr::length
UINT length() const noexcept
Returns the length of the string.
Definition COM.h:249
+
winstd::bstr::duplicate_internal
handle_type duplicate_internal(handle_type h) const override
Duplicates the string.
Definition COM.h:276
+
winstd::bstr::~bstr
virtual ~bstr()
Destroys the string.
Definition COM.h:240
+
winstd::bstr::free_internal
void free_internal() noexcept override
Destroys the string.
Definition COM.h:262
+
winstd::bstr::length
UINT length() const noexcept
Returns the length of the string.
Definition COM.h:251
winstd::bstr::bstr
bstr(LPCOLESTR src, UINT len)
Constructs BSTR from OLE string with length.
Definition COM.h:215
-
winstd::com_initializer
Context scope automatic COM (un)initialization.
Definition COM.h:1134
-
winstd::com_initializer::com_initializer
com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept
Initializes the COM library for use by the calling thread, sets the thread's concurrency model,...
Definition COM.h:1154
-
winstd::com_initializer::com_initializer
com_initializer(LPVOID pvReserved) noexcept
Initializes the COM library on the current thread and identifies the concurrency model as single-thre...
Definition COM.h:1144
-
winstd::com_initializer::status
HRESULT status() const noexcept
Return result of CoInitialize() call.
Definition COM.h:1175
-
winstd::com_initializer::~com_initializer
virtual ~com_initializer()
Uninitializes COM.
Definition COM.h:1164
-
winstd::com_initializer::m_result
HRESULT m_result
Result of CoInitialize call.
Definition COM.h:1181
+
winstd::bstr::bstr
bstr(const std::basic_string< OLECHAR, _Traits, _Ax > &src)
Constructs BSTR from std::basic_string.
Definition COM.h:226
+
winstd::com_initializer
Context scope automatic COM (un)initialization.
Definition COM.h:1136
+
winstd::com_initializer::com_initializer
com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept
Initializes the COM library for use by the calling thread, sets the thread's concurrency model,...
Definition COM.h:1156
+
winstd::com_initializer::com_initializer
com_initializer(LPVOID pvReserved) noexcept
Initializes the COM library on the current thread and identifies the concurrency model as single-thre...
Definition COM.h:1146
+
winstd::com_initializer::status
HRESULT status() const noexcept
Return result of CoInitialize() call.
Definition COM.h:1177
+
winstd::com_initializer::~com_initializer
virtual ~com_initializer()
Uninitializes COM.
Definition COM.h:1166
+
winstd::com_initializer::m_result
HRESULT m_result
Result of CoInitialize call.
Definition COM.h:1183
winstd::com_obj
COM object wrapper template.
Definition COM.h:83
winstd::com_obj::free_internal
void free_internal() noexcept override
Releases the object by decrementing reference counter.
Definition COM.h:173
winstd::com_obj::com_obj
com_obj(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)
Creates a new instance of a class.
Definition COM.h:92
@@ -911,96 +1116,96 @@ $(function() {
winstd::com_runtime_error
COM runtime error.
Definition COM.h:26
winstd::com_runtime_error::com_runtime_error
com_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition COM.h:34
winstd::com_runtime_error::com_runtime_error
com_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition COM.h:44
-
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:900
-
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1029
-
winstd::num_runtime_error< HRESULT >::error_type
HRESULT error_type
Error number type.
Definition Common.h:1031
-
winstd::safearray_accessor
Context scope automatic SAFEARRAY (un)access.
Definition COM.h:1090
-
winstd::safearray_accessor::safearray_accessor
safearray_accessor(SAFEARRAY *psa)
Increments the lock count of an array, and retrieves a pointer to the array data.
Definition COM.h:1100
-
winstd::safearray_accessor::data
T HUGEP * data() const noexcept
Return SAFEARRAY data pointer.
Definition COM.h:1120
-
winstd::safearray_accessor::m_sa
SAFEARRAY * m_sa
SAFEARRAY.
Definition COM.h:1126
-
winstd::safearray_accessor::~safearray_accessor
virtual ~safearray_accessor()
Decrements the lock count of an array.
Definition COM.h:1112
-
winstd::safearray_accessor::m_data
T HUGEP * m_data
SAFEARRAY data.
Definition COM.h:1127
-
winstd::safearray
SAFEARRAY string wrapper.
Definition COM.h:1040
-
winstd::safearray::~safearray
virtual ~safearray()
Destroys the array.
Definition COM.h:1049
-
winstd::safearray::duplicate_internal
handle_type duplicate_internal(handle_type h) const override
Duplicates the array.
Definition COM.h:1075
-
winstd::safearray::free_internal
void free_internal() noexcept override
Destroys the array.
Definition COM.h:1061
-
winstd::variant
VARIANT struct wrapper.
Definition COM.h:289
-
winstd::variant::operator<=
bool operator<=(const VARIANT &varSrc) const noexcept
Is variant less than or equal to?
Definition COM.h:992
-
winstd::variant::variant
variant(bool bSrc) noexcept
Constructs VARIANT from bool.
Definition COM.h:323
-
winstd::variant::operator=
variant & operator=(unsigned int nSrc) noexcept
Copy from unsigned int value.
Definition COM.h:625
-
winstd::variant::operator=
variant & operator=(unsigned long nSrc) noexcept
Copy from unsigned long value.
Definition COM.h:651
-
winstd::variant::variant
variant(float fltSrc) noexcept
Constructs VARIANT from float.
Definition COM.h:407
-
winstd::variant::variant
variant(VARIANT &&varSrc) noexcept
Moves VARIANT from another.
Definition COM.h:314
-
winstd::variant::operator=
variant & operator=(float fltSrc) noexcept
Copy from float value.
Definition COM.h:691
-
winstd::variant::operator=
variant & operator=(float *pfSrc) noexcept
Copy from float reference.
Definition COM.h:885
-
winstd::variant::variant
variant(IDispatch *pSrc)
Constructs VARIANT from IDispatch.
Definition COM.h:472
-
winstd::variant::variant
variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from integer.
Definition COM.h:368
-
winstd::variant::variant
variant(const SAFEARRAY *pSrc)
Constructs VARIANT from SAFEARRAY.
Definition COM.h:496
-
winstd::variant::operator=
variant & operator=(double *pfSrc) noexcept
Copy from double reference.
Definition COM.h:898
-
winstd::variant::operator=
variant & operator=(const SAFEARRAY *pSrc)
Copy from SAFEARRAY.
Definition COM.h:911
-
winstd::variant::operator=
variant & operator=(int *pnSrc) noexcept
Copy from int reference.
Definition COM.h:807
-
winstd::variant::operator>
bool operator>(const VARIANT &varSrc) const noexcept
Is variant greater than?
Definition COM.h:978
-
winstd::variant::operator=
variant & operator=(bool bSrc) noexcept
Copy from bool value.
Definition COM.h:547
-
winstd::variant::operator=
variant & operator=(long nSrc) noexcept
Copy from long value.
Definition COM.h:638
-
winstd::variant::change_type
HRESULT change_type(VARTYPE _vt, USHORT wFlags=0) noexcept
Converts a variant from one type to another.
Definition COM.h:1015
-
winstd::variant::operator=
variant & operator=(IUnknown *pSrc)
Copy from IUnknown.
Definition COM.h:755
-
winstd::variant::operator=
variant & operator=(short nSrc) noexcept
Copy from short value.
Definition COM.h:586
-
winstd::variant::operator=
variant & operator=(unsigned char *pbSrc) noexcept
Copy from unsigned char reference.
Definition COM.h:768
-
winstd::variant::operator=
variant & operator=(unsigned short nSrc) noexcept
Copy from unsigned short value.
Definition COM.h:599
-
winstd::variant::operator=
variant & operator=(unsigned char nSrc) noexcept
Copy from unsigned char value.
Definition COM.h:573
-
winstd::variant::operator=
variant & operator=(char cSrc) noexcept
Copy from char value.
Definition COM.h:560
-
winstd::variant::variant
variant(LPCOLESTR lpszSrc) noexcept
Constructs VARIANT from OLE string.
Definition COM.h:454
-
winstd::variant::~variant
virtual ~variant()
Destroys VARIANT.
Definition COM.h:513
-
winstd::variant::variant
variant(const VARIANT &varSrc)
Constructs VARIANT from another.
Definition COM.h:302
-
winstd::variant::variant
variant(unsigned char nSrc) noexcept
Constructs VARIANT from byte.
Definition COM.h:341
-
winstd::variant::operator=
variant & operator=(double dblSrc) noexcept
Copy from double value.
Definition COM.h:704
-
winstd::variant::operator!=
bool operator!=(const VARIANT &varSrc) const noexcept
Is variant not equal to?
Definition COM.h:951
-
winstd::variant::operator=
variant & operator=(int nSrc) noexcept
Copy from int value.
Definition COM.h:612
-
winstd::variant::variant
variant(unsigned long nSrc) noexcept
Constructs VARIANT from unsigned long.
Definition COM.h:398
-
winstd::variant::operator==
bool operator==(const VARIANT &varSrc) const noexcept
Is variant equal to?
Definition COM.h:936
-
winstd::variant::variant
variant(IUnknown *pSrc)
Constructs VARIANT from IUnknown.
Definition COM.h:484
-
winstd::variant::variant
variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:378
-
winstd::variant::operator=
variant & operator=(CY cySrc) noexcept
Copy from CY value.
Definition COM.h:717
-
winstd::variant::operator=
variant & operator=(LPCOLESTR lpszSrc) noexcept
Copy from OLE string value.
Definition COM.h:731
-
winstd::variant::variant
variant(long long nSrc) noexcept
Constructs VARIANT from 64-bit integer.
Definition COM.h:426
-
winstd::variant::operator=
variant & operator=(unsigned int *pnSrc) noexcept
Copy from unsigned int reference.
Definition COM.h:820
-
winstd::variant::variant
variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from long.
Definition COM.h:388
-
winstd::variant::operator=
variant & operator=(long *pnSrc) noexcept
Copy from long reference.
Definition COM.h:833
-
winstd::variant::variant
variant(unsigned short nSrc) noexcept
Constructs VARIANT from unsigned short.
Definition COM.h:359
-
winstd::variant::operator>=
bool operator>=(const VARIANT &varSrc) const noexcept
Is variant greater than or equal to?
Definition COM.h:1005
-
winstd::variant::operator=
variant & operator=(short *pnSrc) noexcept
Copy from short reference.
Definition COM.h:781
-
winstd::variant::variant
variant() noexcept
Constructs blank VARIANT.
Definition COM.h:294
-
winstd::variant::operator<
bool operator<(const VARIANT &varSrc) const noexcept
Is variant less than?
Definition COM.h:964
-
winstd::variant::variant
variant(unsigned long long nSrc) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:435
-
winstd::variant::variant
variant(char cSrc) noexcept
Constructs VARIANT from character.
Definition COM.h:332
-
winstd::variant::operator=
variant & operator=(unsigned short *pnSrc) noexcept
Copy from unsigned short reference.
Definition COM.h:794
-
winstd::variant::operator=
variant & operator=(long long *pnSrc) noexcept
Copy from long long reference.
Definition COM.h:859
-
winstd::variant::variant
variant(BSTR bstr) noexcept
Constructs VARIANT from BSTR.
Definition COM.h:463
-
winstd::variant::operator=
variant & operator=(unsigned long long *pnSrc) noexcept
Copy from unsigned long long reference.
Definition COM.h:872
-
winstd::variant::variant
variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept
Constructs VARIANT from double or variant date.
Definition COM.h:416
-
winstd::variant::variant
variant(short nSrc) noexcept
Constructs VARIANT from short.
Definition COM.h:350
-
winstd::variant::variant
variant(CY cySrc) noexcept
Constructs VARIANT from CY (64-bit integer)
Definition COM.h:444
-
winstd::variant::operator=
variant & operator=(unsigned long long nSrc) noexcept
Copy from unsigned long long value.
Definition COM.h:677
-
winstd::variant::operator=
variant & operator=(VARIANT &&varSrc) noexcept
Moves from another VARIANT.
Definition COM.h:534
-
winstd::variant::operator=
variant & operator=(long long nSrc) noexcept
Copy from long long value.
Definition COM.h:664
-
winstd::variant::operator=
variant & operator=(IDispatch *pSrc)
Copy from IDispatch.
Definition COM.h:742
-
winstd::variant::operator=
variant & operator=(unsigned long *pnSrc) noexcept
Copy from unsigned long reference.
Definition COM.h:846
-
winstd::variant::operator=
variant & operator=(const VARIANT &varSrc)
Copy from another VARIANT.
Definition COM.h:521
-
CoGetObject
static _Check_return_ HRESULT CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, winstd::com_obj< T > &v)
Converts a display name into a moniker that identifies the object named, and then binds to the object...
Definition COM.h:1211
-
CoCreateInstance
static _Check_return_ HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, winstd::com_obj< T > &v)
Creates and default-initializes a single object of the class associated with a specified CLSID.
Definition COM.h:1196
+
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1248
+
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1377
+
winstd::num_runtime_error< HRESULT >::error_type
HRESULT error_type
Error number type.
Definition Common.h:1379
+
winstd::safearray_accessor
Context scope automatic SAFEARRAY (un)access.
Definition COM.h:1092
+
winstd::safearray_accessor::safearray_accessor
safearray_accessor(SAFEARRAY *psa)
Increments the lock count of an array, and retrieves a pointer to the array data.
Definition COM.h:1102
+
winstd::safearray_accessor::data
T HUGEP * data() const noexcept
Return SAFEARRAY data pointer.
Definition COM.h:1122
+
winstd::safearray_accessor::m_sa
SAFEARRAY * m_sa
SAFEARRAY.
Definition COM.h:1128
+
winstd::safearray_accessor::~safearray_accessor
virtual ~safearray_accessor()
Decrements the lock count of an array.
Definition COM.h:1114
+
winstd::safearray_accessor::m_data
T HUGEP * m_data
SAFEARRAY data.
Definition COM.h:1129
+
winstd::safearray
SAFEARRAY string wrapper.
Definition COM.h:1042
+
winstd::safearray::~safearray
virtual ~safearray()
Destroys the array.
Definition COM.h:1051
+
winstd::safearray::duplicate_internal
handle_type duplicate_internal(handle_type h) const override
Duplicates the array.
Definition COM.h:1077
+
winstd::safearray::free_internal
void free_internal() noexcept override
Destroys the array.
Definition COM.h:1063
+
winstd::variant
VARIANT struct wrapper.
Definition COM.h:291
+
winstd::variant::operator<=
bool operator<=(const VARIANT &varSrc) const noexcept
Is variant less than or equal to?
Definition COM.h:994
+
winstd::variant::variant
variant(bool bSrc) noexcept
Constructs VARIANT from bool.
Definition COM.h:325
+
winstd::variant::operator=
variant & operator=(unsigned int nSrc) noexcept
Copy from unsigned int value.
Definition COM.h:627
+
winstd::variant::operator=
variant & operator=(unsigned long nSrc) noexcept
Copy from unsigned long value.
Definition COM.h:653
+
winstd::variant::variant
variant(float fltSrc) noexcept
Constructs VARIANT from float.
Definition COM.h:409
+
winstd::variant::variant
variant(VARIANT &&varSrc) noexcept
Moves VARIANT from another.
Definition COM.h:316
+
winstd::variant::operator=
variant & operator=(float fltSrc) noexcept
Copy from float value.
Definition COM.h:693
+
winstd::variant::operator=
variant & operator=(float *pfSrc) noexcept
Copy from float reference.
Definition COM.h:887
+
winstd::variant::variant
variant(IDispatch *pSrc)
Constructs VARIANT from IDispatch.
Definition COM.h:474
+
winstd::variant::variant
variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from integer.
Definition COM.h:370
+
winstd::variant::variant
variant(const SAFEARRAY *pSrc)
Constructs VARIANT from SAFEARRAY.
Definition COM.h:498
+
winstd::variant::operator=
variant & operator=(double *pfSrc) noexcept
Copy from double reference.
Definition COM.h:900
+
winstd::variant::operator=
variant & operator=(const SAFEARRAY *pSrc)
Copy from SAFEARRAY.
Definition COM.h:913
+
winstd::variant::operator=
variant & operator=(int *pnSrc) noexcept
Copy from int reference.
Definition COM.h:809
+
winstd::variant::operator>
bool operator>(const VARIANT &varSrc) const noexcept
Is variant greater than?
Definition COM.h:980
+
winstd::variant::operator=
variant & operator=(bool bSrc) noexcept
Copy from bool value.
Definition COM.h:549
+
winstd::variant::operator=
variant & operator=(long nSrc) noexcept
Copy from long value.
Definition COM.h:640
+
winstd::variant::change_type
HRESULT change_type(VARTYPE _vt, USHORT wFlags=0) noexcept
Converts a variant from one type to another.
Definition COM.h:1017
+
winstd::variant::operator=
variant & operator=(IUnknown *pSrc)
Copy from IUnknown.
Definition COM.h:757
+
winstd::variant::operator=
variant & operator=(short nSrc) noexcept
Copy from short value.
Definition COM.h:588
+
winstd::variant::operator=
variant & operator=(unsigned char *pbSrc) noexcept
Copy from unsigned char reference.
Definition COM.h:770
+
winstd::variant::operator=
variant & operator=(unsigned short nSrc) noexcept
Copy from unsigned short value.
Definition COM.h:601
+
winstd::variant::operator=
variant & operator=(unsigned char nSrc) noexcept
Copy from unsigned char value.
Definition COM.h:575
+
winstd::variant::operator=
variant & operator=(char cSrc) noexcept
Copy from char value.
Definition COM.h:562
+
winstd::variant::variant
variant(LPCOLESTR lpszSrc) noexcept
Constructs VARIANT from OLE string.
Definition COM.h:456
+
winstd::variant::~variant
virtual ~variant()
Destroys VARIANT.
Definition COM.h:515
+
winstd::variant::variant
variant(const VARIANT &varSrc)
Constructs VARIANT from another.
Definition COM.h:304
+
winstd::variant::variant
variant(unsigned char nSrc) noexcept
Constructs VARIANT from byte.
Definition COM.h:343
+
winstd::variant::operator=
variant & operator=(double dblSrc) noexcept
Copy from double value.
Definition COM.h:706
+
winstd::variant::operator!=
bool operator!=(const VARIANT &varSrc) const noexcept
Is variant not equal to?
Definition COM.h:953
+
winstd::variant::operator=
variant & operator=(int nSrc) noexcept
Copy from int value.
Definition COM.h:614
+
winstd::variant::variant
variant(unsigned long nSrc) noexcept
Constructs VARIANT from unsigned long.
Definition COM.h:400
+
winstd::variant::operator==
bool operator==(const VARIANT &varSrc) const noexcept
Is variant equal to?
Definition COM.h:938
+
winstd::variant::variant
variant(IUnknown *pSrc)
Constructs VARIANT from IUnknown.
Definition COM.h:486
+
winstd::variant::variant
variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:380
+
winstd::variant::operator=
variant & operator=(CY cySrc) noexcept
Copy from CY value.
Definition COM.h:719
+
winstd::variant::operator=
variant & operator=(LPCOLESTR lpszSrc) noexcept
Copy from OLE string value.
Definition COM.h:733
+
winstd::variant::variant
variant(long long nSrc) noexcept
Constructs VARIANT from 64-bit integer.
Definition COM.h:428
+
winstd::variant::operator=
variant & operator=(unsigned int *pnSrc) noexcept
Copy from unsigned int reference.
Definition COM.h:822
+
winstd::variant::variant
variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from long.
Definition COM.h:390
+
winstd::variant::operator=
variant & operator=(long *pnSrc) noexcept
Copy from long reference.
Definition COM.h:835
+
winstd::variant::variant
variant(unsigned short nSrc) noexcept
Constructs VARIANT from unsigned short.
Definition COM.h:361
+
winstd::variant::operator>=
bool operator>=(const VARIANT &varSrc) const noexcept
Is variant greater than or equal to?
Definition COM.h:1007
+
winstd::variant::operator=
variant & operator=(short *pnSrc) noexcept
Copy from short reference.
Definition COM.h:783
+
winstd::variant::variant
variant() noexcept
Constructs blank VARIANT.
Definition COM.h:296
+
winstd::variant::operator<
bool operator<(const VARIANT &varSrc) const noexcept
Is variant less than?
Definition COM.h:966
+
winstd::variant::variant
variant(unsigned long long nSrc) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:437
+
winstd::variant::variant
variant(char cSrc) noexcept
Constructs VARIANT from character.
Definition COM.h:334
+
winstd::variant::operator=
variant & operator=(unsigned short *pnSrc) noexcept
Copy from unsigned short reference.
Definition COM.h:796
+
winstd::variant::operator=
variant & operator=(long long *pnSrc) noexcept
Copy from long long reference.
Definition COM.h:861
+
winstd::variant::variant
variant(BSTR bstr) noexcept
Constructs VARIANT from BSTR.
Definition COM.h:465
+
winstd::variant::operator=
variant & operator=(unsigned long long *pnSrc) noexcept
Copy from unsigned long long reference.
Definition COM.h:874
+
winstd::variant::variant
variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept
Constructs VARIANT from double or variant date.
Definition COM.h:418
+
winstd::variant::variant
variant(short nSrc) noexcept
Constructs VARIANT from short.
Definition COM.h:352
+
winstd::variant::variant
variant(CY cySrc) noexcept
Constructs VARIANT from CY (64-bit integer)
Definition COM.h:446
+
winstd::variant::operator=
variant & operator=(unsigned long long nSrc) noexcept
Copy from unsigned long long value.
Definition COM.h:679
+
winstd::variant::operator=
variant & operator=(VARIANT &&varSrc) noexcept
Moves from another VARIANT.
Definition COM.h:536
+
winstd::variant::operator=
variant & operator=(long long nSrc) noexcept
Copy from long long value.
Definition COM.h:666
+
winstd::variant::operator=
variant & operator=(IDispatch *pSrc)
Copy from IDispatch.
Definition COM.h:744
+
winstd::variant::operator=
variant & operator=(unsigned long *pnSrc) noexcept
Copy from unsigned long reference.
Definition COM.h:848
+
winstd::variant::operator=
variant & operator=(const VARIANT &varSrc)
Copy from another VARIANT.
Definition COM.h:523
+
CoGetObject
static _Check_return_ HRESULT CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, winstd::com_obj< T > &v)
Converts a display name into a moniker that identifies the object named, and then binds to the object...
Definition COM.h:1213
+
CoCreateInstance
static _Check_return_ HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, winstd::com_obj< T > &v)
Creates and default-initializes a single object of the class associated with a specified CLSID.
Definition COM.h:1198
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_NONMOVABLE
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:74
WINSTD_DPLHANDLE_IMPL
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:175
-
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:993
winstd::CoTaskMemFree_delete
Deleter for unique_ptr using CoTaskMemFree.
Definition COM.h:58
winstd::CoTaskMemFree_delete::operator()
void operator()(_T *_Ptr) const
Delete a pointer.
Definition COM.h:70
winstd::CoTaskMemFree_delete::CoTaskMemFree_delete
CoTaskMemFree_delete() noexcept
Default constructor.
Definition COM.h:62
diff --git a/_common_8h_source.html b/_common_8h_source.html index ef316c63..10a0e804 100644 --- a/_common_8h_source.html +++ b/_common_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/Common.h Source File @@ -30,7 +30,7 @@ - + +
57
61#define WINSTD_STRING(x) WINSTD_STRING_IMPL(x)
62
+
66#define WINSTD_NONCOPYABLE(C) \
67private: \
68 C (_In_ const C &h) noexcept; \
69 C& operator=(_In_ const C &h) noexcept;
+
70
+
74#define WINSTD_NONMOVABLE(C) \
75private: \
76 C (_Inout_ C &&h) noexcept; \
77 C& operator=(_Inout_ C &&h) noexcept;
+
78
79#ifndef WINSTD_STACK_BUFFER_BYTES
93#define WINSTD_STACK_BUFFER_BYTES 1024
@@ -163,6 +172,7 @@ $(function() {
154
156
159
+
163#define WINSTD_HANDLE_IMPL(C, INVAL) \
164public: \
165 C ( ) noexcept { } \
@@ -171,7 +181,9 @@ $(function() {
168 C& operator=(_In_opt_ handle_type h) noexcept { handle<handle_type, INVAL>::operator=( h ); return *this; } \
169 C& operator=(_Inout_ C &&h) noexcept { handle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
170WINSTD_NONCOPYABLE(C)
+
171
+
175#define WINSTD_DPLHANDLE_IMPL(C, INVAL) \
176public: \
177 C ( ) noexcept { } \
@@ -182,6 +194,7 @@ $(function() {
182 C& operator=(_In_ const C &h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
183 C& operator=(_Inout_ C &&h) noexcept { dplhandle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
184private:
+
185
187
188#ifndef _FormatMessage_format_string_
@@ -202,18 +215,23 @@ $(function() {
205
208
219#if _MSC_VER <= 1600
+
220static int vsnprintf(_Out_z_cap_(capacity) char *str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const char *format, _In_ va_list arg)
221{
222 return _vsnprintf(str, capacity, format, arg);
223}
+
224#endif
225
+
236static 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
237{
238 return _vsnwprintf(str, capacity, format, arg);
239}
+
240
250template<class _Elem, class _Traits, class _Ax>
+
251static int vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, _In_ va_list arg)
252{
253 _Elem buf[WINSTD_STACK_BUFFER_BYTES/sizeof(_Elem)];
@@ -237,8 +255,10 @@ $(function() {
271
272 return count;
273}
+
274
283template<class _Elem, class _Traits, class _Ax>
+
284static int sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
285{
286 va_list arg;
@@ -247,829 +267,1331 @@ $(function() {
289 va_end(arg);
290 return res;
291}
+
292
298template<class _Traits, class _Ax>
-
299static 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)
+
+
299static _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
300{
-
301 std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
-
302 DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>((LPSTR*)get_ptr(lpBuffer)), 0, Arguments);
-
303 if (dwResult)
-
304 str.assign(lpBuffer.get(), dwResult);
-
305 return dwResult;
-
306}
-
307
-
313template<class _Traits, class _Ax>
-
314static 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)
-
315{
-
316 std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
-
317 DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>((LPWSTR*)get_ptr(lpBuffer)), 0, Arguments);
-
318 if (dwResult)
-
319 str.assign(lpBuffer.get(), dwResult);
-
320 return dwResult;
-
321}
-
322
-
324
-
325#pragma warning(pop)
-
326
-
327namespace winstd
-
328{
-
331
-
335#ifdef _UNICODE
-
336 typedef std::wstring tstring;
-
337#else
-
338 typedef std::string tstring;
-
339#endif
-
340
-
344 template <class _Ty>
-
345 struct LocalFree_delete
-
346 {
-
347 typedef LocalFree_delete<_Ty> _Myt;
-
348
-
352 LocalFree_delete() {}
-
353
-
357 template <class _Ty2> LocalFree_delete(const LocalFree_delete<_Ty2>&) {}
-
358
-
364 void operator()(_Ty *_Ptr) const
-
365 {
-
366 LocalFree(_Ptr);
-
367 }
-
368 };
+
301 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
302
+
303 // Try to convert to stack buffer first.
+
304 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
305 if (cch) {
+
306 // Copy from stack. Be careful not to include zero terminator.
+
307 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
308 }
+
309 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
310 // Query the required output size. Allocate buffer. Then convert again.
+
311 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
312 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
313 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
314 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
315 }
+
316
+
317 return cch;
+
318}
+
+
319
+
325template<class _Ax>
+
+
326static _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
+
327{
+
328 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
329
+
330 // Try to convert to stack buffer first.
+
331 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
332 if (cch) {
+
333 // Copy from stack.
+
334 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
335 }
+
336 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
337 // Query the required output size. Allocate buffer. Then convert again.
+
338 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
339 sMultiByteStr.resize(cch);
+
340 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
341 }
+
342
+
343 return cch;
+
344}
+
+
345
+
351template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
352static _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
+
353{
+
354 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
355
+
356 // Try to convert to stack buffer first.
+
357 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
358 if (cch) {
+
359 // Copy from stack.
+
360 sMultiByteStr.assign(szStackBuffer, cch);
+
361 }
+
362 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
363 // Query the required output size. Allocate buffer. Then convert again.
+
364 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
365 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
366 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
367 sMultiByteStr.assign(szBuffer.get(), cch);
+
368 }
369
-
373 template <class _Ty>
-
374 struct LocalFree_delete<_Ty[]>
-
375 {
-
376 typedef LocalFree_delete<_Ty> _Myt;
-
377
-
381 LocalFree_delete() noexcept {}
-
382
-
386 void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
-
387 {
-
388 LocalFree(_Ptr);
-
389 }
-
390
-
396 template<class _Other>
-
397 void operator()(_Other *) const
-
398 {
-
399 LocalFree(_Ptr);
-
400 }
-
401 };
-
402
-
406 struct GlobalFree_delete
-
407 {
-
411 GlobalFree_delete() {}
-
412
-
418 void operator()(HGLOBAL _Ptr) const
-
419 {
-
420 GlobalFree(_Ptr);
-
421 }
-
422 };
-
423
-
427 template <class T>
-
428 class globalmem_accessor
-
429 {
-
430 WINSTD_NONCOPYABLE(globalmem_accessor)
-
431 WINSTD_NONMOVABLE(globalmem_accessor)
-
432
-
433 public:
-
439 globalmem_accessor(_In_ HGLOBAL hMem) : m_h(hMem)
-
440 {
-
441 m_data = (T*)GlobalLock(hMem);
-
442 if (!m_data)
-
443 throw win_runtime_error("GlobalLock failed");
-
444 }
-
445
-
451 virtual ~globalmem_accessor()
-
452 {
-
453 GlobalUnlock(m_h);
-
454 }
-
455
-
459 T* data() const noexcept
-
460 {
-
461 return m_data;
-
462 }
+
370 return cch;
+
371}
+
+
372
+
380template<class _Traits, class _Ax>
+
+
381static _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
+
382{
+
383 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
384
+
385 // Try to convert to stack buffer first.
+
386 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
387 if (cch) {
+
388 // Copy from stack. Be careful not to include zero terminator.
+
389 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
390 }
+
391 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
392 // Query the required output size. Allocate buffer. Then convert again.
+
393 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
394 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
395 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
396 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
397 SecureZeroMemory(szBuffer.get(), sizeof(CHAR) * cch);
+
398 }
+
399
+
400 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
401
+
402 return cch;
+
403}
+
+
404
+
412template<class _Ax>
+
+
413static _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
+
414{
+
415 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
416
+
417 // Try to convert to stack buffer first.
+
418 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
419 if (cch) {
+
420 // Copy from stack.
+
421 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
+
422 }
+
423 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
424 // Query the required output size. Allocate buffer. Then convert again.
+
425 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
426 sMultiByteStr.resize(cch);
+
427 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
+
428 }
+
429
+
430 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
431
+
432 return cch;
+
433}
+
+
434
+
442template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
443static _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
+
444{
+
445 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(CHAR)];
+
446
+
447 // Try to convert to stack buffer first.
+
448 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
+
449 if (cch) {
+
450 // Copy from stack.
+
451 sMultiByteStr.assign(szStackBuffer, cch);
+
452 }
+
453 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
454 // Query the required output size. Allocate buffer. Then convert again.
+
455 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
+
456 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
457 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
+
458 sMultiByteStr.assign(szBuffer.get(), cch);
+
459 SecureZeroMemory(szBuffer.get(), sizeof(CHAR) * cch);
+
460 }
+
461
+
462 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
463
-
464 protected:
-
465 HGLOBAL m_h;
-
466 T* m_data;
-
467 };
-
468
-
472 template<class _Ty, class _Dx>
-
473 class ref_unique_ptr
-
474 {
-
475 public:
-
481 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) :
-
482 m_own(owner),
-
483 m_ptr(owner.release())
-
484 {}
-
485
-
491 ref_unique_ptr(_Inout_ ref_unique_ptr<_Ty, _Dx> &&other) :
-
492 m_own(other.m_own),
-
493 m_ptr(other.m_ptr)
-
494 {
-
495 other.m_ptr = nullptr;
-
496 }
-
497
-
501 ~ref_unique_ptr()
-
502 {
-
503 if (m_ptr != nullptr)
-
504 m_own.reset(m_ptr);
-
505 }
-
506
-
512 operator typename _Ty**()
-
513 {
-
514 return &m_ptr;
-
515 }
+
464 return cch;
+
465}
+
+
466
+
472template<class _Traits, class _Ax>
+
+
473static _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
+
474{
+
475 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
476
+
477 // Try to convert to stack buffer first.
+
478 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
479 if (cch) {
+
480 // Copy from stack.
+
481 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
482 }
+
483 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
484 // Query the required output size. Allocate buffer. Then convert again.
+
485 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
486 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
487 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
+
488 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
489 }
+
490
+
491 return cch;
+
492}
+
+
493
+
499template<class _Ax>
+
+
500static _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
+
501{
+
502 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
503
+
504 // Try to convert to stack buffer first.
+
505 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
506 if (cch) {
+
507 // Copy from stack.
+
508 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
509 }
+
510 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
511 // Query the required output size. Allocate buffer. Then convert again.
+
512 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
513 sWideCharStr.resize(cch);
+
514 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
515 }
516
-
522 operator typename _Ty*&()
-
523 {
-
524 return m_ptr;
-
525 }
-
526
-
527 protected:
-
528 std::unique_ptr<_Ty, _Dx> &m_own;
-
529 _Ty *m_ptr;
-
530 };
-
531
-
539 template<class _Ty, class _Dx>
-
540 ref_unique_ptr<_Ty, _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) noexcept
-
541 {
-
542 return ref_unique_ptr<_Ty, _Dx>(owner);
-
543 }
-
544
-
549 template<class _Ty, class _Dx>
-
550 class ref_unique_ptr<_Ty[], _Dx>
-
551 {
-
552 public:
-
558 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept :
-
559 m_own(owner),
-
560 m_ptr(owner.release())
-
561 {}
-
562
-
568 ref_unique_ptr(_Inout_ ref_unique_ptr<_Ty[], _Dx> &&other) :
-
569 m_own(other.m_own),
-
570 m_ptr(other.m_ptr)
-
571 {
-
572 other.m_ptr = nullptr;
-
573 }
-
574
-
578 virtual ~ref_unique_ptr()
-
579 {
-
580 if (m_ptr != nullptr)
-
581 m_own.reset(m_ptr);
-
582 }
-
583
-
589 operator typename _Ty**() noexcept
-
590 {
-
591 return &m_ptr;
-
592 }
-
593
-
599 operator typename _Ty*&()
-
600 {
-
601 return m_ptr;
-
602 }
+
517 return cch;
+
518}
+
+
519
+
525template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
526static _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
+
527{
+
528 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
529
+
530 // Try to convert to stack buffer first.
+
531 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
532 if (cch) {
+
533 // Copy from stack.
+
534 sWideCharStr.assign(szStackBuffer, cch);
+
535 }
+
536 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
537 // Query the required output size. Allocate buffer. Then convert again.
+
538 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
539 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
540 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
+
541 sWideCharStr.assign(szBuffer.get(), cch);
+
542 }
+
543
+
544 return cch;
+
545}
+
+
546
+
554template<class _Traits, class _Ax>
+
+
555static _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
+
556{
+
557 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
558
+
559 // Try to convert to stack buffer first.
+
560 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
561 if (cch) {
+
562 // Copy from stack.
+
563 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
564 }
+
565 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
566 // Query the required output size. Allocate buffer. Then convert again.
+
567 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
568 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
569 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
+
570 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
571 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR) * cch);
+
572 }
+
573
+
574 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
575
+
576 return cch;
+
577}
+
+
578
+
586template<class _Ax>
+
+
587static _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
+
588{
+
589 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
590
+
591 // Try to convert to stack buffer first.
+
592 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
+
593 if (cch) {
+
594 // Copy from stack.
+
595 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
+
596 }
+
597 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
598 // Query the required output size. Allocate buffer. Then convert again.
+
599 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
+
600 sWideCharStr.resize(cch);
+
601 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
+
602 }
603
-
604 protected:
-
605 std::unique_ptr<_Ty[], _Dx> &m_own;
-
606 _Ty *m_ptr;
-
607 };
+
604 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
605
+
606 return cch;
+
607}
+
608
-
617 template<class _Ty, class _Dx>
-
618 ref_unique_ptr<_Ty[], _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx>& owner) noexcept
-
619 {
-
620 return ref_unique_ptr<_Ty[], _Dx>(owner);
-
621 }
-
622
-
624
-
627
-
633 template <class T, const T INVAL>
-
634 class handle
-
635 {
-
636 public:
-
640 typedef T handle_type;
-
641
-
645 static const T invalid;
-
646
-
650 handle() noexcept : m_h(invalid)
-
651 {
-
652 }
-
653
-
659 handle(_In_opt_ handle_type h) noexcept : m_h(h)
-
660 {
-
661 }
-
662
-
668 handle(_Inout_ handle<handle_type, INVAL> &&h) noexcept
-
669 {
-
670 // Transfer handle.
-
671 m_h = h.m_h;
-
672 h.m_h = invalid;
-
673 }
+
616template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
617static _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
+
618{
+
619 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(WCHAR)];
+
620
+
621 // Try to convert to stack buffer first.
+
622 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
+
623 if (cch) {
+
624 // Copy from stack.
+
625 sWideCharStr.assign(szStackBuffer, cch);
+
626 }
+
627 else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
628 // Query the required output size. Allocate buffer. Then convert again.
+
629 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
+
630 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
631 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
+
632 sWideCharStr.assign(szBuffer.get(), cch);
+
633 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR) * cch);
+
634 }
+
635
+
636 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
637
+
638 return cch;
+
639}
+
+
640
+
646template<class _Traits, class _Ax>
+
+
647static 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)
+
648{
+
649 std::unique_ptr<CHAR[], winstd::LocalFree_delete<CHAR[]> > lpBuffer;
+
650 DWORD dwResult = FormatMessageA(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPSTR>((LPSTR*)get_ptr(lpBuffer)), 0, Arguments);
+
651 if (dwResult)
+
652 str.assign(lpBuffer.get(), dwResult);
+
653 return dwResult;
+
654}
+
+
655
+
661template<class _Traits, class _Ax>
+
+
662static 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)
+
663{
+
664 std::unique_ptr<WCHAR[], winstd::LocalFree_delete<WCHAR[]> > lpBuffer;
+
665 DWORD dwResult = FormatMessageW(dwFlags | FORMAT_MESSAGE_ALLOCATE_BUFFER, lpSource, dwMessageId, dwLanguageId, reinterpret_cast<LPWSTR>((LPWSTR*)get_ptr(lpBuffer)), 0, Arguments);
+
666 if (dwResult)
+
667 str.assign(lpBuffer.get(), dwResult);
+
668 return dwResult;
+
669}
+
+
670
+
672
+
673#pragma warning(pop)
674
-
675 private:
-
676 // This class is noncopyable.
-
677 handle(_In_ const handle<handle_type, INVAL> &h) noexcept {};
-
678 handle<handle_type, INVAL>& operator=(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
675namespace winstd
+
676{
679
-
680 public:
-
686 handle<handle_type, INVAL>& operator=(_In_opt_ handle_type h) noexcept
-
687 {
-
688 attach(h);
-
689 return *this;
-
690 }
-
691
-
697 #pragma warning(suppress: 26432) // Move constructor is also present, but not detected by code analysis somehow.
-
698 handle<handle_type, INVAL>& operator=(_Inout_ handle<handle_type, INVAL> &&h) noexcept
-
699 {
-
700 if (this != std::addressof(h)) {
-
701 // Transfer handle.
-
702 if (m_h != invalid)
-
703 free_internal();
-
704 m_h = h.m_h;
-
705 h.m_h = invalid;
-
706 }
-
707 return *this;
-
708 }
-
709
-
715 operator handle_type() const
-
716 {
-
717 return m_h;
-
718 }
-
719
-
725 handle_type*& operator*() const
-
726 {
-
727 assert(m_h != invalid);
-
728 return *m_h;
-
729 }
+
683#ifdef _UNICODE
+
684 typedef std::wstring tstring;
+
685#else
+
686 typedef std::string tstring;
+
687#endif
+
688
+
692 template <class _Ty>
+
+
693 struct LocalFree_delete
+
694 {
+
695 typedef LocalFree_delete<_Ty> _Myt;
+
696
+
700 LocalFree_delete() {}
+
701
+
705 template <class _Ty2> LocalFree_delete(const LocalFree_delete<_Ty2>&) {}
+
706
+
+
712 void operator()(_Ty *_Ptr) const
+
713 {
+
714 LocalFree(_Ptr);
+
715 }
+
+
716 };
+
+
717
+
721 template <class _Ty>
+
+
722 struct LocalFree_delete<_Ty[]>
+
723 {
+
724 typedef LocalFree_delete<_Ty> _Myt;
+
725
+
729 LocalFree_delete() noexcept {}
730
-
735 handle_type* operator&()
-
736 {
-
737 assert(m_h == invalid);
-
738 return &m_h;
-
739 }
-
740
-
746 handle_type operator->() const
-
747 {
-
748 assert(m_h != invalid);
-
749 return m_h;
-
750 }
-
751
-
762 bool operator!() const
-
763 {
-
764 return m_h == invalid;
-
765 }
-
766
-
775 bool operator<(_In_opt_ handle_type h) const
-
776 {
-
777 return m_h < h;
-
778 }
-
779
-
788 bool operator<=(_In_opt_ handle_type h) const
-
789 {
-
790 return !operator>(h);
-
791 }
-
792
-
801 bool operator>=(_In_opt_ handle_type h) const
-
802 {
-
803 return !operator<(h);
-
804 }
-
805
-
814 bool operator>(_In_opt_ handle_type h) const
-
815 {
-
816 return h < m_h;
-
817 }
-
818
-
827 bool operator!=(_In_opt_ handle_type h) const
-
828 {
-
829 return !operator==(h);
-
830 }
-
831
-
840 bool operator==(_In_opt_ handle_type h) const
-
841 {
-
842 return m_h == h;
-
843 }
-
844
-
852 void attach(_In_opt_ handle_type h) noexcept
-
853 {
-
854 if (m_h != invalid)
-
855 free_internal();
-
856 m_h = h;
-
857 }
-
858
-
864 handle_type detach()
-
865 {
-
866 handle_type h = m_h;
-
867 m_h = invalid;
-
868 return h;
-
869 }
-
870
-
874 void free()
-
875 {
-
876 if (m_h != invalid) {
-
877 free_internal();
-
878 m_h = invalid;
-
879 }
-
880 }
-
881
-
882 protected:
-
886 virtual void free_internal() noexcept = 0;
-
887
-
888 protected:
-
889 handle_type m_h;
-
890 };
-
891
-
892 template <class T, const T INVAL>
-
893 const T handle<T, INVAL>::invalid = INVAL;
-
894
-
898 template <class T, T INVAL>
-
899 class dplhandle : public handle<T, INVAL>
-
900 {
-
901 public:
-
905 dplhandle() noexcept
-
906 {
-
907 }
-
908
-
914 dplhandle(_In_opt_ handle_type h) noexcept : handle<handle_type, INVAL>(h)
-
915 {
-
916 }
-
917
-
923 dplhandle<handle_type, INVAL>(_In_ const dplhandle<handle_type, INVAL> &h) : handle<handle_type, INVAL>(duplicate_internal(h.m_h))
-
924 {
-
925 }
-
926
-
932 dplhandle<handle_type, INVAL>(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept : handle<handle_type, INVAL>(std::move(h))
-
933 {
-
934 }
-
935
-
941 dplhandle<handle_type, INVAL>& operator=(_In_opt_ handle_type h) noexcept
-
942 {
-
943 handle<handle_type, INVAL>::operator=(h);
-
944 return *this;
-
945 }
-
946
-
952 dplhandle<handle_type, INVAL>& operator=(_In_ const dplhandle<handle_type, INVAL> &h) noexcept
-
953 {
-
954 if (this != std::addressof(h)) {
-
955 if (h.m_h != invalid) {
-
956 handle_type h_new = duplicate_internal(h.m_h);
-
957
-
958 if (m_h != invalid)
-
959 free_internal();
-
960
-
961 m_h = h_new;
-
962 } else {
-
963 if (m_h != invalid)
-
964 free_internal();
-
965
-
966 m_h = invalid;
-
967 }
-
968 }
-
969 return *this;
-
970 }
-
971
-
977 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
-
978 dplhandle<handle_type, INVAL>& operator=(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept
-
979 {
-
980 handle<handle_type, INVAL>::operator=(std::move(h));
-
981 return *this;
-
982 }
-
983
-
989 handle_type duplicate() const
-
990 {
-
991 return m_h != invalid ? duplicate_internal(m_h) : invalid;
-
992 }
-
993
-
999 void attach_duplicated(_In_opt_ handle_type h)
-
1000 {
-
1001 if (m_h != invalid)
-
1002 free_internal();
-
1003
-
1004 m_h = h != invalid ? duplicate_internal(h) : invalid;
-
1005 }
-
1006
-
1007 protected:
-
1016 virtual handle_type duplicate_internal(_In_ handle_type h) const = 0;
-
1017 };
-
1018
-
1020
-
1023
-
1027 template <typename _Tn>
-
1028 class num_runtime_error : public std::runtime_error
-
1029 {
-
1030 public:
-
1031 typedef _Tn error_type;
-
1032
-
1033 public:
-
1040 num_runtime_error(_In_ error_type num, _In_ const std::string& msg) :
-
1041 m_num(num),
-
1042 runtime_error(msg)
-
1043 {
-
1044 }
-
1045
-
1052 num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) :
-
1053 m_num(num),
-
1054 runtime_error(msg)
-
1055 {
+
+
734 void operator()(_Frees_ptr_opt_ _Ty *_Ptr) const noexcept
+
735 {
+
736 LocalFree(_Ptr);
+
737 }
+
+
738
+
744 template<class _Other>
+
+
745 void operator()(_Other *) const
+
746 {
+
747 LocalFree(_Ptr);
+
748 }
+
+
749 };
+
+
750
+
+
754 struct GlobalFree_delete
+
755 {
+
759 GlobalFree_delete() {}
+
760
+
+
766 void operator()(HGLOBAL _Ptr) const
+
767 {
+
768 GlobalFree(_Ptr);
+
769 }
+
+
770 };
+
+
771
+
775 template <class T>
+
+
776 class globalmem_accessor
+
777 {
+
778 WINSTD_NONCOPYABLE(globalmem_accessor)
+
779 WINSTD_NONMOVABLE(globalmem_accessor)
+
780
+
781 public:
+
+
787 globalmem_accessor(_In_ HGLOBAL hMem) : m_h(hMem)
+
788 {
+
789 m_data = reinterpret_cast<T*>(GlobalLock(hMem));
+
790 if (!m_data)
+
791 throw win_runtime_error("GlobalLock failed");
+
792 }
+
+
793
+
+ +
800 {
+
801 GlobalUnlock(m_h);
+
802 }
+
+
803
+
+
807 T* data() const noexcept
+
808 {
+
809 return m_data;
+
810 }
+
+
811
+
812 protected:
+
813 HGLOBAL m_h;
+
814 T* m_data;
+
815 };
+
+
816
+
820 template<class _Ty, class _Dx>
+
+
821 class ref_unique_ptr
+
822 {
+
823 public:
+
+
829 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) :
+
830 m_own(owner),
+
831 m_ptr(owner.release())
+
832 {}
+
+
833
+
+ +
840 m_own(other.m_own),
+
841 m_ptr(other.m_ptr)
+
842 {
+
843 other.m_ptr = nullptr;
+
844 }
+
+
845
+
+ +
850 {
+
851 if (m_ptr != nullptr)
+
852 m_own.reset(m_ptr);
+
853 }
+
+
854
+
+
860 operator typename _Ty**()
+
861 {
+
862 return &m_ptr;
+
863 }
+
+
864
+
+
870 operator typename _Ty*&()
+
871 {
+
872 return m_ptr;
+
873 }
+
+
874
+
875 protected:
+
876 std::unique_ptr<_Ty, _Dx> &m_own;
+
877 _Ty *m_ptr;
+
878 };
+
+
879
+
887 template<class _Ty, class _Dx>
+
+
888 ref_unique_ptr<_Ty, _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty, _Dx> &owner) noexcept
+
889 {
+
890 return ref_unique_ptr<_Ty, _Dx>(owner);
+
891 }
+
+
892
+
897 template<class _Ty, class _Dx>
+
+
898 class ref_unique_ptr<_Ty[], _Dx>
+
899 {
+
900 public:
+
+
906 ref_unique_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx> &owner) noexcept :
+
907 m_own(owner),
+
908 m_ptr(owner.release())
+
909 {}
+
+
910
+
+
916 ref_unique_ptr(_Inout_ ref_unique_ptr<_Ty[], _Dx> &&other) :
+
917 m_own(other.m_own),
+
918 m_ptr(other.m_ptr)
+
919 {
+
920 other.m_ptr = nullptr;
+
921 }
+
+
922
+
+ +
927 {
+
928 if (m_ptr != nullptr)
+
929 m_own.reset(m_ptr);
+
930 }
+
+
931
+
+
937 operator typename _Ty**() noexcept
+
938 {
+
939 return &m_ptr;
+
940 }
+
+
941
+
+
947 operator typename _Ty*&()
+
948 {
+
949 return m_ptr;
+
950 }
+
+
951
+
952 protected:
+
953 std::unique_ptr<_Ty[], _Dx> &m_own;
+
954 _Ty *m_ptr;
+
955 };
+
+
956
+
965 template<class _Ty, class _Dx>
+
+
966 ref_unique_ptr<_Ty[], _Dx> get_ptr(_Inout_ std::unique_ptr<_Ty[], _Dx>& owner) noexcept
+
967 {
+
968 return ref_unique_ptr<_Ty[], _Dx>(owner);
+
969 }
+
+
970
+
972
+
975
+
981 template <class T, const T INVAL>
+
+
982 class handle
+
983 {
+
984 public:
+
988 typedef T handle_type;
+
989
+
993 static const T invalid;
+
994
+
+
998 handle() noexcept : m_h(invalid)
+
999 {
+
1000 }
+
+
1001
+
+
1007 handle(_In_opt_ handle_type h) noexcept : m_h(h)
+
1008 {
+
1009 }
+
+
1010
+
+ +
1017 {
+
1018 // Transfer handle.
+
1019 m_h = h.m_h;
+
1020 h.m_h = invalid;
+
1021 }
+
+
1022
+
1023 private:
+
1024 // This class is noncopyable.
+
1025 handle(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
1026 handle<handle_type, INVAL>& operator=(_In_ const handle<handle_type, INVAL> &h) noexcept {};
+
1027
+
1028 public:
+
+ +
1035 {
+
1036 attach(h);
+
1037 return *this;
+
1038 }
+
+
1039
+
1045 #pragma warning(suppress: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+
+ +
1047 {
+
1048 if (this != std::addressof(h)) {
+
1049 // Transfer handle.
+
1050 if (m_h != invalid)
+
1051 free_internal();
+
1052 m_h = h.m_h;
+
1053 h.m_h = invalid;
+
1054 }
+
1055 return *this;
1056 }
+
1057
-
1061 error_type number() const
-
1062 {
-
1063 return m_num;
-
1064 }
-
1065
-
1066 protected:
-
1067 error_type m_num;
-
1068 };
-
1069
-
1073 class win_runtime_error : public num_runtime_error<DWORD>
-
1074 {
-
1075 public:
-
1082 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg)
-
1083 {
-
1084 }
-
1085
-
1092 win_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<DWORD>(num, msg)
-
1093 {
-
1094 }
-
1095
-
1101 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg)
-
1102 {
-
1103 }
-
1104
-
1110 win_runtime_error(_In_opt_z_ const char *msg = nullptr) : num_runtime_error<DWORD>(GetLastError(), msg)
-
1111 {
-
1112 }
-
1113
-
1119 tstring msg(_In_opt_ DWORD dwLanguageId = 0) const
-
1120 {
-
1121 tstring str;
-
1122 if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, m_num, dwLanguageId, str, NULL)) {
-
1123 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
-
1124 str.erase(str.find_last_not_of(_T(" \t\n\r\f\v")) + 1);
-
1125 } else
-
1126 sprintf(str, m_num >= 0x10000 ? _T("Error 0x%X") : _T("Error %u"), m_num);
-
1127 return str;
-
1128 }
-
1129 };
-
1130
-
1132
-
1135
-
1139 template<class _Elem, class _Traits, class _Ax>
-
1140 class basic_string_printf : public std::basic_string<_Elem, _Traits, _Ax>
-
1141 {
-
1142 public:
-
1145
-
1151 basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format, ...)
-
1152 {
-
1153 va_list arg;
-
1154 va_start(arg, format);
-
1155 vsprintf(*this, format, arg);
-
1156 va_end(arg);
-
1157 }
-
1158
-
1160
-
1163
-
1170 basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID, ...)
-
1171 {
-
1172 _Myt format;
-
1173 ATLENSURE(format.LoadString(hInstance, nFormatID));
-
1174
-
1175 va_list arg;
-
1176 va_start(arg, nFormatID);
-
1177 vsprintf(*this, format, arg);
-
1178 va_end(arg);
-
1179 }
-
1180
-
1188 basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID, ...)
-
1189 {
-
1190 _Myt format;
-
1191 ATLENSURE(format.LoadString(hInstance, nFormatID, wLanguageID));
+
+
1063 operator handle_type() const
+
1064 {
+
1065 return m_h;
+
1066 }
+
+
1067
+
+ +
1074 {
+
1075 assert(m_h != invalid);
+
1076 return *m_h;
+
1077 }
+
+
1078
+
+ +
1084 {
+
1085 assert(m_h == invalid);
+
1086 return &m_h;
+
1087 }
+
+
1088
+
+ +
1095 {
+
1096 assert(m_h != invalid);
+
1097 return m_h;
+
1098 }
+
+
1099
+
+
1110 bool operator!() const
+
1111 {
+
1112 return m_h == invalid;
+
1113 }
+
+
1114
+
+
1123 bool operator<(_In_opt_ handle_type h) const
+
1124 {
+
1125 return m_h < h;
+
1126 }
+
+
1127
+
+
1136 bool operator<=(_In_opt_ handle_type h) const
+
1137 {
+
1138 return !operator>(h);
+
1139 }
+
+
1140
+
+
1149 bool operator>=(_In_opt_ handle_type h) const
+
1150 {
+
1151 return !operator<(h);
+
1152 }
+
+
1153
+
+
1162 bool operator>(_In_opt_ handle_type h) const
+
1163 {
+
1164 return h < m_h;
+
1165 }
+
+
1166
+
+
1175 bool operator!=(_In_opt_ handle_type h) const
+
1176 {
+
1177 return !operator==(h);
+
1178 }
+
+
1179
+
+
1188 bool operator==(_In_opt_ handle_type h) const
+
1189 {
+
1190 return m_h == h;
+
1191 }
+
1192
-
1193 va_list arg;
-
1194 va_start(arg, nFormatID);
-
1195 vsprintf(*this, format, arg);
-
1196 va_end(arg);
-
1197 }
-
1198
-
1200 };
-
1201
-
1205 typedef basic_string_printf<char, std::char_traits<char>, std::allocator<char> > string_printf;
+
+
1200 void attach(_In_opt_ handle_type h) noexcept
+
1201 {
+
1202 if (m_h != invalid)
+
1203 free_internal();
+
1204 m_h = h;
+
1205 }
+
1206
-
1210 typedef basic_string_printf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_printf;
-
1211
-
1215#ifdef _UNICODE
-
1216 typedef wstring_printf tstring_printf;
-
1217#else
-
1218 typedef string_printf tstring_printf;
-
1219#endif
-
1220
-
1224 template<class _Elem, class _Traits, class _Ax>
-
1225 class basic_string_msg : public std::basic_string<_Elem, _Traits, _Ax>
-
1226 {
-
1227 public:
-
1230
-
1236 basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format, ...)
-
1237 {
-
1238 va_list arg;
-
1239 va_start(arg, format);
-
1240 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
-
1241 va_end(arg);
-
1242 }
-
1243
-
1245
-
1248
-
1255 basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID, ...)
-
1256 {
-
1257 _Myt format(GetManager());
-
1258 ATLENSURE(format.LoadString(hInstance, nFormatID));
-
1259
-
1260 va_list arg;
-
1261 va_start(arg, nFormatID);
-
1262 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
-
1263 va_end(arg);
+
+ +
1213 {
+
1214 handle_type h = m_h;
+
1215 m_h = invalid;
+
1216 return h;
+
1217 }
+
+
1218
+
+
1222 void free()
+
1223 {
+
1224 if (m_h != invalid) {
+
1225 free_internal();
+
1226 m_h = invalid;
+
1227 }
+
1228 }
+
+
1229
+
1230 protected:
+
1234 virtual void free_internal() noexcept = 0;
+
1235
+
1236 protected:
+
1237 handle_type m_h;
+
1238 };
+
+
1239
+
1240 template <class T, const T INVAL>
+
1241 const T handle<T, INVAL>::invalid = INVAL;
+
1242
+
1246 template <class T, T INVAL>
+
+
1247 class dplhandle : public handle<T, INVAL>
+
1248 {
+
1249 public:
+
+
1253 dplhandle() noexcept
+
1254 {
+
1255 }
+
+
1256
+
+ +
1263 {
1264 }
+
1265
-
1273 basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID, ...)
-
1274 {
-
1275 _Myt format(GetManager());
-
1276 ATLENSURE(format.LoadString(hInstance, nFormatID, wLanguageID));
-
1277
-
1278 va_list arg;
-
1279 va_start(arg, nFormatID);
-
1280 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
-
1281 va_end(arg);
+
1271 dplhandle<handle_type, INVAL>(_In_ const dplhandle<handle_type, INVAL> &h) : handle<handle_type, INVAL>(duplicate_internal(h.m_h))
+
1272 {
+
1273 }
+
1274
+
1280 dplhandle<handle_type, INVAL>(_Inout_ dplhandle<handle_type, INVAL> &&h) noexcept : handle<handle_type, INVAL>(std::move(h))
+
1281 {
1282 }
1283
-
1285
-
1291 basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)
-
1292 {
-
1293 FormatMessage(dwFlags & ~FORMAT_MESSAGE_ARGUMENT_ARRAY, lpSource, dwMessageId, dwLanguageId, *this, Arguments);
-
1294 }
-
1295
-
1301 basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)
-
1302 {
-
1303 FormatMessage(dwFlags | FORMAT_MESSAGE_ARGUMENT_ARRAY, lpSource, dwMessageId, dwLanguageId, *this, (va_list*)Arguments);
-
1304 }
+
+ +
1290 {
+ +
1292 return *this;
+
1293 }
+
+
1294
+
+ +
1301 {
+
1302 if (this != std::addressof(h)) {
+
1303 if (h.m_h != invalid) {
+
1304 handle_type h_new = duplicate_internal(h.m_h);
1305
-
1311 basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)
-
1312 {
-
1313 FormatMessage(dwFlags & ~FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_STRING, pszFormat, 0, 0, *this, Arguments);
-
1314 }
-
1315
-
1321 basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)
-
1322 {
-
1323 FormatMessage(dwFlags | FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_STRING, pszFormat, 0, 0, *this, (va_list*)Arguments);
-
1324 }
-
1325 };
-
1326
- +
1306 if (m_h != invalid)
+
1307 free_internal();
+
1308
+
1309 m_h = h_new;
+
1310 } else {
+
1311 if (m_h != invalid)
+
1312 free_internal();
+
1313
+
1314 m_h = invalid;
+
1315 }
+
1316 }
+
1317 return *this;
+
1318 }
+
+
1319
+
1325 #pragma warning(disable: 26432) // Move constructor is also present, but not detected by code analysis somehow.
+
+ +
1327 {
+ +
1329 return *this;
+
1330 }
+
1331
-
1335 typedef basic_string_msg<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_msg;
-
1336
-
1340#ifdef _UNICODE
-
1341 typedef wstring_msg tstring_msg;
-
1342#else
-
1343 typedef string_msg tstring_msg;
-
1344#endif
-
1345
-
1349 template<class _Elem, class _Traits, class _Ax>
-
1350 class basic_string_guid : public std::basic_string<_Elem, _Traits, _Ax>
-
1351 {
-
1352 public:
-
1355
-
1362 basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)
-
1363 {
-
1364 sprintf<_Elem, _Traits, _Ax>(*this, format,
-
1365 guid.Data1,
-
1366 guid.Data2,
-
1367 guid.Data3,
-
1368 guid.Data4[0], guid.Data4[1],
-
1369 guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
-
1370 }
+
+ +
1338 {
+
1339 return m_h != invalid ? duplicate_internal(m_h) : invalid;
+
1340 }
+
+
1341
+
+ +
1348 {
+
1349 if (m_h != invalid)
+
1350 free_internal();
+
1351
+
1352 m_h = h != invalid ? duplicate_internal(h) : invalid;
+
1353 }
+
+
1354
+
1355 protected:
+
1364 virtual handle_type duplicate_internal(_In_ handle_type h) const = 0;
+
1365 };
+
+
1366
+
1368
1371
-
1373 };
-
1374
-
1378 class string_guid : public basic_string_guid<char, std::char_traits<char>, std::allocator<char> >
-
1379 {
-
1380 public:
-
1383
-
1389 string_guid(_In_ const GUID &guid) :
-
1390 basic_string_guid<char, std::char_traits<char>, std::allocator<char> >(guid, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
+
1375 template <typename _Tn>
+
+
1376 class num_runtime_error : public std::runtime_error
+
1377 {
+
1378 public:
+
1379 typedef _Tn error_type;
+
1380
+
1381 public:
+
+
1388 num_runtime_error(_In_ error_type num, _In_ const std::string& msg) :
+
1389 m_num(num),
+
1390 runtime_error(msg)
1391 {
1392 }
+
1393
-
1395 };
-
1396
-
1400 class wstring_guid : public basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
-
1401 {
-
1402 public:
+
+
1400 num_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) :
+
1401 m_num(num),
+
1402 runtime_error(msg)
+
1403 {
+
1404 }
+
1405
-
1411 wstring_guid(_In_ const GUID &guid) :
-
1412 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}")
-
1413 {
-
1414 }
-
1415
-
1417 };
-
1418
-
1422#ifdef _UNICODE
-
1423 typedef wstring_guid tstring_guid;
-
1424#else
-
1425 typedef string_guid tstring_guid;
-
1426#endif
-
1427
-
1429
-
1432
-
1433 // winstd::sanitizing_allocator::destroy() member generates _Ptr parameter not used warning for primitive datatypes _Ty.
-
1434 #pragma warning(push)
-
1435 #pragma warning(disable: 4100)
-
1436
-
1444 template<class _Ty>
-
1445 class sanitizing_allocator : public std::allocator<_Ty>
-
1446 {
-
1447 public:
-
1448 typedef std::allocator<_Ty> _Mybase;
+
+ +
1410 {
+
1411 return m_num;
+
1412 }
+
+
1413
+
1414 protected:
+
1415 error_type m_num;
+
1416 };
+
+
1417
+
+
1421 class win_runtime_error : public num_runtime_error<DWORD>
+
1422 {
+
1423 public:
+
+
1429 win_runtime_error(_In_ error_type num) : num_runtime_error<DWORD>(num, message(num))
+
1430 {}
+
+
1431
+
+
1438 win_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<DWORD>(num, msg + ": " + message(num))
+
1439 {}
+
+
1440
+
+
1447 win_runtime_error(_In_ error_type num, _In_z_ const char *msg) : num_runtime_error<DWORD>(num, std::string(msg) + ": " + message(num))
+
1448 {}
+
1449
-
1453 template<class _Other>
-
1454 struct rebind
-
1455 {
-
1456 typedef sanitizing_allocator<_Other> other;
-
1457 };
-
1458
-
1462 sanitizing_allocator() noexcept : _Mybase()
-
1463 {
-
1464 }
-
1465
-
1469 sanitizing_allocator(_In_ const sanitizing_allocator<_Ty> &_Othr) : _Mybase(_Othr)
-
1470 {
-
1471 }
-
1472
-
1476 template<class _Other>
-
1477 sanitizing_allocator(_In_ const sanitizing_allocator<_Other> &_Othr) noexcept : _Mybase(_Othr)
-
1478 {
-
1479 }
-
1480
-
1484 void deallocate(_In_ pointer _Ptr, _In_ size_type _Size)
-
1485 {
-
1486 // Sanitize then free.
-
1487 SecureZeroMemory(_Ptr, _Size);
-
1488 _Mybase::deallocate(_Ptr, _Size);
-
1489 }
-
1490 };
-
1491
-
1492 #pragma warning(pop)
+
+
1453 win_runtime_error() : num_runtime_error<DWORD>(GetLastError(), message(GetLastError()))
+
1454 {}
+
+
1455
+
+
1461 win_runtime_error(_In_ const std::string& msg) : num_runtime_error<DWORD>(GetLastError(), msg + ": " + message(GetLastError()))
+
1462 {}
+
+
1463
+
+
1469 win_runtime_error(_In_z_ const char *msg) : num_runtime_error<DWORD>(GetLastError(), std::string(msg) + ": " + message(GetLastError()))
+
1470 {}
+
+
1471
+
1472 protected:
+
+
1478 static std::string message(_In_ error_type num, _In_opt_ DWORD dwLanguageId = 0)
+
1479 {
+
1480 error_type runtime_num = GetLastError();
+
1481 std::wstring wstr;
+
1482 if (FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, num, dwLanguageId, wstr, NULL)) {
+
1483 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
+
1484 wstr.erase(wstr.find_last_not_of(L" \t\n\r\f\v") + 1);
+
1485 } else
+
1486 sprintf(wstr, num >= 0x10000 ? L"Error 0x%X" : L"Error %u", num);
+
1487 std::string str;
+
1488 WideCharToMultiByte(CP_UTF8, 0, wstr, str, NULL, NULL);
+
1489 SetLastError(runtime_num);
+
1490 return str;
+
1491 }
+
+
1492 };
+
1493
-
1501 typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > sanitizing_string;
-
1502
-
1510 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > sanitizing_wstring;
-
1511
-
1515#ifdef _UNICODE
-
1516 typedef sanitizing_wstring sanitizing_tstring;
-
1517#else
-
1518 typedef sanitizing_string sanitizing_tstring;
-
1519#endif
-
1520
-
1524 template<size_t N>
-
1525 class sanitizing_blob
-
1526 {
-
1527 public:
-
1531 sanitizing_blob()
-
1532 {
-
1533 ZeroMemory(m_data, N);
-
1534 }
-
1535
-
1539 ~sanitizing_blob()
-
1540 {
-
1541 SecureZeroMemory(m_data, N);
+
1495
+
1498
+
1502 template<class _Elem, class _Traits, class _Ax>
+
+
1503 class basic_string_printf : public std::basic_string<_Elem, _Traits, _Ax>
+
1504 {
+
1505 public:
+
1508
+
+
1514 basic_string_printf(_In_z_ _Printf_format_string_ const _Elem *format, ...)
+
1515 {
+
1516 va_list arg;
+
1517 va_start(arg, format);
+
1518 vsprintf(*this, format, arg);
+
1519 va_end(arg);
+
1520 }
+
+
1521
+
1523
+
1526
+
+
1533 basic_string_printf(_In_ HINSTANCE hInstance, _In_ UINT nFormatID, ...)
+
1534 {
+
1535 _Myt format;
+
1536 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1537
+
1538 va_list arg;
+
1539 va_start(arg, nFormatID);
+
1540 vsprintf(*this, format, arg);
+
1541 va_end(arg);
1542 }
+
1543
-
1544 public:
-
1545 unsigned char m_data[N];
-
1546 };
-
1547
-
1549}
-
Base template class to support converting GUID to string.
Definition Common.h:1351
-
basic_string_guid(const GUID &guid, const _Elem *format)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1362
-
Base template class to support string formatting using FormatMessage() style templates.
Definition Common.h:1226
-
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1301
-
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1311
-
basic_string_msg(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1273
-
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1291
-
basic_string_msg(const _Elem *format,...)
Initializes a new string and formats its contents using FormatMessage() style template.
Definition Common.h:1236
-
basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1255
-
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1321
-
Base template class to support string formatting using printf() style templates.
Definition Common.h:1141
-
basic_string_printf(const _Elem *format,...)
Initializes a new string and formats its contents using printf() style template.
Definition Common.h:1151
-
basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1188
-
basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1170
-
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:900
+
+
1551 basic_string_printf(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID, ...)
+
1552 {
+
1553 _Myt format;
+
1554 ATLENSURE(format.LoadString(hInstance, nFormatID, wLanguageID));
+
1555
+
1556 va_list arg;
+
1557 va_start(arg, nFormatID);
+
1558 vsprintf(*this, format, arg);
+
1559 va_end(arg);
+
1560 }
+
+
1561
+
1563 };
+
+
1564
+
1568 typedef basic_string_printf<char, std::char_traits<char>, std::allocator<char> > string_printf;
+
1569
+
1573 typedef basic_string_printf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_printf;
+
1574
+
1578#ifdef _UNICODE
+
1579 typedef wstring_printf tstring_printf;
+
1580#else
+
1581 typedef string_printf tstring_printf;
+
1582#endif
+
1583
+
1587 template<class _Elem, class _Traits, class _Ax>
+
+
1588 class basic_string_msg : public std::basic_string<_Elem, _Traits, _Ax>
+
1589 {
+
1590 public:
+
1593
+
+
1599 basic_string_msg(_In_z_ _FormatMessage_format_string_ const _Elem *format, ...)
+
1600 {
+
1601 va_list arg;
+
1602 va_start(arg, format);
+
1603 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
+
1604 va_end(arg);
+
1605 }
+
+
1606
+
1608
+
1611
+
+
1618 basic_string_msg(_In_ HINSTANCE hInstance, _In_ UINT nFormatID, ...)
+
1619 {
+
1620 _Myt format(GetManager());
+
1621 ATLENSURE(format.LoadString(hInstance, nFormatID));
+
1622
+
1623 va_list arg;
+
1624 va_start(arg, nFormatID);
+
1625 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
+
1626 va_end(arg);
+
1627 }
+
+
1628
+
+
1636 basic_string_msg(_In_ HINSTANCE hInstance, _In_ WORD wLanguageID, _In_ UINT nFormatID, ...)
+
1637 {
+
1638 _Myt format(GetManager());
+
1639 ATLENSURE(format.LoadString(hInstance, nFormatID, wLanguageID));
+
1640
+
1641 va_list arg;
+
1642 va_start(arg, nFormatID);
+
1643 FormatMessage(FORMAT_MESSAGE_FROM_STRING, format, 0, 0, *this, &arg);
+
1644 va_end(arg);
+
1645 }
+
+
1646
+
1648
+
+
1654 basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ va_list *Arguments)
+
1655 {
+
1656 FormatMessage(dwFlags & ~FORMAT_MESSAGE_ARGUMENT_ARRAY, lpSource, dwMessageId, dwLanguageId, *this, Arguments);
+
1657 }
+
+
1658
+
+
1664 basic_string_msg(_In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _In_opt_ DWORD_PTR *Arguments)
+
1665 {
+
1666 FormatMessage(dwFlags | FORMAT_MESSAGE_ARGUMENT_ARRAY, lpSource, dwMessageId, dwLanguageId, *this, (va_list*)Arguments);
+
1667 }
+
+
1668
+
+
1674 basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ va_list *Arguments)
+
1675 {
+
1676 FormatMessage(dwFlags & ~FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_STRING, pszFormat, 0, 0, *this, Arguments);
+
1677 }
+
+
1678
+
+
1684 basic_string_msg(_In_ DWORD dwFlags, _In_z_ LPCTSTR pszFormat, _In_opt_ DWORD_PTR *Arguments)
+
1685 {
+
1686 FormatMessage(dwFlags | FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_STRING, pszFormat, 0, 0, *this, (va_list*)Arguments);
+
1687 }
+
+
1688 };
+
+
1689
+
1693 typedef basic_string_msg<char, std::char_traits<char>, std::allocator<char> > string_msg;
+
1694
+
1698 typedef basic_string_msg<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring_msg;
+
1699
+
1703#ifdef _UNICODE
+
1704 typedef wstring_msg tstring_msg;
+
1705#else
+
1706 typedef string_msg tstring_msg;
+
1707#endif
+
1708
+
1712 template<class _Elem, class _Traits, class _Ax>
+
+
1713 class basic_string_guid : public std::basic_string<_Elem, _Traits, _Ax>
+
1714 {
+
1715 public:
+
1718
+
+
1725 basic_string_guid(_In_ const GUID &guid, _In_z_ _Printf_format_string_ const _Elem *format)
+
1726 {
+
1727 sprintf<_Elem, _Traits, _Ax>(*this, format,
+
1728 guid.Data1,
+
1729 guid.Data2,
+
1730 guid.Data3,
+
1731 guid.Data4[0], guid.Data4[1],
+
1732 guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
+
1733 }
+
+
1734
+
1736 };
+
+
1737
+
+
1741 class string_guid : public basic_string_guid<char, std::char_traits<char>, std::allocator<char> >
+
1742 {
+
1743 public:
+
1746
+
+
1752 string_guid(_In_ const GUID &guid) :
+
1753 basic_string_guid<char, std::char_traits<char>, std::allocator<char> >(guid, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}")
+
1754 {
+
1755 }
+
+
1756
+
1758 };
+
+
1759
+
+
1763 class wstring_guid : public basic_string_guid<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
+
1764 {
+
1765 public:
+
1768
+
+
1774 wstring_guid(_In_ const GUID &guid) :
+
1775 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}")
+
1776 {
+
1777 }
+
+
1778
+
1780 };
+
+
1781
+
1785#ifdef _UNICODE
+
1786 typedef wstring_guid tstring_guid;
+
1787#else
+
1788 typedef string_guid tstring_guid;
+
1789#endif
+
1790
+
1792
+
1795
+
1796 // winstd::sanitizing_allocator::destroy() member generates _Ptr parameter not used warning for primitive datatypes _Ty.
+
1797 #pragma warning(push)
+
1798 #pragma warning(disable: 4100)
+
1799
+
1807 template<class _Ty>
+
+
1808 class sanitizing_allocator : public std::allocator<_Ty>
+
1809 {
+
1810 public:
+
1811 typedef std::allocator<_Ty> _Mybase;
+
1812
+
1816 template<class _Other>
+
+
1817 struct rebind
+
1818 {
+ +
1820 };
+
+
1821
+
+ +
1826 {
+
1827 }
+
+
1828
+
+ +
1833 {
+
1834 }
+
+
1835
+
1839 template<class _Other>
+
+
1840 sanitizing_allocator(_In_ const sanitizing_allocator<_Other> &_Othr) noexcept : _Mybase(_Othr)
+
1841 {
+
1842 }
+
+
1843
+
+
1847 void deallocate(_In_ pointer _Ptr, _In_ size_type _Size)
+
1848 {
+
1849 // Sanitize then free.
+
1850 SecureZeroMemory(_Ptr, _Size);
+
1851 _Mybase::deallocate(_Ptr, _Size);
+
1852 }
+
+
1853 };
+
+
1854
+
1855 #pragma warning(pop)
+
1856
+
1864 typedef std::basic_string<char, std::char_traits<char>, sanitizing_allocator<char> > sanitizing_string;
+
1865
+
1873 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, sanitizing_allocator<wchar_t> > sanitizing_wstring;
+
1874
+
1878#ifdef _UNICODE
+
1879 typedef sanitizing_wstring sanitizing_tstring;
+
1880#else
+
1881 typedef sanitizing_string sanitizing_tstring;
+
1882#endif
+
1883
+
1887 template<size_t N>
+
+
1888 class sanitizing_blob
+
1889 {
+
1890 public:
+
+ +
1895 {
+
1896 ZeroMemory(m_data, N);
+
1897 }
+
+
1898
+
+ +
1903 {
+
1904 SecureZeroMemory(m_data, N);
+
1905 }
+
+
1906
+
1907 public:
+
1908 unsigned char m_data[N];
+
1909 };
+
+
1910
+
1912}
+
winstd::basic_string_guid
Base template class to support converting GUID to string.
Definition Common.h:1714
+
winstd::basic_string_guid::basic_string_guid
basic_string_guid(const GUID &guid, const _Elem *format)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1725
+
winstd::basic_string_msg
Base template class to support string formatting using FormatMessage() style templates.
Definition Common.h:1589
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1664
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1674
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1636
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1654
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(const _Elem *format,...)
Initializes a new string and formats its contents using FormatMessage() style template.
Definition Common.h:1599
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using FormatMessage() style template in resources.
Definition Common.h:1618
+
winstd::basic_string_msg::basic_string_msg
basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)
Initializes a new string and formats its contents using FormatMessage() style.
Definition Common.h:1684
+
winstd::basic_string_printf
Base template class to support string formatting using printf() style templates.
Definition Common.h:1504
+
winstd::basic_string_printf::basic_string_printf
basic_string_printf(const _Elem *format,...)
Initializes a new string and formats its contents using printf() style template.
Definition Common.h:1514
+
winstd::basic_string_printf::basic_string_printf
basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1551
+
winstd::basic_string_printf::basic_string_printf
basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)
Initializes a new string and formats its contents using printf() style template in resources.
Definition Common.h:1533
+
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1248
winstd::dplhandle::duplicate_internal
virtual handle_type duplicate_internal(handle_type h) const =0
Abstract member function that must be implemented by child classes to do the actual object handle dup...
-
winstd::dplhandle::operator=
dplhandle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:941
-
winstd::dplhandle::duplicate
handle_type duplicate() const
Duplicates and returns a new object handle.
Definition Common.h:989
-
winstd::dplhandle::operator=
dplhandle< handle_type, INVAL > & operator=(dplhandle< handle_type, INVAL > &&h) noexcept
Moves the object.
Definition Common.h:978
-
winstd::dplhandle::attach_duplicated
void attach_duplicated(handle_type h)
Duplicates an object handle and sets a new object handle.
Definition Common.h:999
-
winstd::dplhandle::dplhandle
dplhandle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:914
-
winstd::dplhandle::operator=
dplhandle< handle_type, INVAL > & operator=(const dplhandle< handle_type, INVAL > &h) noexcept
Duplicates the object.
Definition Common.h:952
-
winstd::dplhandle::dplhandle
dplhandle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:905
-
winstd::globalmem_accessor
Context scope automatic GlobalAlloc (un)access.
Definition Common.h:429
-
winstd::globalmem_accessor::m_h
HGLOBAL m_h
memory handle
Definition Common.h:465
-
winstd::globalmem_accessor::~globalmem_accessor
virtual ~globalmem_accessor()
Decrements the lock count associated with a memory object.
Definition Common.h:451
-
winstd::globalmem_accessor::m_data
T * m_data
memory pointer
Definition Common.h:466
-
winstd::globalmem_accessor::data
T * data() const noexcept
Return data pointer.
Definition Common.h:459
-
winstd::globalmem_accessor::globalmem_accessor
globalmem_accessor(HGLOBAL hMem)
Locks a global memory object and returns a pointer to the first byte of the object's memory block.
Definition Common.h:439
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle::operator*
handle_type *& operator*() const
Returns the object handle value when the object handle is a pointer to a value (class,...
Definition Common.h:725
+
winstd::dplhandle::operator=
dplhandle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1289
+
winstd::dplhandle::duplicate
handle_type duplicate() const
Duplicates and returns a new object handle.
Definition Common.h:1337
+
winstd::dplhandle::operator=
dplhandle< handle_type, INVAL > & operator=(dplhandle< handle_type, INVAL > &&h) noexcept
Moves the object.
Definition Common.h:1326
+
winstd::dplhandle::attach_duplicated
void attach_duplicated(handle_type h)
Duplicates an object handle and sets a new object handle.
Definition Common.h:1347
+
winstd::dplhandle::dplhandle
dplhandle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1262
+
winstd::dplhandle::operator=
dplhandle< handle_type, INVAL > & operator=(const dplhandle< handle_type, INVAL > &h) noexcept
Duplicates the object.
Definition Common.h:1300
+
winstd::dplhandle::dplhandle
dplhandle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:1253
+
winstd::globalmem_accessor
Context scope automatic GlobalAlloc (un)access.
Definition Common.h:777
+
winstd::globalmem_accessor::m_h
HGLOBAL m_h
memory handle
Definition Common.h:813
+
winstd::globalmem_accessor::~globalmem_accessor
virtual ~globalmem_accessor()
Decrements the lock count associated with a memory object.
Definition Common.h:799
+
winstd::globalmem_accessor::m_data
T * m_data
memory pointer
Definition Common.h:814
+
winstd::globalmem_accessor::data
T * data() const noexcept
Return data pointer.
Definition Common.h:807
+
winstd::globalmem_accessor::globalmem_accessor
globalmem_accessor(HGLOBAL hMem)
Locks a global memory object and returns a pointer to the first byte of the object's memory block.
Definition Common.h:787
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle::operator*
handle_type *& operator*() const
Returns the object handle value when the object handle is a pointer to a value (class,...
Definition Common.h:1073
winstd::handle::free_internal
virtual void free_internal() noexcept=0
Abstract member function that must be implemented by child classes to do the actual object destructio...
-
winstd::handle::handle
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:650
-
winstd::handle::operator>=
bool operator>=(handle_type h) const
Is handle greater than or equal to?
Definition Common.h:801
-
winstd::handle::operator->
handle_type operator->() const
Provides object handle member access when the object handle is a pointer to a class or struct.
Definition Common.h:746
-
winstd::handle::operator&
handle_type * operator&()
Returns the object handle reference.
Definition Common.h:735
-
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle::handle
handle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:659
-
winstd::handle::operator<
bool operator<(handle_type h) const
Is handle less than?
Definition Common.h:775
-
winstd::handle::operator=
handle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:686
-
winstd::handle::operator!
bool operator!() const
Tests if the object handle is invalid.
Definition Common.h:762
-
winstd::handle::operator=
handle< handle_type, INVAL > & operator=(handle< handle_type, INVAL > &&h) noexcept
Move assignment.
Definition Common.h:698
-
winstd::handle::operator!=
bool operator!=(handle_type h) const
Is handle not equal to?
Definition Common.h:827
-
winstd::handle::free
void free()
Destroys the object.
Definition Common.h:874
-
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:852
-
winstd::handle::operator==
bool operator==(handle_type h) const
Is handle equal to?
Definition Common.h:840
-
winstd::handle::handle
handle(handle< handle_type, INVAL > &&h) noexcept
Move constructor.
Definition Common.h:668
-
winstd::handle::detach
handle_type detach()
Dismisses the object handle from this class.
Definition Common.h:864
-
winstd::handle::operator>
bool operator>(handle_type h) const
Is handle greater than?
Definition Common.h:814
-
winstd::handle::operator<=
bool operator<=(handle_type h) const
Is handle less than or equal to?
Definition Common.h:788
-
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1029
-
winstd::num_runtime_error::num_runtime_error
num_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Common.h:1052
-
winstd::num_runtime_error::num_runtime_error
num_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1040
-
winstd::num_runtime_error::number
error_type number() const
Returns the Windows error number.
Definition Common.h:1061
-
winstd::num_runtime_error::error_type
_Tn error_type
Error number type.
Definition Common.h:1031
-
winstd::num_runtime_error::m_num
error_type m_num
Numeric error code.
Definition Common.h:1067
-
winstd::ref_unique_ptr< _Ty[], _Dx >::m_own
std::unique_ptr< _Ty[], _Dx > & m_own
Original owner of the pointer.
Definition Common.h:605
-
winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr
ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition Common.h:568
-
winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr
virtual ~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:578
-
winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr
ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition Common.h:558
-
winstd::ref_unique_ptr< _Ty[], _Dx >::m_ptr
_Ty * m_ptr
Pointer.
Definition Common.h:606
-
winstd::ref_unique_ptr
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:474
-
winstd::ref_unique_ptr::m_own
std::unique_ptr< _Ty, _Dx > & m_own
Original owner of the pointer.
Definition Common.h:528
-
winstd::ref_unique_ptr::m_ptr
_Ty * m_ptr
Pointer.
Definition Common.h:529
-
winstd::ref_unique_ptr::ref_unique_ptr
ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)
Moves object.
Definition Common.h:491
-
winstd::ref_unique_ptr::~ref_unique_ptr
~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:501
-
winstd::ref_unique_ptr::ref_unique_ptr
ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)
Takes ownership of the pointer.
Definition Common.h:481
-
winstd::sanitizing_allocator
An allocator template that sanitizes each memory block before it is destroyed or reallocated.
Definition Common.h:1446
-
winstd::sanitizing_allocator::sanitizing_allocator
sanitizing_allocator(const sanitizing_allocator< _Ty > &_Othr)
Construct by copying.
Definition Common.h:1469
-
winstd::sanitizing_allocator::deallocate
void deallocate(pointer _Ptr, size_type _Size)
Deallocate object at _Ptr sanitizing its content first.
Definition Common.h:1484
-
winstd::sanitizing_allocator::sanitizing_allocator
sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept
Construct from a related allocator.
Definition Common.h:1477
-
winstd::sanitizing_allocator::_Mybase
std::allocator< _Ty > _Mybase
Base type.
Definition Common.h:1448
-
winstd::sanitizing_allocator::sanitizing_allocator
sanitizing_allocator() noexcept
Construct default allocator.
Definition Common.h:1462
-
winstd::sanitizing_blob
Sanitizing BLOB.
Definition Common.h:1526
-
winstd::sanitizing_blob::sanitizing_blob
sanitizing_blob()
Constructs uninitialized BLOB.
Definition Common.h:1531
-
winstd::sanitizing_blob::~sanitizing_blob
~sanitizing_blob()
Sanitizes BLOB.
Definition Common.h:1539
-
winstd::string_guid
Single-byte character implementation of a class to support converting GUID to string.
Definition Common.h:1379
-
winstd::string_guid::string_guid
string_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1389
-
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1074
-
winstd::win_runtime_error::msg
tstring msg(DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition Common.h:1119
-
winstd::win_runtime_error::win_runtime_error
win_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Common.h:1092
-
winstd::win_runtime_error::win_runtime_error
win_runtime_error(const std::string &msg)
Constructs an exception using GetLastError()
Definition Common.h:1101
-
winstd::win_runtime_error::win_runtime_error
win_runtime_error(const char *msg=nullptr)
Constructs an exception using GetLastError()
Definition Common.h:1110
-
winstd::win_runtime_error::win_runtime_error
win_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1082
-
winstd::wstring_guid
Wide character implementation of a class to support converting GUID to string.
Definition Common.h:1401
-
winstd::wstring_guid::wstring_guid
wstring_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1411
+
winstd::handle::handle
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:998
+
winstd::handle::operator>=
bool operator>=(handle_type h) const
Is handle greater than or equal to?
Definition Common.h:1149
+
winstd::handle::operator->
handle_type operator->() const
Provides object handle member access when the object handle is a pointer to a class or struct.
Definition Common.h:1094
+
winstd::handle::operator&
handle_type * operator&()
Returns the object handle reference.
Definition Common.h:1083
+
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle::handle
handle(handle_type h) noexcept
Initializes a new class instance with an already available object handle.
Definition Common.h:1007
+
winstd::handle::operator<
bool operator<(handle_type h) const
Is handle less than?
Definition Common.h:1123
+
winstd::handle::operator=
handle< handle_type, INVAL > & operator=(handle_type h) noexcept
Attaches already available object handle.
Definition Common.h:1034
+
winstd::handle::operator!
bool operator!() const
Tests if the object handle is invalid.
Definition Common.h:1110
+
winstd::handle::operator=
handle< handle_type, INVAL > & operator=(handle< handle_type, INVAL > &&h) noexcept
Move assignment.
Definition Common.h:1046
+
winstd::handle::operator!=
bool operator!=(handle_type h) const
Is handle not equal to?
Definition Common.h:1175
+
winstd::handle::free
void free()
Destroys the object.
Definition Common.h:1222
+
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1200
+
winstd::handle::operator==
bool operator==(handle_type h) const
Is handle equal to?
Definition Common.h:1188
+
winstd::handle::handle
handle(handle< handle_type, INVAL > &&h) noexcept
Move constructor.
Definition Common.h:1016
+
winstd::handle::detach
handle_type detach()
Dismisses the object handle from this class.
Definition Common.h:1212
+
winstd::handle::operator>
bool operator>(handle_type h) const
Is handle greater than?
Definition Common.h:1162
+
winstd::handle::operator<=
bool operator<=(handle_type h) const
Is handle less than or equal to?
Definition Common.h:1136
+
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1377
+
winstd::num_runtime_error::num_runtime_error
num_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Common.h:1400
+
winstd::num_runtime_error::num_runtime_error
num_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1388
+
winstd::num_runtime_error::number
error_type number() const
Returns the error number.
Definition Common.h:1409
+
winstd::num_runtime_error::error_type
_Tn error_type
Error number type.
Definition Common.h:1379
+
winstd::num_runtime_error::m_num
error_type m_num
Numeric error code.
Definition Common.h:1415
+
winstd::ref_unique_ptr< _Ty[], _Dx >::m_own
std::unique_ptr< _Ty[], _Dx > & m_own
Original owner of the pointer.
Definition Common.h:953
+
winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr
ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)
Moves object.
Definition Common.h:916
+
winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr
virtual ~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:926
+
winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr
ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept
Takes ownership of the pointer.
Definition Common.h:906
+
winstd::ref_unique_ptr< _Ty[], _Dx >::m_ptr
_Ty * m_ptr
Pointer.
Definition Common.h:954
+
winstd::ref_unique_ptr
Helper class for returning pointers to std::unique_ptr.
Definition Common.h:822
+
winstd::ref_unique_ptr::m_own
std::unique_ptr< _Ty, _Dx > & m_own
Original owner of the pointer.
Definition Common.h:876
+
winstd::ref_unique_ptr::m_ptr
_Ty * m_ptr
Pointer.
Definition Common.h:877
+
winstd::ref_unique_ptr::ref_unique_ptr
ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)
Moves object.
Definition Common.h:839
+
winstd::ref_unique_ptr::~ref_unique_ptr
~ref_unique_ptr()
Returns ownership of the pointer.
Definition Common.h:849
+
winstd::ref_unique_ptr::ref_unique_ptr
ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)
Takes ownership of the pointer.
Definition Common.h:829
+
winstd::sanitizing_allocator
An allocator template that sanitizes each memory block before it is destroyed or reallocated.
Definition Common.h:1809
+
winstd::sanitizing_allocator::sanitizing_allocator
sanitizing_allocator(const sanitizing_allocator< _Ty > &_Othr)
Construct by copying.
Definition Common.h:1832
+
winstd::sanitizing_allocator::deallocate
void deallocate(pointer _Ptr, size_type _Size)
Deallocate object at _Ptr sanitizing its content first.
Definition Common.h:1847
+
winstd::sanitizing_allocator::sanitizing_allocator
sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept
Construct from a related allocator.
Definition Common.h:1840
+
winstd::sanitizing_allocator::_Mybase
std::allocator< _Ty > _Mybase
Base type.
Definition Common.h:1811
+
winstd::sanitizing_allocator::sanitizing_allocator
sanitizing_allocator() noexcept
Construct default allocator.
Definition Common.h:1825
+
winstd::sanitizing_blob
Sanitizing BLOB.
Definition Common.h:1889
+
winstd::sanitizing_blob::sanitizing_blob
sanitizing_blob()
Constructs uninitialized BLOB.
Definition Common.h:1894
+
winstd::sanitizing_blob::~sanitizing_blob
~sanitizing_blob()
Sanitizes BLOB.
Definition Common.h:1902
+
winstd::string_guid
Single-byte character implementation of a class to support converting GUID to string.
Definition Common.h:1742
+
winstd::string_guid::string_guid
string_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1752
+
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1422
+
winstd::win_runtime_error::win_runtime_error
win_runtime_error(const char *msg)
Constructs an exception using GetLastError()
Definition Common.h:1469
+
winstd::win_runtime_error::win_runtime_error
win_runtime_error(error_type num, const char *msg)
Constructs an exception.
Definition Common.h:1447
+
winstd::win_runtime_error::win_runtime_error
win_runtime_error(error_type num)
Constructs an exception.
Definition Common.h:1429
+
winstd::win_runtime_error::win_runtime_error
win_runtime_error()
Constructs an exception using GetLastError()
Definition Common.h:1453
+
winstd::win_runtime_error::message
static std::string message(error_type num, DWORD dwLanguageId=0)
Returns a user-readable Windows error message.
Definition Common.h:1478
+
winstd::win_runtime_error::win_runtime_error
win_runtime_error(const std::string &msg)
Constructs an exception using GetLastError()
Definition Common.h:1461
+
winstd::win_runtime_error::win_runtime_error
win_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Common.h:1438
+
winstd::wstring_guid
Wide character implementation of a class to support converting GUID to string.
Definition Common.h:1764
+
winstd::wstring_guid::wstring_guid
wstring_guid(const GUID &guid)
Initializes a new string and formats its contents to string representation of given GUID.
Definition Common.h:1774
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_STACK_BUFFER_BYTES
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:93
-
winstd::tstring
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition Common.h:338
-
winstd::get_ptr
ref_unique_ptr< _Ty, _Dx > get_ptr(std::unique_ptr< _Ty, _Dx > &owner) noexcept
Helper function template for returning pointers to std::unique_ptr.
Definition Common.h:540
+
winstd::tstring
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition Common.h:686
+
winstd::get_ptr
ref_unique_ptr< _Ty, _Dx > get_ptr(std::unique_ptr< _Ty, _Dx > &owner) noexcept
Helper function template for returning pointers to std::unique_ptr.
Definition Common.h:888
WINSTD_NONMOVABLE
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:74
-
winstd::sanitizing_wstring
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:1510
-
winstd::sanitizing_tstring
sanitizing_string sanitizing_tstring
Multi-byte / Wide-character sanitizing string (according to _UNICODE)
Definition Common.h:1518
-
winstd::sanitizing_string
std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > sanitizing_string
A sanitizing variant of std::string.
Definition Common.h:1501
-
winstd::wstring_printf
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:1210
-
winstd::tstring_guid
string_guid tstring_guid
Multi-byte / Wide-character string GUID (according to _UNICODE)
Definition Common.h:1425
-
winstd::wstring_msg
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:1335
+
winstd::sanitizing_wstring
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:1873
+
winstd::sanitizing_tstring
sanitizing_string sanitizing_tstring
Multi-byte / Wide-character sanitizing string (according to _UNICODE)
Definition Common.h:1881
+
winstd::sanitizing_string
std::basic_string< char, std::char_traits< char >, sanitizing_allocator< char > > sanitizing_string
A sanitizing variant of std::string.
Definition Common.h:1864
+
SecureWideCharToMultiByte
static int SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition Common.h:381
+
winstd::wstring_printf
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:1573
+
MultiByteToWideChar
static int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition Common.h:473
+
winstd::tstring_guid
string_guid tstring_guid
Multi-byte / Wide-character string GUID (according to _UNICODE)
Definition Common.h:1788
+
winstd::wstring_msg
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:1698
vsprintf
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:251
-
FormatMessage
static DWORD FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:299
-
winstd::string_printf
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:1205
+
FormatMessage
static DWORD FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:647
+
winstd::string_printf
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:1568
vsnprintf
static int vsnprintf(char *str, size_t capacity, const char *format, va_list arg)
Formats string using printf().
Definition Common.h:220
-
winstd::tstring_printf
string_printf tstring_printf
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1218
+
SecureMultiByteToWideChar
static int SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition Common.h:555
+
winstd::tstring_printf
string_printf tstring_printf
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1581
+
WideCharToMultiByte
static int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition Common.h:299
sprintf
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:284
-
winstd::string_msg
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:1330
-
winstd::tstring_msg
string_msg tstring_msg
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1343
-
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:645
-
winstd::GlobalFree_delete
Deleter for unique_ptr using GlobalFree.
Definition Common.h:407
-
winstd::GlobalFree_delete::GlobalFree_delete
GlobalFree_delete()
Default construct.
Definition Common.h:411
-
winstd::GlobalFree_delete::operator()
void operator()(HGLOBAL _Ptr) const
Delete a pointer.
Definition Common.h:418
-
winstd::LocalFree_delete< _Ty[]>::LocalFree_delete
LocalFree_delete() noexcept
Default construct.
Definition Common.h:381
-
winstd::LocalFree_delete< _Ty[]>::_Myt
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:376
-
winstd::LocalFree_delete< _Ty[]>::operator()
void operator()(_Other *) const
Delete a pointer of another type.
Definition Common.h:397
-
winstd::LocalFree_delete< _Ty[]>::operator()
void operator()(_Ty *_Ptr) const noexcept
Delete a pointer.
Definition Common.h:386
-
winstd::LocalFree_delete
Deleter for unique_ptr using LocalFree.
Definition Common.h:346
-
winstd::LocalFree_delete::_Myt
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:347
-
winstd::LocalFree_delete::LocalFree_delete
LocalFree_delete(const LocalFree_delete< _Ty2 > &)
Construct from another LocalFree_delete.
Definition Common.h:357
-
winstd::LocalFree_delete::operator()
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Common.h:364
-
winstd::LocalFree_delete::LocalFree_delete
LocalFree_delete()
Default construct.
Definition Common.h:352
-
winstd::sanitizing_allocator::rebind
Convert this type to sanitizing_allocator<_Other>
Definition Common.h:1455
-
winstd::sanitizing_allocator::rebind::other
sanitizing_allocator< _Other > other
Other type.
Definition Common.h:1456
+
winstd::string_msg
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:1693
+
winstd::tstring_msg
string_msg tstring_msg
Multi-byte / Wide-character formatted string (according to _UNICODE)
Definition Common.h:1706
+
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:993
+
winstd::GlobalFree_delete
Deleter for unique_ptr using GlobalFree.
Definition Common.h:755
+
winstd::GlobalFree_delete::GlobalFree_delete
GlobalFree_delete()
Default construct.
Definition Common.h:759
+
winstd::GlobalFree_delete::operator()
void operator()(HGLOBAL _Ptr) const
Delete a pointer.
Definition Common.h:766
+
winstd::LocalFree_delete< _Ty[]>::LocalFree_delete
LocalFree_delete() noexcept
Default construct.
Definition Common.h:729
+
winstd::LocalFree_delete< _Ty[]>::_Myt
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:724
+
winstd::LocalFree_delete< _Ty[]>::operator()
void operator()(_Other *) const
Delete a pointer of another type.
Definition Common.h:745
+
winstd::LocalFree_delete< _Ty[]>::operator()
void operator()(_Ty *_Ptr) const noexcept
Delete a pointer.
Definition Common.h:734
+
winstd::LocalFree_delete
Deleter for unique_ptr using LocalFree.
Definition Common.h:694
+
winstd::LocalFree_delete::_Myt
LocalFree_delete< _Ty > _Myt
This type.
Definition Common.h:695
+
winstd::LocalFree_delete::LocalFree_delete
LocalFree_delete(const LocalFree_delete< _Ty2 > &)
Construct from another LocalFree_delete.
Definition Common.h:705
+
winstd::LocalFree_delete::operator()
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Common.h:712
+
winstd::LocalFree_delete::LocalFree_delete
LocalFree_delete()
Default construct.
Definition Common.h:700
+
winstd::sanitizing_allocator::rebind
Convert this type to sanitizing_allocator<_Other>
Definition Common.h:1818
+
winstd::sanitizing_allocator::rebind::other
sanitizing_allocator< _Other > other
Other type.
Definition Common.h:1819
diff --git a/_cred_8h_source.html b/_cred_8h_source.html index fb408753..68dcf7ba 100644 --- a/_cred_8h_source.html +++ b/_cred_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/Cred.h Source File @@ -30,7 +30,7 @@ - + +
14
17
19template<class _Traits, class _Ax>
+
20static 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)
21{
22 char buf[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
@@ -113,8 +119,10 @@ $(function() {
38
39 return FALSE;
40}
+
41
47template<class _Traits, class _Ax>
+
48static 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)
49{
50 wchar_t buf[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -136,8 +144,10 @@ $(function() {
66
67 return FALSE;
68}
+
69
71template<class _Traits, class _Ax>
+
72static BOOL CredUnprotectA(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string<char, _Traits, _Ax> &sCredentials)
73{
74 char buf[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
@@ -159,8 +169,10 @@ $(function() {
90
91 return FALSE;
92}
+
93
99template<class _Traits, class _Ax>
+
100static BOOL CredUnprotectW(_In_ BOOL fAsSelf, _In_count_(cchCredentials) LPCWSTR pszProtectedCredentials, _In_ DWORD cchCredentials, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sCredentials)
101{
102 wchar_t buf[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -182,11 +194,13 @@ $(function() {
118
119 return FALSE;
120}
+
121
123
124namespace winstd
125{
128
+
132 template <class _Ty> struct CredFree_delete
133 {
134 typedef CredFree_delete<_Ty> _Myt;
@@ -195,29 +209,38 @@ $(function() {
140
144 template <class _Ty2> CredFree_delete(const CredFree_delete<_Ty2>&) {}
145
+
151 void operator()(_Ty *_Ptr) const
152 {
153 CredFree(_Ptr);
154 }
+
155 };
+
156
+
160 template <class _Ty> struct CredFree_delete<_Ty[]>
161 {
162 typedef CredFree_delete<_Ty> _Myt;
163
167 CredFree_delete() {}
168
+
174 void operator()(_Ty *_Ptr) const noexcept
175 {
176 CredFree(_Ptr);
177 }
+
178
184 template<class _Other>
+
185 void operator()(_Other *) const
186 {
187 CredFree(_Ptr);
188 }
+
189 };
+
190
192}
193
@@ -225,6 +248,7 @@ $(function() {
197#pragma warning(push)
198#pragma warning(disable: 4505) // Don't warn on unused code
199
+
201static BOOL CredEnumerateA(_In_z_ LPCSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Inout_ std::unique_ptr<PCREDENTIALA[], winstd::CredFree_delete<PCREDENTIALA[]> > &cCredentials) noexcept
202{
203 PCREDENTIALA *pCredentials;
@@ -235,7 +259,9 @@ $(function() {
208
209 return FALSE;
210}
+
211
+
217static BOOL CredEnumerateW(_In_z_ LPCWSTR Filter, _Reserved_ DWORD Flags, _Out_ DWORD *Count, _Inout_ std::unique_ptr<PCREDENTIALW[], winstd::CredFree_delete<PCREDENTIALW[]> > &cCredentials) noexcept
218{
219 PCREDENTIALW *pCredentials;
@@ -246,6 +272,7 @@ $(function() {
224
225 return FALSE;
226}
+
227
228#pragma warning(pop)
229
@@ -268,7 +295,7 @@ $(function() { diff --git a/_crypt_8h_source.html b/_crypt_8h_source.html index bec87ee6..e5ada6d1 100644 --- a/_crypt_8h_source.html +++ b/_crypt_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/Crypt.h Source File @@ -30,7 +30,7 @@ - + +
17
20
22template<class _Traits, class _Ax>
+
23static DWORD CertGetNameStringA(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwType, _In_ DWORD dwFlags, _In_opt_ void *pvTypePara, _Out_ std::basic_string<char, _Traits, _Ax> &sNameString)
24{
25 // Query the final string length first.
@@ -106,8 +112,10 @@ $(function() {
31 sNameString.assign(szBuffer.get(), dwSize - 1);
32 return dwSize;
33}
+
34
40template<class _Traits, class _Ax>
+
41static 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)
42{
43 // Query the final string length first.
@@ -119,8 +127,10 @@ $(function() {
49 sNameString.assign(szBuffer.get(), dwSize - 1);
50 return dwSize;
51}
+
52
58template<class _Ty, class _Ax>
+
59static _Success_(return != 0) BOOL WINAPI CertGetCertificateContextProperty(_In_ PCCERT_CONTEXT pCertContext, _In_ DWORD dwPropId, _Out_ std::vector<_Ty, _Ax> &aData)
60{
61 BYTE buf[WINSTD_STACK_BUFFER_BYTES];
@@ -139,8 +149,10 @@ $(function() {
74
75 return FALSE;
76}
+
77
83template<class _Ty, class _Ax>
+
84static _Success_(return != 0) BOOL CryptGetHashParam(_In_ HCRYPTHASH hHash, _In_ DWORD dwParam, _Out_ std::vector<_Ty, _Ax> &aData, _In_ DWORD dwFlags)
85{
86 BYTE buf[WINSTD_STACK_BUFFER_BYTES];
@@ -159,15 +171,19 @@ $(function() {
99
100 return FALSE;
101}
+
102
108template<class T>
+
109static _Success_(return != 0) BOOL CryptGetHashParam(_In_ HCRYPTHASH hHash, _In_ DWORD dwParam, _Out_ T &data, _In_ DWORD dwFlags)
110{
111 DWORD dwSize = sizeof(T);
112 return CryptGetHashParam(hHash, dwParam, (BYTE*)&data, &dwSize, dwFlags);
113}
+
114
120template<class _Ty, class _Ax>
+
121static _Success_(return != 0) BOOL CryptGetKeyParam(_In_ HCRYPTKEY hKey, _In_ DWORD dwParam, _Out_ std::vector<_Ty, _Ax> &aData, _In_ DWORD dwFlags)
122{
123 BYTE buf[WINSTD_STACK_BUFFER_BYTES];
@@ -186,15 +202,19 @@ $(function() {
136
137 return FALSE;
138}
+
139
145template<class T>
+
146static BOOL CryptGetKeyParam(_In_ HCRYPTKEY hKey, _In_ DWORD dwParam, _Out_ T &data, _In_ DWORD dwFlags)
147{
148 DWORD dwSize = sizeof(T);
149 return CryptGetKeyParam(hKey, dwParam, (BYTE*)&data, &dwSize, dwFlags);
150}
+
151
157template<class _Ty, class _Ax>
+
158static _Success_(return != 0) BOOL CryptExportKey(_In_ HCRYPTKEY hKey, _In_ HCRYPTKEY hExpKey, _In_ DWORD dwBlobType, _In_ DWORD dwFlags, _Out_ std::vector<_Ty, _Ax> &aData)
159{
160 DWORD dwKeyBLOBSize = 0;
@@ -207,8 +227,10 @@ $(function() {
167
168 return FALSE;
169}
+
170
176template<class _Ty, class _Ax>
+
177static _Success_(return != 0) BOOL CryptEncrypt(_In_ HCRYPTKEY hKey, _In_opt_ HCRYPTHASH hHash, _In_ BOOL Final, _In_ DWORD dwFlags, _Inout_ std::vector<_Ty, _Ax> &aData)
178{
179 DWORD
@@ -252,8 +274,10 @@ $(function() {
217
218 return FALSE;
219}
+
220
226template<class _Ty, class _Ax>
+
227static _Success_(return != 0) BOOL CryptDecrypt(_In_ HCRYPTKEY hKey, _In_opt_ HCRYPTHASH hHash, _In_ BOOL Final, _In_ DWORD dwFlags, _Inout_ std::vector<_Ty, _Ax> &aData)
228{
229 DWORD dwDataLen = (DWORD)(aData.size() * sizeof(_Ty));
@@ -266,22 +290,27 @@ $(function() {
236
237 return FALSE;
238}
+
239
241
242namespace winstd
243{
246
+
252 class cert_context : public dplhandle<PCCERT_CONTEXT, NULL>
253 {
254 WINSTD_DPLHANDLE_IMPL(cert_context, NULL)
255
256 public:
+
263 {
264 if (m_h != invalid)
266 }
+
267
+
276 bool operator==(_In_ const handle_type &other) const noexcept
277 {
278 // TODO: [Crypto] Make constant time.
@@ -289,126 +318,168 @@ $(function() {
280 m_h == other ||
281 m_h->cbCertEncoded == other->cbCertEncoded && memcmp(m_h->pbCertEncoded, other->pbCertEncoded, m_h->cbCertEncoded) == 0;
282 }
+
283
+
292 bool operator!=(_In_ const handle_type &other) const noexcept
293 {
294 return !operator==(other);
295 }
+
296
+
305 bool operator<(_In_ const handle_type &other) const noexcept
306 {
307 // TODO: [Crypto] Make constant time.
308 const int r = memcmp(m_h->pbCertEncoded, other->pbCertEncoded, std::min<DWORD>(m_h->cbCertEncoded, other->cbCertEncoded));
309 return r < 0 || r == 0 && m_h->cbCertEncoded < other->cbCertEncoded;
310 }
+
311
+
320 bool operator>(_In_ const handle_type &other) const noexcept
321 {
322 // TODO: [Crypto] Make constant time.
323 const int r = memcmp(m_h->pbCertEncoded, other->pbCertEncoded, std::min<DWORD>(m_h->cbCertEncoded, other->cbCertEncoded));
324 return r > 0 || r == 0 && m_h->cbCertEncoded > other->cbCertEncoded;
325 }
+
326
+
335 bool operator<=(_In_ const handle_type &other) const noexcept
336 {
337 return !operator>(other);
338 }
+
339
+
348 bool operator>=(_In_ const handle_type &other) const noexcept
349 {
350 return !operator<(other);
351 }
+
352
353 protected:
+
359 void free_internal() noexcept override
360 {
361 CertFreeCertificateContext(m_h);
362 }
+
363
+
374 {
375 // As per doc, this only increases refcounter. Should never fail.
376 return CertDuplicateCertificateContext(h);
377 }
+
378 };
+
379
+
385 class cert_chain_context : public dplhandle<PCCERT_CHAIN_CONTEXT, NULL>
386 {
387 WINSTD_DPLHANDLE_IMPL(cert_chain_context, NULL)
388
389 public:
+
396 {
397 if (m_h != invalid)
399 }
+
400
401 protected:
+
407 void free_internal() noexcept override
408 {
409 CertFreeCertificateChain(m_h);
410 }
+
411
+
422 {
423 // As per doc, this only increases refcounter. Should never fail.
424 return CertDuplicateCertificateChain(h);
425 }
+
426 };
+
427
+
434 class cert_store : public handle<HCERTSTORE, NULL>
435 {
436 WINSTD_HANDLE_IMPL(cert_store, NULL)
437
438 public:
+
444 virtual ~cert_store()
445 {
446 if (m_h != invalid)
448 }
+
449
450 protected:
+
456 void free_internal() noexcept override
457 {
458 CertCloseStore(m_h, 0);
459 }
+
460 };
+
461
+
467 class crypt_prov : public handle<HCRYPTPROV, NULL>
468 {
469 WINSTD_HANDLE_IMPL(crypt_prov, NULL)
470
471 public:
+
477 virtual ~crypt_prov()
478 {
479 if (m_h != invalid)
481 }
+
482
483 protected:
+
489 void free_internal() noexcept override
490 {
491 CryptReleaseContext(m_h, 0);
492 }
+
493 };
+
494
+
500 class crypt_hash : public dplhandle<HCRYPTHASH, NULL>
501 {
502 WINSTD_DPLHANDLE_IMPL(crypt_hash, NULL)
503
504 public:
+
510 virtual ~crypt_hash()
511 {
512 if (m_h != invalid)
514 }
+
515
516 protected:
+
522 void free_internal() noexcept override
523 {
524 CryptDestroyHash(m_h);
525 }
+
526
+
537 {
538 handle_type hNew;
@@ -416,19 +487,25 @@ $(function() {
540 return hNew;
541 throw win_runtime_error("CryptDuplicateHash failed");
542 }
+
543 };
+
544
+
553 class crypt_key : public dplhandle<HCRYPTKEY, NULL>
554 {
555 WINSTD_DPLHANDLE_IMPL(crypt_key, NULL)
556
557 public:
+
563 virtual ~crypt_key()
564 {
565 if (m_h != invalid)
567 }
+
568
+
577 bool create_exp1(_In_ HCRYPTPROV hProv, _In_ DWORD dwKeySpec)
578 {
579 if (dwKeySpec != AT_KEYEXCHANGE && dwKeySpec != AT_SIGNATURE) {
@@ -490,13 +567,17 @@ $(function() {
635
636 return false;
637 }
+
638
639 protected:
+
645 void free_internal() noexcept override
646 {
647 CryptDestroyKey(m_h);
648 }
+
649
+
660 {
661 handle_type hNew;
@@ -504,25 +585,33 @@ $(function() {
663 return hNew;
664 throw win_runtime_error("CryptDuplicateKey failed");
665 }
+
666 };
+
667
671 #pragma warning(push)
672 #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.
+
673 class data_blob : public DATA_BLOB
674 {
675 public:
+
679 data_blob() noexcept
680 {
681 cbData = 0;
682 pbData = NULL;
683 }
+
684
+
688 data_blob(_In_count_(size) BYTE *data, _In_ DWORD size) noexcept
689 {
690 cbData = size;
691 pbData = data;
692 }
+
693
+
697 data_blob(_In_ const DATA_BLOB &other)
698 {
699 cbData = other.cbData;
@@ -533,7 +622,9 @@ $(function() {
704 } else
705 pbData = NULL;
706 }
+
707
+
711 data_blob(_Inout_ data_blob &&other) noexcept
712 {
713 cbData = other.cbData;
@@ -541,13 +632,17 @@ $(function() {
715 other.cbData = 0;
716 other.pbData = NULL;
717 }
+
718
+
722 virtual ~data_blob()
723 {
724 if (pbData != NULL)
725 LocalFree(pbData);
726 }
+
727
+
731 data_blob& operator=(_In_ const DATA_BLOB &other)
732 {
733 if (this != &other) {
@@ -564,7 +659,9 @@ $(function() {
744
745 return *this;
746 }
+
747
+
751 data_blob& operator=(_Inout_ data_blob &&other) noexcept
752 {
753 if (this != &other) {
@@ -578,22 +675,30 @@ $(function() {
761
762 return *this;
763 }
+
764
+
768 DWORD size() const noexcept
769 {
770 return cbData;
771 }
+
772
+
776 const BYTE* data() const noexcept
777 {
778 return pbData;
779 }
+
780
+
784 BYTE* data() noexcept
785 {
786 return pbData;
787 }
+
788 };
+
789 #pragma warning(pop)
790
792}
@@ -602,6 +707,7 @@ $(function() {
797#pragma warning(push)
798#pragma warning(disable: 4505) // Don't warn on unused code
799
+
805static BOOL CertGetCertificateChain(_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, _Inout_ winstd::cert_chain_context &ctx)
806{
807 PCCERT_CHAIN_CONTEXT pChainContext;
@@ -610,7 +716,9 @@ $(function() {
810 ctx.attach(pChainContext);
811 return bResult;
812}
+
813
+
815static BOOL CryptAcquireContextA(_Inout_ winstd::crypt_prov &prov, _In_opt_ LPCSTR szContainer, _In_opt_ LPCSTR szProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags)
816{
817 HCRYPTPROV h;
@@ -619,7 +727,9 @@ $(function() {
820 prov.attach(h);
821 return bResult;
822}
+
823
+
829static BOOL CryptAcquireContextW(_Inout_ winstd::crypt_prov &prov, _In_opt_ LPCWSTR szContainer, _In_opt_ LPCWSTR szProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags)
830{
831 HCRYPTPROV h;
@@ -628,7 +738,9 @@ $(function() {
834 prov.attach(h);
835 return bResult;
836}
+
837
+
843static BOOL CryptCreateHash(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ HCRYPTKEY hKey, _In_ DWORD dwFlags, _Inout_ winstd::crypt_hash &hash)
844{
845 HCRYPTHASH h;
@@ -637,7 +749,9 @@ $(function() {
848 hash.attach(h);
849 return bResult;
850}
+
851
+
857static BOOL CryptGenKey(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ DWORD dwFlags, _Inout_ winstd::crypt_key &key)
858{
859 HCRYPTKEY h;
@@ -646,7 +760,9 @@ $(function() {
862 key.attach(h);
863 return bResult;
864}
+
865
+
871static bool CryptImportKey(_In_ HCRYPTPROV hProv, __in_bcount(dwDataLen) LPCBYTE pbData, _In_ DWORD dwDataLen, _In_ HCRYPTKEY hPubKey, _In_ DWORD dwFlags, _Inout_ winstd::crypt_key &key)
872{
873 HCRYPTKEY h;
@@ -655,7 +771,9 @@ $(function() {
876 key.attach(h);
877 return bResult;
878}
+
879
+
885static bool CryptImportPublicKeyInfo(_In_ HCRYPTPROV hCryptProv, _In_ DWORD dwCertEncodingType, _In_ PCERT_PUBLIC_KEY_INFO pInfo, _Inout_ winstd::crypt_key &key)
886{
887 HCRYPTKEY h;
@@ -664,7 +782,9 @@ $(function() {
890 key.attach(h);
891 return bResult;
892}
+
893
+
899static bool CryptDeriveKey(_In_ HCRYPTPROV hProv, _In_ ALG_ID Algid, _In_ HCRYPTHASH hBaseData, _In_ DWORD dwFlags, _Inout_ winstd::crypt_key &key)
900{
901 HCRYPTKEY h;
@@ -673,6 +793,7 @@ $(function() {
904 key.attach(h);
905 return bResult;
906}
+
907
908#pragma warning(pop)
909
@@ -716,12 +837,12 @@ $(function() {
winstd::data_blob::data_blob
data_blob(BYTE *data, DWORD size) noexcept
Initializes a BLOB from existing data.
Definition Crypt.h:688
winstd::data_blob::size
DWORD size() const noexcept
Get BLOB size.
Definition Crypt.h:768
winstd::data_blob::operator=
data_blob & operator=(const DATA_BLOB &other)
Copy an existing BLOB.
Definition Crypt.h:731
-
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:900
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:852
-
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1074
+
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1248
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1200
+
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1422
CryptImportPublicKeyInfo
static bool CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, winstd::crypt_key &key)
Imports the public key.
Definition Crypt.h:885
CertGetCertificateContextProperty
static BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, std::vector< _Ty, _Ax > &aData)
Retrieves the information contained in an extended property of a certificate context.
Definition Crypt.h:59
CertGetCertificateChain
static BOOL CertGetCertificateChain(HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, winstd::cert_chain_context &ctx)
The CertGetCertificateChain function builds a certificate chain context starting from an end certific...
Definition Crypt.h:805
@@ -741,11 +862,11 @@ $(function() {
WINSTD_STACK_BUFFER_BYTES
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:93
WINSTD_DPLHANDLE_IMPL
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:175
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:993
diff --git a/_e_a_p_8h_source.html b/_e_a_p_8h_source.html index 1f7950d9..408465f2 100644 --- a/_e_a_p_8h_source.html +++ b/_e_a_p_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/EAP.h Source File @@ -30,7 +30,7 @@ - + +
24#pragma warning(disable: 4505) // Don't warn on unused code
25
28
+
39static bool operator==(_In_ const EAP_METHOD_TYPE &a, _In_ const EAP_METHOD_TYPE &b) noexcept
40{
41 return
@@ -110,11 +116,14 @@ $(function() {
44 a.eapType.dwVendorType == b.eapType.dwVendorType &&
45 a.dwAuthorId == a.dwAuthorId;
46}
+
47
+
58static bool operator!=(_In_ const EAP_METHOD_TYPE &a, _In_ const EAP_METHOD_TYPE &b) noexcept
59{
60 return !operator==(a, b);
61}
+
62
64
65#pragma warning(pop)
@@ -123,6 +132,7 @@ $(function() {
68{
71
77 #pragma warning(suppress: 4480)
+
78 enum class eap_type_t : unsigned char {
79 undefined = 0,
80 identity = 1,
@@ -147,69 +157,90 @@ $(function() {
99 noneap_start = 192,
100 noneap_end = 254,
101 };
+
102
+
106 struct EapHostPeerFreeMemory_delete
107 {
111 EapHostPeerFreeMemory_delete() noexcept {}
112
118 template <class _T>
+
119 void operator()(_T *_Ptr) const
120 {
121 EapHostPeerFreeMemory((BYTE*)_Ptr);
122 }
+
123 };
+
124
128 typedef std::unique_ptr<BYTE[], EapHostPeerFreeMemory_delete> eap_blob;
129
+
133 struct EapHostPeerFreeRuntimeMemory_delete
134 {
138 EapHostPeerFreeRuntimeMemory_delete() noexcept {}
139
143 template <class _T>
+
144 void operator()(_T *_Ptr) const
145 {
146 EapHostPeerFreeRuntimeMemory((BYTE*)_Ptr);
147 }
+
148 };
+
149
153 typedef std::unique_ptr<BYTE[], EapHostPeerFreeRuntimeMemory_delete> eap_blob_runtime;
154
+
158 struct EapHostPeerFreeErrorMemory_delete
159 {
163 EapHostPeerFreeErrorMemory_delete() noexcept {}
164
+
170 void operator()(EAP_ERROR *_Ptr) const noexcept
171 {
172 EapHostPeerFreeErrorMemory(_Ptr);
173 }
+
174 };
+
175
179 typedef std::unique_ptr<EAP_ERROR, EapHostPeerFreeErrorMemory_delete> eap_error;
180
+
184 struct EapHostPeerFreeEapError_delete
185 {
189 EapHostPeerFreeEapError_delete() noexcept {}
190
+
196 void operator()(EAP_ERROR *_Ptr) const noexcept
197 {
198 EapHostPeerFreeEapError(_Ptr);
199 }
+
200 };
+
201
205 typedef std::unique_ptr<EAP_ERROR, EapHostPeerFreeEapError_delete> eap_error_runtime;
206
210 #pragma warning(push)
211 #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.
+
212 class eap_attr : public EAP_ATTRIBUTE
213 {
214 public:
+
218 eap_attr() noexcept
219 {
220 eaType = eatReserved;
221 dwLength = 0;
222 pValue = NULL;
223 }
+
224
+
228 eap_attr(_In_ const EAP_ATTRIBUTE &a)
229 {
230 eaType = a.eaType;
@@ -220,7 +251,9 @@ $(function() {
235 } else
236 pValue = NULL;
237 }
+
238
+
242 eap_attr(_Inout_ eap_attr &&a) noexcept
243 {
244 eaType = a.eaType;
@@ -232,13 +265,17 @@ $(function() {
250 } else
251 pValue = NULL;
252 }
+
253
+
258 {
259 if (pValue)
260 delete [] pValue;
261 }
+
262
+
266 eap_attr& operator=(_In_ const EAP_ATTRIBUTE &a)
267 {
268 if (this != &a) {
@@ -255,7 +292,9 @@ $(function() {
279 }
280 return *this;
281 }
+
282
+
286 eap_attr& operator=(_Inout_ eap_attr &&a) noexcept
287 {
288 if (this != &a) {
@@ -272,7 +311,9 @@ $(function() {
299 }
300 return *this;
301 }
+
302
+
310 void create_ms_mppe_key(_In_ BYTE bVendorType, _In_count_(nKeySize) LPCBYTE pbKey, _In_ BYTE nKeySize)
311 {
312 const BYTE nPaddingLength = static_cast<BYTE>((16 - (1 + static_cast<DWORD>(nKeySize))) % 16);
@@ -309,14 +350,18 @@ $(function() {
343 dwLength = dwLengthNew;
344 pValue = p;
345 }
+
346 };
+
347 #pragma warning(pop)
348
352 static const EAP_ATTRIBUTE blank_eap_attr = {};
353
+
357 class eap_method_prop : public EAP_METHOD_PROPERTY
358 {
359 public:
+
366 eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ BOOL value) noexcept
367 {
368 eapMethodPropertyType = type;
@@ -324,7 +369,9 @@ $(function() {
370 eapMethodPropertyValue.empvBool.length = sizeof(BOOL);
371 eapMethodPropertyValue.empvBool.value = value;
372 }
+
373
+
380 eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_ DWORD value) noexcept
381 {
382 eapMethodPropertyType = type;
@@ -332,7 +379,9 @@ $(function() {
384 eapMethodPropertyValue.empvDword.length = sizeof(DWORD);
385 eapMethodPropertyValue.empvDword.value = value;
386 }
+
387
+
394 eap_method_prop(_In_ EAP_METHOD_PROPERTY_TYPE type, _In_z_ LPCWSTR value) noexcept
395 {
396 eapMethodPropertyType = type;
@@ -340,19 +389,25 @@ $(function() {
398 eapMethodPropertyValue.empvString.length = static_cast<DWORD>(sizeof(WCHAR)*(wcslen(value) + 1));
399 eapMethodPropertyValue.empvString.value = const_cast<BYTE*>(reinterpret_cast<const BYTE*>(value));
400 }
+
401 };
+
402
+
406 class eap_packet : public dplhandle<EapPacket*, NULL>
407 {
408 WINSTD_DPLHANDLE_IMPL(eap_packet, NULL)
409
410 public:
+
414 virtual ~eap_packet()
415 {
416 if (m_h != invalid)
418 }
+
419
+
433 bool create(_In_ EapCode code, _In_ BYTE id, _In_ WORD size) noexcept
434 {
435 assert(size >= 4); // EAP packets must contain at least Code, Id, and Length fields: 4B.
@@ -370,18 +425,24 @@ $(function() {
447 return false;
448 }
449 }
+
450
+
454 WORD size() const noexcept
455 {
456 return m_h != NULL ? ntohs(*(WORD*)m_h->Length) : 0;
457 }
+
458
459 protected:
+
463 void free_internal() noexcept override
464 {
465 HeapFree(GetProcessHeap(), 0, m_h);
466 }
+
467
+
472 {
473 const WORD n = ntohs(*reinterpret_cast<WORD*>(h->Length));
@@ -392,19 +453,25 @@ $(function() {
478 }
479 throw std::bad_alloc();
480 }
+
481 };
+
482
+
486 class eap_method_info_array : public EAP_METHOD_INFO_ARRAY
487 {
488 WINSTD_NONCOPYABLE(eap_method_info_array)
489
490 public:
+
495 {
496 dwNumberOfMethods = 0;
497 pEapMethods = NULL;
498 }
+
499
+
506 {
507 dwNumberOfMethods = other.dwNumberOfMethods;
@@ -412,13 +479,17 @@ $(function() {
509 other.dwNumberOfMethods = 0;
510 other.pEapMethods = NULL;
511 }
+
512
+
517 {
518 if (pEapMethods)
519 free_internal();
520 }
+
521
+
528 {
529 if (this != std::addressof(other)) {
@@ -431,6 +502,7 @@ $(function() {
536 }
537 return *this;
538 }
+
539
540 protected:
542
@@ -452,13 +524,16 @@ $(function() {
558 }
559
561 };
+
562
564
567
+
573 class eap_runtime_error : public win_runtime_error
574 {
575 public:
-
582 eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string& msg) :
+
+
582 eap_runtime_error(_In_ const EAP_ERROR &err, _In_ const std::string& msg) :
583 m_type (err.type ),
584 m_reason (err.dwReasonCode ),
585 m_root_cause_id (err.rootCauseGuid ),
@@ -466,11 +541,13 @@ $(function() {
587 m_repair_id (err.repairGuid ),
588 m_repair_desc (err.pRepairString ),
589 m_help_link_id (err.helpLinkGuid ),
-
590 win_runtime_error(err.dwWinError, msg.c_str())
+
590 win_runtime_error(err.dwWinError, msg.c_str())
591 {
592 }
+
593
-
600 eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg = nullptr) :
+
+
600 eap_runtime_error(_In_ const EAP_ERROR &err, _In_opt_z_ const char *msg = nullptr) :
601 m_type (err.type ),
602 m_reason (err.dwReasonCode ),
603 m_root_cause_id (err.rootCauseGuid ),
@@ -478,44 +555,59 @@ $(function() {
605 m_repair_id (err.repairGuid ),
606 m_repair_desc (err.pRepairString ),
607 m_help_link_id (err.helpLinkGuid ),
-
608 win_runtime_error(err.dwWinError, msg )
+
608 win_runtime_error(err.dwWinError, msg )
609 {
610 }
+
611
+
615 const EAP_METHOD_TYPE& type() const noexcept
616 {
617 return m_type;
618 }
+
619
+
623 DWORD reason() const noexcept
624 {
625 return m_reason;
626 }
+
627
+
631 const GUID& root_cause_id() const noexcept
632 {
633 return m_root_cause_id;
634 }
+
635
+
639 const wchar_t* root_cause() const noexcept
640 {
641 return m_root_cause_desc.c_str();
642 }
+
643
+
647 const GUID& repair_id() const noexcept
648 {
649 return m_repair_id;
650 }
+
651
+
655 const wchar_t* repair() const noexcept
656 {
657 return m_repair_desc.c_str();
658 }
+
659
+
663 const GUID& help_link_id() const noexcept
664 {
665 return m_help_link_id;
666 }
+
667
668 protected:
669 EAP_METHOD_TYPE m_type;
@@ -530,11 +622,12 @@ $(function() {
678
679 GUID m_help_link_id;
680 };
+
681
683}
684
685#pragma warning(pop)
-
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:900
+
winstd::dplhandle
Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1248
winstd::eap_attr
EAP_ATTRIBUTE wrapper class.
Definition EAP.h:213
winstd::eap_attr::eap_attr
eap_attr() noexcept
Initializes a new EAP attribute set to eatReserved.
Definition EAP.h:218
winstd::eap_attr::eap_attr
eap_attr(eap_attr &&a) noexcept
Moves an existing EAP attribute.
Definition EAP.h:242
@@ -575,11 +668,10 @@ $(function() {
winstd::eap_runtime_error::m_root_cause_desc
std::wstring m_root_cause_desc
A localized and readable string that describes the root cause of the error.
Definition EAP.h:674
winstd::eap_runtime_error::help_link_id
const GUID & help_link_id() const noexcept
Returns help_link ID.
Definition EAP.h:663
winstd::eap_runtime_error::m_reason
DWORD m_reason
The reason code for the error.
Definition EAP.h:671
-
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:852
-
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1074
-
winstd::win_runtime_error::msg
tstring msg(DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition Common.h:1119
+
winstd::handle::handle_type
T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1200
+
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1422
winstd::eap_error_runtime
std::unique_ptr< EAP_ERROR, EapHostPeerFreeEapError_delete > eap_error_runtime
EAP_ERROR wrapper class.
Definition EAP.h:205
winstd::eap_blob
std::unique_ptr< BYTE[], EapHostPeerFreeMemory_delete > eap_blob
EapHost BLOB wrapper class.
Definition EAP.h:128
operator==
static bool operator==(const EAP_METHOD_TYPE &a, const EAP_METHOD_TYPE &b) noexcept
Are EAP method types equal?
Definition EAP.h:39
@@ -609,7 +701,7 @@ $(function() {
winstd::eap_type_t::identity
@ identity
Identity.
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_DPLHANDLE_IMPL
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:175
-
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle::invalid
static const T invalid
Invalid handle value.
Definition Common.h:993
winstd::EapHostPeerFreeEapError_delete
Deleter for unique_ptr to EAP_ERROR using EapHostPeerFreeEapError.
Definition EAP.h:185
winstd::EapHostPeerFreeEapError_delete::EapHostPeerFreeEapError_delete
EapHostPeerFreeEapError_delete() noexcept
Default constructor.
Definition EAP.h:189
winstd::EapHostPeerFreeEapError_delete::operator()
void operator()(EAP_ERROR *_Ptr) const noexcept
Delete a pointer.
Definition EAP.h:196
@@ -625,7 +717,7 @@ $(function() { diff --git a/_e_t_w_8h_source.html b/_e_t_w_8h_source.html index e888249f..f93b1e3b 100644 --- a/_e_t_w_8h_source.html +++ b/_e_t_w_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/ETW.h Source File @@ -30,7 +30,7 @@ - + +
23
26
32template<class _Ty, class _Ax>
+
33static _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)
34{
35 ULONG ulSize, ulResult;
@@ -120,7 +126,9 @@ $(function() {
49
50 return ulResult;
51}
+
52
+
58static _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)
59{
60 BYTE szBuffer[WINSTD_STACK_BUFFER_BYTES];
@@ -141,7 +149,9 @@ $(function() {
75
76 return ulResult;
77}
+
78
+
84static _Success_(return == ERROR_SUCCESS) ULONG TdhGetEventMapInformation(_In_ PEVENT_RECORD pEvent, _In_ LPWSTR pMapName, _Inout_ std::unique_ptr<EVENT_MAP_INFO> &info)
85{
86 BYTE szBuffer[WINSTD_STACK_BUFFER_BYTES];
@@ -162,6 +172,7 @@ $(function() {
101
102 return ulResult;
103}
+
104
106
107#pragma warning(pop)
@@ -169,59 +180,77 @@ $(function() {
109namespace winstd
110{
113
+
117 class event_data : public EVENT_DATA_DESCRIPTOR
118 {
119 public:
+
124 {
125 Ptr = 0;
126 Size = 0;
127 Reserved = (ULONG)-1; // Used for varadic argument terminator.
128 }
+
129
137 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
138 event_data(_In_ const char &data)
139 {
140 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
141 }
+
142
150 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
151 event_data(_In_ const unsigned char &data)
152 {
153 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
154 }
+
155
163 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
164 event_data(_In_ const int &data)
165 {
166 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
167 }
+
168
176 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
177 event_data(_In_ const unsigned int &data)
178 {
179 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
180 }
+
181
189 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
190 event_data(_In_ const long &data)
191 {
192 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
193 }
+
194
202 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
203 event_data(_In_ const unsigned long &data)
204 {
205 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
206 }
+
207
215 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
216 event_data(_In_ const GUID &data)
217 {
218 EventDataDescCreate(this, &data, (ULONG)(sizeof(data)));
219 }
+
220
228 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
229 event_data(_In_opt_z_ const char *data)
230 {
231 if (data)
@@ -232,8 +261,10 @@ $(function() {
236 EventDataDescCreate(this, null, sizeof(null));
237 }
238 }
+
239
247 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
248 event_data(_In_opt_z_ const wchar_t *data)
249 {
250 if (data)
@@ -244,48 +275,64 @@ $(function() {
255 EventDataDescCreate(this, null, sizeof(null));
256 }
257 }
+
258
266 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
267 template<class _Elem, class _Traits, class _Ax>
+
268 event_data(_In_ const std::basic_string<_Elem, _Traits, _Ax> &data)
269 {
270 EventDataDescCreate(this, data.c_str(), (ULONG)((data.length() + 1) * sizeof(_Elem)));
271 }
+
272
281 #pragma warning(suppress: 26495) // EventDataDescCreate() initializes all members of EVENT_DATA_DESCRIPTOR
+
282 event_data(_In_bytecount_(size) const void *data, _In_ ULONG size)
283 {
284 EventDataDescCreate(this, data, size);
285 }
+
286 };
+
287
291 static const event_data blank_event_data;
292
+
296 class event_rec : public EVENT_RECORD
297 {
298 public:
+
303 {
304 memset((EVENT_RECORD*)this, 0, sizeof(EVENT_RECORD));
305 }
+
306
+
312 event_rec(_In_ const event_rec &other) : EVENT_RECORD(other)
313 {
314 set_extended_data_internal(other.ExtendedDataCount, other.ExtendedData);
315 set_user_data_internal(other.UserDataLength, other.UserData);
316 }
+
317
+
323 event_rec(_In_ const EVENT_RECORD &other) : EVENT_RECORD(other)
324 {
325 set_extended_data_internal(other.ExtendedDataCount, other.ExtendedData);
326 set_user_data_internal(other.UserDataLength, other.UserData);
327 }
+
328
+
334 event_rec(_Inout_ event_rec&& other) noexcept : EVENT_RECORD(other)
335 {
336 memset((EVENT_RECORD*)&other, 0, sizeof(EVENT_RECORD));
337 }
+
338
+
343 {
344 if (ExtendedData)
@@ -294,7 +341,9 @@ $(function() {
347 if (UserData)
348 delete reinterpret_cast<unsigned char*>(UserData);
349 }
+
350
+
356 event_rec& operator=(_In_ const event_rec &other)
357 {
358 if (this != std::addressof(other)) {
@@ -305,7 +354,9 @@ $(function() {
363
364 return *this;
365 }
+
366
+
372 event_rec& operator=(_In_ const EVENT_RECORD &other)
373 {
374 if (this != std::addressof(other)) {
@@ -316,7 +367,9 @@ $(function() {
379
380 return *this;
381 }
+
382
+
388 event_rec& operator=(_Inout_ event_rec&& other) noexcept
389 {
390 if (this != std::addressof(other)) {
@@ -326,7 +379,9 @@ $(function() {
394
395 return *this;
396 }
+
397
+
404 void set_extended_data(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
405 {
406 if (ExtendedData)
@@ -334,7 +389,9 @@ $(function() {
408
409 set_extended_data_internal(count, data);
410 }
+
411
+
418 void set_user_data(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
419 {
420 if (UserData)
@@ -342,8 +399,10 @@ $(function() {
422
423 set_user_data_internal(size, data);
424 }
+
425
426 protected:
+
433 void set_extended_data_internal(_In_ USHORT count, _In_count_(count) const EVENT_HEADER_EXTENDED_DATA_ITEM *data)
434 {
435 if (count) {
@@ -375,7 +434,9 @@ $(function() {
461
462 ExtendedDataCount = count;
463 }
+
464
+
471 void set_user_data_internal(_In_ USHORT size, _In_bytecount_(size) LPCVOID data)
472 {
473 if (size) {
@@ -391,19 +452,25 @@ $(function() {
483
484 UserDataLength = size;
485 }
+
486 };
+
487
+
491 class event_provider : public handle<REGHANDLE, NULL>
492 {
493 WINSTD_HANDLE_IMPL(event_provider, NULL)
494
495 public:
+
502 {
503 if (m_h != invalid)
505 }
+
506
+
516 ULONG create(_In_ LPCGUID ProviderId)
517 {
518 handle_type h;
@@ -412,19 +479,25 @@ $(function() {
521 attach(h);
522 return ulRes;
523 }
+
524
+
534 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor)
535 {
536 assert(m_h != invalid);
537 return EventWrite(m_h, EventDescriptor, 0, NULL);
538 }
+
539
+
549 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount = 0, _In_opt_count_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData = NULL)
550 {
551 assert(m_h != invalid);
552 return EventWrite(m_h, EventDescriptor, UserDataCount, UserData);
553 }
+
554
+
566 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ const EVENT_DATA_DESCRIPTOR param1, ...)
567 {
568 assert(m_h != invalid);
@@ -467,7 +540,9 @@ $(function() {
605 return EventWrite(m_h, EventDescriptor, param_count, params.data());
606#pragma warning(pop)
607 }
+
608
+
620 ULONG write(_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ va_list arg)
621 {
622 assert(m_h != invalid);
@@ -500,7 +575,9 @@ $(function() {
649 return EventWrite(m_h, EventDescriptor, param_count, params.data());
650#pragma warning(pop)
651 }
+
652
+
662 ULONG write(_In_ UCHAR Level, _In_ ULONGLONG Keyword, _In_z_ _Printf_format_string_ PCWSTR String, ...)
663 {
664 assert(m_h != invalid);
@@ -516,13 +593,17 @@ $(function() {
674 // Write string event.
675 return EventWriteString(m_h, Level, Keyword, msg.c_str());
676 }
+
677
678 protected:
+
684 void free_internal() noexcept override
685 {
686 EventUnregister(m_h);
687 }
+
688
+
694 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)
695 {
696 UNREFERENCED_PARAMETER(SourceId);
@@ -532,7 +613,9 @@ $(function() {
700 UNREFERENCED_PARAMETER(MatchAllKeyword);
701 UNREFERENCED_PARAMETER(FilterData);
702 }
+
703
+
709 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)
710 {
711 if (CallbackContext)
@@ -540,36 +623,48 @@ $(function() {
713 else
714 assert(0); // Where did the "this" pointer get lost?
715 }
+
716 };
+
717
+
721 class event_session : public handle<TRACEHANDLE, 0>
722 {
723 WINSTD_NONCOPYABLE(event_session)
724
725 public:
+
730 {
731 }
+
732
+
739 event_session(_In_opt_ handle_type h, _In_ const EVENT_TRACE_PROPERTIES *prop) :
740 m_prop(reinterpret_cast<EVENT_TRACE_PROPERTIES*>(new char[prop->Wnode.BufferSize])),
741 handle(h)
742 {
743 memcpy(m_prop.get(), prop, prop->Wnode.BufferSize);
744 }
+
745
+
751 event_session(_Inout_ event_session &&other) noexcept :
752 m_prop(std::move(other.m_prop)),
753 handle(std::move(other))
754 {
755 }
+
756
+
763 {
764 if (m_h != invalid)
766 }
+
767
+
773 event_session& operator=(_Inout_ event_session &&other) noexcept
774 {
775 if (this != std::addressof(other)) {
@@ -578,24 +673,32 @@ $(function() {
778 }
779 return *this;
780 }
+
781
+
787 operator const EVENT_TRACE_PROPERTIES*() const
788 {
789 return m_prop.get();
790 }
+
791
+
797 LPCTSTR name() const
798 {
799 const EVENT_TRACE_PROPERTIES *prop = m_prop.get();
800 return reinterpret_cast<LPCTSTR>(reinterpret_cast<LPCBYTE>(prop) + prop->LoggerNameOffset);
801 }
+
802
+
811 void attach(_In_opt_ handle_type h, _In_ EVENT_TRACE_PROPERTIES *prop)
812 {
814 m_prop.reset(prop);
815 }
+
816
+
826 ULONG create(_In_z_ LPCTSTR SessionName, _In_ const EVENT_TRACE_PROPERTIES *Properties)
827 {
828 handle_type h;
@@ -606,7 +709,9 @@ $(function() {
833 attach(h, prop.release());
834 return ulRes;
835 }
+
836
+
846 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)
847 {
848 assert(m_h != invalid);
@@ -621,7 +726,9 @@ $(function() {
857 EnableProperty,
858 EnableFilterDesc);
859 }
+
860
+
870 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)
871 {
872 assert(m_h != invalid);
@@ -636,38 +743,50 @@ $(function() {
881 EnableProperty,
882 EnableFilterDesc);
883 }
+
884
885 protected:
+
891 void free_internal() noexcept override
892 {
893 ControlTrace(m_h, name(), m_prop.get(), EVENT_TRACE_CONTROL_STOP);
894 }
+
895
896 protected:
897 std::unique_ptr<EVENT_TRACE_PROPERTIES> m_prop;
898 };
+
899
+
905 class event_trace : public handle<TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE>
906 {
907 WINSTD_HANDLE_IMPL(event_trace, INVALID_PROCESSTRACE_HANDLE)
908
909 public:
+
915 virtual ~event_trace()
916 {
917 if (m_h != invalid)
919 }
+
920
921 protected:
+
927 void free_internal() noexcept override
928 {
929 CloseTrace(m_h);
930 }
+
931 };
+
932
+
936 class event_trace_enabler
937 {
938 public:
+
945 _In_opt_ LPCGUID SourceId,
946 _In_ TRACEHANDLE TraceHandle,
@@ -697,7 +816,9 @@ $(function() {
972 }
+
973
+
980 _In_ const event_session &session,
981 _In_ LPCGUID ProviderId,
@@ -726,12 +847,16 @@ $(function() {
1006 }
+
1007
+
1013 ULONG status() const
1014 {
1015 return m_status;
1016 }
+
1017
+
1024 {
1025 if (m_status == ERROR_SUCCESS)
@@ -746,6 +871,7 @@ $(function() {
1036 }
+
1037
1038 protected:
1039 ULONG m_status;
@@ -758,10 +884,13 @@ $(function() {
1046 ULONG m_enable_property;
1047 PEVENT_FILTER_DESCRIPTOR m_enable_filter_desc;
1048 };
+
1049
+
1055 class event_fn_auto
1056 {
1057 public:
+
1061 event_fn_auto(_In_ event_provider &ep, _In_ const EVENT_DESCRIPTOR *event_cons, _In_ const EVENT_DESCRIPTOR *event_dest, _In_z_ LPCSTR pszFnName) :
1062 m_ep(ep),
1063 m_event_dest(event_dest)
@@ -769,14 +898,18 @@ $(function() {
1065 EventDataDescCreate(&m_fn_name, pszFnName, (ULONG)(strlen(pszFnName) + 1)*sizeof(*pszFnName));
1066 m_ep.write(event_cons, 1, &m_fn_name);
1067 }
+
1068
+
1072 event_fn_auto(_In_ const event_fn_auto &other) :
1073 m_ep(other.m_ep),
1075 m_fn_name(other.m_fn_name)
1076 {
1077 }
+
1078
+
1082 event_fn_auto(_Inout_ event_fn_auto &&other) noexcept :
1083 m_ep(other.m_ep),
1084 m_event_dest(other.m_event_dest),
@@ -784,13 +917,17 @@ $(function() {
1086 {
1087 other.m_event_dest = NULL;
1088 }
+
1089
+
1094 {
1095 if (m_event_dest)
1097 }
+
1098
+
1103 {
1104 if (this != &other) {
@@ -801,7 +938,9 @@ $(function() {
1109
1110 return *this;
1111 }
+
1112
+
1116 event_fn_auto& operator=(_Inout_ event_fn_auto &&other) noexcept
1117 {
1118 if (this != &other) {
@@ -813,17 +952,21 @@ $(function() {
1124
1125 return *this;
1126 }
+
1127
1128 protected:
1129 event_provider &m_ep;
1130 const EVENT_DESCRIPTOR *m_event_dest;
1131 EVENT_DATA_DESCRIPTOR m_fn_name;
1132 };
+
1133
1139 template<class T>
+
1140 class event_fn_auto_ret
1141 {
1142 public:
+
1146 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) :
1147 m_ep(ep),
1148 m_event_dest(event_dest),
@@ -832,7 +975,9 @@ $(function() {
1151 EventDataDescCreate(m_desc + 0, pszFnName, (ULONG)(strlen(pszFnName) + 1)*sizeof(*pszFnName));
1152 m_ep.write(event_cons, 1, m_desc);
1153 }
+
1154
+
1159 m_ep(other.m_ep),
@@ -840,7 +985,9 @@ $(function() {
1162 {
1163 m_desc[0] = other.m_desc[0];
1164 }
+
1165
+
1170 m_ep(other.m_ep),
@@ -849,7 +996,9 @@ $(function() {
1174 m_desc[0] = std::move(other.m_desc[0]);
1175 other.m_event_dest = NULL;
1176 }
+
1177
+
1182 {
1183 if (m_event_dest) {
@@ -857,7 +1006,9 @@ $(function() {
1186 }
1187 }
+
1188
+
1193 {
1194 if (this != &other) {
@@ -869,7 +1020,9 @@ $(function() {
1200
1201 return *this;
1202 }
+
1203
+
1208 {
1209 if (this != &other) {
@@ -882,6 +1035,7 @@ $(function() {
1216
1217 return *this;
1218 }
+
1219
1220 protected:
1221 event_provider &m_ep;
@@ -889,6 +1043,7 @@ $(function() {
1223 EVENT_DATA_DESCRIPTOR m_desc[2];
1224 T &m_result;
1225 };
+
1226
1228}
winstd::event_data
EVENT_DATA_DESCRIPTOR wrapper.
Definition ETW.h:118
@@ -979,11 +1134,11 @@ $(function() {
winstd::event_trace
ETW trace.
Definition ETW.h:906
winstd::event_trace::~event_trace
virtual ~event_trace()
Closes the trace.
Definition ETW.h:915
winstd::event_trace::free_internal
void free_internal() noexcept override
Closes the trace.
Definition ETW.h:927
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< TRACEHANDLE, 0 >::handle
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:650
-
winstd::handle< REGHANDLE, NULL >::handle_type
REGHANDLE handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle< REGHANDLE, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::handle< REGHANDLE, NULL >::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:852
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< TRACEHANDLE, 0 >::handle
handle() noexcept
Initializes a new class instance with the object handle set to INVAL.
Definition Common.h:998
+
winstd::handle< REGHANDLE, NULL >::handle_type
REGHANDLE handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle< REGHANDLE, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::handle< REGHANDLE, NULL >::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1200
TdhGetEventInformation
static ULONG TdhGetEventInformation(PEVENT_RECORD pEvent, ULONG TdhContextCount, PTDH_CONTEXT pTdhContext, std::unique_ptr< TRACE_EVENT_INFO > &info)
Retrieves metadata about an event.
Definition ETW.h:58
TdhGetProperty
static ULONG TdhGetProperty(PEVENT_RECORD pEvent, ULONG TdhContextCount, PTDH_CONTEXT pTdhContext, ULONG PropertyDataCount, PPROPERTY_DATA_DESCRIPTOR pPropertyData, std::vector< _Ty, _Ax > &aData)
Retrieves a property value from the event data.
Definition ETW.h:33
TdhGetEventMapInformation
static ULONG TdhGetEventMapInformation(PEVENT_RECORD pEvent, LPWSTR pMapName, std::unique_ptr< EVENT_MAP_INFO > &info)
Retrieves information about the event map contained in the event.
Definition ETW.h:84
@@ -992,11 +1147,11 @@ $(function() {
WINSTD_STACK_BUFFER_BYTES
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:93
vsprintf
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:251
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle< REGHANDLE, NULL >::invalid
static const REGHANDLE invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle< REGHANDLE, NULL >::invalid
static const REGHANDLE invalid
Invalid handle value.
Definition Common.h:993
diff --git a/_g_d_i_8h_source.html b/_g_d_i_8h_source.html index 5dc4c6f1..0f2ba4f6 100644 --- a/_g_d_i_8h_source.html +++ b/_g_d_i_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/GDI.h Source File @@ -30,7 +30,7 @@ - + +
13{
16
20 template<class T>
+
21 class gdi_handle : public handle<T, NULL>
22 {
23 WINSTD_HANDLE_IMPL(gdi_handle, NULL)
24
25 public:
+
31 virtual ~gdi_handle()
32 {
33 if (m_h != invalid)
35 }
+
36
37 protected:
+
43 void free_internal() noexcept override
44 {
45 DeleteObject(m_h);
46 }
+
47 };
+
48
+
52 class icon : public handle<HICON, NULL>
53 {
54 WINSTD_HANDLE_IMPL(icon, NULL)
55
56 public:
+
62 virtual ~icon()
63 {
64 if (m_h != invalid)
66 }
+
67
68 protected:
+
74 void free_internal() noexcept override
75 {
76 DestroyIcon(m_h);
77 }
+
78 };
+
79
+
83 class dc : public handle<HDC, NULL>
84 {
85 WINSTD_HANDLE_IMPL(dc, NULL)
86
87 public:
+
93 virtual ~dc()
94 {
95 if (m_h != invalid)
97 }
+
98
99 protected:
+
105 void free_internal() noexcept override
106 {
107 DeleteDC(m_h);
108 }
+
109 };
+
110
+
114 class window_dc : public handle<HDC, NULL>
115 {
116 public:
+
120 window_dc() noexcept :
121 m_hwnd(NULL)
122 {}
+
123
+
127 window_dc(_In_opt_ handle_type h, _In_opt_ HWND hwnd) noexcept :
129 m_hwnd(hwnd)
130 {}
+
131
+
135 window_dc(_Inout_ window_dc &&h) noexcept :
136 handle<handle_type, NULL>(std::move(h)),
137 m_hwnd(h.m_hwnd)
138 {}
+
139
+
143 window_dc& operator=(_Inout_ window_dc &&h) noexcept
144 {
146 m_hwnd = h.m_hwnd;
147 return *this;
148 }
+
149
150 WINSTD_NONCOPYABLE(window_dc)
151
152 public:
+
158 virtual ~window_dc()
159 {
160 if (m_h != invalid)
162 }
+
163
164 protected:
+
170 void free_internal() noexcept override
171 {
172 ReleaseDC(m_hwnd, m_h);
173 }
+
174
175 protected:
176 HWND m_hwnd;
177 };
+
178
+
182 class dc_selector
183 {
184 WINSTD_NONCOPYABLE(dc_selector)
185 WINSTD_NONMOVABLE(dc_selector)
186
187 public:
+
193 dc_selector(_In_ HDC hdc, _In_ HGDIOBJ h) noexcept :
194 m_hdc(hdc),
195 m_orig(SelectObject(hdc, h))
196 {
197 }
+
198
+
204 virtual ~dc_selector()
205 {
206 if (m_orig)
207 SelectObject(m_hdc, m_orig);
208 }
+
209
+
215 HGDIOBJ status() const noexcept
216 {
217 return m_orig;
218 }
+
219
220 protected:
221 HDC m_hdc;
222 HGDIOBJ m_orig;
223 };
+
224
226}
winstd::dc_selector
Context scope DC object restorer.
Definition GDI.h:183
@@ -229,9 +274,9 @@ $(function() {
winstd::gdi_handle
Windows HGDIOBJ wrapper class.
Definition GDI.h:22
winstd::gdi_handle::free_internal
void free_internal() noexcept override
Closes an open object handle.
Definition GDI.h:43
winstd::gdi_handle::~gdi_handle
virtual ~gdi_handle()
Closes an open object handle.
Definition GDI.h:31
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< HDC, NULL >::handle_type
HDC handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle< T, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< HDC, NULL >::handle_type
HDC handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle< T, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
winstd::icon
Windows HICON wrapper class.
Definition GDI.h:53
winstd::icon::free_internal
void free_internal() noexcept override
Closes an open object handle.
Definition GDI.h:74
winstd::icon::~icon
virtual ~icon()
Closes an open object handle.
Definition GDI.h:62
@@ -246,11 +291,11 @@ $(function() {
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_NONMOVABLE
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:74
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle< T, NULL >::invalid
static const T invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle< T, NULL >::invalid
static const T invalid
Invalid handle value.
Definition Common.h:993
diff --git a/_m_s_i_8h_source.html b/_m_s_i_8h_source.html index fd85a09d..170c84fb 100644 --- a/_m_s_i_8h_source.html +++ b/_m_s_i_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/MSI.h Source File @@ -30,7 +30,7 @@ - + +
15
18
20template<class _Traits, class _Ax>
+
21static UINT MsiGetPropertyA(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szName, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
22{
23 assert(0); // TODO: Test this code.
@@ -118,8 +124,10 @@ $(function() {
43 return uiResult;
44 }
45}
+
46
52template<class _Traits, class _Ax>
+
53static UINT MsiGetPropertyW(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szName, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
54{
55 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -143,8 +151,10 @@ $(function() {
73 return uiResult;
74 }
75}
+
76
78template<class _Traits, class _Ax>
+
79static UINT MsiRecordGetStringA(_In_ MSIHANDLE hRecord, _In_ unsigned int iField, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
80{
81 assert(0); // TODO: Test this code.
@@ -170,8 +180,10 @@ $(function() {
101 return uiResult;
102 }
103}
+
104
110template<class _Traits, class _Ax>
+
111static UINT MsiRecordGetStringW(_In_ MSIHANDLE hRecord, _In_ unsigned int iField, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
112{
113 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -195,8 +207,10 @@ $(function() {
131 return uiResult;
132 }
133}
+
134
136template<class _Traits, class _Ax>
+
137static UINT MsiFormatRecordA(_In_opt_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
138{
139 assert(0); // TODO: Test this code.
@@ -222,8 +236,10 @@ $(function() {
159 return uiResult;
160 }
161}
+
162
168template<class _Traits, class _Ax>
+
169static UINT MsiFormatRecordW(_In_opt_ MSIHANDLE hInstall, _In_ MSIHANDLE hRecord, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
170{
171 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -247,8 +263,10 @@ $(function() {
189 return uiResult;
190 }
191}
+
192
198template<class _Ty, class _Ax>
+
199static UINT MsiRecordReadStream(_In_ MSIHANDLE hRecord, _In_ unsigned int iField, _Inout_ std::vector<_Ty, _Ax> &binData)
200{
201 assert(0); // TODO: Test this code.
@@ -266,8 +284,10 @@ $(function() {
213 return uiResult;
214 }
215}
+
216
218template<class _Traits, class _Ax>
+
219static UINT MsiGetTargetPathA(_In_ MSIHANDLE hInstall, _In_z_ LPCSTR szFolder, _Out_ std::basic_string<char, _Traits, _Ax> &sValue)
220{
221 assert(0); // TODO: Test this code.
@@ -293,8 +313,10 @@ $(function() {
241 return uiResult;
242 }
243}
+
244
250template<class _Traits, class _Ax>
+
251static UINT MsiGetTargetPathW(_In_ MSIHANDLE hInstall, _In_z_ LPCWSTR szFolder, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
252{
253 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -318,8 +340,10 @@ $(function() {
271 return uiResult;
272 }
273}
+
274
276template<class _Traits, class _Ax>
+
277static INSTALLSTATE MsiGetComponentPathA(_In_z_ LPCSTR szProduct, _In_z_ LPCSTR szComponent, _Inout_ std::basic_string<char, _Traits, _Ax> &sValue)
278{
279 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
@@ -343,8 +367,10 @@ $(function() {
297 return state;
298 }
299}
+
300
306template<class _Traits, class _Ax>
+
307static INSTALLSTATE MsiGetComponentPathW(_In_z_ LPCWSTR szProduct, _In_z_ LPCWSTR szComponent, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
308{
309 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
@@ -368,6 +394,7 @@ $(function() {
327 return state;
328 }
329}
+
330
WINSTD_STACK_BUFFER_BYTES
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:93
MsiFormatRecordW
static UINT MsiFormatRecordW(MSIHANDLE hInstall, MSIHANDLE hRecord, std::basic_string< wchar_t, _Traits, _Ax > &sValue)
Formats record field data and properties using a format string and stores it in a std::wstring string...
Definition MSI.h:169
@@ -384,7 +411,7 @@ $(function() { diff --git a/_s_d_d_l_8h_source.html b/_s_d_d_l_8h_source.html index f4ba8b2a..77d87eb3 100644 --- a/_s_d_d_l_8h_source.html +++ b/_s_d_d_l_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/SDDL.h Source File @@ -30,7 +30,7 @@ - + +
13namespace winstd
14{
17
+
18 class security_attributes : public SECURITY_ATTRIBUTES
19 {
20 WINSTD_NONCOPYABLE(security_attributes)
21
22 public:
+
27 {
28 nLength = sizeof(SECURITY_ATTRIBUTES);
29 lpSecurityDescriptor = NULL;
30 bInheritHandle = FALSE;
31 }
+
32
+
37 {
38 nLength = sizeof(SECURITY_ATTRIBUTES);
@@ -110,13 +119,17 @@ $(function() {
40 bInheritHandle = a.bInheritHandle;
41 a.lpSecurityDescriptor = NULL;
42 }
+
43
+
48 {
49 if (lpSecurityDescriptor)
50 LocalFree(lpSecurityDescriptor);
51 }
+
52
+
57 {
58 if (this != &a) {
@@ -129,7 +142,9 @@ $(function() {
65 }
66 return *this;
67 }
+
68 };
+
69
71}
72
@@ -137,6 +152,7 @@ $(function() {
76#pragma warning(push)
77#pragma warning(disable: 4505) // Don't warn on unused code
78
+
80_Success_(return != FALSE) static BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorA(_In_ LPCSTR StringSecurityDescriptor, _In_ DWORD StringSDRevision, _Inout_ winstd::security_attributes &sa, _Out_opt_ PULONG SecurityDescriptorSize)
81{
82 PSECURITY_DESCRIPTOR sd;
@@ -148,7 +164,9 @@ $(function() {
88 }
89 return bResult;
90}
+
91
+
97_Success_(return != FALSE) static BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW(_In_ LPCWSTR StringSecurityDescriptor, _In_ DWORD StringSDRevision, _Inout_ winstd::security_attributes &sa, _Out_opt_ PULONG SecurityDescriptorSize)
98{
99 PSECURITY_DESCRIPTOR sd;
@@ -160,6 +178,7 @@ $(function() {
105 }
106 return bResult;
107}
+
108
109#pragma warning(pop)
110
@@ -174,7 +193,7 @@ $(function() { diff --git a/_sec_8h_source.html b/_sec_8h_source.html index 9a31138b..5a0d597d 100644 --- a/_sec_8h_source.html +++ b/_sec_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/Sec.h Source File @@ -30,7 +30,7 @@ - + +
31 // Copy from stack.
32 sName.assign(szStackBuffer, ulSize);
33 return TRUE;
-
34 } else {
-
35 if (::GetLastError() == ERROR_MORE_DATA) {
-
36 // Allocate buffer on heap and retry.
-
37 std::unique_ptr<char[]> szBuffer(new char[ulSize]);
-
38 if (::GetUserNameExA(NameFormat, szBuffer.get(), &ulSize)) {
-
39 sName.assign(szBuffer.get(), ulSize);
-
40 return TRUE;
-
41 }
-
42 }
-
43 }
-
44
-
45 return FALSE;
-
46}
-
47
-
53template<class _Traits, class _Ax>
-
54static BOOLEAN GetUserNameExW(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sName)
-
55{
-
56 assert(0); // TODO: Test this code.
-
57
-
58 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
59 ULONG ulSize = _countof(szStackBuffer);
-
60
-
61 // Try with stack buffer first.
-
62 if (::GetUserNameExW(NameFormat, szStackBuffer, &ulSize)) {
-
63 // Copy from stack.
-
64 sName.assign(szStackBuffer, ulSize);
-
65 return TRUE;
-
66 } else {
-
67 if (::GetLastError() == ERROR_MORE_DATA) {
-
68 // Allocate buffer on heap and retry.
-
69 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[ulSize]);
-
70 if (::GetUserNameExW(NameFormat, szBuffer.get(), &ulSize)) {
-
71 sName.assign(szBuffer.get(), ulSize);
-
72 return TRUE;
-
73 }
-
74 }
-
75 }
-
76
-
77 return FALSE;
-
78}
+
34 }
+
35 if (::GetLastError() == ERROR_MORE_DATA) {
+
36 // Allocate buffer on heap and retry.
+
37 std::unique_ptr<char[]> szBuffer(new char[ulSize]);
+
38 if (::GetUserNameExA(NameFormat, szBuffer.get(), &ulSize)) {
+
39 sName.assign(szBuffer.get(), ulSize);
+
40 return TRUE;
+
41 }
+
42 }
+
43 return FALSE;
+
44}
+
45
+
51template<class _Traits, class _Ax>
+
52static BOOLEAN GetUserNameExW(_In_ EXTENDED_NAME_FORMAT NameFormat, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sName)
+
53{
+
54 assert(0); // TODO: Test this code.
+
55
+
56 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
57 ULONG ulSize = _countof(szStackBuffer);
+
58
+
59 // Try with stack buffer first.
+
60 if (::GetUserNameExW(NameFormat, szStackBuffer, &ulSize)) {
+
61 // Copy from stack.
+
62 sName.assign(szStackBuffer, ulSize);
+
63 return TRUE;
+
64 }
+
65 if (::GetLastError() == ERROR_MORE_DATA) {
+
66 // Allocate buffer on heap and retry.
+
67 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[ulSize]);
+
68 if (::GetUserNameExW(NameFormat, szBuffer.get(), &ulSize)) {
+
69 sName.assign(szBuffer.get(), ulSize);
+
70 return TRUE;
+
71 }
+
72 }
+
73 return FALSE;
+
74}
+
75
+
76#endif
+
77
79
-
80#endif
-
81
-
83
-
84namespace winstd
-
85{
-
88
-
92 class sec_credentials : public handle<PCredHandle, NULL>
-
93 {
-
94 WINSTD_NONCOPYABLE(sec_credentials)
-
95
-
96 public:
-
100 sec_credentials()
-
101 {
-
102 m_expires.QuadPart = -1;
-
103 }
-
104
-
111 sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires) :
-
112 m_expires(expires),
-
113 handle(h)
-
114 {
-
115 }
-
116
-
122 sec_credentials(_Inout_ sec_credentials &&h) noexcept :
-
123 m_expires(std::move(h.m_expires)),
-
124 handle<PCredHandle, NULL>(std::move(h))
-
125 {
-
126 }
-
127
-
133 virtual ~sec_credentials()
-
134 {
-
135 if (m_h != invalid)
-
136 free_internal();
-
137 }
-
138
-
144 sec_credentials& operator=(_Inout_ sec_credentials &&h) noexcept
-
145 {
-
146 if (this != std::addressof(h)) {
-
147 *(handle<handle_type, NULL>*)this = std::move(h);
-
148 m_expires = std::move(h.m_expires);
-
149 }
-
150 return *this;
-
151 }
-
152
-
162 SECURITY_STATUS acquire(
-
163 _In_opt_ LPTSTR pszPrincipal,
-
164 _In_ LPTSTR pszPackage,
-
165 _In_ unsigned long fCredentialUse,
-
166 _In_opt_ void *pvLogonId,
-
167 _In_opt_ void *pAuthData,
-
168 _In_opt_ SEC_GET_KEY_FN pGetKeyFn = NULL,
-
169 _In_opt_ void *pvGetKeyArgument = NULL)
-
170 {
-
171 handle_type h = new CredHandle;
-
172 TimeStamp exp;
-
173 SECURITY_STATUS res = AcquireCredentialsHandle(pszPrincipal, pszPackage, fCredentialUse, pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, h, &exp);
-
174 if (SUCCEEDED(res)) {
-
175 attach(h);
-
176 m_expires = exp;
-
177 } else
-
178 delete h;
-
179 return res;
-
180 }
-
181
-
182 protected:
-
188 void free_internal() noexcept override
-
189 {
-
190 FreeCredentialsHandle(m_h);
-
191 delete m_h;
-
192 }
-
193
-
194 public:
-
195 TimeStamp m_expires;
-
196 };
-
197
-
201 class sec_context : public handle<PCtxtHandle, NULL>
-
202 {
-
203 public:
-
207 sec_context() :
-
208 m_attrib(0),
-
209 handle<PCtxtHandle, NULL>()
-
210 {
-
211 m_expires.QuadPart = -1;
-
212 }
-
213
-
219 sec_context(_Inout_ sec_context &&h) noexcept :
-
220 m_attrib (std::move(h.m_attrib )),
-
221 m_expires(std::move(h.m_expires)),
-
222 handle<PCtxtHandle, NULL>(std::move(h))
-
223 {
-
224 }
-
225
-
231 virtual ~sec_context()
-
232 {
-
233 if (m_h != invalid)
-
234 free_internal();
-
235 }
-
236
-
242 sec_context& operator=(_Inout_ sec_context &&h) noexcept
-
243 {
-
244 if (this != std::addressof(h)) {
-
245 *(handle<handle_type, NULL>*)this = std::move(h);
-
246 m_attrib = std::move(h.m_attrib);
-
247 m_expires = std::move(h.m_expires);
-
248 }
-
249 return *this;
-
250 }
-
251
-
261 SECURITY_STATUS initialize(
-
262 _In_opt_ PCredHandle phCredential,
-
263 _In_opt_z_ LPCTSTR pszTargetName,
-
264 _In_ ULONG fContextReq,
-
265 _In_ ULONG TargetDataRep,
-
266 _In_opt_ PSecBufferDesc pInput,
-
267 _Inout_opt_ PSecBufferDesc pOutput)
-
268 {
-
269 handle_type h = new CtxtHandle;
-
270 h->dwUpper = 0;
-
271 h->dwLower = 0;
-
272 ULONG attr;
-
273 TimeStamp exp;
-
274 SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &attr, &exp);
-
275 if (SUCCEEDED(res)) {
-
276 attach(h);
-
277 m_attrib = attr;
-
278 m_expires = exp;
-
279 } else
-
280 delete h;
-
281 return res;
-
282 }
-
283
-
293 SECURITY_STATUS process(
-
294 _In_opt_ PCredHandle phCredential,
-
295 _In_opt_z_ LPCTSTR pszTargetName,
-
296 _In_ ULONG fContextReq,
-
297 _In_ ULONG TargetDataRep,
-
298 _In_opt_ PSecBufferDesc pInput,
-
299 _Inout_opt_ PSecBufferDesc pOutput)
-
300 {
-
301 return InitializeSecurityContext(phCredential, m_h, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &m_attrib, &m_expires);
-
302 }
-
303
-
304 protected:
-
310 void free_internal() noexcept override
-
311 {
-
312 DeleteSecurityContext(m_h);
-
313 delete m_h;
-
314 }
-
315
-
316 public:
-
317 ULONG m_attrib;
-
318 TimeStamp m_expires;
-
319 };
-
320
-
324 class sec_buffer_desc : public SecBufferDesc
-
325 {
-
326 public:
-
330 sec_buffer_desc(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version = SECBUFFER_VERSION)
-
331 {
-
332 ulVersion = version;
-
333 cBuffers = count;
-
334 pBuffers = buf;
-
335 }
-
336
-
342 virtual ~sec_buffer_desc()
-
343 {
-
344 for (ULONG i = 0; i < cBuffers; i++) {
-
345 if (pBuffers[i].pvBuffer)
-
346 FreeContextBuffer(pBuffers[i].pvBuffer);
-
347 }
-
348 }
-
349 };
-
350
-
352
-
355
-
361 class sec_runtime_error : public num_runtime_error<SECURITY_STATUS>
-
362 {
-
363 public:
-
370 sec_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<SECURITY_STATUS>(num, msg)
-
371 {
-
372 }
-
373
-
380 sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<SECURITY_STATUS>(num, msg)
-
381 {
-
382 }
+
80namespace winstd
+
81{
+
84
+
+
88 class sec_credentials : public handle<PCredHandle, NULL>
+
89 {
+
90 WINSTD_NONCOPYABLE(sec_credentials)
+
91
+
92 public:
+
+ +
97 {
+
98 m_expires.QuadPart = -1;
+
99 }
+
+
100
+
+
107 sec_credentials(_In_opt_ handle_type h, _In_ const TimeStamp expires) :
+
108 m_expires(expires),
+
109 handle(h)
+
110 {}
+
+
111
+
+
117 sec_credentials(_Inout_ sec_credentials &&h) noexcept :
+
118 m_expires(std::move(h.m_expires)),
+
119 handle<PCredHandle, NULL>(std::move(h))
+
120 {}
+
+
121
+
+ +
128 {
+
129 if (m_h != invalid)
+ +
131 }
+
+
132
+
+ +
139 {
+
140 if (this != std::addressof(h)) {
+
141 *(handle<handle_type, NULL>*)this = std::move(h);
+
142 m_expires = std::move(h.m_expires);
+
143 }
+
144 return *this;
+
145 }
+
+
146
+
+
156 SECURITY_STATUS acquire(
+
157 _In_opt_ LPTSTR pszPrincipal,
+
158 _In_ LPTSTR pszPackage,
+
159 _In_ unsigned long fCredentialUse,
+
160 _In_opt_ void *pvLogonId,
+
161 _In_opt_ void *pAuthData,
+
162 _In_opt_ SEC_GET_KEY_FN pGetKeyFn = NULL,
+
163 _In_opt_ void *pvGetKeyArgument = NULL)
+
164 {
+
165 handle_type h = new CredHandle;
+
166 TimeStamp exp;
+
167 SECURITY_STATUS res = AcquireCredentialsHandle(pszPrincipal, pszPackage, fCredentialUse, pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, h, &exp);
+
168 if (SUCCEEDED(res)) {
+
169 attach(h);
+
170 m_expires = exp;
+
171 } else
+
172 delete h;
+
173 return res;
+
174 }
+
+
175
+
176 protected:
+
+
182 void free_internal() noexcept override
+
183 {
+
184 FreeCredentialsHandle(m_h);
+
185 delete m_h;
+
186 }
+
+
187
+
188 public:
+
189 TimeStamp m_expires;
+
190 };
+
+
191
+
+
195 class sec_context : public handle<PCtxtHandle, NULL>
+
196 {
+
197 public:
+
+ +
202 m_attrib(0),
+
203 handle<PCtxtHandle, NULL>()
+
204 {
+
205 m_expires.QuadPart = -1;
+
206 }
+
+
207
+
+
213 sec_context(_Inout_ sec_context &&h) noexcept :
+
214 m_attrib (std::move(h.m_attrib )),
+
215 m_expires(std::move(h.m_expires)),
+
216 handle<PCtxtHandle, NULL>(std::move(h))
+
217 {}
+
+
218
+
+
224 virtual ~sec_context()
+
225 {
+
226 if (m_h != invalid)
+ +
228 }
+
+
229
+
+
235 sec_context& operator=(_Inout_ sec_context &&h) noexcept
+
236 {
+
237 if (this != std::addressof(h)) {
+
238 *(handle<handle_type, NULL>*)this = std::move(h);
+
239 m_attrib = std::move(h.m_attrib);
+
240 m_expires = std::move(h.m_expires);
+
241 }
+
242 return *this;
+
243 }
+
+
244
+
+
254 SECURITY_STATUS initialize(
+
255 _In_opt_ PCredHandle phCredential,
+
256 _In_opt_z_ LPCTSTR pszTargetName,
+
257 _In_ ULONG fContextReq,
+
258 _In_ ULONG TargetDataRep,
+
259 _In_opt_ PSecBufferDesc pInput,
+
260 _Inout_opt_ PSecBufferDesc pOutput)
+
261 {
+
262 handle_type h = new CtxtHandle;
+
263 h->dwUpper = 0;
+
264 h->dwLower = 0;
+
265 ULONG attr;
+
266 TimeStamp exp;
+
267 SECURITY_STATUS res = InitializeSecurityContext(phCredential, NULL, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, h, pOutput, &attr, &exp);
+
268 if (SUCCEEDED(res)) {
+
269 attach(h);
+
270 m_attrib = attr;
+
271 m_expires = exp;
+
272 } else
+
273 delete h;
+
274 return res;
+
275 }
+
+
276
+
+
286 SECURITY_STATUS process(
+
287 _In_opt_ PCredHandle phCredential,
+
288 _In_opt_z_ LPCTSTR pszTargetName,
+
289 _In_ ULONG fContextReq,
+
290 _In_ ULONG TargetDataRep,
+
291 _In_opt_ PSecBufferDesc pInput,
+
292 _Inout_opt_ PSecBufferDesc pOutput)
+
293 {
+
294 return InitializeSecurityContext(phCredential, m_h, const_cast<LPTSTR>(pszTargetName), fContextReq, 0, TargetDataRep, pInput, 0, NULL, pOutput, &m_attrib, &m_expires);
+
295 }
+
+
296
+
297 protected:
+
+
303 void free_internal() noexcept override
+
304 {
+
305 DeleteSecurityContext(m_h);
+
306 delete m_h;
+
307 }
+
+
308
+
309 public:
+
310 ULONG m_attrib;
+
311 TimeStamp m_expires;
+
312 };
+
+
313
+
+
317 class sec_buffer_desc : public SecBufferDesc
+
318 {
+
319 public:
+
+
323 sec_buffer_desc(_Inout_count_(count) PSecBuffer buf, ULONG count, _In_ ULONG version = SECBUFFER_VERSION)
+
324 {
+
325 ulVersion = version;
+
326 cBuffers = count;
+
327 pBuffers = buf;
+
328 }
+
+
329
+
+ +
336 {
+
337 for (ULONG i = 0; i < cBuffers; i++) {
+
338 if (pBuffers[i].pvBuffer)
+
339 FreeContextBuffer(pBuffers[i].pvBuffer);
+
340 }
+
341 }
+
+
342 };
+
+
343
+
345
+
348
+
+
354 class sec_runtime_error : public num_runtime_error<SECURITY_STATUS>
+
355 {
+
356 public:
+
+
363 sec_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<SECURITY_STATUS>(num, msg)
+
364 {}
+
+
365
+
+
372 sec_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<SECURITY_STATUS>(num, msg)
+
373 {}
+
+
374
+
+
380 sec_runtime_error(const sec_runtime_error &other) : num_runtime_error<SECURITY_STATUS>(other)
+
381 {}
+
+
382 };
+
383
-
389 sec_runtime_error(const sec_runtime_error &other) : num_runtime_error<SECURITY_STATUS>(other)
-
390 {
-
391 }
-
392 };
-
393
-
395}
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< PCredHandle, NULL >::handle_type
PCredHandle handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle< PCredHandle, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::handle< PCredHandle, NULL >::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:852
-
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1029
-
winstd::num_runtime_error< SECURITY_STATUS >::error_type
SECURITY_STATUS error_type
Error number type.
Definition Common.h:1031
-
winstd::sec_buffer_desc
SecBufferDesc wrapper class.
Definition Sec.h:325
-
winstd::sec_buffer_desc::~sec_buffer_desc
virtual ~sec_buffer_desc()
Frees the security buffer descriptor.
Definition Sec.h:342
-
winstd::sec_buffer_desc::sec_buffer_desc
sec_buffer_desc(PSecBuffer buf, ULONG count, ULONG version=SECBUFFER_VERSION)
Initializes security buffer descriptor.
Definition Sec.h:330
-
winstd::sec_context
PCtxtHandle wrapper class.
Definition Sec.h:202
-
winstd::sec_context::sec_context
sec_context(sec_context &&h) noexcept
Move constructor.
Definition Sec.h:219
-
winstd::sec_context::process
SECURITY_STATUS process(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)
Continue security context.
Definition Sec.h:293
-
winstd::sec_context::~sec_context
virtual ~sec_context()
Frees the security context.
Definition Sec.h:231
-
winstd::sec_context::sec_context
sec_context()
Initializes a new class instance with the object handle set to NULL.
Definition Sec.h:207
-
winstd::sec_context::initialize
SECURITY_STATUS initialize(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)
Initializes security context.
Definition Sec.h:261
-
winstd::sec_context::m_attrib
ULONG m_attrib
Context attributes.
Definition Sec.h:317
-
winstd::sec_context::m_expires
TimeStamp m_expires
Context expiration time.
Definition Sec.h:318
-
winstd::sec_context::operator=
sec_context & operator=(sec_context &&h) noexcept
Move assignment.
Definition Sec.h:242
-
winstd::sec_context::free_internal
void free_internal() noexcept override
Frees the security context.
Definition Sec.h:310
-
winstd::sec_credentials
PCredHandle wrapper class.
Definition Sec.h:93
-
winstd::sec_credentials::sec_credentials
sec_credentials()
Initializes a new class instance with the object handle set to NULL.
Definition Sec.h:100
-
winstd::sec_credentials::free_internal
void free_internal() noexcept override
Frees the security credentials.
Definition Sec.h:188
-
winstd::sec_credentials::m_expires
TimeStamp m_expires
Credentials expiration time.
Definition Sec.h:195
-
winstd::sec_credentials::sec_credentials
sec_credentials(sec_credentials &&h) noexcept
Move constructor.
Definition Sec.h:122
-
winstd::sec_credentials::~sec_credentials
virtual ~sec_credentials()
Frees the security credentials.
Definition Sec.h:133
-
winstd::sec_credentials::sec_credentials
sec_credentials(handle_type h, const TimeStamp expires)
Initializes a new class with an already available object handle.
Definition Sec.h:111
-
winstd::sec_credentials::acquire
SECURITY_STATUS acquire(LPTSTR pszPrincipal, LPTSTR pszPackage, unsigned long fCredentialUse, void *pvLogonId, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn=NULL, void *pvGetKeyArgument=NULL)
Acquires the security credentials.
Definition Sec.h:162
-
winstd::sec_credentials::operator=
sec_credentials & operator=(sec_credentials &&h) noexcept
Move assignment.
Definition Sec.h:144
-
winstd::sec_runtime_error
Security runtime error.
Definition Sec.h:362
-
winstd::sec_runtime_error::sec_runtime_error
sec_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Sec.h:380
-
winstd::sec_runtime_error::sec_runtime_error
sec_runtime_error(const sec_runtime_error &other)
Copies an exception.
Definition Sec.h:389
-
winstd::sec_runtime_error::sec_runtime_error
sec_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Sec.h:370
+
385}
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< PCredHandle, NULL >::handle_type
PCredHandle handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle< PCredHandle, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::handle< PCredHandle, NULL >::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1200
+
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1377
+
winstd::num_runtime_error< SECURITY_STATUS >::error_type
SECURITY_STATUS error_type
Error number type.
Definition Common.h:1379
+
winstd::sec_buffer_desc
SecBufferDesc wrapper class.
Definition Sec.h:318
+
winstd::sec_buffer_desc::~sec_buffer_desc
virtual ~sec_buffer_desc()
Frees the security buffer descriptor.
Definition Sec.h:335
+
winstd::sec_buffer_desc::sec_buffer_desc
sec_buffer_desc(PSecBuffer buf, ULONG count, ULONG version=SECBUFFER_VERSION)
Initializes security buffer descriptor.
Definition Sec.h:323
+
winstd::sec_context
PCtxtHandle wrapper class.
Definition Sec.h:196
+
winstd::sec_context::sec_context
sec_context(sec_context &&h) noexcept
Move constructor.
Definition Sec.h:213
+
winstd::sec_context::process
SECURITY_STATUS process(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)
Continue security context.
Definition Sec.h:286
+
winstd::sec_context::~sec_context
virtual ~sec_context()
Frees the security context.
Definition Sec.h:224
+
winstd::sec_context::sec_context
sec_context()
Initializes a new class instance with the object handle set to NULL.
Definition Sec.h:201
+
winstd::sec_context::initialize
SECURITY_STATUS initialize(PCredHandle phCredential, LPCTSTR pszTargetName, ULONG fContextReq, ULONG TargetDataRep, PSecBufferDesc pInput, PSecBufferDesc pOutput)
Initializes security context.
Definition Sec.h:254
+
winstd::sec_context::m_attrib
ULONG m_attrib
Context attributes.
Definition Sec.h:310
+
winstd::sec_context::m_expires
TimeStamp m_expires
Context expiration time.
Definition Sec.h:311
+
winstd::sec_context::operator=
sec_context & operator=(sec_context &&h) noexcept
Move assignment.
Definition Sec.h:235
+
winstd::sec_context::free_internal
void free_internal() noexcept override
Frees the security context.
Definition Sec.h:303
+
winstd::sec_credentials
PCredHandle wrapper class.
Definition Sec.h:89
+
winstd::sec_credentials::sec_credentials
sec_credentials()
Initializes a new class instance with the object handle set to NULL.
Definition Sec.h:96
+
winstd::sec_credentials::free_internal
void free_internal() noexcept override
Frees the security credentials.
Definition Sec.h:182
+
winstd::sec_credentials::m_expires
TimeStamp m_expires
Credentials expiration time.
Definition Sec.h:189
+
winstd::sec_credentials::sec_credentials
sec_credentials(sec_credentials &&h) noexcept
Move constructor.
Definition Sec.h:117
+
winstd::sec_credentials::~sec_credentials
virtual ~sec_credentials()
Frees the security credentials.
Definition Sec.h:127
+
winstd::sec_credentials::sec_credentials
sec_credentials(handle_type h, const TimeStamp expires)
Initializes a new class with an already available object handle.
Definition Sec.h:107
+
winstd::sec_credentials::acquire
SECURITY_STATUS acquire(LPTSTR pszPrincipal, LPTSTR pszPackage, unsigned long fCredentialUse, void *pvLogonId, void *pAuthData, SEC_GET_KEY_FN pGetKeyFn=NULL, void *pvGetKeyArgument=NULL)
Acquires the security credentials.
Definition Sec.h:156
+
winstd::sec_credentials::operator=
sec_credentials & operator=(sec_credentials &&h) noexcept
Move assignment.
Definition Sec.h:138
+
winstd::sec_runtime_error
Security runtime error.
Definition Sec.h:355
+
winstd::sec_runtime_error::sec_runtime_error
sec_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition Sec.h:372
+
winstd::sec_runtime_error::sec_runtime_error
sec_runtime_error(const sec_runtime_error &other)
Copies an exception.
Definition Sec.h:380
+
winstd::sec_runtime_error::sec_runtime_error
sec_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition Sec.h:363
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_STACK_BUFFER_BYTES
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:93
-
winstd::handle< PCredHandle, NULL >::invalid
static const PCredHandle invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle< PCredHandle, NULL >::invalid
static const PCredHandle invalid
Invalid handle value.
Definition Common.h:993
diff --git a/_setup_a_p_i_8h_source.html b/_setup_a_p_i_8h_source.html index 78bd2384..096703a6 100644 --- a/_setup_a_p_i_8h_source.html +++ b/_setup_a_p_i_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/SetupAPI.h Source File @@ -30,7 +30,7 @@ - + +
14namespace winstd
15{
18
+
25 class setup_device_info_list : public handle<HDEVINFO, INVALID_HANDLE_VALUE>
26 {
27 WINSTD_HANDLE_IMPL(setup_device_info_list, INVALID_HANDLE_VALUE)
28
29 public:
+
36 {
37 if (m_h != invalid)
39 }
+
40
41 protected:
+
47 void free_internal() noexcept override
48 {
49 SetupDiDestroyDeviceInfoList(m_h);
50 }
+
51 };
+
52
+
56 class setup_driver_info_list_builder
57 {
58 WINSTD_NONCOPYABLE(setup_driver_info_list_builder)
59 WINSTD_NONMOVABLE(setup_driver_info_list_builder)
60
61 public:
+
68 _In_ HDEVINFO DeviceInfoSet,
69 _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData,
@@ -126,17 +139,22 @@ $(function() {
74 {
75 m_result = SetupDiBuildDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);
76 }
+
77
+
84 {
85 if (m_result)
86 SetupDiDestroyDriverInfoList(m_DeviceInfoSet, m_DeviceInfoData, m_DriverType);
87 }
+
88
+
94 BOOL status() const noexcept
95 {
96 return m_result;
97 }
+
98
99 protected:
101 HDEVINFO m_DeviceInfoSet;
@@ -144,10 +162,11 @@ $(function() {
103 DWORD m_DriverType;
104 BOOL m_result;
106 };
+
107
109}
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
winstd::setup_device_info_list
HDEVINFO wrapper class.
Definition SetupAPI.h:26
winstd::setup_device_info_list::~setup_device_info_list
virtual ~setup_device_info_list()
Frees the device information set.
Definition SetupAPI.h:35
winstd::setup_device_info_list::free_internal
void free_internal() noexcept override
Frees the device information set.
Definition SetupAPI.h:47
@@ -158,11 +177,11 @@ $(function() {
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_NONMOVABLE
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:74
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >::invalid
static const HDEVINFO invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle< HDEVINFO, INVALID_HANDLE_VALUE >::invalid
static const HDEVINFO invalid
Invalid handle value.
Definition Common.h:993
diff --git a/_shell_8h_source.html b/_shell_8h_source.html index c189c9d8..81925934 100644 --- a/_shell_8h_source.html +++ b/_shell_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/Shell.h Source File @@ -30,7 +30,7 @@ - + +
14
17
19template<class _Traits, class _Ax>
+
20static BOOL PathCanonicalizeA(_Inout_ std::basic_string<char, _Traits, _Ax> &sValue, _In_ LPCSTR pszPath)
21{
22 char szBuffer[MAX_PATH + 1];
@@ -99,8 +105,10 @@ $(function() {
24 sValue.assign(szBuffer, bResult ? MAX_PATH : 0);
25 return bResult;
26}
+
27
33template<class _Traits, class _Ax>
+
34static BOOL PathCanonicalizeW(_Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue, _In_ LPCWSTR pszPath)
35{
36 wchar_t szBuffer[MAX_PATH + 1];
@@ -108,8 +116,10 @@ $(function() {
38 sValue.assign(szBuffer, bResult ? MAX_PATH : 0);
39 return bResult;
40}
+
41
43template<class _Traits, class _Ax>
+
44static void PathRemoveBackslashA(_Inout_ std::basic_string<char, _Traits, _Ax>& sValue)
45{
46 char szBuffer[MAX_PATH + 1];
@@ -128,8 +138,10 @@ $(function() {
59 sValue.assign(buf.get());
60 }
61}
+
62
68template<class _Traits, class _Ax>
+
69static void PathRemoveBackslashW(_Inout_ std::basic_string<wchar_t, _Traits, _Ax>& sValue)
70{
71 wchar_t szBuffer[MAX_PATH + 1];
@@ -148,6 +160,7 @@ $(function() {
84 sValue.assign(buf.get());
85 }
86}
+
87
PathCanonicalizeW
static BOOL PathCanonicalizeW(std::basic_string< wchar_t, _Traits, _Ax > &sValue, LPCWSTR pszPath)
Simplifies a path by removing navigation elements such as "." and ".." to produce a direct,...
Definition Shell.h:34
PathRemoveBackslashW
static void PathRemoveBackslashW(std::basic_string< wchar_t, _Traits, _Ax > &sValue)
Removes the trailing backslash from a given path.
Definition Shell.h:69
@@ -156,7 +169,7 @@ $(function() { diff --git a/_w_l_a_n_8h_source.html b/_w_l_a_n_8h_source.html index 1f459945..4c2df3d4 100644 --- a/_w_l_a_n_8h_source.html +++ b/_w_l_a_n_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/WLAN.h Source File @@ -30,7 +30,7 @@ - + +
21extern DWORD (WINAPI *pfnWlanReasonCodeToString)(__in DWORD dwReasonCode, __in DWORD dwBufferSize, __in_ecount(dwBufferSize) PWCHAR pStringBuffer, __reserved PVOID pReserved);
23
33template<class _Traits, class _Ax>
+
34static DWORD WlanReasonCodeToString(_In_ DWORD dwReasonCode, _Inout_ std::basic_string<wchar_t, _Traits, _Ax> &sValue, __reserved PVOID pReserved)
35{
36 DWORD dwSize = 0;
@@ -123,11 +129,13 @@ $(function() {
58 }
59 }
60}
+
61
63
64namespace winstd
65{
68
+
72 template <class _Ty> struct WlanFreeMemory_delete
73 {
74 typedef WlanFreeMemory_delete<_Ty> _Myt;
@@ -136,52 +144,68 @@ $(function() {
80
84 template <class _Ty2> WlanFreeMemory_delete(const WlanFreeMemory_delete<_Ty2>&) {}
85
+
89 void operator()(_Ty *_Ptr) const
90 {
91 WlanFreeMemory(_Ptr);
92 }
+
93 };
+
94
+
98 template <class _Ty> struct WlanFreeMemory_delete<_Ty[]>
99 {
100 typedef WlanFreeMemory_delete<_Ty> _Myt;
101
105 WlanFreeMemory_delete() {}
106
+
110 void operator()(_Ty *_Ptr) const
111 {
112 WlanFreeMemory(_Ptr);
113 }
+
114
118 template<class _Other>
+
119 void operator()(_Other *) const
120 {
121 WlanFreeMemory(_Ptr);
122 }
+
123 };
+
124
+
130 class wlan_handle : public handle<HANDLE, NULL>
131 {
132 WINSTD_HANDLE_IMPL(wlan_handle, NULL)
133
134 public:
+
140 virtual ~wlan_handle()
141 {
142 if (m_h != invalid)
144 }
+
145
146 protected:
+
152 void free_internal() noexcept override
153 {
154 WlanCloseHandle(m_h, NULL);
155 }
+
156 };
+
157
159}
160
163
169#pragma warning(suppress: 4505) // Don't warn on unused code
+
170static DWORD WlanOpenHandle(
171 _In_ DWORD dwClientVersion,
172 _Reserved_ PVOID pReserved,
@@ -194,14 +218,15 @@ $(function() {
179 handle.attach(h);
180 return dwResult;
181}
+
182
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< HANDLE, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< HANDLE, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
winstd::wlan_handle
WLAN handle wrapper.
Definition WLAN.h:131
winstd::wlan_handle::~wlan_handle
virtual ~wlan_handle()
Closes a connection to the server.
Definition WLAN.h:140
winstd::wlan_handle::free_internal
void free_internal() noexcept override
Closes a connection to the server.
Definition WLAN.h:152
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle< HANDLE, NULL >::invalid
static const HANDLE invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle< HANDLE, NULL >::invalid
static const HANDLE invalid
Invalid handle value.
Definition Common.h:993
WlanOpenHandle
static DWORD WlanOpenHandle(DWORD dwClientVersion, PVOID pReserved, PDWORD pdwNegotiatedVersion, winstd::wlan_handle &handle)
Opens a connection to the server.
Definition WLAN.h:170
WlanReasonCodeToString
static DWORD WlanReasonCodeToString(DWORD dwReasonCode, std::basic_string< wchar_t, _Traits, _Ax > &sValue, __reserved PVOID pReserved)
Retrieves a string that describes a specified reason code and stores it in a std::wstring string.
Definition WLAN.h:34
winstd::WlanFreeMemory_delete< _Ty[]>::WlanFreeMemory_delete
WlanFreeMemory_delete()
Default construct.
Definition WLAN.h:105
@@ -216,7 +241,7 @@ $(function() { diff --git a/_win_8h_source.html b/_win_8h_source.html index 2df7c925..51da3c10 100644 --- a/_win_8h_source.html +++ b/_win_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/Win.h Source File @@ -30,7 +30,7 @@ - + +
11#include "Common.h"
12#include <AclAPI.h>
13#include <tlhelp32.h>
-
14#include <string>
-
15#include <vector>
-
16
-
17#pragma warning(push)
-
18#pragma warning(disable: 4505) // Don't warn on unused code
-
19
-
22
-
24template<class _Traits, class _Ax>
-
25static DWORD GetModuleFileNameA(_In_opt_ HMODULE hModule, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
26{
-
27 assert(0); // TODO: Test this code.
-
28
-
29 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
-
30
-
31 // Try with stack buffer first.
-
32 DWORD dwResult = ::GetModuleFileNameA(hModule, szStackBuffer, _countof(szStackBuffer));
-
33 if (dwResult < _countof(szStackBuffer)) {
-
34 // Copy from stack.
-
35 sValue.assign(szStackBuffer, dwResult);
-
36 return dwResult;
-
37 } else {
-
38 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(char);; dwCapacity *= 2) {
-
39 // Allocate on heap and retry.
-
40 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
-
41 dwResult = ::GetModuleFileNameA(hModule, szBuffer.get(), dwCapacity);
-
42 if (dwResult < dwCapacity) {
-
43 sValue.assign(szBuffer.get(), dwResult);
-
44 return dwResult;
-
45 }
-
46 }
-
47 }
-
48}
-
49
-
55template<class _Traits, class _Ax>
-
56static DWORD GetModuleFileNameW(_In_opt_ HMODULE hModule, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
57{
-
58 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
59
-
60 // Try with stack buffer first.
-
61 DWORD dwResult = ::GetModuleFileNameW(hModule, szStackBuffer, _countof(szStackBuffer));
-
62 if (dwResult < _countof(szStackBuffer)) {
-
63 // Copy from stack.
-
64 sValue.assign(szStackBuffer, dwResult);
-
65 return dwResult;
-
66 } else {
-
67 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t);; dwCapacity *= 2) {
-
68 // Allocate on heap and retry.
-
69 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
-
70 dwResult = ::GetModuleFileNameW(hModule, szBuffer.get(), dwCapacity);
-
71 if (dwResult < dwCapacity) {
-
72 sValue.assign(szBuffer.get(), dwResult);
-
73 return dwResult;
-
74 }
-
75 }
-
76 }
-
77}
-
78
-
80template<class _Traits, class _Ax>
-
81static _Success_(return != 0) int GetWindowTextA(_In_ HWND hWnd, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
82{
-
83 assert(0); // TODO: Test this code.
-
84
-
85 int iResult;
-
86
-
87 // Query the final string length first.
-
88 iResult = ::GetWindowTextLengthA(hWnd);
-
89 if (iResult > 0) {
-
90 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(char)) {
-
91 // Read string data to stack.
-
92 char szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
-
93 iResult = ::GetWindowTextA(hWnd, szBuffer, _countof(szBuffer));
-
94 sValue.assign(szBuffer, iResult);
-
95 } else {
-
96 // Allocate buffer on heap and read the string data into it.
-
97 std::unique_ptr<char[]> szBuffer(new char[++iResult]);
-
98 iResult = ::GetWindowTextA(hWnd, szBuffer.get(), iResult);
-
99 sValue.assign(szBuffer.get(), iResult);
-
100 }
-
101 return iResult;
-
102 }
-
103
-
104 sValue.clear();
-
105 return 0;
-
106}
-
107
-
113template<class _Traits, class _Ax>
-
114static _Success_(return != 0) int GetWindowTextW(_In_ HWND hWnd, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
115{
-
116 assert(0); // TODO: Test this code.
-
117
-
118 int iResult;
-
119
-
120 // Query the final string length first.
-
121 iResult = ::GetWindowTextLengthW(hWnd);
-
122 if (iResult > 0) {
-
123 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)) {
-
124 // Read string data to stack.
-
125 wchar_t szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
126 iResult = ::GetWindowTextW(hWnd, szBuffer, _countof(szBuffer));
-
127 sValue.assign(szBuffer, iResult);
-
128 } else {
-
129 // Allocate buffer on heap and read the string data into it.
-
130 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++iResult]);
-
131 iResult = ::GetWindowTextW(hWnd, szBuffer.get(), iResult);
-
132 sValue.assign(szBuffer.get(), iResult);
-
133 }
-
134 return iResult;
-
135 }
-
136
-
137 sValue.clear();
-
138 return 0;
-
139}
-
140
-
142template<class _Ty, class _Ax>
-
143static _Success_(return != 0) BOOL GetFileVersionInfoA(_In_z_ LPCSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
-
144{
-
145 assert(0); // TODO: Test this code.
-
146
-
147 // Get version info size.
-
148 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeA(lptstrFilename, &dwHandle);
-
149 if (dwVerInfoSize != 0) {
-
150 // Read version info.
-
151 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
152 return ::GetFileVersionInfoA(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
-
153 } else
-
154 return FALSE;
-
155}
-
156
-
162template<class _Ty, class _Ax>
-
163static _Success_(return != 0) BOOL GetFileVersionInfoW(_In_z_ LPCWSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
-
164{
-
165 assert(0); // TODO: Test this code.
-
166
-
167 // Get version info size.
-
168 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeW(lptstrFilename, &dwHandle);
-
169 if (dwVerInfoSize != 0) {
-
170 // Read version info.
-
171 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
172 return ::GetFileVersionInfoW(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
-
173 } else
-
174 return FALSE;
-
175}
-
176
-
178template<class _Traits, class _Ax>
-
179static _Success_(return != 0) DWORD ExpandEnvironmentStringsA(_In_z_ LPCSTR lpSrc, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
180{
-
181 assert(0); // TODO: Test this code.
-
182
-
183 for (DWORD dwSizeOut = (DWORD)strlen(lpSrc) + 0x100;;) {
-
184 DWORD dwSizeIn = dwSizeOut;
-
185 std::unique_ptr<char[]> szBuffer(new char[(size_t)dwSizeIn + 2]); // Note: ANSI version requires one extra char.
-
186 dwSizeOut = ::ExpandEnvironmentStringsA(lpSrc, szBuffer.get(), dwSizeIn);
-
187 if (dwSizeOut == 0) {
-
188 // Error or zero-length input.
-
189 break;
-
190 } else if (dwSizeOut <= dwSizeIn) {
-
191 // The buffer was sufficient.
-
192 sValue.assign(szBuffer.get(), dwSizeOut - 1);
-
193 return dwSizeOut;
-
194 }
-
195 }
-
196
-
197 sValue.clear();
-
198 return 0;
-
199}
-
200
-
206template<class _Traits, class _Ax>
-
207static _Success_(return != 0) DWORD ExpandEnvironmentStringsW(_In_z_ LPCWSTR lpSrc, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
208{
-
209 for (DWORD dwSizeOut = (DWORD)wcslen(lpSrc) + 0x100;;) {
-
210 DWORD dwSizeIn = dwSizeOut;
-
211 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(size_t)dwSizeIn + 1]);
-
212 dwSizeOut = ::ExpandEnvironmentStringsW(lpSrc, szBuffer.get(), dwSizeIn);
-
213 if (dwSizeOut == 0) {
-
214 // Error or zero-length input.
-
215 break;
-
216 } else if (dwSizeOut <= dwSizeIn) {
-
217 // The buffer was sufficient.
-
218 sValue.assign(szBuffer.get(), dwSizeOut - 1);
-
219 return dwSizeOut;
-
220 }
-
221 }
-
222
-
223 sValue.clear();
-
224 return 0;
-
225}
-
226
-
228template<class _Traits, class _Ax>
-
229static VOID GuidToStringA(_In_ LPCGUID lpGuid, _Out_ std::basic_string<char, _Traits, _Ax> &str) noexcept
-
230{
-
231 assert(0); // TODO: Test this code.
-
232
-
233 sprintf(str, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
-
234 lpGuid->Data1,
-
235 lpGuid->Data2,
-
236 lpGuid->Data3,
-
237 lpGuid->Data4[0], lpGuid->Data4[1],
-
238 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
-
239}
-
240
-
247template<class _Traits, class _Ax>
-
248static VOID GuidToStringW(_In_ LPCGUID lpGuid, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str) noexcept
-
249{
-
250 assert(0); // TODO: Test this code.
-
251
-
252 sprintf(str, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
-
253 lpGuid->Data1,
-
254 lpGuid->Data2,
-
255 lpGuid->Data3,
-
256 lpGuid->Data4[0], lpGuid->Data4[1],
-
257 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
-
258}
-
259
-
261#ifdef _UNICODE
-
262#define GuidToString GuidToStringW
-
263#else
-
264#define GuidToString GuidToStringA
-
265#endif
-
266
-
268static _Success_(return) BOOL StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL) noexcept
-
269{
-
270 GUID g;
-
271 LPSTR lpszEnd;
-
272 unsigned long ulTmp;
-
273 unsigned long long ullTmp;
-
274
-
275 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
-
276 lpszGuid++;
-
277
-
278 g.Data1 = strtoul(lpszGuid, &lpszEnd, 16);
-
279 if (errno == ERANGE) return FALSE;
-
280 lpszGuid = lpszEnd;
-
281
-
282 if (*lpszGuid != '-') return FALSE;
-
283 lpszGuid++;
-
284
-
285 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
-
286 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
287 g.Data2 = static_cast<unsigned short>(ulTmp);
-
288 lpszGuid = lpszEnd;
-
289
-
290 if (*lpszGuid != '-') return FALSE;
-
291 lpszGuid++;
-
292
-
293 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
-
294 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
295 g.Data3 = static_cast<unsigned short>(ulTmp);
-
296 lpszGuid = lpszEnd;
-
297
-
298 if (*lpszGuid != '-') return FALSE;
-
299 lpszGuid++;
-
300
-
301 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
-
302 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
303 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
-
304 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
-
305 lpszGuid = lpszEnd;
-
306
-
307 if (*lpszGuid != '-') return FALSE;
-
308 lpszGuid++;
-
309
-
310 ullTmp = _strtoui64(lpszGuid, &lpszEnd, 16);
-
311 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
-
312 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
-
313 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
-
314 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
-
315 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
-
316 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
-
317 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
-
318 lpszGuid = lpszEnd;
-
319
-
320 if (*lpszGuid != '}') return FALSE;
-
321 lpszGuid++;
-
322
-
323 if (lpszGuidEnd)
-
324 *lpszGuidEnd = lpszGuid;
-
325
-
326 *lpGuid = g;
-
327 return TRUE;
-
328}
-
329
-
341static _Success_(return) BOOL StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL) noexcept
-
342{
-
343 GUID g;
-
344 LPWSTR lpszEnd;
-
345 unsigned long ulTmp;
-
346 unsigned long long ullTmp;
-
347
-
348 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
-
349 lpszGuid++;
-
350
-
351 g.Data1 = wcstoul(lpszGuid, &lpszEnd, 16);
-
352 if (errno == ERANGE) return FALSE;
-
353 lpszGuid = lpszEnd;
-
354
-
355 if (*lpszGuid != '-') return FALSE;
-
356 lpszGuid++;
-
357
-
358 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
-
359 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
360 g.Data2 = static_cast<unsigned short>(ulTmp);
-
361 lpszGuid = lpszEnd;
-
362
-
363 if (*lpszGuid != '-') return FALSE;
-
364 lpszGuid++;
-
365
-
366 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
-
367 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
368 g.Data3 = static_cast<unsigned short>(ulTmp);
-
369 lpszGuid = lpszEnd;
-
370
-
371 if (*lpszGuid != '-') return FALSE;
-
372 lpszGuid++;
-
373
-
374 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
-
375 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
-
376 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
-
377 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
-
378 lpszGuid = lpszEnd;
-
379
-
380 if (*lpszGuid != '-') return FALSE;
-
381 lpszGuid++;
-
382
-
383 ullTmp = _wcstoui64(lpszGuid, &lpszEnd, 16);
-
384 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
-
385 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
-
386 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
-
387 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
-
388 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
-
389 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
-
390 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
-
391 lpszGuid = lpszEnd;
-
392
-
393 if (*lpszGuid != '}') return FALSE;
-
394 lpszGuid++;
-
395
-
396 if (lpszGuidEnd)
-
397 *lpszGuidEnd = lpszGuid;
-
398
-
399 *lpGuid = g;
-
400 return TRUE;
-
401}
-
402
-
404#ifdef _UNICODE
-
405#define StringToGuid StringToGuidW
-
406#else
-
407#define StringToGuid StringToGuidA
-
408#endif
-
409
-
428template<class _Traits, class _Ax>
-
429static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
-
430{
-
431 LSTATUS lResult;
-
432 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
433 DWORD dwSize = sizeof(aStackBuffer), dwType;
-
434
-
435 // Try with stack buffer first.
-
436 lResult = ::RegQueryValueExA(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
-
437 if (lResult == ERROR_SUCCESS) {
-
438 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
439 // The value is REG_SZ or REG_MULTI_SZ.
-
440 dwSize /= sizeof(CHAR);
-
441 sValue.assign(reinterpret_cast<LPCSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
442 } else if (dwType == REG_EXPAND_SZ) {
-
443 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
-
444 if (::ExpandEnvironmentStringsA(reinterpret_cast<LPCSTR>(aStackBuffer), sValue) == 0)
-
445 lResult = ::GetLastError();
-
446 } else {
-
447 // The value is not a string type.
-
448 lResult = ERROR_INVALID_DATA;
-
449 }
-
450 } else if (lResult == ERROR_MORE_DATA) {
-
451 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
452 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
-
453 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
-
454 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
455 dwSize /= sizeof(CHAR);
-
456 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
457 }
-
458 } else if (dwType == REG_EXPAND_SZ) {
-
459 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
-
460 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
-
461 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
462 if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0)
-
463 lResult = ::GetLastError();
-
464 }
-
465 } else {
-
466 // The value is not a string type.
-
467 lResult = ERROR_INVALID_DATA;
-
468 }
-
469 }
-
470
-
471 return lResult;
-
472}
-
473
-
492template<class _Traits, class _Ax>
-
493static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
-
494{
-
495 LSTATUS lResult;
-
496 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
497 DWORD dwSize = sizeof(aStackBuffer), dwType;
-
498
-
499 // Try with stack buffer first.
-
500 lResult = ::RegQueryValueExW(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
-
501 if (lResult == ERROR_SUCCESS) {
-
502 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
503 // The value is REG_SZ or REG_MULTI_SZ.
-
504 dwSize /= sizeof(WCHAR);
-
505 sValue.assign(reinterpret_cast<LPCWSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCWSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
506 } else if (dwType == REG_EXPAND_SZ) {
-
507 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
-
508 if (::ExpandEnvironmentStringsW(reinterpret_cast<LPCWSTR>(aStackBuffer), sValue) == 0)
-
509 lResult = ::GetLastError();
-
510 } else {
-
511 // The value is not a string type.
-
512 lResult = ERROR_INVALID_DATA;
-
513 }
-
514 } else if (lResult == ERROR_MORE_DATA) {
-
515 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
-
516 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
-
517 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
-
518 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
519 dwSize /= sizeof(WCHAR);
-
520 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
-
521 }
-
522 } else if (dwType == REG_EXPAND_SZ) {
-
523 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
-
524 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
-
525 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
-
526 if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0)
-
527 lResult = ::GetLastError();
-
528 }
-
529 } else {
-
530 // The value is not a string type.
-
531 lResult = ERROR_INVALID_DATA;
-
532 }
-
533 }
-
534
-
535 return lResult;
-
536}
-
537
-
539template<class _Ty, class _Ax>
-
540static LSTATUS RegQueryValueExA(_In_ HKEY hKey, _In_opt_z_ LPCSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
-
541{
-
542 LSTATUS lResult;
-
543 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
544 DWORD dwSize = sizeof(aStackBuffer);
-
545
-
546 // Try with stack buffer first.
-
547 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
-
548 if (lResult == ERROR_SUCCESS) {
-
549 // Copy from stack buffer.
-
550 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
551 memcpy(aData.data(), aStackBuffer, dwSize);
-
552 } else if (lResult == ERROR_MORE_DATA) {
-
553 // Allocate buffer on heap and retry.
-
554 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
555 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
-
556 }
-
557
-
558 return lResult;
-
559}
-
560
-
566template<class _Ty, class _Ax>
-
567static LSTATUS RegQueryValueExW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
-
568{
-
569 LSTATUS lResult;
-
570 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
571 DWORD dwSize = sizeof(aStackBuffer);
-
572
-
573 // Try with stack buffer first.
-
574 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
-
575 if (lResult == ERROR_SUCCESS) {
-
576 // Copy from stack buffer.
-
577 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
578 memcpy(aData.data(), aStackBuffer, dwSize);
-
579 } else if (lResult == ERROR_MORE_DATA) {
-
580 // Allocate buffer on heap and retry.
-
581 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
-
582 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
-
583 }
-
584
-
585 return lResult;
-
586}
-
587
-
588#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
-
589
-
591template<class _Traits, class _Ax>
-
592static 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
-
593{
-
594 // According to "Remarks" section in MSDN documentation of RegLoadMUIString(),
-
595 // this function is defined but not implemented as ANSI variation.
-
596 assert(0);
-
597 return ERROR_CALL_NOT_IMPLEMENTED;
-
598}
-
599
-
605template<class _Traits, class _Ax>
-
606static 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
-
607{
-
608 LSTATUS lResult;
-
609 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
-
610 DWORD dwSize;
-
611
-
612 Flags &= ~REG_MUI_STRING_TRUNCATE;
-
613
-
614 // Try with stack buffer first.
-
615 lResult = RegLoadMUIStringW(hKey, pszValue, szStackBuffer, sizeof(szStackBuffer), &dwSize, Flags, pszDirectory);
-
616 if (lResult == ERROR_SUCCESS) {
-
617 // Copy from stack buffer.
-
618 sOut.assign(szStackBuffer, wcsnlen(szStackBuffer, dwSize/sizeof(wchar_t)));
-
619 } else if (lResult == ERROR_MORE_DATA) {
-
620 // Allocate buffer on heap and retry.
-
621 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(dwSize + sizeof(wchar_t) - 1)/sizeof(wchar_t)]);
-
622 sOut.assign(szBuffer.get(), (lResult = RegLoadMUIStringW(hKey, pszValue, szBuffer.get(), dwSize, &dwSize, Flags, pszDirectory)) == ERROR_SUCCESS ? wcsnlen(szBuffer.get(), dwSize/sizeof(wchar_t)) : 0);
-
623 }
-
624
-
625 return lResult;
-
626}
-
627
-
628#endif
-
629
-
635template<class _Traits, class _Ax>
-
636static _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
-
637{
-
638 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
639
-
640 // Try to convert to stack buffer first.
-
641 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
642 if (cch) {
-
643 // Copy from stack. Be careful not to include zero terminator.
-
644 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
645 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
646 // Query the required output size. Allocate buffer. Then convert again.
-
647 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
648 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
649 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
650 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
651 }
-
652
-
653 return cch;
-
654}
-
655
-
661template<class _Ax>
-
662static _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
-
663{
-
664 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
665
-
666 // Try to convert to stack buffer first.
-
667 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
668 if (cch) {
-
669 // Copy from stack.
-
670 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
671 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
672 // Query the required output size. Allocate buffer. Then convert again.
-
673 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
674 sMultiByteStr.resize(cch);
-
675 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
676 }
-
677
-
678 return cch;
-
679}
-
680
-
686template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
687static _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
-
688{
-
689 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
690
-
691 // Try to convert to stack buffer first.
-
692 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
693 if (cch) {
-
694 // Copy from stack.
-
695 sMultiByteStr.assign(szStackBuffer, cch);
-
696 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
697 // Query the required output size. Allocate buffer. Then convert again.
-
698 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
699 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
700 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
701 sMultiByteStr.assign(szBuffer.get(), cch);
-
702 }
-
703
-
704 return cch;
-
705}
-
706
-
714template<class _Traits, class _Ax>
-
715static _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
-
716{
-
717 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
718
-
719 // Try to convert to stack buffer first.
-
720 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
721 if (cch) {
-
722 // Copy from stack. Be careful not to include zero terminator.
-
723 sMultiByteStr.assign(szStackBuffer, cchWideChar != -1 ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
724 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
725 // Query the required output size. Allocate buffer. Then convert again.
-
726 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
727 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
728 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
729 sMultiByteStr.assign(szBuffer.get(), cchWideChar != -1 ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
730 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
-
731 }
-
732
-
733 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
734
-
735 return cch;
-
736}
-
737
-
745template<class _Ax>
-
746static _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
-
747{
-
748 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
749
-
750 // Try to convert to stack buffer first.
-
751 int cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
752 if (cch) {
-
753 // Copy from stack.
-
754 sMultiByteStr.assign(szStackBuffer, szStackBuffer + cch);
-
755 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
756 // Query the required output size. Allocate buffer. Then convert again.
-
757 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
758 sMultiByteStr.resize(cch);
-
759 cch = ::WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, sMultiByteStr.data(), cch, lpDefaultChar, lpUsedDefaultChar);
-
760 }
-
761
-
762 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
763
-
764 return cch;
-
765}
-
766
-
774template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
775static _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
-
776{
-
777 CHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(CHAR)];
-
778
-
779 // Try to convert to stack buffer first.
-
780 int cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, lpUsedDefaultChar);
-
781 if (cch) {
-
782 // Copy from stack.
-
783 sMultiByteStr.assign(szStackBuffer, cch);
-
784 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
785 // Query the required output size. Allocate buffer. Then convert again.
-
786 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), NULL, 0, lpDefaultChar, lpUsedDefaultChar);
-
787 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
788 cch = ::WideCharToMultiByte(CodePage, dwFlags, sWideCharStr.c_str(), (int)sWideCharStr.length(), szBuffer.get(), cch, lpDefaultChar, lpUsedDefaultChar);
-
789 sMultiByteStr.assign(szBuffer.get(), cch);
-
790 SecureZeroMemory(szBuffer.get(), sizeof(CHAR)*cch);
-
791 }
-
792
-
793 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
794
-
795 return cch;
-
796}
-
797
-
803template<class _Traits, class _Ax>
-
804static _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
-
805{
-
806 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
807
-
808 // Try to convert to stack buffer first.
-
809 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
810 if (cch) {
-
811 // Copy from stack.
-
812 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
813 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
814 // Query the required output size. Allocate buffer. Then convert again.
-
815 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
816 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
817 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
-
818 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
819 }
-
820
-
821 return cch;
-
822}
-
823
-
829template<class _Ax>
-
830static _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
-
831{
-
832 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
833
-
834 // Try to convert to stack buffer first.
-
835 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
836 if (cch) {
-
837 // Copy from stack.
-
838 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
839 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
840 // Query the required output size. Allocate buffer. Then convert again.
-
841 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
842 sWideCharStr.resize(cch);
-
843 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
844 }
-
845
-
846 return cch;
-
847}
-
848
-
854template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
855static _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
-
856{
-
857 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
858
-
859 // Try to convert to stack buffer first.
-
860 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
861 if (cch) {
-
862 // Copy from stack.
-
863 sWideCharStr.assign(szStackBuffer, cch);
-
864 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
865 // Query the required output size. Allocate buffer. Then convert again.
-
866 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
867 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
868 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
-
869 sWideCharStr.assign(szBuffer.get(), cch);
-
870 }
-
871
-
872 return cch;
-
873}
-
874
-
882template<class _Traits, class _Ax>
-
883static _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
-
884{
-
885 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
886
-
887 // Try to convert to stack buffer first.
-
888 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
889 if (cch) {
-
890 // Copy from stack.
-
891 sWideCharStr.assign(szStackBuffer, cbMultiByte != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
892 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
893 // Query the required output size. Allocate buffer. Then convert again.
-
894 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
895 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
896 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szBuffer.get(), cch);
-
897 sWideCharStr.assign(szBuffer.get(), cbMultiByte != -1 ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
-
898 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
-
899 }
-
900
-
901 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
902
-
903 return cch;
-
904}
+
14#include <winsvc.h>
+
15#include <string>
+
16#include <vector>
+
17
+
18#pragma warning(push)
+
19#pragma warning(disable: 4505) // Don't warn on unused code
+
20
+
23
+
25template<class _Traits, class _Ax>
+
+
26static DWORD GetModuleFileNameA(_In_opt_ HMODULE hModule, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
27{
+
28 assert(0); // TODO: Test this code.
+
29
+
30 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
31
+
32 // Try with stack buffer first.
+
33 DWORD dwResult = ::GetModuleFileNameA(hModule, szStackBuffer, _countof(szStackBuffer));
+
34 if (dwResult < _countof(szStackBuffer)) {
+
35 // Copy from stack.
+
36 sValue.assign(szStackBuffer, dwResult);
+
37 return dwResult;
+
38 } else {
+
39 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(char);; dwCapacity *= 2) {
+
40 // Allocate on heap and retry.
+
41 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
+
42 dwResult = ::GetModuleFileNameA(hModule, szBuffer.get(), dwCapacity);
+
43 if (dwResult < dwCapacity) {
+
44 sValue.assign(szBuffer.get(), dwResult);
+
45 return dwResult;
+
46 }
+
47 }
+
48 }
+
49}
+
+
50
+
56template<class _Traits, class _Ax>
+
+
57static DWORD GetModuleFileNameW(_In_opt_ HMODULE hModule, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
58{
+
59 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
60
+
61 // Try with stack buffer first.
+
62 DWORD dwResult = ::GetModuleFileNameW(hModule, szStackBuffer, _countof(szStackBuffer));
+
63 if (dwResult < _countof(szStackBuffer)) {
+
64 // Copy from stack.
+
65 sValue.assign(szStackBuffer, dwResult);
+
66 return dwResult;
+
67 } else {
+
68 for (DWORD dwCapacity = 2*WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t);; dwCapacity *= 2) {
+
69 // Allocate on heap and retry.
+
70 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
+
71 dwResult = ::GetModuleFileNameW(hModule, szBuffer.get(), dwCapacity);
+
72 if (dwResult < dwCapacity) {
+
73 sValue.assign(szBuffer.get(), dwResult);
+
74 return dwResult;
+
75 }
+
76 }
+
77 }
+
78}
+
+
79
+
81template<class _Traits, class _Ax>
+
+
82static _Success_(return != 0) int GetWindowTextA(_In_ HWND hWnd, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
83{
+
84 assert(0); // TODO: Test this code.
+
85
+
86 int iResult;
+
87
+
88 // Query the final string length first.
+
89 iResult = ::GetWindowTextLengthA(hWnd);
+
90 if (iResult > 0) {
+
91 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(char)) {
+
92 // Read string data to stack.
+
93 char szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(char)];
+
94 iResult = ::GetWindowTextA(hWnd, szBuffer, _countof(szBuffer));
+
95 sValue.assign(szBuffer, iResult);
+
96 } else {
+
97 // Allocate buffer on heap and read the string data into it.
+
98 std::unique_ptr<char[]> szBuffer(new char[++iResult]);
+
99 iResult = ::GetWindowTextA(hWnd, szBuffer.get(), iResult);
+
100 sValue.assign(szBuffer.get(), iResult);
+
101 }
+
102 return iResult;
+
103 }
+
104
+
105 sValue.clear();
+
106 return 0;
+
107}
+
+
108
+
114template<class _Traits, class _Ax>
+
+
115static _Success_(return != 0) int GetWindowTextW(_In_ HWND hWnd, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
116{
+
117 assert(0); // TODO: Test this code.
+
118
+
119 int iResult;
+
120
+
121 // Query the final string length first.
+
122 iResult = ::GetWindowTextLengthW(hWnd);
+
123 if (iResult > 0) {
+
124 if (++iResult < WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)) {
+
125 // Read string data to stack.
+
126 wchar_t szBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
127 iResult = ::GetWindowTextW(hWnd, szBuffer, _countof(szBuffer));
+
128 sValue.assign(szBuffer, iResult);
+
129 } else {
+
130 // Allocate buffer on heap and read the string data into it.
+
131 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[++iResult]);
+
132 iResult = ::GetWindowTextW(hWnd, szBuffer.get(), iResult);
+
133 sValue.assign(szBuffer.get(), iResult);
+
134 }
+
135 return iResult;
+
136 }
+
137
+
138 sValue.clear();
+
139 return 0;
+
140}
+
+
141
+
143template<class _Ty, class _Ax>
+
+
144static _Success_(return != 0) BOOL GetFileVersionInfoA(_In_z_ LPCSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
+
145{
+
146 assert(0); // TODO: Test this code.
+
147
+
148 // Get version info size.
+
149 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeA(lptstrFilename, &dwHandle);
+
150 if (dwVerInfoSize != 0) {
+
151 // Read version info.
+
152 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
153 return ::GetFileVersionInfoA(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
+
154 } else
+
155 return FALSE;
+
156}
+
+
157
+
163template<class _Ty, class _Ax>
+
+
164static _Success_(return != 0) BOOL GetFileVersionInfoW(_In_z_ LPCWSTR lptstrFilename, __reserved DWORD dwHandle, _Out_ std::vector<_Ty, _Ax> &aValue) noexcept
+
165{
+
166 assert(0); // TODO: Test this code.
+
167
+
168 // Get version info size.
+
169 DWORD dwVerInfoSize = ::GetFileVersionInfoSizeW(lptstrFilename, &dwHandle);
+
170 if (dwVerInfoSize != 0) {
+
171 // Read version info.
+
172 aValue.resize((dwVerInfoSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
173 return ::GetFileVersionInfoW(lptstrFilename, dwHandle, dwVerInfoSize, aValue.data());
+
174 } else
+
175 return FALSE;
+
176}
+
+
177
+
179template<class _Traits, class _Ax>
+
+
180static _Success_(return != 0) DWORD ExpandEnvironmentStringsA(_In_z_ LPCSTR lpSrc, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
181{
+
182 assert(0); // TODO: Test this code.
+
183
+
184 for (DWORD dwSizeOut = (DWORD)strlen(lpSrc) + 0x100;;) {
+
185 DWORD dwSizeIn = dwSizeOut;
+
186 std::unique_ptr<char[]> szBuffer(new char[(size_t)dwSizeIn + 2]); // Note: ANSI version requires one extra char.
+
187 dwSizeOut = ::ExpandEnvironmentStringsA(lpSrc, szBuffer.get(), dwSizeIn);
+
188 if (dwSizeOut == 0) {
+
189 // Error or zero-length input.
+
190 break;
+
191 } else if (dwSizeOut <= dwSizeIn) {
+
192 // The buffer was sufficient.
+
193 sValue.assign(szBuffer.get(), dwSizeOut - 1);
+
194 return dwSizeOut;
+
195 }
+
196 }
+
197
+
198 sValue.clear();
+
199 return 0;
+
200}
+
+
201
+
207template<class _Traits, class _Ax>
+
+
208static _Success_(return != 0) DWORD ExpandEnvironmentStringsW(_In_z_ LPCWSTR lpSrc, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
209{
+
210 for (DWORD dwSizeOut = (DWORD)wcslen(lpSrc) + 0x100;;) {
+
211 DWORD dwSizeIn = dwSizeOut;
+
212 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(size_t)dwSizeIn + 1]);
+
213 dwSizeOut = ::ExpandEnvironmentStringsW(lpSrc, szBuffer.get(), dwSizeIn);
+
214 if (dwSizeOut == 0) {
+
215 // Error or zero-length input.
+
216 break;
+
217 } else if (dwSizeOut <= dwSizeIn) {
+
218 // The buffer was sufficient.
+
219 sValue.assign(szBuffer.get(), dwSizeOut - 1);
+
220 return dwSizeOut;
+
221 }
+
222 }
+
223
+
224 sValue.clear();
+
225 return 0;
+
226}
+
+
227
+
229template<class _Traits, class _Ax>
+
+
230static VOID GuidToStringA(_In_ LPCGUID lpGuid, _Out_ std::basic_string<char, _Traits, _Ax> &str) noexcept
+
231{
+
232 assert(0); // TODO: Test this code.
+
233
+
234 sprintf(str, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+
235 lpGuid->Data1,
+
236 lpGuid->Data2,
+
237 lpGuid->Data3,
+
238 lpGuid->Data4[0], lpGuid->Data4[1],
+
239 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
+
240}
+
+
241
+
248template<class _Traits, class _Ax>
+
+
249static VOID GuidToStringW(_In_ LPCGUID lpGuid, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &str) noexcept
+
250{
+
251 assert(0); // TODO: Test this code.
+
252
+
253 sprintf(str, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+
254 lpGuid->Data1,
+
255 lpGuid->Data2,
+
256 lpGuid->Data3,
+
257 lpGuid->Data4[0], lpGuid->Data4[1],
+
258 lpGuid->Data4[2], lpGuid->Data4[3], lpGuid->Data4[4], lpGuid->Data4[5], lpGuid->Data4[6], lpGuid->Data4[7]);
+
259}
+
+
260
+
262#ifdef _UNICODE
+
263#define GuidToString GuidToStringW
+
264#else
+
265#define GuidToString GuidToStringA
+
266#endif
+
267
+
+
269static _Success_(return) BOOL StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCSTR *lpszGuidEnd = NULL) noexcept
+
270{
+
271 GUID g;
+
272 LPSTR lpszEnd;
+
273 unsigned long ulTmp;
+
274 unsigned long long ullTmp;
+
275
+
276 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
+
277 lpszGuid++;
+
278
+
279 g.Data1 = strtoul(lpszGuid, &lpszEnd, 16);
+
280 if (errno == ERANGE) return FALSE;
+
281 lpszGuid = lpszEnd;
+
282
+
283 if (*lpszGuid != '-') return FALSE;
+
284 lpszGuid++;
+
285
+
286 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
287 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
288 g.Data2 = static_cast<unsigned short>(ulTmp);
+
289 lpszGuid = lpszEnd;
+
290
+
291 if (*lpszGuid != '-') return FALSE;
+
292 lpszGuid++;
+
293
+
294 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
295 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
296 g.Data3 = static_cast<unsigned short>(ulTmp);
+
297 lpszGuid = lpszEnd;
+
298
+
299 if (*lpszGuid != '-') return FALSE;
+
300 lpszGuid++;
+
301
+
302 ulTmp = strtoul(lpszGuid, &lpszEnd, 16);
+
303 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
304 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
+
305 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
+
306 lpszGuid = lpszEnd;
+
307
+
308 if (*lpszGuid != '-') return FALSE;
+
309 lpszGuid++;
+
310
+
311 ullTmp = _strtoui64(lpszGuid, &lpszEnd, 16);
+
312 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
+
313 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
+
314 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
+
315 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
+
316 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
+
317 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
+
318 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
+
319 lpszGuid = lpszEnd;
+
320
+
321 if (*lpszGuid != '}') return FALSE;
+
322 lpszGuid++;
+
323
+
324 if (lpszGuidEnd)
+
325 *lpszGuidEnd = lpszGuid;
+
326
+
327 *lpGuid = g;
+
328 return TRUE;
+
329}
+
+
330
+
+
342static _Success_(return) BOOL StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_opt_ LPCWSTR *lpszGuidEnd = NULL) noexcept
+
343{
+
344 GUID g;
+
345 LPWSTR lpszEnd;
+
346 unsigned long ulTmp;
+
347 unsigned long long ullTmp;
+
348
+
349 if (!lpszGuid || !lpGuid || *lpszGuid != '{') return FALSE;
+
350 lpszGuid++;
+
351
+
352 g.Data1 = wcstoul(lpszGuid, &lpszEnd, 16);
+
353 if (errno == ERANGE) return FALSE;
+
354 lpszGuid = lpszEnd;
+
355
+
356 if (*lpszGuid != '-') return FALSE;
+
357 lpszGuid++;
+
358
+
359 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
360 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
361 g.Data2 = static_cast<unsigned short>(ulTmp);
+
362 lpszGuid = lpszEnd;
+
363
+
364 if (*lpszGuid != '-') return FALSE;
+
365 lpszGuid++;
+
366
+
367 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
368 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
369 g.Data3 = static_cast<unsigned short>(ulTmp);
+
370 lpszGuid = lpszEnd;
+
371
+
372 if (*lpszGuid != '-') return FALSE;
+
373 lpszGuid++;
+
374
+
375 ulTmp = wcstoul(lpszGuid, &lpszEnd, 16);
+
376 if (errno == ERANGE || ulTmp > 0xFFFF) return FALSE;
+
377 g.Data4[0] = static_cast<unsigned char>((ulTmp >> 8) & 0xff);
+
378 g.Data4[1] = static_cast<unsigned char>( ulTmp & 0xff);
+
379 lpszGuid = lpszEnd;
+
380
+
381 if (*lpszGuid != '-') return FALSE;
+
382 lpszGuid++;
+
383
+
384 ullTmp = _wcstoui64(lpszGuid, &lpszEnd, 16);
+
385 if (errno == ERANGE || ullTmp > 0xFFFFFFFFFFFF) return FALSE;
+
386 g.Data4[2] = static_cast<unsigned char>((ullTmp >> 40) & 0xff);
+
387 g.Data4[3] = static_cast<unsigned char>((ullTmp >> 32) & 0xff);
+
388 g.Data4[4] = static_cast<unsigned char>((ullTmp >> 24) & 0xff);
+
389 g.Data4[5] = static_cast<unsigned char>((ullTmp >> 16) & 0xff);
+
390 g.Data4[6] = static_cast<unsigned char>((ullTmp >> 8) & 0xff);
+
391 g.Data4[7] = static_cast<unsigned char>( ullTmp & 0xff);
+
392 lpszGuid = lpszEnd;
+
393
+
394 if (*lpszGuid != '}') return FALSE;
+
395 lpszGuid++;
+
396
+
397 if (lpszGuidEnd)
+
398 *lpszGuidEnd = lpszGuid;
+
399
+
400 *lpGuid = g;
+
401 return TRUE;
+
402}
+
+
403
+
405#ifdef _UNICODE
+
406#define StringToGuid StringToGuidW
+
407#else
+
408#define StringToGuid StringToGuidA
+
409#endif
+
410
+
429template<class _Traits, class _Ax>
+
+
430static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCSTR pszName, _Out_ std::basic_string<char, _Traits, _Ax> &sValue) noexcept
+
431{
+
432 LSTATUS lResult;
+
433 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
434 DWORD dwSize = sizeof(aStackBuffer), dwType;
+
435
+
436 // Try with stack buffer first.
+
437 lResult = ::RegQueryValueExA(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
+
438 if (lResult == ERROR_SUCCESS) {
+
439 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
440 // The value is REG_SZ or REG_MULTI_SZ.
+
441 dwSize /= sizeof(CHAR);
+
442 sValue.assign(reinterpret_cast<LPCSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
443 } else if (dwType == REG_EXPAND_SZ) {
+
444 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
+
445 if (::ExpandEnvironmentStringsA(reinterpret_cast<LPCSTR>(aStackBuffer), sValue) == 0)
+
446 lResult = ::GetLastError();
+
447 } else {
+
448 // The value is not a string type.
+
449 lResult = ERROR_INVALID_DATA;
+
450 }
+
451 } else if (lResult == ERROR_MORE_DATA) {
+
452 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
453 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
+
454 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
+
455 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
456 dwSize /= sizeof(CHAR);
+
457 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
458 }
+
459 } else if (dwType == REG_EXPAND_SZ) {
+
460 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
+
461 std::unique_ptr<CHAR[]> szBuffer(new CHAR[dwSize / sizeof(CHAR)]);
+
462 if ((lResult = ::RegQueryValueExA(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
463 if (::ExpandEnvironmentStringsA(szBuffer.get(), sValue) == 0)
+
464 lResult = ::GetLastError();
+
465 }
+
466 } else {
+
467 // The value is not a string type.
+
468 lResult = ERROR_INVALID_DATA;
+
469 }
+
470 }
+
471
+
472 return lResult;
+
473}
+
+
474
+
493template<class _Traits, class _Ax>
+
+
494static LSTATUS RegQueryStringValue(_In_ HKEY hReg, _In_z_ LPCWSTR pszName, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue) noexcept
+
495{
+
496 LSTATUS lResult;
+
497 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
498 DWORD dwSize = sizeof(aStackBuffer), dwType;
+
499
+
500 // Try with stack buffer first.
+
501 lResult = ::RegQueryValueExW(hReg, pszName, NULL, &dwType, aStackBuffer, &dwSize);
+
502 if (lResult == ERROR_SUCCESS) {
+
503 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
504 // The value is REG_SZ or REG_MULTI_SZ.
+
505 dwSize /= sizeof(WCHAR);
+
506 sValue.assign(reinterpret_cast<LPCWSTR>(aStackBuffer), dwSize && reinterpret_cast<LPCWSTR>(aStackBuffer)[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
507 } else if (dwType == REG_EXPAND_SZ) {
+
508 // The value is REG_EXPAND_SZ. Expand it from stack buffer.
+
509 if (::ExpandEnvironmentStringsW(reinterpret_cast<LPCWSTR>(aStackBuffer), sValue) == 0)
+
510 lResult = ::GetLastError();
+
511 } else {
+
512 // The value is not a string type.
+
513 lResult = ERROR_INVALID_DATA;
+
514 }
+
515 } else if (lResult == ERROR_MORE_DATA) {
+
516 if (dwType == REG_SZ || dwType == REG_MULTI_SZ) {
+
517 // The value is REG_SZ or REG_MULTI_SZ. Read it now.
+
518 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
+
519 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
520 dwSize /= sizeof(WCHAR);
+
521 sValue.assign(szBuffer.get(), dwSize && szBuffer[dwSize - 1] == 0 ? dwSize - 1 : dwSize);
+
522 }
+
523 } else if (dwType == REG_EXPAND_SZ) {
+
524 // The value is REG_EXPAND_SZ. Read it and expand environment variables.
+
525 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[dwSize / sizeof(WCHAR)]);
+
526 if ((lResult = ::RegQueryValueExW(hReg, pszName, NULL, NULL, reinterpret_cast<LPBYTE>(szBuffer.get()), &dwSize)) == ERROR_SUCCESS) {
+
527 if (::ExpandEnvironmentStringsW(szBuffer.get(), sValue) == 0)
+
528 lResult = ::GetLastError();
+
529 }
+
530 } else {
+
531 // The value is not a string type.
+
532 lResult = ERROR_INVALID_DATA;
+
533 }
+
534 }
+
535
+
536 return lResult;
+
537}
+
+
538
+
540template<class _Ty, class _Ax>
+
+
541static LSTATUS RegQueryValueExA(_In_ HKEY hKey, _In_opt_z_ LPCSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
+
542{
+
543 LSTATUS lResult;
+
544 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
545 DWORD dwSize = sizeof(aStackBuffer);
+
546
+
547 // Try with stack buffer first.
+
548 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
+
549 if (lResult == ERROR_SUCCESS) {
+
550 // Copy from stack buffer.
+
551 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
552 memcpy(aData.data(), aStackBuffer, dwSize);
+
553 } else if (lResult == ERROR_MORE_DATA) {
+
554 // Allocate buffer on heap and retry.
+
555 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
556 lResult = RegQueryValueExA(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
+
557 }
+
558
+
559 return lResult;
+
560}
+
+
561
+
567template<class _Ty, class _Ax>
+
+
568static LSTATUS RegQueryValueExW(_In_ HKEY hKey, _In_opt_z_ LPCWSTR lpValueName, __reserved LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_ std::vector<_Ty, _Ax> &aData) noexcept
+
569{
+
570 LSTATUS lResult;
+
571 BYTE aStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
572 DWORD dwSize = sizeof(aStackBuffer);
+
573
+
574 // Try with stack buffer first.
+
575 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, aStackBuffer, &dwSize);
+
576 if (lResult == ERROR_SUCCESS) {
+
577 // Copy from stack buffer.
+
578 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
579 memcpy(aData.data(), aStackBuffer, dwSize);
+
580 } else if (lResult == ERROR_MORE_DATA) {
+
581 // Allocate buffer on heap and retry.
+
582 aData.resize((dwSize + sizeof(_Ty) - 1) / sizeof(_Ty));
+
583 lResult = RegQueryValueExW(hKey, lpValueName, lpReserved, NULL, reinterpret_cast<LPBYTE>(aData.data()), &dwSize);
+
584 }
+
585
+
586 return lResult;
+
587}
+
+
588
+
589#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+
590
+
592template<class _Traits, class _Ax>
+
+
593static 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
+
594{
+
595 // According to "Remarks" section in MSDN documentation of RegLoadMUIString(),
+
596 // this function is defined but not implemented as ANSI variation.
+
597 assert(0);
+
598 return ERROR_CALL_NOT_IMPLEMENTED;
+
599}
+
+
600
+
606template<class _Traits, class _Ax>
+
+
607static 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
+
608{
+
609 LSTATUS lResult;
+
610 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
611 DWORD dwSize;
+
612
+
613 Flags &= ~REG_MUI_STRING_TRUNCATE;
+
614
+
615 // Try with stack buffer first.
+
616 lResult = RegLoadMUIStringW(hKey, pszValue, szStackBuffer, sizeof(szStackBuffer), &dwSize, Flags, pszDirectory);
+
617 if (lResult == ERROR_SUCCESS) {
+
618 // Copy from stack buffer.
+
619 sOut.assign(szStackBuffer, wcsnlen(szStackBuffer, dwSize/sizeof(wchar_t)));
+
620 } else if (lResult == ERROR_MORE_DATA) {
+
621 // Allocate buffer on heap and retry.
+
622 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[(dwSize + sizeof(wchar_t) - 1)/sizeof(wchar_t)]);
+
623 sOut.assign(szBuffer.get(), (lResult = RegLoadMUIStringW(hKey, pszValue, szBuffer.get(), dwSize, &dwSize, Flags, pszDirectory)) == ERROR_SUCCESS ? wcsnlen(szBuffer.get(), dwSize/sizeof(wchar_t)) : 0);
+
624 }
+
625
+
626 return lResult;
+
627}
+
+
628
+
629#endif
+
630
+
636template<class _Traits, class _Ax>
+
+
637static _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
+
638{
+
639 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
640
+
641 // Try to convert to stack buffer first.
+
642 int cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szStackBuffer, _countof(szStackBuffer));
+
643 if (cch > 0) {
+
644 // Copy from stack.
+
645 sDstString.assign(szStackBuffer, cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
646 } else {
+
647 switch (::GetLastError()) {
+
648 case ERROR_INSUFFICIENT_BUFFER:
+
649 for (int i = 10; i--;) {
+
650 // Allocate buffer. Then convert again.
+
651 cch = -cch;
+
652 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
653 cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szBuffer.get(), cch);
+
654 if (cch > 0) {
+
655 sDstString.assign(szBuffer.get(), cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
656 break;
+
657 }
+
658 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
659 sDstString.clear();
+
660 break;
+
661 }
+
662 }
+
663 break;
+
664
+
665 case ERROR_SUCCESS:
+
666 sDstString.clear();
+
667 break;
+
668 }
+
669 }
+
670
+
671 return cch;
+
672}
+
+
673
+
679template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
+
+
680static _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
+
681{
+
682 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
+
683
+
684 // Try to convert to stack buffer first.
+
685 int cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szStackBuffer, _countof(szStackBuffer));
+
686 if (cch > 0) {
+
687 // Copy from stack.
+
688 sDstString.assign(szStackBuffer, cch);
+
689 } else {
+
690 switch (::GetLastError()) {
+
691 case ERROR_INSUFFICIENT_BUFFER:
+
692 for (int i = 10; i--;) {
+
693 // Allocate buffer. Then convert again.
+
694 cch = -cch;
+
695 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
696 cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szBuffer.get(), cch);
+
697 if (cch > 0) {
+
698 sDstString.assign(szBuffer.get(), cch);
+
699 break;
+
700 }
+
701 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
+
702 sDstString.clear();
+
703 break;
+
704 }
+
705 }
+
706 break;
+
707
+
708 case ERROR_SUCCESS:
+
709 sDstString.clear();
+
710 break;
+
711 }
+
712 }
+
713
+
714 return cch;
+
715}
+
+
716
+
718template<class _Traits, class _Ax>
+
+
719static _Success_(return != 0) int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<char, _Traits, _Ax> &sBuffer) noexcept
+
720{
+
721 // Get read-only pointer to string resource.
+
722 LPCSTR pszStr;
+
723 int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0);
+
724 if (i) {
+
725 sBuffer.assign(pszStr, i);
+
726 return i;
+
727 } else
+
728 return 0;
+
729}
+
+
730
+
736template<class _Traits, class _Ax>
+
+
737static _Success_(return != 0) int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sBuffer) noexcept
+
738{
+
739 // Get read-only pointer to string resource.
+
740 LPCWSTR pszStr;
+
741 int i = LoadStringW(hInstance, uID, reinterpret_cast<LPWSTR>(&pszStr), 0);
+
742 if (i) {
+
743 sBuffer.assign(pszStr, i);
+
744 return i;
+
745 } else
+
746 return 0;
+
747}
+
+
748
+
+
754static VOID OutputDebugStrV(_In_z_ LPCSTR lpOutputString, _In_ va_list arg) noexcept
+
755{
+
756 std::string str;
+
757 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
758 OutputDebugStringA(str.c_str());
+
759}
+
+
760
+
+
766static VOID OutputDebugStrV(_In_z_ LPCWSTR lpOutputString, _In_ va_list arg) noexcept
+
767{
+
768 std::wstring str;
+
769 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
+
770 OutputDebugStringW(str.c_str());
+
771}
+
+
772
+
+
778static VOID OutputDebugStr(_In_z_ LPCSTR lpOutputString, ...) noexcept
+
779{
+
780 va_list arg;
+
781 va_start(arg, lpOutputString);
+
782 OutputDebugStrV(lpOutputString, arg);
+
783 va_end(arg);
+
784}
+
+
785
+
+
791static VOID OutputDebugStr(_In_z_ LPCWSTR lpOutputString, ...) noexcept
+
792{
+
793 va_list arg;
+
794 va_start(arg, lpOutputString);
+
795 OutputDebugStrV(lpOutputString, arg);
+
796 va_end(arg);
+
797}
+
+
798
+
800template<class _Traits, class _Ax>
+
+
801static _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
+
802{
+
803 int iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
+
804 if (iResult) {
+
805 // Allocate buffer on heap and retry.
+
806 std::unique_ptr<char[]> szBuffer(new char[iResult]);
+
807 iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
+
808 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
+
809 return iResult;
+
810 }
+
811
+
812 return iResult;
+
813}
+
+
814
+
820template<class _Traits, class _Ax>
+
+
821static _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
+
822{
+
823 int iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
+
824 if (iResult) {
+
825 // Allocate buffer on heap and retry.
+
826 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[iResult]);
+
827 iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
+
828 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
+
829 return iResult;
+
830 }
+
831
+
832 return iResult;
+
833}
+
+
834
+
836template<class _Traits, class _Ax>
+
+
837static _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
+
838{
+
839 assert(0); // TODO: Test this code.
+
840
+
841 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
842
+
843 if (LookupAccountSidA(lpSystemName, lpSid,
+
844 NULL, &dwNameLen ,
+
845 NULL, &dwRefDomainLen,
+
846 peUse))
+
847 {
+
848 // Name and domain is blank.
+
849 if (sName ) sName ->clear();
+
850 if (sReferencedDomainName) sReferencedDomainName->clear();
+
851 return TRUE;
+
852 } else if (GetLastError() == ERROR_MORE_DATA) {
+
853 // Allocate on heap and retry.
+
854 std::unique_ptr<char[]> bufName (new char[dwNameLen ]);
+
855 std::unique_ptr<char[]> bufRefDomain(new char[dwRefDomainLen]);
+
856 if (LookupAccountSidA(lpSystemName, lpSid,
+
857 bufName .get(), &dwNameLen ,
+
858 bufRefDomain.get(), &dwRefDomainLen,
+
859 peUse))
+
860 {
+
861 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
+
862 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
+
863 return TRUE;
+
864 }
+
865 }
+
866
+
867 return FALSE;
+
868}
+
+
869
+
875template<class _Traits, class _Ax>
+
+
876static _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
+
877{
+
878 assert(0); // TODO: Test this code.
+
879
+
880 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
881
+
882 if (LookupAccountSidW(lpSystemName, lpSid,
+
883 NULL, &dwNameLen ,
+
884 NULL, &dwRefDomainLen,
+
885 peUse))
+
886 {
+
887 // Name and domain is blank.
+
888 if (sName ) sName ->clear();
+
889 if (sReferencedDomainName) sReferencedDomainName->clear();
+
890 return TRUE;
+
891 } else if (GetLastError() == ERROR_MORE_DATA) {
+
892 // Allocate on heap and retry.
+
893 std::unique_ptr<wchar_t[]> bufName (new wchar_t[dwNameLen ]);
+
894 std::unique_ptr<wchar_t[]> bufRefDomain(new wchar_t[dwRefDomainLen]);
+
895 if (LookupAccountSidW(lpSystemName, lpSid,
+
896 bufName .get(), &dwNameLen ,
+
897 bufRefDomain.get(), &dwRefDomainLen,
+
898 peUse))
+
899 {
+
900 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
+
901 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
+
902 return TRUE;
+
903 }
+
904 }
905
-
913template<class _Ax>
-
914static _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
+
906 return FALSE;
+
907}
+
+
908
+
+
914static _Success_(return != FALSE) BOOL CreateWellKnownSid(_In_ WELL_KNOWN_SID_TYPE WellKnownSidType, _In_opt_ PSID DomainSid, _Inout_ std::unique_ptr<SID> &Sid)
915{
-
916 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
917
-
918 // Try to convert to stack buffer first.
-
919 int cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, szStackBuffer, _countof(szStackBuffer));
-
920 if (cch) {
-
921 // Copy from stack.
-
922 sWideCharStr.assign(szStackBuffer, szStackBuffer + cch);
-
923 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
924 // Query the required output size. Allocate buffer. Then convert again.
-
925 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, NULL, 0);
-
926 sWideCharStr.resize(cch);
-
927 cch = ::MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, sWideCharStr.data(), cch);
-
928 }
-
929
-
930 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
+
916 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
917 DWORD dwSize = sizeof(szStackBuffer);
+
918
+
919 if (CreateWellKnownSid(WellKnownSidType, DomainSid, szStackBuffer, &dwSize)) {
+
920 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
+
921 Sid.reset((SID*)new BYTE[dwSize]);
+
922 memcpy(Sid.get(), szStackBuffer, dwSize);
+
923 return TRUE;
+
924 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
925 // The stack buffer was too small to retrieve complete data. Alloc and retry.
+
926 Sid.reset((SID*)new BYTE[dwSize]);
+
927 return CreateWellKnownSid(WellKnownSidType, DomainSid, Sid.get(), &dwSize);
+
928 } else
+
929 return FALSE;
+
930}
+
931
-
932 return cch;
-
933}
-
934
-
942template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
943static _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
-
944{
-
945 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
946
-
947 // Try to convert to stack buffer first.
-
948 int cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szStackBuffer, _countof(szStackBuffer));
-
949 if (cch) {
-
950 // Copy from stack.
-
951 sWideCharStr.assign(szStackBuffer, cch);
-
952 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
953 // Query the required output size. Allocate buffer. Then convert again.
-
954 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), NULL, 0);
-
955 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
956 cch = ::MultiByteToWideChar(CodePage, dwFlags, sMultiByteStr.c_str(), (int)sMultiByteStr.length(), szBuffer.get(), cch);
-
957 sWideCharStr.assign(szBuffer.get(), cch);
-
958 SecureZeroMemory(szBuffer.get(), sizeof(WCHAR)*cch);
-
959 }
-
960
-
961 SecureZeroMemory(szStackBuffer, sizeof(szStackBuffer));
-
962
-
963 return cch;
-
964}
-
965
-
971template<class _Traits, class _Ax>
-
972static _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
-
973{
-
974 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
975
-
976 // Try to convert to stack buffer first.
-
977 int cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szStackBuffer, _countof(szStackBuffer));
-
978 if (cch > 0) {
-
979 // Copy from stack.
-
980 sDstString.assign(szStackBuffer, cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
981 } else {
-
982 switch (::GetLastError()) {
-
983 case ERROR_INSUFFICIENT_BUFFER:
-
984 for (int i = 10; i--;) {
-
985 // Allocate buffer. Then convert again.
-
986 cch = -cch;
-
987 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
988 cch = ::NormalizeString(NormForm, lpSrcString, cwSrcLength, szBuffer.get(), cch);
-
989 if (cch > 0) {
-
990 sDstString.assign(szBuffer.get(), cwSrcLength != -1 ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
-
991 break;
-
992 }
-
993 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-
994 sDstString.clear();
-
995 break;
-
996 }
-
997 }
-
998 break;
-
999
-
1000 case ERROR_SUCCESS:
-
1001 sDstString.clear();
-
1002 break;
-
1003 }
-
1004 }
-
1005
-
1006 return cch;
-
1007}
-
1008
-
1014template<class _Traits1, class _Ax1, class _Traits2, class _Ax2>
-
1015static _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
-
1016{
-
1017 WCHAR szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(WCHAR)];
-
1018
-
1019 // Try to convert to stack buffer first.
-
1020 int cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szStackBuffer, _countof(szStackBuffer));
-
1021 if (cch > 0) {
-
1022 // Copy from stack.
-
1023 sDstString.assign(szStackBuffer, cch);
-
1024 } else {
-
1025 switch (::GetLastError()) {
-
1026 case ERROR_INSUFFICIENT_BUFFER:
-
1027 for (int i = 10; i--;) {
-
1028 // Allocate buffer. Then convert again.
-
1029 cch = -cch;
-
1030 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
1031 cch = ::NormalizeString(NormForm, sSrcString.c_str(), (int)sSrcString.length(), szBuffer.get(), cch);
-
1032 if (cch > 0) {
-
1033 sDstString.assign(szBuffer.get(), cch);
-
1034 break;
-
1035 }
-
1036 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-
1037 sDstString.clear();
-
1038 break;
-
1039 }
-
1040 }
-
1041 break;
+
937template<class _Ty>
+
+
938static _Success_(return != 0) BOOL GetTokenInformation(_In_ HANDLE TokenHandle, _In_ TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_ std::unique_ptr<_Ty> &TokenInformation) noexcept
+
939{
+
940 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES];
+
941 DWORD dwSize;
+
942
+
943 if (GetTokenInformation(TokenHandle, TokenInformationClass, szStackBuffer, sizeof(szStackBuffer), &dwSize)) {
+
944 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
+
945 TokenInformation.reset((_Ty*)(new BYTE[dwSize]));
+
946 memcpy(TokenInformation.get(), szStackBuffer, dwSize);
+
947 return TRUE;
+
948 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
949 // The stack buffer was too small to retrieve complete data. Alloc and retry.
+
950 TokenInformation.reset((_Ty*)(new BYTE[dwSize]));
+
951 return GetTokenInformation(TokenHandle, TokenInformationClass, TokenInformation.get(), dwSize, &dwSize);
+
952 } else
+
953 return FALSE;
+
954}
+
+
955
+
961template<class _Traits, class _Ax>
+
+
962static _Success_(return != 0) BOOL QueryFullProcessImageNameA(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<char, _Traits, _Ax>& sExeName)
+
963{
+
964 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(char)];
+
965 DWORD dwSize = _countof(szStackBuffer);
+
966
+
967 // Try with stack buffer first.
+
968 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szStackBuffer, &dwSize)) {
+
969 // Copy from stack.
+
970 sExeName.assign(szStackBuffer, dwSize);
+
971 return TRUE;
+
972 }
+
973 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(char); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
+
974 // Allocate on heap and retry.
+
975 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
+
976 dwSize = dwCapacity;
+
977 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
+
978 sExeName.assign(szBuffer.get(), dwSize);
+
979 return TRUE;
+
980 }
+
981 }
+
982 return FALSE;
+
983}
+
+
984
+
990template<class _Traits, class _Ax>
+
+
991static _Success_(return != 0) BOOL QueryFullProcessImageNameW(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<wchar_t, _Traits, _Ax>& sExeName)
+
992{
+
993 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t)];
+
994 DWORD dwSize = _countof(szStackBuffer);
+
995
+
996 // Try with stack buffer first.
+
997 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szStackBuffer, &dwSize)) {
+
998 // Copy from stack.
+
999 sExeName.assign(szStackBuffer, dwSize);
+
1000 return TRUE;
+
1001 }
+
1002 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
+
1003 // Allocate on heap and retry.
+
1004 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
+
1005 dwSize = dwCapacity;
+
1006 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
+
1007 sExeName.assign(szBuffer.get(), dwSize);
+
1008 return TRUE;
+
1009 }
+
1010 }
+
1011 return FALSE;
+
1012}
+
+
1013
+
1015
+
1016#pragma warning(pop)
+
1017
+
1018namespace winstd
+
1019{
+
1022
+
1026 template<HANDLE INVALID>
+
+
1027 class win_handle : public handle<HANDLE, INVALID>
+
1028 {
+
1029 WINSTD_HANDLE_IMPL(win_handle, INVALID)
+
1030
+
1031 public:
+
+
1037 virtual ~win_handle()
+
1038 {
+
1039 if (m_h != invalid)
+
1040 free_internal();
+
1041 }
+
1042
-
1043 case ERROR_SUCCESS:
-
1044 sDstString.clear();
-
1045 break;
-
1046 }
-
1047 }
-
1048
-
1049 return cch;
-
1050}
-
1051
-
1053template<class _Traits, class _Ax>
-
1054static _Success_(return != 0) int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<char, _Traits, _Ax> &sBuffer) noexcept
-
1055{
-
1056 // Get read-only pointer to string resource.
-
1057 LPCSTR pszStr;
-
1058 int i = LoadStringA(hInstance, uID, reinterpret_cast<LPSTR>(&pszStr), 0);
-
1059 if (i) {
-
1060 sBuffer.assign(pszStr, i);
-
1061 return i;
-
1062 } else
-
1063 return 0;
-
1064}
-
1065
-
1071template<class _Traits, class _Ax>
-
1072static _Success_(return != 0) int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sBuffer) noexcept
-
1073{
-
1074 // Get read-only pointer to string resource.
-
1075 LPCWSTR pszStr;
-
1076 int i = LoadStringW(hInstance, uID, reinterpret_cast<LPWSTR>(&pszStr), 0);
-
1077 if (i) {
-
1078 sBuffer.assign(pszStr, i);
-
1079 return i;
-
1080 } else
-
1081 return 0;
-
1082}
-
1083
-
1089static VOID OutputDebugStrV(_In_z_ LPCSTR lpOutputString, _In_ va_list arg) noexcept
-
1090{
-
1091 std::string str;
-
1092 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
-
1093 OutputDebugStringA(str.c_str());
-
1094}
-
1095
-
1101static VOID OutputDebugStrV(_In_z_ LPCWSTR lpOutputString, _In_ va_list arg) noexcept
-
1102{
-
1103 std::wstring str;
-
1104 try { vsprintf(str, lpOutputString, arg); } catch (...) { return; }
-
1105 OutputDebugStringW(str.c_str());
-
1106}
-
1107
-
1113static VOID OutputDebugStr(_In_z_ LPCSTR lpOutputString, ...) noexcept
-
1114{
-
1115 va_list arg;
-
1116 va_start(arg, lpOutputString);
-
1117 OutputDebugStrV(lpOutputString, arg);
-
1118 va_end(arg);
-
1119}
-
1120
-
1126static VOID OutputDebugStr(_In_z_ LPCWSTR lpOutputString, ...) noexcept
-
1127{
-
1128 va_list arg;
-
1129 va_start(arg, lpOutputString);
-
1130 OutputDebugStrV(lpOutputString, arg);
-
1131 va_end(arg);
-
1132}
-
1133
-
1135template<class _Traits, class _Ax>
-
1136static _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
-
1137{
-
1138 int iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
-
1139 if (iResult) {
-
1140 // Allocate buffer on heap and retry.
-
1141 std::unique_ptr<char[]> szBuffer(new char[iResult]);
-
1142 iResult = GetDateFormatA(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
-
1143 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
-
1144 return iResult;
-
1145 }
-
1146
-
1147 return iResult;
-
1148}
-
1149
-
1155template<class _Traits, class _Ax>
-
1156static _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
-
1157{
-
1158 int iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, NULL, 0);
-
1159 if (iResult) {
-
1160 // Allocate buffer on heap and retry.
-
1161 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[iResult]);
-
1162 iResult = GetDateFormatW(Locale, dwFlags, lpDate, lpFormat, szBuffer.get(), iResult);
-
1163 sDate.assign(szBuffer.get(), iResult ? iResult - 1 : 0);
-
1164 return iResult;
-
1165 }
-
1166
-
1167 return iResult;
-
1168}
+
1043 protected:
+
+
1049 void free_internal() noexcept override
+
1050 {
+
1051 CloseHandle(m_h);
+
1052 }
+
+
1053 };
+
+
1054
+
+
1060 class library : public handle<HMODULE, NULL>
+
1061 {
+
1062 WINSTD_HANDLE_IMPL(library, NULL)
+
1063
+
1064 public:
+
+
1070 virtual ~library()
+
1071 {
+
1072 if (m_h != invalid)
+
1073 free_internal();
+
1074 }
+
+
1075
+
1076 protected:
+
+
1082 void free_internal() noexcept override
+
1083 {
+
1084 FreeLibrary(m_h);
+
1085 }
+
+
1086 };
+
+
1087
+
1093 typedef win_handle<NULL> process;
+
1094
+
1100 typedef win_handle<NULL> thread;
+
1101
+
1107 typedef win_handle<INVALID_HANDLE_VALUE> process_snapshot;
+
1108
+
1114 typedef win_handle<NULL> mutex;
+
1115
+
1122 typedef win_handle<INVALID_HANDLE_VALUE> file;
+
1123
+
1129 typedef win_handle<NULL> file_mapping;
+
1130
+
+
1134 template <class _Ty> struct UnmapViewOfFile_delete
+
1135 {
+
1136 typedef UnmapViewOfFile_delete<_Ty> _Myt;
+
1137
+
1141 UnmapViewOfFile_delete() {}
+
1142
+
1146 template <class _Ty2> UnmapViewOfFile_delete(const UnmapViewOfFile_delete<_Ty2>&) {}
+
1147
+
+
1151 void operator()(_Ty* _Ptr) const
+
1152 {
+
1153 if (!UnmapViewOfFile(_Ptr))
+
1154 throw win_runtime_error("UnmapViewOfFile failed");
+
1155 }
+
+
1156 };
+
+
1157
+
+
1161 template <class _Ty> struct UnmapViewOfFile_delete<_Ty[]>
+
1162 {
+
1163 typedef UnmapViewOfFile_delete<_Ty> _Myt;
+
1164
+
1168 UnmapViewOfFile_delete() {}
1169
-
1171template<class _Traits, class _Ax>
-
1172static _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
-
1173{
-
1174 assert(0); // TODO: Test this code.
-
1175
-
1176 DWORD dwNameLen = 0, dwRefDomainLen = 0;
-
1177
-
1178 if (LookupAccountSidA(lpSystemName, lpSid,
-
1179 NULL, &dwNameLen ,
-
1180 NULL, &dwRefDomainLen,
-
1181 peUse))
-
1182 {
-
1183 // Name and domain is blank.
-
1184 if (sName ) sName ->clear();
-
1185 if (sReferencedDomainName) sReferencedDomainName->clear();
-
1186 return TRUE;
-
1187 } else if (GetLastError() == ERROR_MORE_DATA) {
-
1188 // Allocate on heap and retry.
-
1189 std::unique_ptr<char[]> bufName (new char[dwNameLen ]);
-
1190 std::unique_ptr<char[]> bufRefDomain(new char[dwRefDomainLen]);
-
1191 if (LookupAccountSidA(lpSystemName, lpSid,
-
1192 bufName .get(), &dwNameLen ,
-
1193 bufRefDomain.get(), &dwRefDomainLen,
-
1194 peUse))
-
1195 {
-
1196 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
-
1197 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
-
1198 return TRUE;
-
1199 }
-
1200 }
-
1201
-
1202 return FALSE;
-
1203}
-
1204
-
1210template<class _Traits, class _Ax>
-
1211static _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
-
1212{
-
1213 assert(0); // TODO: Test this code.
-
1214
-
1215 DWORD dwNameLen = 0, dwRefDomainLen = 0;
+
+
1173 void operator()(_Ty* _Ptr) const
+
1174 {
+
1175 if (!UnmapViewOfFile(_Ptr))
+
1176 throw win_runtime_error("UnmapViewOfFile failed");
+
1177 }
+
+
1178
+
1182 template<class _Other>
+
+
1183 void operator()(_Other*) const
+
1184 {
+
1185 if (!UnmapViewOfFile(_Ptr))
+
1186 throw win_runtime_error("UnmapViewOfFile failed");
+
1187 }
+
+
1188 };
+
+
1189
+
1196 typedef win_handle<NULL> event;
+
1197
+
+
1201 class critical_section
+
1202 {
+
1203 WINSTD_NONCOPYABLE(critical_section)
+
1204 WINSTD_NONMOVABLE(critical_section)
+
1205
+
1206 public:
+
+ +
1213 {
+
1214 InitializeCriticalSection(&m_data);
+
1215 }
+
1216
-
1217 if (LookupAccountSidW(lpSystemName, lpSid,
-
1218 NULL, &dwNameLen ,
-
1219 NULL, &dwRefDomainLen,
-
1220 peUse))
-
1221 {
-
1222 // Name and domain is blank.
-
1223 if (sName ) sName ->clear();
-
1224 if (sReferencedDomainName) sReferencedDomainName->clear();
-
1225 return TRUE;
-
1226 } else if (GetLastError() == ERROR_MORE_DATA) {
-
1227 // Allocate on heap and retry.
-
1228 std::unique_ptr<wchar_t[]> bufName (new wchar_t[dwNameLen ]);
-
1229 std::unique_ptr<wchar_t[]> bufRefDomain(new wchar_t[dwRefDomainLen]);
-
1230 if (LookupAccountSidW(lpSystemName, lpSid,
-
1231 bufName .get(), &dwNameLen ,
-
1232 bufRefDomain.get(), &dwRefDomainLen,
-
1233 peUse))
-
1234 {
-
1235 if (sName ) sName ->assign(bufName .get(), dwNameLen - 1);
-
1236 if (sReferencedDomainName) sReferencedDomainName->assign(bufRefDomain.get(), dwRefDomainLen - 1);
-
1237 return TRUE;
-
1238 }
-
1239 }
+
+ +
1223 {
+
1224 DeleteCriticalSection(&m_data);
+
1225 }
+
+
1226
+
+
1232 operator LPCRITICAL_SECTION() noexcept
+
1233 {
+
1234 return &m_data;
+
1235 }
+
+
1236
+
1237 protected:
+
1238 CRITICAL_SECTION m_data;
+
1239 };
+
1240
-
1241 return FALSE;
-
1242}
-
1243
-
1249static _Success_(return != FALSE) BOOL CreateWellKnownSid(_In_ WELL_KNOWN_SID_TYPE WellKnownSidType, _In_opt_ PSID DomainSid, _Inout_ std::unique_ptr<SID> &Sid)
-
1250{
-
1251 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
1252 DWORD dwSize = sizeof(szStackBuffer);
-
1253
-
1254 if (CreateWellKnownSid(WellKnownSidType, DomainSid, szStackBuffer, &dwSize)) {
-
1255 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
-
1256 Sid.reset((SID*)new BYTE[dwSize]);
-
1257 memcpy(Sid.get(), szStackBuffer, dwSize);
-
1258 return TRUE;
-
1259 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
1260 // The stack buffer was too small to retrieve complete data. Alloc and retry.
-
1261 Sid.reset((SID*)new BYTE[dwSize]);
-
1262 return CreateWellKnownSid(WellKnownSidType, DomainSid, Sid.get(), &dwSize);
-
1263 } else
-
1264 return FALSE;
-
1265}
-
1266
-
1272template<class _Ty>
-
1273static _Success_(return != 0) BOOL GetTokenInformation(_In_ HANDLE TokenHandle, _In_ TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_ std::unique_ptr<_Ty> &TokenInformation) noexcept
-
1274{
-
1275 BYTE szStackBuffer[WINSTD_STACK_BUFFER_BYTES];
-
1276 DWORD dwSize;
-
1277
-
1278 if (GetTokenInformation(TokenHandle, TokenInformationClass, szStackBuffer, sizeof(szStackBuffer), &dwSize)) {
-
1279 // The stack buffer was big enough to retrieve complete data. Alloc and copy.
-
1280 TokenInformation.reset((_Ty*)(new BYTE[dwSize]));
-
1281 memcpy(TokenInformation.get(), szStackBuffer, dwSize);
-
1282 return TRUE;
-
1283 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
1284 // The stack buffer was too small to retrieve complete data. Alloc and retry.
-
1285 TokenInformation.reset((_Ty*)(new BYTE[dwSize]));
-
1286 return GetTokenInformation(TokenHandle, TokenInformationClass, TokenInformation.get(), dwSize, &dwSize);
-
1287 } else
-
1288 return FALSE;
-
1289}
-
1290
-
1296template<class _Traits, class _Ax>
-
1297static _Success_(return != 0) BOOL QueryFullProcessImageNameA(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<char, _Traits, _Ax>& sExeName)
-
1298{
-
1299 char szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(char)];
-
1300 DWORD dwSize = _countof(szStackBuffer);
-
1301
-
1302 // Try with stack buffer first.
-
1303 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szStackBuffer, &dwSize)) {
-
1304 // Copy from stack.
-
1305 sExeName.assign(szStackBuffer, dwSize);
-
1306 return TRUE;
-
1307 }
-
1308 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(char); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
-
1309 // Allocate on heap and retry.
-
1310 std::unique_ptr<char[]> szBuffer(new char[dwCapacity]);
-
1311 dwSize = dwCapacity;
-
1312 if (::QueryFullProcessImageNameA(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
-
1313 sExeName.assign(szBuffer.get(), dwSize);
-
1314 return TRUE;
-
1315 }
-
1316 }
-
1317 return FALSE;
-
1318}
-
1319
-
1325template<class _Traits, class _Ax>
-
1326static _Success_(return != 0) BOOL QueryFullProcessImageNameW(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Inout_ std::basic_string<wchar_t, _Traits, _Ax>& sExeName)
-
1327{
-
1328 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t)];
-
1329 DWORD dwSize = _countof(szStackBuffer);
-
1330
-
1331 // Try with stack buffer first.
-
1332 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szStackBuffer, &dwSize)) {
-
1333 // Copy from stack.
-
1334 sExeName.assign(szStackBuffer, dwSize);
-
1335 return TRUE;
-
1336 }
-
1337 for (DWORD dwCapacity = 2 * WINSTD_STACK_BUFFER_BYTES / sizeof(wchar_t); GetLastError() == ERROR_INSUFFICIENT_BUFFER; dwCapacity *= 2) {
-
1338 // Allocate on heap and retry.
-
1339 std::unique_ptr<wchar_t[]> szBuffer(new wchar_t[dwCapacity]);
-
1340 dwSize = dwCapacity;
-
1341 if (::QueryFullProcessImageNameW(hProcess, dwFlags, szBuffer.get(), &dwSize)) {
-
1342 sExeName.assign(szBuffer.get(), dwSize);
-
1343 return TRUE;
-
1344 }
-
1345 }
-
1346 return FALSE;
-
1347}
-
1348
-
1350
-
1351#pragma warning(pop)
+
+
1246 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
+
1247 {
+
1248 WINSTD_HANDLE_IMPL(find_file, INVALID_HANDLE_VALUE)
+
1249
+
1250 public:
+
+
1256 virtual ~find_file()
+
1257 {
+
1258 if (m_h != invalid)
+
1259 free_internal();
+
1260 }
+
+
1261
+
1262 protected:
+
+
1268 void free_internal() noexcept override
+
1269 {
+
1270 FindClose(m_h);
+
1271 }
+
+
1272 };
+
+
1273
+
+
1279 class heap : public handle<HANDLE, NULL>
+
1280 {
+
1281 WINSTD_HANDLE_IMPL(heap, NULL)
+
1282
+
1283 public:
+
+
1289 virtual ~heap()
+
1290 {
+
1291 if (m_h != invalid)
+
1292 free_internal();
+
1293 }
+
+
1294
+
+
1302 bool enumerate() noexcept
+
1303 {
+
1304 assert(m_h != invalid);
+
1305
+
1306 bool found = false;
+
1307
+
1308 // Lock the heap for exclusive access.
+
1309 HeapLock(m_h);
+
1310
+
1311 PROCESS_HEAP_ENTRY e;
+
1312 e.lpData = NULL;
+
1313 while (HeapWalk(m_h, &e) != FALSE) {
+
1314 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
+ +
1316 _T("Allocated block%s%s\n")
+
1317 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
+
1318 _T(" Overhead: %d bytes\n Region index: %d\n"),
+
1319 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
+
1320 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
+
1321 e.lpData,
+
1322 e.cbData,
+
1323 e.cbOverhead,
+
1324 e.iRegionIndex);
+
1325
+
1326 found = true;
+
1327 }
+
1328 }
+
1329
+
1330 const DWORD dwResult = GetLastError();
+
1331 if (dwResult != ERROR_NO_MORE_ITEMS)
+
1332 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
+
1333
+
1334 // Unlock the heap.
+
1335 HeapUnlock(m_h);
+
1336
+
1337 return found;
+
1338 }
+
+
1339
+
1340 protected:
+
+
1346 void free_internal() noexcept override
+
1347 {
+
1348 enumerate();
+
1349 HeapDestroy(m_h);
+
1350 }
+
+
1351 };
+
1352
-
1353namespace winstd
-
1354{
-
1357
-
1361 template<HANDLE INVALID>
-
1362 class win_handle : public handle<HANDLE, INVALID>
-
1363 {
-
1364 WINSTD_HANDLE_IMPL(win_handle, INVALID)
-
1365
-
1366 public:
-
1372 virtual ~win_handle()
-
1373 {
-
1374 if (m_h != invalid)
-
1375 free_internal();
-
1376 }
-
1377
-
1378 protected:
-
1384 void free_internal() noexcept override
-
1385 {
-
1386 CloseHandle(m_h);
+
1356 template <class _Ty>
+
+
1357 class heap_allocator
+
1358 {
+
1359 public:
+
1360 typedef typename _Ty value_type;
+
1361
+
1362 typedef _Ty *pointer;
+
1363 typedef _Ty& reference;
+
1364 typedef const _Ty *const_pointer;
+
1365 typedef const _Ty& const_reference;
+
1366
+
1367 typedef SIZE_T size_type;
+
1368 typedef ptrdiff_t difference_type;
+
1369
+
1373 template <class _Other>
+
+
1374 struct rebind
+
1375 {
+ +
1377 };
+
+
1378
+
1379 public:
+
+ +
1386 {
1387 }
-
1388 };
-
1389
-
1395 class library : public handle<HMODULE, NULL>
-
1396 {
- +
+
1388
+
1394 template <class _Other>
+
+ +
1396 {
+
1397 }
+
1398
-
1399 public:
-
1405 virtual ~library()
-
1406 {
-
1407 if (m_h != invalid)
-
1408 free_internal();
-
1409 }
-
1410
-
1411 protected:
-
1417 void free_internal() noexcept override
-
1418 {
-
1419 FreeLibrary(m_h);
-
1420 }
-
1421 };
-
1422
-
1428 typedef win_handle<NULL> process;
-
1429
-
1435 typedef win_handle<NULL> thread;
-
1436
-
1442 typedef win_handle<INVALID_HANDLE_VALUE> process_snapshot;
-
1443
-
1450 typedef win_handle<INVALID_HANDLE_VALUE> file;
-
1451
-
1457 typedef win_handle<NULL> file_mapping;
-
1458
-
1462 template <class _Ty> struct UnmapViewOfFile_delete
-
1463 {
-
1464 typedef UnmapViewOfFile_delete<_Ty> _Myt;
-
1465
-
1469 UnmapViewOfFile_delete() {}
-
1470
-
1474 template <class _Ty2> UnmapViewOfFile_delete(const UnmapViewOfFile_delete<_Ty2>&) {}
-
1475
-
1479 void operator()(_Ty* _Ptr) const
-
1480 {
-
1481 if (!UnmapViewOfFile(_Ptr))
-
1482 throw win_runtime_error("UnmapViewOfFile failed");
-
1483 }
-
1484 };
-
1485
-
1489 template <class _Ty> struct UnmapViewOfFile_delete<_Ty[]>
-
1490 {
-
1491 typedef UnmapViewOfFile_delete<_Ty> _Myt;
-
1492
-
1496 UnmapViewOfFile_delete() {}
-
1497
-
1501 void operator()(_Ty* _Ptr) const
-
1502 {
-
1503 if (!UnmapViewOfFile(_Ptr))
-
1504 throw win_runtime_error("UnmapViewOfFile failed");
-
1505 }
-
1506
-
1510 template<class _Other>
-
1511 void operator()(_Other*) const
-
1512 {
-
1513 if (!UnmapViewOfFile(_Ptr))
-
1514 throw win_runtime_error("UnmapViewOfFile failed");
-
1515 }
-
1516 };
-
1517
-
1524 typedef win_handle<NULL> event;
-
1525
-
1529 class critical_section
-
1530 {
-
1531 WINSTD_NONCOPYABLE(critical_section)
-
1532 WINSTD_NONMOVABLE(critical_section)
-
1533
-
1534 public:
-
1540 critical_section() noexcept
-
1541 {
-
1542 InitializeCriticalSection(&m_data);
-
1543 }
+
+ +
1407 {
+
1408 assert(m_heap);
+
1409 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
+
1410 }
+
+
1411
+
+
1418 void deallocate(_In_ pointer ptr, _In_ size_type size)
+
1419 {
+
1420 UNREFERENCED_PARAMETER(size);
+
1421 assert(m_heap);
+
1422 HeapFree(m_heap, 0, ptr);
+
1423 }
+
+
1424
+
+
1431 void construct(_Inout_ pointer ptr, _In_ const _Ty& val)
+
1432 {
+
1433 ::new ((void*)ptr) _Ty(val);
+
1434 }
+
+
1435
+
+
1442 void construct(_Inout_ pointer ptr, _Inout_ _Ty&& val)
+
1443 {
+
1444 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
+
1445 }
+
+
1446
+
+
1452 void destroy(_Inout_ pointer ptr)
+
1453 {
+
1454 ptr->_Ty::~_Ty();
+
1455 }
+
+
1456
+
+ +
1461 {
+
1462 return (SIZE_T)-1;
+
1463 }
+
+
1464
+
1465 public:
+
1466 HANDLE m_heap;
+
1467 };
+
+
1468
+
+
1472 class actctx_activator
+
1473 {
+
1474 WINSTD_NONCOPYABLE(actctx_activator)
+
1475 WINSTD_NONMOVABLE(actctx_activator)
+
1476
+
1477 public:
+
+
1485 actctx_activator(_In_ HANDLE hActCtx) noexcept
+
1486 {
+
1487 if (!ActivateActCtx(hActCtx, &m_cookie))
+
1488 m_cookie = 0;
+
1489 }
+
+
1490
+
+ +
1497 {
+
1498 if (m_cookie)
+
1499 DeactivateActCtx(0, m_cookie);
+
1500 }
+
+
1501
+
1502 protected:
+
1503 ULONG_PTR m_cookie;
+
1504 };
+
+
1505
+
+
1509 class impersonator
+
1510 {
+
1511 public:
+
1515 impersonator() noexcept : m_cookie(FALSE) {}
+
1516
+
+ +
1523 {
+
1524 if (m_cookie)
+
1525 RevertToSelf();
+
1526 }
+
+
1527
+
1531 operator bool () const { return m_cookie; }
+
1532
+
1533 protected:
+
1534 BOOL m_cookie;
+
1535 };
+
+
1536
+
+
1540 class user_impersonator : public impersonator
+
1541 {
+
1542 WINSTD_NONCOPYABLE(user_impersonator)
+
1543 WINSTD_NONMOVABLE(user_impersonator)
1544
-
1550 virtual ~critical_section()
-
1551 {
-
1552 DeleteCriticalSection(&m_data);
-
1553 }
-
1554
-
1560 operator LPCRITICAL_SECTION() noexcept
-
1561 {
-
1562 return &m_data;
-
1563 }
-
1564
-
1565 protected:
-
1566 CRITICAL_SECTION m_data;
-
1567 };
-
1568
-
1574 class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
-
1575 {
-
1576 WINSTD_HANDLE_IMPL(find_file, INVALID_HANDLE_VALUE)
+
1545 public:
+
+
1553 user_impersonator(_In_opt_ HANDLE hToken) noexcept
+
1554 {
+
1555 m_cookie = hToken && ImpersonateLoggedOnUser(hToken);
+
1556 }
+
+
1557 };
+
+
1558
+
+
1562 class system_impersonator : public impersonator
+
1563 {
+
1564 WINSTD_NONCOPYABLE(system_impersonator)
+
1565 WINSTD_NONMOVABLE(system_impersonator)
+
1566
+
1567 public:
+
+ +
1572 {
+
1573 TOKEN_PRIVILEGES privileges = { 1, {{{ 0, 0 }, SE_PRIVILEGE_ENABLED }} };
+
1574 if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &privileges.Privileges[0].Luid) ||
+
1575 !ImpersonateSelf(SecurityImpersonation))
+
1576 return;
1577
-
1578 public:
-
1584 virtual ~find_file()
-
1585 {
-
1586 if (m_h != invalid)
-
1587 free_internal();
-
1588 }
-
1589
-
1590 protected:
-
1596 void free_internal() noexcept override
-
1597 {
-
1598 FindClose(m_h);
-
1599 }
-
1600 };
-
1601
-
1607 class heap : public handle<HANDLE, NULL>
-
1608 {
- -
1610
-
1611 public:
-
1617 virtual ~heap()
-
1618 {
-
1619 if (m_h != invalid)
-
1620 free_internal();
-
1621 }
-
1622
-
1630 bool enumerate() noexcept
-
1631 {
-
1632 assert(m_h != invalid);
+
1578 {
+
1579 HANDLE h;
+
1580 if (!OpenThreadToken(GetCurrentThread(), TOKEN_ADJUST_PRIVILEGES, FALSE, &h))
+
1581 goto revert;
+
1582 win_handle<INVALID_HANDLE_VALUE> thread_token(h);
+
1583 if (!AdjustTokenPrivileges(thread_token, FALSE, &privileges, sizeof(privileges), NULL, NULL))
+
1584 goto revert;
+
1585 process_snapshot process_snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+
1586 if (!process_snapshot)
+
1587 goto revert;
+
1588 PROCESSENTRY32 entry = { sizeof(PROCESSENTRY32) };
+
1589 if (!Process32First(process_snapshot, &entry))
+
1590 goto revert;
+
1591 while (_tcsicmp(entry.szExeFile, TEXT("winlogon.exe")) != 0)
+
1592 if (!Process32Next(process_snapshot, &entry))
+
1593 goto revert;
+
1594 process winlogon_process = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, entry.th32ProcessID);
+
1595 if (!winlogon_process)
+
1596 goto revert;
+
1597 if (!OpenProcessToken(winlogon_process, TOKEN_IMPERSONATE | TOKEN_DUPLICATE, &h))
+
1598 goto revert;
+
1599 win_handle<INVALID_HANDLE_VALUE> winlogon_token(h);
+
1600 if (!DuplicateToken(winlogon_token, SecurityImpersonation, &h))
+
1601 goto revert;
+
1602 win_handle<INVALID_HANDLE_VALUE> duplicated_token(h);
+
1603 if (!SetThreadToken(NULL, duplicated_token))
+
1604 goto revert;
+
1605 }
+
1606
+
1607 m_cookie = TRUE;
+
1608 return;
+
1609
+
1610 revert:
+
1611 DWORD dwResult = GetLastError();
+
1612 RevertToSelf();
+
1613 SetLastError(dwResult);
+
1614 }
+
+
1615 };
+
+
1616
+
+
1620 class clipboard_opener
+
1621 {
+
1622 public:
+
+
1628 clipboard_opener(_In_opt_ HWND hWndNewOwner = NULL)
+
1629 {
+
1630 if (!OpenClipboard(hWndNewOwner))
+
1631 throw win_runtime_error("OpenClipboard failed");
+
1632 }
+
1633
-
1634 bool found = false;
-
1635
-
1636 // Lock the heap for exclusive access.
-
1637 HeapLock(m_h);
-
1638
-
1639 PROCESS_HEAP_ENTRY e;
-
1640 e.lpData = NULL;
-
1641 while (HeapWalk(m_h, &e) != FALSE) {
-
1642 if ((e.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
-
1643 OutputDebugStr(
-
1644 _T("Allocated block%s%s\n")
-
1645 _T(" Data portion begins at: %#p\n Size: %d bytes\n")
-
1646 _T(" Overhead: %d bytes\n Region index: %d\n"),
-
1647 (e.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0 ? tstring_printf(_T(", movable with HANDLE %#p"), e.Block.hMem).c_str() : _T(""),
-
1648 (e.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0 ? _T(", DDESHARE") : _T(""),
-
1649 e.lpData,
-
1650 e.cbData,
-
1651 e.cbOverhead,
-
1652 e.iRegionIndex);
-
1653
-
1654 found = true;
-
1655 }
-
1656 }
-
1657
-
1658 const DWORD dwResult = GetLastError();
-
1659 if (dwResult != ERROR_NO_MORE_ITEMS)
-
1660 OutputDebugStr(_T("HeapWalk failed (error %u).\n"), dwResult);
-
1661
-
1662 // Unlock the heap.
-
1663 HeapUnlock(m_h);
-
1664
-
1665 return found;
-
1666 }
-
1667
-
1668 protected:
-
1674 void free_internal() noexcept override
-
1675 {
-
1676 enumerate();
-
1677 HeapDestroy(m_h);
-
1678 }
-
1679 };
-
1680
-
1684 template <class _Ty>
-
1685 class heap_allocator
+
+ +
1640 {
+
1641 CloseClipboard();
+
1642 }
+
+
1643 };
+
+
1644
+
+
1648 class console_ctrl_handler
+
1649 {
+
1650 WINSTD_NONCOPYABLE(console_ctrl_handler)
+
1651 WINSTD_NONMOVABLE(console_ctrl_handler)
+
1652
+
1653 public:
+
+
1661 console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept : m_handler(HandlerRoutine)
+
1662 {
+
1663 m_cookie = SetConsoleCtrlHandler(m_handler, TRUE);
+
1664 }
+
+
1665
+
+ +
1672 {
+
1673 if (m_cookie)
+
1674 SetConsoleCtrlHandler(m_handler, FALSE);
+
1675 }
+
+
1676
+
1677 protected:
+
1678 BOOL m_cookie;
+
1679 PHANDLER_ROUTINE m_handler;
+
1680 };
+
+
1681
+
+
1685 class vmemory : public handle<LPVOID, NULL>
1686 {
-
1687 public:
-
1688 typedef typename _Ty value_type;
-
1689
-
1690 typedef _Ty *pointer;
-
1691 typedef _Ty& reference;
-
1692 typedef const _Ty *const_pointer;
-
1693 typedef const _Ty& const_reference;
-
1694
-
1695 typedef SIZE_T size_type;
-
1696 typedef ptrdiff_t difference_type;
-
1697
-
1701 template <class _Other>
-
1702 struct rebind
-
1703 {
-
1704 typedef heap_allocator<_Other> other;
-
1705 };
-
1706
-
1707 public:
-
1713 heap_allocator(_In_ HANDLE heap) : m_heap(heap)
-
1714 {
-
1715 }
-
1716
-
1722 template <class _Other>
-
1723 heap_allocator(_In_ const heap_allocator<_Other> &other) : m_heap(other.m_heap)
-
1724 {
-
1725 }
-
1726
-
1734 pointer allocate(_In_ size_type count)
-
1735 {
-
1736 assert(m_heap);
-
1737 return (pointer)HeapAlloc(m_heap, 0, count * sizeof(_Ty));
-
1738 }
-
1739
-
1746 void deallocate(_In_ pointer ptr, _In_ size_type size)
-
1747 {
-
1748 UNREFERENCED_PARAMETER(size);
-
1749 assert(m_heap);
-
1750 HeapFree(m_heap, 0, ptr);
-
1751 }
-
1752
-
1759 void construct(_Inout_ pointer ptr, _In_ const _Ty& val)
-
1760 {
-
1761 ::new ((void*)ptr) _Ty(val);
-
1762 }
-
1763
-
1770 void construct(_Inout_ pointer ptr, _Inout_ _Ty&& val)
-
1771 {
-
1772 ::new ((void*)ptr) _Ty(std::forward<_Ty>(val));
-
1773 }
-
1774
-
1780 void destroy(_Inout_ pointer ptr)
-
1781 {
-
1782 ptr->_Ty::~_Ty();
+
1687 WINSTD_NONCOPYABLE(vmemory)
+
1688
+
1689 public:
+
+
1693 vmemory() noexcept : m_proc(NULL)
+
1694 {
+
1695 }
+
+
1696
+
+
1703 vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept :
+
1704 m_proc(proc),
+ +
1706 {
+
1707 }
+
+
1708
+
+
1714 vmemory(_Inout_ vmemory &&h) noexcept :
+
1715 m_proc(std::move(h.m_proc)),
+
1716 handle<LPVOID, NULL>(std::move(h))
+
1717 {
+
1718 }
+
+
1719
+
+
1725 virtual ~vmemory()
+
1726 {
+
1727 if (m_h != invalid)
+
1728 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
+
1729 }
+
+
1730
+
+
1736 vmemory& operator=(_Inout_ vmemory &&other) noexcept
+
1737 {
+
1738 if (this != std::addressof(other)) {
+
1739 (handle<handle_type, NULL>&&)*this = std::move(other);
+
1740 m_proc = std::move(other.m_proc);
+
1741 }
+
1742 return *this;
+
1743 }
+
+
1744
+
+
1753 void attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
+
1754 {
+
1755 m_proc = proc;
+
1756 if (m_h != invalid)
+
1757 free_internal();
+
1758 m_h = h;
+
1759 }
+
+
1760
+
+
1770 bool alloc(
+
1771 _In_ HANDLE hProcess,
+
1772 _In_opt_ LPVOID lpAddress,
+
1773 _In_ SIZE_T dwSize,
+
1774 _In_ DWORD flAllocationType,
+
1775 _In_ DWORD flProtect) noexcept
+
1776 {
+
1777 handle_type h = VirtualAllocEx(hProcess, lpAddress, dwSize, flAllocationType, flProtect);
+
1778 if (h != invalid) {
+
1779 attach(hProcess, h);
+
1780 return true;
+
1781 } else
+
1782 return false;
1783 }
+
1784
-
1788 size_type max_size() const
-
1789 {
-
1790 return (SIZE_T)-1;
-
1791 }
-
1792
-
1793 public:
-
1794 HANDLE m_heap;
-
1795 };
-
1796
-
1800 class actctx_activator
-
1801 {
-
1802 WINSTD_NONCOPYABLE(actctx_activator)
-
1803 WINSTD_NONMOVABLE(actctx_activator)
-
1804
-
1805 public:
-
1813 actctx_activator(_In_ HANDLE hActCtx) noexcept
-
1814 {
-
1815 if (!ActivateActCtx(hActCtx, &m_cookie))
-
1816 m_cookie = 0;
-
1817 }
-
1818
-
1824 virtual ~actctx_activator()
-
1825 {
-
1826 if (m_cookie)
-
1827 DeactivateActCtx(0, m_cookie);
-
1828 }
-
1829
-
1830 protected:
-
1831 ULONG_PTR m_cookie;
-
1832 };
-
1833
-
1837 class impersonator
-
1838 {
-
1839 public:
-
1843 impersonator() noexcept : m_cookie(FALSE) {}
-
1844
-
1850 virtual ~impersonator()
-
1851 {
-
1852 if (m_cookie)
-
1853 RevertToSelf();
-
1854 }
-
1855
-
1859 operator bool () const { return m_cookie; }
-
1860
-
1861 protected:
-
1862 BOOL m_cookie;
-
1863 };
-
1864
-
1868 class user_impersonator : public impersonator
-
1869 {
-
1870 WINSTD_NONCOPYABLE(user_impersonator)
-
1871 WINSTD_NONMOVABLE(user_impersonator)
+
1785 protected:
+
+
1791 void free_internal() noexcept override
+
1792 {
+
1793 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
+
1794 }
+
+
1795
+
1796 protected:
+
1797 HANDLE m_proc;
+
1798 };
+
+
1799
+
+
1806 class reg_key : public handle<HKEY, NULL>
+
1807 {
+
1808 WINSTD_HANDLE_IMPL(reg_key, NULL)
+
1809
+
1810 public:
+
+
1816 virtual ~reg_key()
+
1817 {
+
1818 if (m_h != invalid)
+
1819 free_internal();
+
1820 }
+
+
1821
+
+
1831 bool delete_subkey(_In_z_ LPCTSTR szSubkey)
+
1832 {
+
1833 LSTATUS s;
+
1834
+
1835 s = RegDeleteKey(m_h, szSubkey);
+
1836 if (s == ERROR_SUCCESS || s == ERROR_FILE_NOT_FOUND)
+
1837 return true;
+
1838
+
1839 {
+
1840 reg_key k;
+
1841 handle_type h;
+
1842 s = RegOpenKeyEx(m_h, szSubkey, 0, KEY_ENUMERATE_SUB_KEYS, &h);
+
1843 if (s == ERROR_SUCCESS)
+
1844 k.attach(h);
+
1845 else {
+
1846 SetLastError(s);
+
1847 return false;
+
1848 }
+
1849 for (;;) {
+
1850 TCHAR szName[MAX_PATH];
+
1851 DWORD dwSize = _countof(szName);
+
1852 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
+
1853 if (s == ERROR_SUCCESS)
+
1854 k.delete_subkey(szName);
+
1855 else if (s == ERROR_NO_MORE_ITEMS)
+
1856 break;
+
1857 else {
+
1858 SetLastError(s);
+
1859 return false;
+
1860 }
+
1861 }
+
1862 }
+
1863
+
1864 s = RegDeleteKey(m_h, szSubkey);
+
1865 if (s == ERROR_SUCCESS)
+
1866 return true;
+
1867 else {
+
1868 SetLastError(s);
+
1869 return false;
+
1870 }
+
1871 }
+
1872
-
1873 public:
-
1881 user_impersonator(_In_opt_ HANDLE hToken) noexcept
-
1882 {
-
1883 m_cookie = hToken && ImpersonateLoggedOnUser(hToken);
-
1884 }
-
1885 };
-
1886
-
1890 class system_impersonator : public impersonator
-
1891 {
-
1892 WINSTD_NONCOPYABLE(system_impersonator)
-
1893 WINSTD_NONMOVABLE(system_impersonator)
-
1894
-
1895 public:
-
1899 system_impersonator() noexcept
-
1900 {
-
1901 TOKEN_PRIVILEGES privileges = { 1, {{{ 0, 0 }, SE_PRIVILEGE_ENABLED }} };
-
1902 if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &privileges.Privileges[0].Luid) ||
-
1903 !ImpersonateSelf(SecurityImpersonation))
-
1904 return;
-
1905
-
1906 {
-
1907 HANDLE h;
-
1908 if (!OpenThreadToken(GetCurrentThread(), TOKEN_ADJUST_PRIVILEGES, FALSE, &h))
-
1909 goto revert;
-
1910 win_handle<INVALID_HANDLE_VALUE> thread_token(h);
-
1911 if (!AdjustTokenPrivileges(thread_token, FALSE, &privileges, sizeof(privileges), NULL, NULL))
-
1912 goto revert;
-
1913 process_snapshot process_snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-
1914 if (!process_snapshot)
-
1915 goto revert;
-
1916 PROCESSENTRY32 entry = { sizeof(PROCESSENTRY32) };
-
1917 if (!Process32First(process_snapshot, &entry))
-
1918 goto revert;
-
1919 while (_tcsicmp(entry.szExeFile, TEXT("winlogon.exe")) != 0)
-
1920 if (!Process32Next(process_snapshot, &entry))
-
1921 goto revert;
-
1922 process winlogon_process = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, entry.th32ProcessID);
-
1923 if (!winlogon_process)
-
1924 goto revert;
-
1925 if (!OpenProcessToken(winlogon_process, TOKEN_IMPERSONATE | TOKEN_DUPLICATE, &h))
-
1926 goto revert;
-
1927 win_handle<INVALID_HANDLE_VALUE> winlogon_token(h);
-
1928 if (!DuplicateToken(winlogon_token, SecurityImpersonation, &h))
-
1929 goto revert;
-
1930 win_handle<INVALID_HANDLE_VALUE> duplicated_token(h);
-
1931 if (!SetThreadToken(NULL, duplicated_token))
-
1932 goto revert;
-
1933 }
-
1934
-
1935 m_cookie = TRUE;
-
1936 return;
-
1937
-
1938 revert:
-
1939 DWORD dwResult = GetLastError();
-
1940 RevertToSelf();
-
1941 SetLastError(dwResult);
-
1942 }
-
1943 };
-
1944
-
1948 class console_ctrl_handler
-
1949 {
-
1950 WINSTD_NONCOPYABLE(console_ctrl_handler)
-
1951 WINSTD_NONMOVABLE(console_ctrl_handler)
-
1952
-
1953 public:
-
1961 console_ctrl_handler(_In_opt_ PHANDLER_ROUTINE HandlerRoutine) noexcept : m_handler(HandlerRoutine)
-
1962 {
-
1963 m_cookie = SetConsoleCtrlHandler(m_handler, TRUE);
-
1964 }
-
1965
-
1971 virtual ~console_ctrl_handler()
-
1972 {
-
1973 if (m_cookie)
-
1974 SetConsoleCtrlHandler(m_handler, FALSE);
-
1975 }
-
1976
-
1977 protected:
-
1978 BOOL m_cookie;
-
1979 PHANDLER_ROUTINE m_handler;
-
1980 };
-
1981
-
1985 class vmemory : public handle<LPVOID, NULL>
-
1986 {
-
1987 WINSTD_NONCOPYABLE(vmemory)
-
1988
-
1989 public:
-
1993 vmemory() noexcept : m_proc(NULL)
-
1994 {
-
1995 }
-
1996
-
2003 vmemory(_In_ handle_type h, _In_ HANDLE proc) noexcept :
-
2004 m_proc(proc),
-
2005 handle<LPVOID, NULL>(h)
-
2006 {
-
2007 }
-
2008
-
2014 vmemory(_Inout_ vmemory &&h) noexcept :
-
2015 m_proc(std::move(h.m_proc)),
-
2016 handle<LPVOID, NULL>(std::move(h))
-
2017 {
-
2018 }
-
2019
-
2025 virtual ~vmemory()
-
2026 {
-
2027 if (m_h != invalid)
-
2028 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
-
2029 }
-
2030
-
2036 vmemory& operator=(_Inout_ vmemory &&other) noexcept
-
2037 {
-
2038 if (this != std::addressof(other)) {
-
2039 (handle<handle_type, NULL>&&)*this = std::move(other);
-
2040 m_proc = std::move(other.m_proc);
-
2041 }
-
2042 return *this;
-
2043 }
-
2044
-
2053 void attach(_In_ HANDLE proc, _In_opt_ handle_type h) noexcept
-
2054 {
-
2055 m_proc = proc;
-
2056 if (m_h != invalid)
-
2057 free_internal();
-
2058 m_h = h;
-
2059 }
-
2060
-
2070 bool alloc(
-
2071 _In_ HANDLE hProcess,
-
2072 _In_opt_ LPVOID lpAddress,
-
2073 _In_ SIZE_T dwSize,
-
2074 _In_ DWORD flAllocationType,
-
2075 _In_ DWORD flProtect) noexcept
-
2076 {
-
2077 handle_type h = VirtualAllocEx(hProcess, lpAddress, dwSize, flAllocationType, flProtect);
-
2078 if (h != invalid) {
-
2079 attach(hProcess, h);
-
2080 return true;
-
2081 } else
-
2082 return false;
-
2083 }
-
2084
-
2085 protected:
-
2091 void free_internal() noexcept override
-
2092 {
-
2093 VirtualFreeEx(m_proc, m_h, 0, MEM_RELEASE);
-
2094 }
-
2095
-
2096 protected:
-
2097 HANDLE m_proc;
-
2098 };
-
2099
-
2106 class reg_key : public handle<HKEY, NULL>
-
2107 {
-
2108 WINSTD_HANDLE_IMPL(reg_key, NULL)
-
2109
-
2110 public:
-
2116 virtual ~reg_key()
-
2117 {
-
2118 if (m_h != invalid)
-
2119 free_internal();
-
2120 }
-
2121
-
2131 bool delete_subkey(_In_z_ LPCTSTR szSubkey)
-
2132 {
-
2133 LSTATUS s;
-
2134
-
2135 s = RegDeleteKey(m_h, szSubkey);
-
2136 if (s == ERROR_SUCCESS || s == ERROR_FILE_NOT_FOUND)
-
2137 return true;
-
2138
-
2139 {
-
2140 reg_key k;
-
2141 handle_type h;
-
2142 s = RegOpenKeyEx(m_h, szSubkey, 0, KEY_ENUMERATE_SUB_KEYS, &h);
-
2143 if (s == ERROR_SUCCESS)
-
2144 k.attach(h);
-
2145 else {
-
2146 SetLastError(s);
-
2147 return false;
-
2148 }
-
2149 for (;;) {
-
2150 TCHAR szName[MAX_PATH];
-
2151 DWORD dwSize = _countof(szName);
-
2152 s = RegEnumKeyEx(k, 0, szName, &dwSize, NULL, NULL, NULL, NULL);
-
2153 if (s == ERROR_SUCCESS)
-
2154 k.delete_subkey(szName);
-
2155 else if (s == ERROR_NO_MORE_ITEMS)
-
2156 break;
-
2157 else {
-
2158 SetLastError(s);
-
2159 return false;
-
2160 }
-
2161 }
-
2162 }
-
2163
-
2164 s = RegDeleteKey(m_h, szSubkey);
-
2165 if (s == ERROR_SUCCESS)
-
2166 return true;
-
2167 else {
-
2168 SetLastError(s);
-
2169 return false;
-
2170 }
-
2171 }
-
2172
-
2173 protected:
-
2179 void free_internal() noexcept override
-
2180 {
-
2181 RegCloseKey(m_h);
-
2182 }
-
2183 };
-
2184
-
2188 class security_id : public handle<PSID, NULL>
-
2189 {
-
2190 WINSTD_HANDLE_IMPL(security_id, NULL)
-
2191
-
2192 public:
-
2198 virtual ~security_id()
-
2199 {
-
2200 if (m_h != invalid)
-
2201 free_internal();
-
2202 }
+
1873 protected:
+
+
1879 void free_internal() noexcept override
+
1880 {
+
1881 RegCloseKey(m_h);
+
1882 }
+
+
1883 };
+
+
1884
+
+
1888 class security_id : public handle<PSID, NULL>
+
1889 {
+
1890 WINSTD_HANDLE_IMPL(security_id, NULL)
+
1891
+
1892 public:
+
+ +
1899 {
+
1900 if (m_h != invalid)
+
1901 free_internal();
+
1902 }
+
+
1903
+
1904 protected:
+
+
1910 void free_internal() noexcept override
+
1911 {
+
1912 FreeSid(m_h);
+
1913 }
+
+
1914 };
+
+
1915
+
+
1919 class process_information : public PROCESS_INFORMATION
+
1920 {
+
1921 WINSTD_NONCOPYABLE(process_information)
+
1922 WINSTD_NONMOVABLE(process_information)
+
1923
+
1924 public:
+
+ +
1929 {
+
1930 hProcess = INVALID_HANDLE_VALUE;
+
1931 hThread = INVALID_HANDLE_VALUE;
+
1932 dwProcessId = 0;
+
1933 dwThreadId = 0;
+
1934 }
+
+
1935
+
+ +
1940 {
+
1941 #pragma warning(push)
+
1942 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
+
1943
+
1944 if (hProcess != INVALID_HANDLE_VALUE)
+
1945 CloseHandle(hProcess);
+
1946
+
1947 if (hThread != INVALID_HANDLE_VALUE)
+
1948 CloseHandle(hThread);
+
1949
+
1950 #pragma warning(pop)
+
1951 }
+
+
1952 };
+
+
1953
+
+
1959 class event_log : public handle<HANDLE, NULL>
+
1960 {
+
1961 WINSTD_HANDLE_IMPL(event_log, NULL)
+
1962
+
1963 public:
+
+
1969 virtual ~event_log()
+
1970 {
+
1971 if (m_h != invalid)
+
1972 free_internal();
+
1973 }
+
+
1974
+
1975 protected:
+
+
1981 void free_internal() noexcept override
+
1982 {
+
1983 DeregisterEventSource(m_h);
+
1984 }
+
+
1985 };
+
+
1986
+
+
1990 class sc_handle : public handle<SC_HANDLE, NULL>
+
1991 {
+
1992 WINSTD_HANDLE_IMPL(sc_handle, NULL)
+
1993
+
1994 public:
+
+
2000 virtual ~sc_handle()
+
2001 {
+
2002 if (m_h != invalid)
+
2003 free_internal();
+
2004 }
+
+
2005
+
2006 protected:
+
+
2012 void free_internal() noexcept override
+
2013 {
+
2014 CloseServiceHandle(m_h);
+
2015 }
+
+
2016 };
+
+
2017
+
2019}
+
2020
+
2023
+
2024#pragma warning(push)
+
2025#pragma warning(disable: 4505) // Don't warn on unused code
+
2026
+
+
2028static LSTATUS RegCreateKeyExA(
+
2029 _In_ HKEY hKey,
+
2030 _In_ LPCSTR lpSubKey,
+
2031 _Reserved_ DWORD Reserved,
+
2032 _In_opt_ LPSTR lpClass,
+
2033 _In_ DWORD dwOptions,
+
2034 _In_ REGSAM samDesired,
+
2035 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+
2036 _Inout_ winstd::reg_key &result,
+
2037 _Out_opt_ LPDWORD lpdwDisposition)
+
2038{
+
2039 HKEY h;
+
2040 LSTATUS s = RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2041 if (s == ERROR_SUCCESS)
+
2042 result.attach(h);
+
2043 return s;
+
2044}
+
+
2045
+
+
2051static LSTATUS RegCreateKeyExW(
+
2052 _In_ HKEY hKey,
+
2053 _In_ LPCWSTR lpSubKey,
+
2054 _Reserved_ DWORD Reserved,
+
2055 _In_opt_ LPWSTR lpClass,
+
2056 _In_ DWORD dwOptions,
+
2057 _In_ REGSAM samDesired,
+
2058 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+
2059 _Inout_ winstd::reg_key &result,
+
2060 _Out_opt_ LPDWORD lpdwDisposition)
+
2061{
+
2062 HKEY h;
+
2063 LSTATUS s = RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
+
2064 if (s == ERROR_SUCCESS)
+
2065 result.attach(h);
+
2066 return s;
+
2067}
+
+
2068
+
+
2070static LSTATUS RegOpenKeyExA(
+
2071 _In_ HKEY hKey,
+
2072 _In_opt_ LPCSTR lpSubKey,
+
2073 _In_opt_ DWORD ulOptions,
+
2074 _In_ REGSAM samDesired,
+
2075 _Inout_ winstd::reg_key &result)
+
2076{
+
2077 HKEY h;
+
2078 LSTATUS s = RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2079 if (s == ERROR_SUCCESS)
+
2080 result.attach(h);
+
2081 return s;
+
2082}
+
+
2083
+
+
2089static LSTATUS RegOpenKeyExW(
+
2090 _In_ HKEY hKey,
+
2091 _In_opt_ LPCWSTR lpSubKey,
+
2092 _In_opt_ DWORD ulOptions,
+
2093 _In_ REGSAM samDesired,
+
2094 _Inout_ winstd::reg_key &result)
+
2095{
+
2096 HKEY h;
+
2097 LSTATUS s = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, &h);
+
2098 if (s == ERROR_SUCCESS)
+
2099 result.attach(h);
+
2100 return s;
+
2101}
+
+
2102
+
+
2108static BOOL OpenProcessToken(_In_ HANDLE ProcessHandle, _In_ DWORD DesiredAccess, _Inout_ winstd::win_handle<NULL> &TokenHandle)
+
2109{
+
2110 HANDLE h;
+
2111 if (OpenProcessToken(ProcessHandle, DesiredAccess, &h)) {
+
2112 TokenHandle.attach(h);
+
2113 return TRUE;
+
2114 }
+
2115 return FALSE;
+
2116}
+
+
2117
+
+
2123static BOOL DuplicateTokenEx(_In_ HANDLE hExistingToken, _In_ DWORD dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpTokenAttributes, _In_ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, _In_ TOKEN_TYPE TokenType, _Inout_ winstd::win_handle<NULL> &NewToken)
+
2124{
+
2125 HANDLE h;
+
2126 if (DuplicateTokenEx(hExistingToken, dwDesiredAccess, lpTokenAttributes, ImpersonationLevel, TokenType, &h)) {
+
2127 NewToken.attach(h);
+
2128 return TRUE;
+
2129 }
+
2130 return FALSE;
+
2131}
+
+
2132
+
+
2138static BOOL AllocateAndInitializeSid(_In_ PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, _In_ BYTE nSubAuthorityCount, _In_ DWORD nSubAuthority0, _In_ DWORD nSubAuthority1, _In_ DWORD nSubAuthority2, _In_ DWORD nSubAuthority3, _In_ DWORD nSubAuthority4, _In_ DWORD nSubAuthority5, _In_ DWORD nSubAuthority6, _In_ DWORD nSubAuthority7, _Inout_ winstd::security_id& Sid)
+
2139{
+
2140 PSID h;
+
2141 if (AllocateAndInitializeSid(pIdentifierAuthority, nSubAuthorityCount, nSubAuthority0, nSubAuthority1, nSubAuthority2, nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6, nSubAuthority7, &h)) {
+
2142 Sid.attach(h);
+
2143 return TRUE;
+
2144 }
+
2145 return FALSE;
+
2146}
+
+
2147
+
+
2149static DWORD SetEntriesInAclA(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_A pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
+
2150{
+
2151 PACL h;
+
2152 DWORD dwResult = SetEntriesInAclA(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
+
2153 if (dwResult == ERROR_SUCCESS)
+
2154 Acl.reset(h);
+
2155 return ERROR_SUCCESS;
+
2156}
+
+
2157
+
+
2163static DWORD SetEntriesInAclW(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_W pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
+
2164{
+
2165 PACL h;
+
2166 DWORD dwResult = SetEntriesInAclW(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
+
2167 if (dwResult == ERROR_SUCCESS)
+
2168 Acl.reset(h);
+
2169 return ERROR_SUCCESS;
+
2170}
+
+
2171
+
2177template<class _Traits, class _Ax>
+
+
2178_Success_(return != 0) BOOL GetThreadPreferredUILanguages(_In_ DWORD dwFlags, _Out_ PULONG pulNumLanguages, _Out_ std::basic_string<wchar_t, _Traits, _Ax> &sValue)
+
2179{
+
2180 wchar_t szStackBuffer[WINSTD_STACK_BUFFER_BYTES/sizeof(wchar_t)];
+
2181 ULONG ulSize = _countof(szStackBuffer);
+
2182
+
2183 // Try with stack buffer first.
+
2184 if (GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, szStackBuffer, &ulSize)) {
+
2185 // Copy from stack.
+
2186 sValue.assign(szStackBuffer, ulSize - 1);
+
2187 return TRUE;
+
2188 } else if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
2189 // Query required size.
+
2190 ulSize = 0;
+
2191 GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, NULL, &ulSize);
+
2192 // Allocate on heap and retry.
+
2193 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[ulSize]);
+
2194 if (GetThreadPreferredUILanguages(dwFlags, pulNumLanguages, szBuffer.get(), &ulSize)) {
+
2195 sValue.assign(szBuffer.get(), ulSize - 1);
+
2196 return TRUE;
+
2197 }
+
2198 }
+
2199 return FALSE;
+
2200}
+
+
2201
+
2202#pragma warning(pop)
2203
-
2204 protected:
-
2210 void free_internal() noexcept override
-
2211 {
-
2212 FreeSid(m_h);
-
2213 }
-
2214 };
-
2215
-
2219 class process_information : public PROCESS_INFORMATION
-
2220 {
-
2221 WINSTD_NONCOPYABLE(process_information)
-
2222 WINSTD_NONMOVABLE(process_information)
-
2223
-
2224 public:
-
2228 process_information() noexcept
-
2229 {
-
2230 hProcess = INVALID_HANDLE_VALUE;
-
2231 hThread = INVALID_HANDLE_VALUE;
-
2232 dwProcessId = 0;
-
2233 dwThreadId = 0;
-
2234 }
-
2235
-
2239 ~process_information()
-
2240 {
-
2241 #pragma warning(push)
-
2242 #pragma warning(disable: 6001) // Using uninitialized memory '*this'. << ???
-
2243
-
2244 if (hProcess != INVALID_HANDLE_VALUE)
-
2245 CloseHandle(hProcess);
-
2246
-
2247 if (hThread != INVALID_HANDLE_VALUE)
-
2248 CloseHandle(hThread);
-
2249
-
2250 #pragma warning(pop)
-
2251 }
-
2252 };
-
2253
-
2259 class event_log : public handle<HANDLE, NULL>
-
2260 {
-
2261 WINSTD_HANDLE_IMPL(event_log, NULL)
-
2262
-
2263 public:
-
2269 virtual ~event_log()
-
2270 {
-
2271 if (m_h != invalid)
-
2272 free_internal();
-
2273 }
-
2274
-
2275 protected:
-
2281 void free_internal() noexcept override
-
2282 {
-
2283 DeregisterEventSource(m_h);
-
2284 }
-
2285 };
-
2286
-
2290 class sc_handle : public handle<SC_HANDLE, NULL>
-
2291 {
-
2292 WINSTD_HANDLE_IMPL(sc_handle, NULL)
-
2293
-
2294 public:
-
2300 virtual ~sc_handle()
-
2301 {
-
2302 if (m_h != invalid)
-
2303 free_internal();
-
2304 }
-
2305
-
2306 protected:
-
2312 void free_internal() noexcept override
-
2313 {
-
2314 CloseServiceHandle(m_h);
-
2315 }
-
2316 };
-
2317
-
2319}
-
2320
-
2323
-
2324#pragma warning(push)
-
2325#pragma warning(disable: 4505) // Don't warn on unused code
-
2326
-
2328static LSTATUS RegCreateKeyExA(
-
2329 _In_ HKEY hKey,
-
2330 _In_ LPCSTR lpSubKey,
-
2331 _Reserved_ DWORD Reserved,
-
2332 _In_opt_ LPSTR lpClass,
-
2333 _In_ DWORD dwOptions,
-
2334 _In_ REGSAM samDesired,
-
2335 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
-
2336 _Inout_ winstd::reg_key &result,
-
2337 _Out_opt_ LPDWORD lpdwDisposition)
-
2338{
-
2339 HKEY h;
-
2340 LSTATUS s = RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
-
2341 if (s == ERROR_SUCCESS)
-
2342 result.attach(h);
-
2343 return s;
-
2344}
-
2345
-
2351static LSTATUS RegCreateKeyExW(
-
2352 _In_ HKEY hKey,
-
2353 _In_ LPCWSTR lpSubKey,
-
2354 _Reserved_ DWORD Reserved,
-
2355 _In_opt_ LPWSTR lpClass,
-
2356 _In_ DWORD dwOptions,
-
2357 _In_ REGSAM samDesired,
-
2358 _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
-
2359 _Inout_ winstd::reg_key &result,
-
2360 _Out_opt_ LPDWORD lpdwDisposition)
-
2361{
-
2362 HKEY h;
-
2363 LSTATUS s = RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, &h, lpdwDisposition);
-
2364 if (s == ERROR_SUCCESS)
-
2365 result.attach(h);
-
2366 return s;
-
2367}
-
2368
-
2370static LSTATUS RegOpenKeyExA(
-
2371 _In_ HKEY hKey,
-
2372 _In_opt_ LPCSTR lpSubKey,
-
2373 _In_opt_ DWORD ulOptions,
-
2374 _In_ REGSAM samDesired,
-
2375 _Inout_ winstd::reg_key &result)
-
2376{
-
2377 HKEY h;
-
2378 LSTATUS s = RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, &h);
-
2379 if (s == ERROR_SUCCESS)
-
2380 result.attach(h);
-
2381 return s;
-
2382}
-
2383
-
2389static LSTATUS RegOpenKeyExW(
-
2390 _In_ HKEY hKey,
-
2391 _In_opt_ LPCWSTR lpSubKey,
-
2392 _In_opt_ DWORD ulOptions,
-
2393 _In_ REGSAM samDesired,
-
2394 _Inout_ winstd::reg_key &result)
-
2395{
-
2396 HKEY h;
-
2397 LSTATUS s = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, &h);
-
2398 if (s == ERROR_SUCCESS)
-
2399 result.attach(h);
-
2400 return s;
-
2401}
-
2402
-
2408static BOOL OpenProcessToken(_In_ HANDLE ProcessHandle, _In_ DWORD DesiredAccess, _Inout_ winstd::win_handle<NULL> &TokenHandle)
-
2409{
-
2410 HANDLE h;
-
2411 if (OpenProcessToken(ProcessHandle, DesiredAccess, &h)) {
-
2412 TokenHandle.attach(h);
-
2413 return TRUE;
-
2414 }
-
2415 return FALSE;
-
2416}
-
2417
-
2423static BOOL DuplicateTokenEx(_In_ HANDLE hExistingToken, _In_ DWORD dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpTokenAttributes, _In_ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, _In_ TOKEN_TYPE TokenType, _Inout_ winstd::win_handle<NULL> &NewToken)
-
2424{
-
2425 HANDLE h;
-
2426 if (DuplicateTokenEx(hExistingToken, dwDesiredAccess, lpTokenAttributes, ImpersonationLevel, TokenType, &h)) {
-
2427 NewToken.attach(h);
-
2428 return TRUE;
-
2429 }
-
2430 return FALSE;
-
2431}
-
2432
-
2438static BOOL AllocateAndInitializeSid(_In_ PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, _In_ BYTE nSubAuthorityCount, _In_ DWORD nSubAuthority0, _In_ DWORD nSubAuthority1, _In_ DWORD nSubAuthority2, _In_ DWORD nSubAuthority3, _In_ DWORD nSubAuthority4, _In_ DWORD nSubAuthority5, _In_ DWORD nSubAuthority6, _In_ DWORD nSubAuthority7, _Inout_ winstd::security_id& Sid)
-
2439{
-
2440 PSID h;
-
2441 if (AllocateAndInitializeSid(pIdentifierAuthority, nSubAuthorityCount, nSubAuthority0, nSubAuthority1, nSubAuthority2, nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6, nSubAuthority7, &h)) {
-
2442 Sid.attach(h);
-
2443 return TRUE;
-
2444 }
-
2445 return FALSE;
-
2446}
-
2447
-
2449static DWORD SetEntriesInAclA(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_A pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
-
2450{
-
2451 PACL h;
-
2452 DWORD dwResult = SetEntriesInAclA(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
-
2453 if (dwResult == ERROR_SUCCESS)
-
2454 Acl.reset(h);
-
2455 return ERROR_SUCCESS;
-
2456}
-
2457
-
2463static DWORD SetEntriesInAclW(_In_ ULONG cCountOfExplicitEntries, _In_reads_opt_(cCountOfExplicitEntries) PEXPLICIT_ACCESS_W pListOfExplicitEntries, _In_opt_ PACL OldAcl, _Inout_ std::unique_ptr<ACL, winstd::LocalFree_delete<ACL>>& Acl)
-
2464{
-
2465 PACL h;
-
2466 DWORD dwResult = SetEntriesInAclW(cCountOfExplicitEntries, pListOfExplicitEntries, OldAcl, &h);
-
2467 if (dwResult == ERROR_SUCCESS)
-
2468 Acl.reset(h);
-
2469 return ERROR_SUCCESS;
-
2470}
-
2471
-
2472#pragma warning(pop)
-
2473
-
winstd::actctx_activator
Activates given activation context in constructor and deactivates it in destructor.
Definition Win.h:1801
-
winstd::actctx_activator::actctx_activator
actctx_activator(HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition Win.h:1813
-
winstd::actctx_activator::~actctx_activator
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition Win.h:1824
-
winstd::actctx_activator::m_cookie
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition Win.h:1831
-
winstd::basic_string_printf
Base template class to support string formatting using printf() style templates.
Definition Common.h:1141
-
winstd::console_ctrl_handler
Console control handler stack management.
Definition Win.h:1949
-
winstd::console_ctrl_handler::console_ctrl_handler
console_ctrl_handler(PHANDLER_ROUTINE HandlerRoutine) noexcept
Construct the console control handler object and pushes the given handler to the console control hand...
Definition Win.h:1961
-
winstd::console_ctrl_handler::~console_ctrl_handler
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition Win.h:1971
-
winstd::console_ctrl_handler::m_handler
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition Win.h:1979
-
winstd::console_ctrl_handler::m_cookie
BOOL m_cookie
Did pushing the console control handler succeed?
Definition Win.h:1978
-
winstd::critical_section
Critical section wrapper.
Definition Win.h:1530
-
winstd::critical_section::critical_section
critical_section() noexcept
Construct the object and initializes a critical section object.
Definition Win.h:1540
-
winstd::critical_section::m_data
CRITICAL_SECTION m_data
Critical section struct.
Definition Win.h:1566
-
winstd::critical_section::~critical_section
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition Win.h:1550
-
winstd::event_log
Event log handle wrapper.
Definition Win.h:2260
-
winstd::event_log::free_internal
void free_internal() noexcept override
Closes an event log handle.
Definition Win.h:2281
-
winstd::event_log::~event_log
virtual ~event_log()
Closes an event log handle.
Definition Win.h:2269
-
winstd::find_file
Find-file handle wrapper.
Definition Win.h:1575
-
winstd::find_file::~find_file
virtual ~find_file()
Closes a file search handle.
Definition Win.h:1584
-
winstd::find_file::free_internal
void free_internal() noexcept override
Closes a file search handle.
Definition Win.h:1596
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< LPVOID, NULL >::handle_type
LPVOID handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-
winstd::handle< HANDLE, INVALID >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:852
-
winstd::heap_allocator
HeapAlloc allocator.
Definition Win.h:1686
-
winstd::heap_allocator::size_type
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:1695
-
winstd::heap_allocator::value_type
_Ty value_type
A type that is managed by the allocator.
Definition Win.h:1688
-
winstd::heap_allocator::heap_allocator
heap_allocator(const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition Win.h:1723
-
winstd::heap_allocator::m_heap
HANDLE m_heap
Heap handle.
Definition Win.h:1794
-
winstd::heap_allocator::allocate
pointer allocate(size_type count)
Allocates a new memory block.
Definition Win.h:1734
-
winstd::heap_allocator::difference_type
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:1696
-
winstd::heap_allocator::heap_allocator
heap_allocator(HANDLE heap)
Constructs allocator.
Definition Win.h:1713
-
winstd::heap_allocator::reference
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition Win.h:1691
-
winstd::heap_allocator::construct
void construct(pointer ptr, _Ty &&val)
Calls moving constructor for the element.
Definition Win.h:1770
-
winstd::heap_allocator::deallocate
void deallocate(pointer ptr, size_type size)
Frees memory block.
Definition Win.h:1746
-
winstd::heap_allocator::max_size
size_type max_size() const
Returns maximum memory block size.
Definition Win.h:1788
-
winstd::heap_allocator::construct
void construct(pointer ptr, const _Ty &val)
Calls copying constructor for the element.
Definition Win.h:1759
-
winstd::heap_allocator::const_reference
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition Win.h:1693
-
winstd::heap_allocator::const_pointer
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition Win.h:1692
-
winstd::heap_allocator::pointer
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition Win.h:1690
-
winstd::heap_allocator::destroy
void destroy(pointer ptr)
Calls destructor for the element.
Definition Win.h:1780
-
winstd::heap
Heap handle wrapper.
Definition Win.h:1608
-
winstd::heap::enumerate
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition Win.h:1630
-
winstd::heap::free_internal
void free_internal() noexcept override
Destroys the heap.
Definition Win.h:1674
-
winstd::heap::~heap
virtual ~heap()
Destroys the heap.
Definition Win.h:1617
-
winstd::impersonator
Base class for thread impersonation of another security context.
Definition Win.h:1838
-
winstd::impersonator::~impersonator
virtual ~impersonator()
Reverts to current user and destructs the impersonator.
Definition Win.h:1850
-
winstd::impersonator::impersonator
impersonator() noexcept
Construct the impersonator.
Definition Win.h:1843
-
winstd::impersonator::m_cookie
BOOL m_cookie
Did impersonation succeed?
Definition Win.h:1862
-
winstd::library
Module handle wrapper.
Definition Win.h:1396
-
winstd::library::free_internal
void free_internal() noexcept override
Frees the module.
Definition Win.h:1417
-
winstd::library::~library
virtual ~library()
Frees the module.
Definition Win.h:1405
-
winstd::process_information
PROCESS_INFORMATION struct wrapper.
Definition Win.h:2220
-
winstd::process_information::~process_information
~process_information()
Closes process and thread handles.
Definition Win.h:2239
-
winstd::process_information::process_information
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition Win.h:2228
-
winstd::reg_key
Registry key wrapper class.
Definition Win.h:2107
-
winstd::reg_key::free_internal
void free_internal() noexcept override
Closes a handle to the registry key.
Definition Win.h:2179
-
winstd::reg_key::delete_subkey
bool delete_subkey(LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition Win.h:2131
-
winstd::reg_key::~reg_key
virtual ~reg_key()
Closes a handle to the registry key.
Definition Win.h:2116
-
winstd::sc_handle
SC_HANDLE wrapper class.
Definition Win.h:2291
-
winstd::sc_handle::free_internal
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:2312
-
winstd::sc_handle::~sc_handle
virtual ~sc_handle()
Closes an open object handle.
Definition Win.h:2300
-
winstd::security_id
SID wrapper class.
Definition Win.h:2189
-
winstd::security_id::free_internal
void free_internal() noexcept override
Closes a handle to the SID.
Definition Win.h:2210
-
winstd::security_id::~security_id
virtual ~security_id()
Closes a handle to the SID.
Definition Win.h:2198
-
winstd::system_impersonator
Lets the calling thread impersonate the security context of the SYSTEM user.
Definition Win.h:1891
-
winstd::system_impersonator::system_impersonator
system_impersonator() noexcept
Construct the impersonator and impersonates the SYSTEM user.
Definition Win.h:1899
-
winstd::user_impersonator
Lets the calling thread impersonate the security context of a logged-on user.
Definition Win.h:1869
-
winstd::user_impersonator::user_impersonator
user_impersonator(HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition Win.h:1881
-
winstd::vmemory
Memory in virtual address space of a process handle wrapper.
Definition Win.h:1986
-
winstd::vmemory::operator=
vmemory & operator=(vmemory &&other) noexcept
Move assignment.
Definition Win.h:2036
-
winstd::vmemory::alloc
bool alloc(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) noexcept
Reserves, commits, or changes the state of a region of memory within the virtual address space of a s...
Definition Win.h:2070
-
winstd::vmemory::free_internal
void free_internal() noexcept override
Frees the memory.
Definition Win.h:2091
-
winstd::vmemory::attach
void attach(HANDLE proc, handle_type h) noexcept
Sets a new memory handle for the class.
Definition Win.h:2053
-
winstd::vmemory::~vmemory
virtual ~vmemory()
Frees the memory.
Definition Win.h:2025
-
winstd::vmemory::vmemory
vmemory(handle_type h, HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition Win.h:2003
-
winstd::vmemory::vmemory
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition Win.h:1993
-
winstd::vmemory::vmemory
vmemory(vmemory &&h) noexcept
Move constructor.
Definition Win.h:2014
-
winstd::vmemory::m_proc
HANDLE m_proc
Handle of memory's process.
Definition Win.h:2097
-
winstd::win_handle
Windows HANDLE wrapper class.
Definition Win.h:1363
-
winstd::win_handle::free_internal
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:1384
-
winstd::win_handle::~win_handle
virtual ~win_handle()
Closes an open object handle.
Definition Win.h:1372
-
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1074
+
winstd::actctx_activator
Activates given activation context in constructor and deactivates it in destructor.
Definition Win.h:1473
+
winstd::actctx_activator::actctx_activator
actctx_activator(HANDLE hActCtx) noexcept
Construct the activator and activates the given activation context.
Definition Win.h:1485
+
winstd::actctx_activator::~actctx_activator
virtual ~actctx_activator()
Deactivates activation context and destructs the activator.
Definition Win.h:1496
+
winstd::actctx_activator::m_cookie
ULONG_PTR m_cookie
Cookie for context deactivation.
Definition Win.h:1503
+
winstd::basic_string_printf
Base template class to support string formatting using printf() style templates.
Definition Common.h:1504
+
winstd::clipboard_opener
Clipboard management.
Definition Win.h:1621
+
winstd::clipboard_opener::~clipboard_opener
virtual ~clipboard_opener()
Closes the clipboard.
Definition Win.h:1639
+
winstd::clipboard_opener::clipboard_opener
clipboard_opener(HWND hWndNewOwner=NULL)
Opens the clipboard for examination and prevents other applications from modifying the clipboard cont...
Definition Win.h:1628
+
winstd::console_ctrl_handler
Console control handler stack management.
Definition Win.h:1649
+
winstd::console_ctrl_handler::console_ctrl_handler
console_ctrl_handler(PHANDLER_ROUTINE HandlerRoutine) noexcept
Construct the console control handler object and pushes the given handler to the console control hand...
Definition Win.h:1661
+
winstd::console_ctrl_handler::~console_ctrl_handler
virtual ~console_ctrl_handler()
Pops console control handler from the console control handler stack.
Definition Win.h:1671
+
winstd::console_ctrl_handler::m_handler
PHANDLER_ROUTINE m_handler
Pointer to console control handler.
Definition Win.h:1679
+
winstd::console_ctrl_handler::m_cookie
BOOL m_cookie
Did pushing the console control handler succeed?
Definition Win.h:1678
+
winstd::critical_section
Critical section wrapper.
Definition Win.h:1202
+
winstd::critical_section::critical_section
critical_section() noexcept
Construct the object and initializes a critical section object.
Definition Win.h:1212
+
winstd::critical_section::m_data
CRITICAL_SECTION m_data
Critical section struct.
Definition Win.h:1238
+
winstd::critical_section::~critical_section
virtual ~critical_section()
Releases all resources used by an unowned critical section object.
Definition Win.h:1222
+
winstd::event_log
Event log handle wrapper.
Definition Win.h:1960
+
winstd::event_log::free_internal
void free_internal() noexcept override
Closes an event log handle.
Definition Win.h:1981
+
winstd::event_log::~event_log
virtual ~event_log()
Closes an event log handle.
Definition Win.h:1969
+
winstd::find_file
Find-file handle wrapper.
Definition Win.h:1247
+
winstd::find_file::~find_file
virtual ~find_file()
Closes a file search handle.
Definition Win.h:1256
+
winstd::find_file::free_internal
void free_internal() noexcept override
Closes a file search handle.
Definition Win.h:1268
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< LPVOID, NULL >::handle_type
LPVOID handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+
winstd::handle< HANDLE, INVALID >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::handle::attach
void attach(handle_type h) noexcept
Sets a new object handle for the class.
Definition Common.h:1200
+
winstd::heap_allocator
HeapAlloc allocator.
Definition Win.h:1358
+
winstd::heap_allocator::size_type
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:1367
+
winstd::heap_allocator::value_type
_Ty value_type
A type that is managed by the allocator.
Definition Win.h:1360
+
winstd::heap_allocator::heap_allocator
heap_allocator(const heap_allocator< _Other > &other)
Constructs allocator from another type.
Definition Win.h:1395
+
winstd::heap_allocator::m_heap
HANDLE m_heap
Heap handle.
Definition Win.h:1466
+
winstd::heap_allocator::allocate
pointer allocate(size_type count)
Allocates a new memory block.
Definition Win.h:1406
+
winstd::heap_allocator::difference_type
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:1368
+
winstd::heap_allocator::heap_allocator
heap_allocator(HANDLE heap)
Constructs allocator.
Definition Win.h:1385
+
winstd::heap_allocator::reference
_Ty & reference
A type that provides a reference to the type of object managed by the allocator.
Definition Win.h:1363
+
winstd::heap_allocator::construct
void construct(pointer ptr, _Ty &&val)
Calls moving constructor for the element.
Definition Win.h:1442
+
winstd::heap_allocator::deallocate
void deallocate(pointer ptr, size_type size)
Frees memory block.
Definition Win.h:1418
+
winstd::heap_allocator::max_size
size_type max_size() const
Returns maximum memory block size.
Definition Win.h:1460
+
winstd::heap_allocator::construct
void construct(pointer ptr, const _Ty &val)
Calls copying constructor for the element.
Definition Win.h:1431
+
winstd::heap_allocator::const_reference
const _Ty & const_reference
A type that provides a constant reference to type of object managed by the allocator.
Definition Win.h:1365
+
winstd::heap_allocator::const_pointer
const _Ty * const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
Definition Win.h:1364
+
winstd::heap_allocator::pointer
_Ty * pointer
A type that provides a pointer to the type of object managed by the allocator.
Definition Win.h:1362
+
winstd::heap_allocator::destroy
void destroy(pointer ptr)
Calls destructor for the element.
Definition Win.h:1452
+
winstd::heap
Heap handle wrapper.
Definition Win.h:1280
+
winstd::heap::enumerate
bool enumerate() noexcept
Enumerates allocated heap blocks using OutputDebugString()
Definition Win.h:1302
+
winstd::heap::free_internal
void free_internal() noexcept override
Destroys the heap.
Definition Win.h:1346
+
winstd::heap::~heap
virtual ~heap()
Destroys the heap.
Definition Win.h:1289
+
winstd::impersonator
Base class for thread impersonation of another security context.
Definition Win.h:1510
+
winstd::impersonator::~impersonator
virtual ~impersonator()
Reverts to current user and destructs the impersonator.
Definition Win.h:1522
+
winstd::impersonator::impersonator
impersonator() noexcept
Construct the impersonator.
Definition Win.h:1515
+
winstd::impersonator::m_cookie
BOOL m_cookie
Did impersonation succeed?
Definition Win.h:1534
+
winstd::library
Module handle wrapper.
Definition Win.h:1061
+
winstd::library::free_internal
void free_internal() noexcept override
Frees the module.
Definition Win.h:1082
+
winstd::library::~library
virtual ~library()
Frees the module.
Definition Win.h:1070
+
winstd::process_information
PROCESS_INFORMATION struct wrapper.
Definition Win.h:1920
+
winstd::process_information::~process_information
~process_information()
Closes process and thread handles.
Definition Win.h:1939
+
winstd::process_information::process_information
process_information() noexcept
Constructs blank PROCESS_INFORMATION.
Definition Win.h:1928
+
winstd::reg_key
Registry key wrapper class.
Definition Win.h:1807
+
winstd::reg_key::free_internal
void free_internal() noexcept override
Closes a handle to the registry key.
Definition Win.h:1879
+
winstd::reg_key::delete_subkey
bool delete_subkey(LPCTSTR szSubkey)
Deletes the specified registry subkey.
Definition Win.h:1831
+
winstd::reg_key::~reg_key
virtual ~reg_key()
Closes a handle to the registry key.
Definition Win.h:1816
+
winstd::sc_handle
SC_HANDLE wrapper class.
Definition Win.h:1991
+
winstd::sc_handle::free_internal
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:2012
+
winstd::sc_handle::~sc_handle
virtual ~sc_handle()
Closes an open object handle.
Definition Win.h:2000
+
winstd::security_id
SID wrapper class.
Definition Win.h:1889
+
winstd::security_id::free_internal
void free_internal() noexcept override
Closes a handle to the SID.
Definition Win.h:1910
+
winstd::security_id::~security_id
virtual ~security_id()
Closes a handle to the SID.
Definition Win.h:1898
+
winstd::system_impersonator
Lets the calling thread impersonate the security context of the SYSTEM user.
Definition Win.h:1563
+
winstd::system_impersonator::system_impersonator
system_impersonator() noexcept
Construct the impersonator and impersonates the SYSTEM user.
Definition Win.h:1571
+
winstd::user_impersonator
Lets the calling thread impersonate the security context of a logged-on user.
Definition Win.h:1541
+
winstd::user_impersonator::user_impersonator
user_impersonator(HANDLE hToken) noexcept
Construct the impersonator and impersonates the given user.
Definition Win.h:1553
+
winstd::vmemory
Memory in virtual address space of a process handle wrapper.
Definition Win.h:1686
+
winstd::vmemory::operator=
vmemory & operator=(vmemory &&other) noexcept
Move assignment.
Definition Win.h:1736
+
winstd::vmemory::alloc
bool alloc(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) noexcept
Reserves, commits, or changes the state of a region of memory within the virtual address space of a s...
Definition Win.h:1770
+
winstd::vmemory::free_internal
void free_internal() noexcept override
Frees the memory.
Definition Win.h:1791
+
winstd::vmemory::attach
void attach(HANDLE proc, handle_type h) noexcept
Sets a new memory handle for the class.
Definition Win.h:1753
+
winstd::vmemory::~vmemory
virtual ~vmemory()
Frees the memory.
Definition Win.h:1725
+
winstd::vmemory::vmemory
vmemory(handle_type h, HANDLE proc) noexcept
Initializes a new class instance with an already available object handle.
Definition Win.h:1703
+
winstd::vmemory::vmemory
vmemory() noexcept
Initializes a new class instance with the memory handle set to INVAL.
Definition Win.h:1693
+
winstd::vmemory::vmemory
vmemory(vmemory &&h) noexcept
Move constructor.
Definition Win.h:1714
+
winstd::vmemory::m_proc
HANDLE m_proc
Handle of memory's process.
Definition Win.h:1797
+
winstd::win_handle
Windows HANDLE wrapper class.
Definition Win.h:1028
+
winstd::win_handle::free_internal
void free_internal() noexcept override
Closes an open object handle.
Definition Win.h:1049
+
winstd::win_handle::~win_handle
virtual ~win_handle()
Closes an open object handle.
Definition Win.h:1037
+
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1422
WINSTD_NONCOPYABLE
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
WINSTD_STACK_BUFFER_BYTES
#define WINSTD_STACK_BUFFER_BYTES
Size of the stack buffer in bytes used for initial system function call.
Definition Common.h:93
WINSTD_NONMOVABLE
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:74
vsprintf
static int vsprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format, va_list arg)
Formats string using printf().
Definition Common.h:251
sprintf
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:284
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle< HANDLE, INVALID >::invalid
static const HANDLE invalid
Invalid handle value.
Definition Common.h:645
-
NormalizeString
static int NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept
Normalizes characters of a text string according to Unicode 4.0 TR#15.
Definition Win.h:972
-
SecureWideCharToMultiByte
static int SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition Win.h:715
-
ExpandEnvironmentStringsA
static DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition Win.h:179
-
StringToGuidA
static BOOL StringToGuidA(LPCSTR lpszGuid, LPGUID lpGuid, LPCSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition Win.h:268
-
GetWindowTextA
static int GetWindowTextA(HWND hWnd, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition Win.h:81
-
RegCreateKeyExW
static LSTATUS RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition Win.h:2351
-
LoadStringA
static int WINAPI LoadStringA(HINSTANCE hInstance, UINT uID, std::basic_string< char, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition Win.h:1054
-
winstd::file
win_handle< INVALID_HANDLE_VALUE > file
File handle wrapper.
Definition Win.h:1450
-
GetFileVersionInfoA
static BOOL GetFileVersionInfoA(LPCSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition Win.h:143
-
MultiByteToWideChar
static int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition Win.h:804
-
RegCreateKeyExA
static LSTATUS RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition Win.h:2328
-
RegOpenKeyExA
static LSTATUS RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2370
-
RegOpenKeyExW
static LSTATUS RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2389
-
GuidToStringA
static VOID GuidToStringA(LPCGUID lpGuid, std::basic_string< char, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition Win.h:229
-
StringToGuidW
static BOOL StringToGuidW(LPCWSTR lpszGuid, LPGUID lpGuid, LPCWSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition Win.h:341
-
RegLoadMUIStringW
static LSTATUS RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, std::basic_string< wchar_t, _Traits, _Ax > &sOut, DWORD Flags, LPCWSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition Win.h:606
-
OpenProcessToken
static BOOL OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, winstd::win_handle< NULL > &TokenHandle)
Opens the access token associated with a process.
Definition Win.h:2408
-
SetEntriesInAclW
static DWORD SetEntriesInAclW(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_W pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2463
-
LookupAccountSidA
static BOOL LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, std::basic_string< char, _Traits, _Ax > *sName, std::basic_string< char, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition Win.h:1172
-
GetModuleFileNameW
static DWORD GetModuleFileNameW(HMODULE hModule, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition Win.h:56
-
LookupAccountSidW
static BOOL LookupAccountSidW(LPCWSTR lpSystemName, PSID lpSid, std::basic_string< wchar_t, _Traits, _Ax > *sName, std::basic_string< wchar_t, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition Win.h:1211
-
AllocateAndInitializeSid
static BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, winstd::security_id &Sid)
Allocates and initializes a security identifier (SID) with up to eight subauthorities.
Definition Win.h:2438
-
winstd::process_snapshot
win_handle< INVALID_HANDLE_VALUE > process_snapshot
Process snapshot handle wrapper.
Definition Win.h:1442
-
GetModuleFileNameA
static DWORD GetModuleFileNameA(HMODULE hModule, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition Win.h:25
-
GetDateFormatW
static int GetDateFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, std::basic_string< wchar_t, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition Win.h:1156
-
CreateWellKnownSid
static BOOL CreateWellKnownSid(WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, std::unique_ptr< SID > &Sid)
Creates a SID for predefined aliases.
Definition Win.h:1249
-
LoadStringW
static int WINAPI LoadStringW(HINSTANCE hInstance, UINT uID, std::basic_string< wchar_t, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition Win.h:1072
-
GetTokenInformation
static BOOL GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, std::unique_ptr< _Ty > &TokenInformation) noexcept
Retrieves a specified type of information about an access token. The calling process must have approp...
Definition Win.h:1273
-
DuplicateTokenEx
static BOOL DuplicateTokenEx(HANDLE hExistingToken, DWORD dwDesiredAccess, LPSECURITY_ATTRIBUTES lpTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, winstd::win_handle< NULL > &NewToken)
Creates a new access token that duplicates an existing token. This function can create either a prima...
Definition Win.h:2423
-
SetEntriesInAclA
static DWORD SetEntriesInAclA(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_A pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2449
-
RegQueryValueExW
static LSTATUS RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition Win.h:567
-
GetFileVersionInfoW
static BOOL GetFileVersionInfoW(LPCWSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition Win.h:163
-
winstd::event
win_handle< NULL > event
Event handle wrapper.
Definition Win.h:1524
-
RegLoadMUIStringA
static LSTATUS RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, std::basic_string< char, _Traits, _Ax > &sOut, DWORD Flags, LPCSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition Win.h:592
-
OutputDebugStr
static VOID OutputDebugStr(LPCSTR lpOutputString,...) noexcept
Formats and sends a string to the debugger for display.
Definition Win.h:1113
-
QueryFullProcessImageNameA
static BOOL QueryFullProcessImageNameA(HANDLE hProcess, DWORD dwFlags, std::basic_string< char, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition Win.h:1297
-
winstd::file_mapping
win_handle< NULL > file_mapping
File mapping.
Definition Win.h:1457
-
SecureMultiByteToWideChar
static int SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept
Maps a character string to a UTF-16 (wide character) std::wstring. The character string is not necess...
Definition Win.h:883
-
WideCharToMultiByte
static int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition Win.h:636
-
QueryFullProcessImageNameW
static BOOL QueryFullProcessImageNameW(HANDLE hProcess, DWORD dwFlags, std::basic_string< wchar_t, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition Win.h:1326
-
winstd::process
win_handle< NULL > process
Process handle wrapper.
Definition Win.h:1428
-
RegQueryValueExA
static LSTATUS RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition Win.h:540
-
RegQueryStringValue
static LSTATUS RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Queries for a string value in the registry and stores it in a std::string string.
Definition Win.h:429
-
GetWindowTextW
static int GetWindowTextW(HWND hWnd, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition Win.h:114
-
GetDateFormatA
static int GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, std::basic_string< char, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition Win.h:1136
-
ExpandEnvironmentStringsW
static DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition Win.h:207
-
GuidToStringW
static VOID GuidToStringW(LPCGUID lpGuid, std::basic_string< wchar_t, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition Win.h:248
-
OutputDebugStrV
static VOID OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept
Formats and sends a string to the debugger for display.
Definition Win.h:1089
-
winstd::thread
win_handle< NULL > thread
Thread handle wrapper.
Definition Win.h:1435
-
winstd::LocalFree_delete
Deleter for unique_ptr using LocalFree.
Definition Common.h:346
-
winstd::UnmapViewOfFile_delete< _Ty[]>::UnmapViewOfFile_delete
UnmapViewOfFile_delete()
Default construct.
Definition Win.h:1496
-
winstd::UnmapViewOfFile_delete< _Ty[]>::operator()
void operator()(_Other *) const
Delete a pointer of another type.
Definition Win.h:1511
-
winstd::UnmapViewOfFile_delete< _Ty[]>::operator()
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Win.h:1501
-
winstd::UnmapViewOfFile_delete< _Ty[]>::_Myt
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition Win.h:1491
-
winstd::UnmapViewOfFile_delete
Deleter for unique_ptr using UnmapViewOfFile.
Definition Win.h:1463
-
winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete
UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)
Construct from another UnmapViewOfFile_delete.
Definition Win.h:1474
-
winstd::UnmapViewOfFile_delete::operator()
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Win.h:1479
-
winstd::UnmapViewOfFile_delete::_Myt
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition Win.h:1464
-
winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete
UnmapViewOfFile_delete()
Default construct.
Definition Win.h:1469
-
winstd::heap_allocator::rebind
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition Win.h:1703
-
winstd::heap_allocator::rebind::other
heap_allocator< _Other > other
Other allocator type.
Definition Win.h:1704
+
winstd::handle< HANDLE, INVALID >::invalid
static const HANDLE invalid
Invalid handle value.
Definition Common.h:993
+
NormalizeString
static int NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept
Normalizes characters of a text string according to Unicode 4.0 TR#15.
Definition Win.h:637
+
ExpandEnvironmentStringsA
static DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition Win.h:180
+
StringToGuidA
static BOOL StringToGuidA(LPCSTR lpszGuid, LPGUID lpGuid, LPCSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition Win.h:269
+
GetWindowTextA
static int GetWindowTextA(HWND hWnd, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition Win.h:82
+
RegCreateKeyExW
static LSTATUS RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition Win.h:2051
+
LoadStringA
static int WINAPI LoadStringA(HINSTANCE hInstance, UINT uID, std::basic_string< char, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition Win.h:719
+
winstd::file
win_handle< INVALID_HANDLE_VALUE > file
File handle wrapper.
Definition Win.h:1122
+
GetFileVersionInfoA
static BOOL GetFileVersionInfoA(LPCSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition Win.h:144
+
RegCreateKeyExA
static LSTATUS RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, winstd::reg_key &result, LPDWORD lpdwDisposition)
Creates the specified registry key. If the key already exists, the function opens it.
Definition Win.h:2028
+
RegOpenKeyExA
static LSTATUS RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2070
+
RegOpenKeyExW
static LSTATUS RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, winstd::reg_key &result)
Opens the specified registry key.
Definition Win.h:2089
+
GuidToStringA
static VOID GuidToStringA(LPCGUID lpGuid, std::basic_string< char, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition Win.h:230
+
StringToGuidW
static BOOL StringToGuidW(LPCWSTR lpszGuid, LPGUID lpGuid, LPCWSTR *lpszGuidEnd=NULL) noexcept
Parses string with GUID and stores it to GUID.
Definition Win.h:342
+
RegLoadMUIStringW
static LSTATUS RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, std::basic_string< wchar_t, _Traits, _Ax > &sOut, DWORD Flags, LPCWSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition Win.h:607
+
OpenProcessToken
static BOOL OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, winstd::win_handle< NULL > &TokenHandle)
Opens the access token associated with a process.
Definition Win.h:2108
+
SetEntriesInAclW
static DWORD SetEntriesInAclW(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_W pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2163
+
LookupAccountSidA
static BOOL LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, std::basic_string< char, _Traits, _Ax > *sName, std::basic_string< char, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition Win.h:837
+
GetModuleFileNameW
static DWORD GetModuleFileNameW(HMODULE hModule, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition Win.h:57
+
LookupAccountSidW
static BOOL LookupAccountSidW(LPCWSTR lpSystemName, PSID lpSid, std::basic_string< wchar_t, _Traits, _Ax > *sName, std::basic_string< wchar_t, _Traits, _Ax > *sReferencedDomainName, PSID_NAME_USE peUse) noexcept
Retrieves the name of the account for this SID and the name of the first domain on which this SID is ...
Definition Win.h:876
+
AllocateAndInitializeSid
static BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, winstd::security_id &Sid)
Allocates and initializes a security identifier (SID) with up to eight subauthorities.
Definition Win.h:2138
+
winstd::process_snapshot
win_handle< INVALID_HANDLE_VALUE > process_snapshot
Process snapshot handle wrapper.
Definition Win.h:1107
+
GetModuleFileNameA
static DWORD GetModuleFileNameA(HMODULE hModule, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Retrieves the fully qualified path for the file that contains the specified module and stores it in a...
Definition Win.h:26
+
GetDateFormatW
static int GetDateFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, std::basic_string< wchar_t, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition Win.h:821
+
CreateWellKnownSid
static BOOL CreateWellKnownSid(WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, std::unique_ptr< SID > &Sid)
Creates a SID for predefined aliases.
Definition Win.h:914
+
LoadStringW
static int WINAPI LoadStringW(HINSTANCE hInstance, UINT uID, std::basic_string< wchar_t, _Traits, _Ax > &sBuffer) noexcept
Loads a string resource from the executable file associated with a specified module.
Definition Win.h:737
+
GetTokenInformation
static BOOL GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, std::unique_ptr< _Ty > &TokenInformation) noexcept
Retrieves a specified type of information about an access token. The calling process must have approp...
Definition Win.h:938
+
DuplicateTokenEx
static BOOL DuplicateTokenEx(HANDLE hExistingToken, DWORD dwDesiredAccess, LPSECURITY_ATTRIBUTES lpTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, winstd::win_handle< NULL > &NewToken)
Creates a new access token that duplicates an existing token. This function can create either a prima...
Definition Win.h:2123
+
SetEntriesInAclA
static DWORD SetEntriesInAclA(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_A pListOfExplicitEntries, PACL OldAcl, std::unique_ptr< ACL, winstd::LocalFree_delete< ACL > > &Acl)
Creates a new access control list (ACL) by merging new access control or audit control information in...
Definition Win.h:2149
+
RegQueryValueExW
static LSTATUS RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition Win.h:568
+
GetFileVersionInfoW
static BOOL GetFileVersionInfoW(LPCWSTR lptstrFilename, __reserved DWORD dwHandle, std::vector< _Ty, _Ax > &aValue) noexcept
Retrieves version information for the specified file and stores it in a std::vector buffer.
Definition Win.h:164
+
winstd::event
win_handle< NULL > event
Event handle wrapper.
Definition Win.h:1196
+
RegLoadMUIStringA
static LSTATUS RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, std::basic_string< char, _Traits, _Ax > &sOut, DWORD Flags, LPCSTR pszDirectory) noexcept
Loads the specified string from the specified key and subkey, and stores it in a std::wstring string.
Definition Win.h:593
+
OutputDebugStr
static VOID OutputDebugStr(LPCSTR lpOutputString,...) noexcept
Formats and sends a string to the debugger for display.
Definition Win.h:778
+
QueryFullProcessImageNameA
static BOOL QueryFullProcessImageNameA(HANDLE hProcess, DWORD dwFlags, std::basic_string< char, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition Win.h:962
+
winstd::mutex
win_handle< NULL > mutex
Mutex handle wrapper.
Definition Win.h:1114
+
winstd::file_mapping
win_handle< NULL > file_mapping
File mapping.
Definition Win.h:1129
+
QueryFullProcessImageNameW
static BOOL QueryFullProcessImageNameW(HANDLE hProcess, DWORD dwFlags, std::basic_string< wchar_t, _Traits, _Ax > &sExeName)
Retrieves the full name of the executable image for the specified process.
Definition Win.h:991
+
winstd::process
win_handle< NULL > process
Process handle wrapper.
Definition Win.h:1093
+
RegQueryValueExA
static LSTATUS RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, __reserved LPDWORD lpReserved, LPDWORD lpType, std::vector< _Ty, _Ax > &aData) noexcept
Retrieves the type and data for the specified value name associated with an open registry key and sto...
Definition Win.h:541
+
GetThreadPreferredUILanguages
BOOL GetThreadPreferredUILanguages(DWORD dwFlags, PULONG pulNumLanguages, std::basic_string< wchar_t, _Traits, _Ax > &sValue)
Retrieves the thread preferred UI languages for the current thread.
Definition Win.h:2178
+
RegQueryStringValue
static LSTATUS RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept
Queries for a string value in the registry and stores it in a std::string string.
Definition Win.h:430
+
GetWindowTextW
static int GetWindowTextW(HWND hWnd, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Copies the text of the specified window's title bar (if it has one) into a std::wstring string.
Definition Win.h:115
+
GetDateFormatA
static int GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, std::basic_string< char, _Traits, _Ax > &sDate) noexcept
Formats a date as a date string for a locale specified by the locale identifier. The function formats...
Definition Win.h:801
+
ExpandEnvironmentStringsW
static DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept
Expands environment-variable strings, replaces them with the values defined for the current user,...
Definition Win.h:208
+
GuidToStringW
static VOID GuidToStringW(LPCGUID lpGuid, std::basic_string< wchar_t, _Traits, _Ax > &str) noexcept
Formats GUID and stores it in a std::wstring string.
Definition Win.h:249
+
OutputDebugStrV
static VOID OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept
Formats and sends a string to the debugger for display.
Definition Win.h:754
+
winstd::thread
win_handle< NULL > thread
Thread handle wrapper.
Definition Win.h:1100
+
winstd::LocalFree_delete
Deleter for unique_ptr using LocalFree.
Definition Common.h:694
+
winstd::UnmapViewOfFile_delete< _Ty[]>::UnmapViewOfFile_delete
UnmapViewOfFile_delete()
Default construct.
Definition Win.h:1168
+
winstd::UnmapViewOfFile_delete< _Ty[]>::operator()
void operator()(_Other *) const
Delete a pointer of another type.
Definition Win.h:1183
+
winstd::UnmapViewOfFile_delete< _Ty[]>::operator()
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Win.h:1173
+
winstd::UnmapViewOfFile_delete< _Ty[]>::_Myt
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition Win.h:1163
+
winstd::UnmapViewOfFile_delete
Deleter for unique_ptr using UnmapViewOfFile.
Definition Win.h:1135
+
winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete
UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)
Construct from another UnmapViewOfFile_delete.
Definition Win.h:1146
+
winstd::UnmapViewOfFile_delete::operator()
void operator()(_Ty *_Ptr) const
Delete a pointer.
Definition Win.h:1151
+
winstd::UnmapViewOfFile_delete::_Myt
UnmapViewOfFile_delete< _Ty > _Myt
This type.
Definition Win.h:1136
+
winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete
UnmapViewOfFile_delete()
Default construct.
Definition Win.h:1141
+
winstd::heap_allocator::rebind
A structure that enables an allocator for objects of one type to allocate storage for objects of anot...
Definition Win.h:1375
+
winstd::heap_allocator::rebind::other
heap_allocator< _Other > other
Other allocator type.
Definition Win.h:1376
diff --git a/_win_h_t_t_p_8h_source.html b/_win_h_t_t_p_8h_source.html new file mode 100644 index 00000000..be3f4310 --- /dev/null +++ b/_win_h_t_t_p_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +WinStd: include/WinStd/WinHTTP.h Source File + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
WinHTTP.h
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 1991-2023 Amebis
+
4 Copyright © 2016 GÉANT
+
5*/
+
6
+
8
+
9#pragma once
+
10
+
11#include "Common.h"
+
12#include <winhttp.h>
+
13
+
14namespace winstd
+
15{
+
18
+
+
24 class http : public handle<HINTERNET, NULL>
+
25 {
+ +
27
+
28 public:
+
+
34 virtual ~http()
+
35 {
+
36 if (m_h != invalid)
+ +
38 }
+
+
39
+
40 protected:
+
+
46 void free_internal() noexcept override
+
47 {
+
48 WinHttpCloseHandle(m_h);
+
49 }
+
+
50 };
+
+
51
+
53}
+
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
handle_type m_h
Object handle.
Definition Common.h:1237
+
HTTP handle wrapper class.
Definition WinHTTP.h:25
+
virtual ~http()
Closes a handle to the HTTP.
Definition WinHTTP.h:34
+
void free_internal() noexcept override
Closes a handle to the HTTP.
Definition WinHTTP.h:46
+
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
+
static const HINTERNET invalid
Invalid handle value.
Definition Common.h:993
+
+ + + + diff --git a/_win_sock2_8h_source.html b/_win_sock2_8h_source.html index a550241f..950728f4 100644 --- a/_win_sock2_8h_source.html +++ b/_win_sock2_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/WinSock2.h Source File @@ -30,7 +30,7 @@ - + +
16namespace winstd
17{
20
+
24 class ws2_runtime_error : public num_runtime_error<int>
25 {
26 public:
-
33 ws2_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<int>(num, msg)
-
34 {
-
35 }
-
36
-
43 ws2_runtime_error(_In_ error_type num, _In_opt_z_ const char *msg = nullptr) : num_runtime_error<int>(num, msg)
-
44 {
-
45 }
-
46
-
52 ws2_runtime_error(_In_ const std::string& msg) : num_runtime_error<int>(WSAGetLastError(), msg)
-
53 {
-
54 }
-
55
-
61 ws2_runtime_error(_In_opt_z_ const char *msg = nullptr) : num_runtime_error<int>(WSAGetLastError(), msg)
-
62 {
-
63 }
-
64
-
70 tstring msg(_In_opt_ DWORD dwLanguageId = 0) const
-
71 {
-
72 tstring str;
-
73 if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, m_num, dwLanguageId, str, NULL)) {
-
74 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
-
75 str.erase(str.find_last_not_of(_T(" \t\n\r\f\v")) + 1);
-
76 } else
-
77 sprintf(str, m_num >= 0x10000 ? _T("Error 0x%X") : _T("Error %u"), m_num);
-
78 return str;
-
79 }
-
80 };
-
81
-
83
-
86
-
87#if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
-
88
-
94 class addrinfo : public handle<PADDRINFOA, NULL>
-
95 {
-
96 WINSTD_HANDLE_IMPL(addrinfo, NULL)
+
+ +
33 {}
+
+
34
+
+
41 ws2_runtime_error(_In_ error_type num, _In_ const std::string& msg) : num_runtime_error<int>(num, msg + ": " + message(num))
+
42 {}
+
+
43
+
+
50 ws2_runtime_error(_In_ error_type num, _In_z_ const char *msg) : num_runtime_error<int>(num, std::string(msg) + ": " + message(num))
+
51 {}
+
+
52
+
+
56 ws2_runtime_error() : num_runtime_error<int>(WSAGetLastError(), message(WSAGetLastError()))
+
57 {}
+
+
58
+
+
64 ws2_runtime_error(_In_ const std::string& msg) : num_runtime_error<int>(WSAGetLastError(), msg + ": " + message(WSAGetLastError()))
+
65 {}
+
+
66
+
+
72 ws2_runtime_error(_In_z_ const char *msg) : num_runtime_error<int>(WSAGetLastError(), std::string(msg) + ": " + message(WSAGetLastError()))
+
73 {}
+
+
74
+
75 protected:
+
+
81 static std::string message(_In_ error_type num, _In_opt_ DWORD dwLanguageId = 0)
+
82 {
+
83 std::wstring wstr;
+
84 if (FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, num, dwLanguageId, wstr, NULL)) {
+
85 // Stock Windows error messages contain CRLF. Well... Trim all the trailing white space.
+
86 wstr.erase(wstr.find_last_not_of(L" \t\n\r\f\v") + 1);
+
87 }
+
88 else
+
89 sprintf(wstr, num >= 0x10000 ? L"Error 0x%X" : L"Error %u", num);
+
90 std::string str;
+
91 WideCharToMultiByte(CP_UTF8, 0, wstr, str, NULL, NULL);
+
92 return str;
+
93 }
+
+
94 };
+
+
95
97
-
98 public:
-
104 virtual ~addrinfo()
-
105 {
-
106 if (m_h != invalid)
-
107 free_internal();
-
108 }
-
109
-
110 protected:
-
116 void free_internal() noexcept override
-
117 {
-
118 FreeAddrInfoA(m_h);
-
119 }
-
120 };
-
121
-
127 class waddrinfo : public handle<PADDRINFOW, NULL>
-
128 {
-
129 WINSTD_HANDLE_IMPL(waddrinfo, NULL)
-
130
-
131 public:
-
137 virtual ~waddrinfo()
-
138 {
-
139 if (m_h != invalid)
-
140 free_internal();
-
141 }
-
142
-
143 protected:
-
149 void free_internal() noexcept override
-
150 {
-
151 FreeAddrInfoW(m_h);
-
152 }
-
153 };
-
154
-
158#ifdef _UNICODE
-
159 typedef waddrinfo taddrinfo;
-
160#else
-
161 typedef addrinfo taddrinfo;
-
162#endif
-
163
-
164#endif
-
165
-
167}
+
100
+
101#if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
+
102
+
+
108 class addrinfo : public handle<PADDRINFOA, NULL>
+
109 {
+
110 WINSTD_HANDLE_IMPL(addrinfo, NULL)
+
111
+
112 public:
+
+
118 virtual ~addrinfo()
+
119 {
+
120 if (m_h != invalid)
+ +
122 }
+
+
123
+
124 protected:
+
+
130 void free_internal() noexcept override
+
131 {
+
132 FreeAddrInfoA(m_h);
+
133 }
+
+
134 };
+
+
135
+
+
141 class waddrinfo : public handle<PADDRINFOW, NULL>
+
142 {
+
143 WINSTD_HANDLE_IMPL(waddrinfo, NULL)
+
144
+
145 public:
+
+
151 virtual ~waddrinfo()
+
152 {
+
153 if (m_h != invalid)
+ +
155 }
+
+
156
+
157 protected:
+
+
163 void free_internal() noexcept override
+
164 {
+
165 FreeAddrInfoW(m_h);
+
166 }
+
+
167 };
+
168
-
171
-
172#pragma warning(push)
-
173#pragma warning(disable: 4505) // Don't warn on unused code
-
174
-
176static INT GetAddrInfoA(
-
177 _In_opt_ PCSTR pNodeName,
-
178 _In_opt_ PCSTR pServiceName,
-
179 _In_opt_ const ADDRINFOA *pHints,
-
180 _Inout_ winstd::addrinfo &result)
-
181{
-
182 PADDRINFOA h;
-
183 INT iResult = GetAddrInfoA(pNodeName, pServiceName, pHints, &h);
-
184 if (iResult == 0)
-
185 result.attach(h);
-
186 return iResult;
-
187}
+
172#ifdef _UNICODE
+
173 typedef waddrinfo taddrinfo;
+
174#else
+
175 typedef addrinfo taddrinfo;
+
176#endif
+
177
+
178#endif
+
179
+
181}
+
182
+
185
+
186#pragma warning(push)
+
187#pragma warning(disable: 4505) // Don't warn on unused code
188
-
194static INT GetAddrInfoW(
-
195 _In_opt_ PCWSTR pNodeName,
-
196 _In_opt_ PCWSTR pServiceName,
-
197 _In_opt_ const ADDRINFOW *pHints,
-
198 _Inout_ winstd::waddrinfo &result)
-
199{
-
200 PADDRINFOW h;
-
201 INT iResult = GetAddrInfoW(pNodeName, pServiceName, pHints, &h);
-
202 if (iResult == 0)
-
203 result.attach(h);
-
204 return iResult;
-
205}
-
206
-
207#pragma warning(pop)
-
208
-
winstd::addrinfo
ADDRINFOA wrapper class.
Definition WinSock2.h:95
-
winstd::addrinfo::free_internal
void free_internal() noexcept override
Frees address information.
Definition WinSock2.h:116
-
winstd::addrinfo::~addrinfo
virtual ~addrinfo()
Frees address information.
Definition WinSock2.h:104
-
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:635
-
winstd::handle< PADDRINFOA, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:889
-
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1029
-
winstd::num_runtime_error< int >::error_type
int error_type
Error number type.
Definition Common.h:1031
-
winstd::num_runtime_error< int >::m_num
error_type m_num
Numeric error code.
Definition Common.h:1067
-
winstd::waddrinfo
ADDRINFOW wrapper class.
Definition WinSock2.h:128
-
winstd::waddrinfo::~waddrinfo
virtual ~waddrinfo()
Frees address information.
Definition WinSock2.h:137
-
winstd::waddrinfo::free_internal
void free_internal() noexcept override
Frees address information.
Definition WinSock2.h:149
+
+
190static INT GetAddrInfoA(
+
191 _In_opt_ PCSTR pNodeName,
+
192 _In_opt_ PCSTR pServiceName,
+
193 _In_opt_ const ADDRINFOA *pHints,
+
194 _Inout_ winstd::addrinfo &result)
+
195{
+
196 PADDRINFOA h;
+
197 INT iResult = GetAddrInfoA(pNodeName, pServiceName, pHints, &h);
+
198 if (iResult == 0)
+
199 result.attach(h);
+
200 return iResult;
+
201}
+
+
202
+
+
208static INT GetAddrInfoW(
+
209 _In_opt_ PCWSTR pNodeName,
+
210 _In_opt_ PCWSTR pServiceName,
+
211 _In_opt_ const ADDRINFOW *pHints,
+
212 _Inout_ winstd::waddrinfo &result)
+
213{
+
214 PADDRINFOW h;
+
215 INT iResult = GetAddrInfoW(pNodeName, pServiceName, pHints, &h);
+
216 if (iResult == 0)
+
217 result.attach(h);
+
218 return iResult;
+
219}
+
+
220
+
221#pragma warning(pop)
+
222
+
winstd::addrinfo
ADDRINFOA wrapper class.
Definition WinSock2.h:109
+
winstd::addrinfo::free_internal
void free_internal() noexcept override
Frees address information.
Definition WinSock2.h:130
+
winstd::addrinfo::~addrinfo
virtual ~addrinfo()
Frees address information.
Definition WinSock2.h:118
+
winstd::handle
Base abstract template class to support generic object handle keeping.
Definition Common.h:983
+
winstd::handle< PADDRINFOA, NULL >::m_h
handle_type m_h
Object handle.
Definition Common.h:1237
+
winstd::num_runtime_error
Numerical runtime error.
Definition Common.h:1377
+
winstd::num_runtime_error< int >::error_type
int error_type
Error number type.
Definition Common.h:1379
+
winstd::waddrinfo
ADDRINFOW wrapper class.
Definition WinSock2.h:142
+
winstd::waddrinfo::~waddrinfo
virtual ~waddrinfo()
Frees address information.
Definition WinSock2.h:151
+
winstd::waddrinfo::free_internal
void free_internal() noexcept override
Frees address information.
Definition WinSock2.h:163
winstd::ws2_runtime_error
WinSock2 runtime error.
Definition WinSock2.h:25
-
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition WinSock2.h:43
-
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(const char *msg=nullptr)
Constructs an exception using WSAGetLastError()
Definition WinSock2.h:61
-
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition WinSock2.h:33
-
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(const std::string &msg)
Constructs an exception using WSAGetLastError()
Definition WinSock2.h:52
-
winstd::ws2_runtime_error::msg
tstring msg(DWORD dwLanguageId=0) const
Returns a user-readable Windows error message.
Definition WinSock2.h:70
-
winstd::taddrinfo
addrinfo taddrinfo
Multi-byte / Wide-character ADDRINFO wrapper class (according to _UNICODE)
Definition WinSock2.h:161
-
GetAddrInfoW
static INT GetAddrInfoW(PCWSTR pNodeName, PCWSTR pServiceName, const ADDRINFOW *pHints, winstd::waddrinfo &result)
Provides protocol-independent translation from a host name to an address.
Definition WinSock2.h:194
-
GetAddrInfoA
static INT GetAddrInfoA(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, winstd::addrinfo &result)
Provides protocol-independent translation from a host name to an address.
Definition WinSock2.h:176
-
winstd::tstring
std::string tstring
Multi-byte / Wide-character string (according to _UNICODE)
Definition Common.h:338
-
FormatMessage
static DWORD FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments)
Formats a message string.
Definition Common.h:299
+
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(error_type num)
Constructs an exception.
Definition WinSock2.h:32
+
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error()
Constructs an exception using WSAGetLastError()
Definition WinSock2.h:56
+
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition WinSock2.h:41
+
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(error_type num, const char *msg)
Constructs an exception.
Definition WinSock2.h:50
+
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(const std::string &msg)
Constructs an exception using WSAGetLastError()
Definition WinSock2.h:64
+
winstd::ws2_runtime_error::ws2_runtime_error
ws2_runtime_error(const char *msg)
Constructs an exception using WSAGetLastError()
Definition WinSock2.h:72
+
winstd::ws2_runtime_error::message
static std::string message(error_type num, DWORD dwLanguageId=0)
Returns a user-readable Windows error message.
Definition WinSock2.h:81
+
winstd::taddrinfo
addrinfo taddrinfo
Multi-byte / Wide-character ADDRINFO wrapper class (according to _UNICODE)
Definition WinSock2.h:175
+
GetAddrInfoW
static INT GetAddrInfoW(PCWSTR pNodeName, PCWSTR pServiceName, const ADDRINFOW *pHints, winstd::waddrinfo &result)
Provides protocol-independent translation from a host name to an address.
Definition WinSock2.h:208
+
GetAddrInfoA
static INT GetAddrInfoA(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA *pHints, winstd::addrinfo &result)
Provides protocol-independent translation from a host name to an address.
Definition WinSock2.h:190
+
WideCharToMultiByte
static int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept
Maps a UTF-16 (wide character) string to a std::string. The new character string is not necessarily f...
Definition Common.h:299
sprintf
static int sprintf(std::basic_string< _Elem, _Traits, _Ax > &str, const _Elem *format,...)
Formats string using printf().
Definition Common.h:284
WINSTD_HANDLE_IMPL
#define WINSTD_HANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:163
-
winstd::handle< PADDRINFOA, NULL >::invalid
static const PADDRINFOA invalid
Invalid handle value.
Definition Common.h:645
+
winstd::handle< PADDRINFOA, NULL >::invalid
static const PADDRINFOA invalid
Invalid handle value.
Definition Common.h:993
diff --git a/_win_trust_8h_source.html b/_win_trust_8h_source.html index 6a29b436..7ad6bb97 100644 --- a/_win_trust_8h_source.html +++ b/_win_trust_8h_source.html @@ -3,7 +3,7 @@ - + WinStd: include/WinStd/WinTrust.h Source File @@ -30,7 +30,7 @@ - + +
14namespace winstd
15{
18
+
22 class wintrust
23 {
24 WINSTD_NONCOPYABLE(wintrust)
25 WINSTD_NONMOVABLE(wintrust)
26
27 public:
+
31 wintrust(_In_opt_ HWND hwnd, _In_ const GUID &action, _Inout_ WINTRUST_DATA &wtd) :
32 m_hwnd(hwnd),
33 m_action(action),
@@ -107,21 +114,25 @@ $(function() {
37 if (lResult != ERROR_SUCCESS)
38 throw win_runtime_error(lResult, "WinVerifyTrust failed");
39 }
+
40
+
44 virtual ~wintrust()
45 {
46 m_wtd.dwStateAction = WTD_STATEACTION_CLOSE;
47 WinVerifyTrust(m_hwnd, &m_action, &m_wtd);
48 }
+
49
50 protected:
52 HWND m_hwnd;
53 GUID m_action;
54 WINTRUST_DATA &m_wtd;
56 };
+
57
59}
-
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1074
+
winstd::win_runtime_error
Windows runtime error.
Definition Common.h:1422
winstd::wintrust
WinTrust engine wrapper class.
Definition WinTrust.h:23
winstd::wintrust::wintrust
wintrust(HWND hwnd, const GUID &action, WINTRUST_DATA &wtd)
Initializes a new class instance.
Definition WinTrust.h:31
winstd::wintrust::~wintrust
virtual ~wintrust()
Destroys the WinTrust context.
Definition WinTrust.h:44
@@ -130,7 +141,7 @@ $(function() { diff --git a/annotated.html b/annotated.html index c3b1f1b6..db28a1ae 100644 --- a/annotated.html +++ b/annotated.html @@ -3,7 +3,7 @@ - + WinStd: Class List @@ -30,7 +30,7 @@ - + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
winstd::clipboard_opener Member List
+
+
+ +

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

+ + + +
clipboard_opener(HWND hWndNewOwner=NULL)winstd::clipboard_openerinline
~clipboard_opener()winstd::clipboard_openerinlinevirtual
+ + + + diff --git a/classwinstd_1_1clipboard__opener.html b/classwinstd_1_1clipboard__opener.html new file mode 100644 index 00000000..46f2a5c7 --- /dev/null +++ b/classwinstd_1_1clipboard__opener.html @@ -0,0 +1,167 @@ + + + + + + + +WinStd: winstd::clipboard_opener Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +List of all members
+
winstd::clipboard_opener Class Reference
+
+
+ +

Clipboard management. + More...

+ +

#include <WinStd/Win.h>

+ + + + + + + + +

+Public Member Functions

 clipboard_opener (HWND hWndNewOwner=NULL)
 Opens the clipboard for examination and prevents other applications from modifying the clipboard content.
 
virtual ~clipboard_opener ()
 Closes the clipboard.
 
+

Detailed Description

+

Clipboard management.

+

Constructor & Destructor Documentation

+ +

◆ clipboard_opener()

+ +
+
+ + + + + +
+ + + + + + + + +
winstd::clipboard_opener::clipboard_opener (HWND hWndNewOwner = NULL)
+
+inline
+
+ +

Opens the clipboard for examination and prevents other applications from modifying the clipboard content.

+
See also
OpenClipboard function
+ +
+
+ +

◆ ~clipboard_opener()

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

Closes the clipboard.

+
See also
CloseClipboard function
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1com__initializer-members.html b/classwinstd_1_1com__initializer-members.html index 52c8104e..3d047513 100644 --- a/classwinstd_1_1com__initializer-members.html +++ b/classwinstd_1_1com__initializer-members.html @@ -3,7 +3,7 @@ - + WinStd: Member List @@ -30,7 +30,7 @@ - + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
winstd::http Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
attach(handle_type h) noexceptwinstd::handle< HINTERNET, NULL >inline
detach()winstd::handle< HINTERNET, NULL >inline
free()winstd::handle< HINTERNET, NULL >inline
free_internal() noexcept overridewinstd::httpinlineprotectedvirtual
handle() noexceptwinstd::handle< HINTERNET, NULL >inline
handle(handle_type h) noexceptwinstd::handle< HINTERNET, NULL >inline
handle(handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HINTERNET, NULL >inline
handle_type typedefwinstd::handle< HINTERNET, NULL >
invalidwinstd::handle< HINTERNET, NULL >static
m_hwinstd::handle< HINTERNET, NULL >protected
operator handle_type() constwinstd::handle< HINTERNET, NULL >inline
operator!() constwinstd::handle< HINTERNET, NULL >inline
operator!=(handle_type h) constwinstd::handle< HINTERNET, NULL >inline
operator&()winstd::handle< HINTERNET, NULL >inline
operator*() constwinstd::handle< HINTERNET, NULL >inline
operator->() constwinstd::handle< HINTERNET, NULL >inline
operator<(handle_type h) constwinstd::handle< HINTERNET, NULL >inline
operator<=(handle_type h) constwinstd::handle< HINTERNET, NULL >inline
operator=(handle_type h) noexceptwinstd::handle< HINTERNET, NULL >inline
operator=(handle< handle_type, INVAL > &&h) noexceptwinstd::handle< HINTERNET, NULL >inline
operator==(handle_type h) constwinstd::handle< HINTERNET, NULL >inline
operator>(handle_type h) constwinstd::handle< HINTERNET, NULL >inline
operator>=(handle_type h) constwinstd::handle< HINTERNET, NULL >inline
~http()winstd::httpinlinevirtual
+ + + + diff --git a/classwinstd_1_1http.html b/classwinstd_1_1http.html new file mode 100644 index 00000000..54de7eb0 --- /dev/null +++ b/classwinstd_1_1http.html @@ -0,0 +1,261 @@ + + + + + + + +WinStd: winstd::http Class Reference + + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+Public Member Functions | +Protected Member Functions | +List of all members
+
winstd::http Class Reference
+
+
+ +

HTTP handle wrapper class. + More...

+ +

#include <WinStd/WinHTTP.h>

+
+Inheritance diagram for winstd::http:
+
+
+ + +winstd::handle< HINTERNET, NULL > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

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

+Protected Member Functions

void free_internal () noexcept override
 Closes a handle to the HTTP.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

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

Detailed Description

+

HTTP handle wrapper class.

+
See also
WinHttpOpen function
+

Constructor & Destructor Documentation

+ +

◆ ~http()

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

Closes a handle to the HTTP.

+
See also
WinHttpCloseHandle function
+ +
+
+

Member Function Documentation

+ +

◆ free_internal()

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

Closes a handle to the HTTP.

+
See also
WinHttpCloseHandle function
+ +

Implements winstd::handle< HINTERNET, NULL >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classwinstd_1_1http.png b/classwinstd_1_1http.png new file mode 100644 index 00000000..4c580e96 Binary files /dev/null and b/classwinstd_1_1http.png differ diff --git a/classwinstd_1_1icon-members.html b/classwinstd_1_1icon-members.html index 283aa37c..4b4dc1fb 100644 --- a/classwinstd_1_1icon-members.html +++ b/classwinstd_1_1icon-members.html @@ -3,7 +3,7 @@ - + WinStd: Member List @@ -30,7 +30,7 @@ - + + + + + + + + +
+
+ + + + + + +
+
WinStd +
+
Windows Win32 API using Standard C++
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+Classes
+
Windows HTTP Client
+
+
+ + + + + +

+Classes

class  winstd::http
 HTTP handle wrapper class. More...
 
+

Detailed Description

+
+ + + + diff --git a/group___win_trust_a_p_i.html b/group___win_trust_a_p_i.html index 67538d59..69a01fdc 100644 --- a/group___win_trust_a_p_i.html +++ b/group___win_trust_a_p_i.html @@ -3,7 +3,7 @@ - + WinStd: WinTrust API @@ -30,7 +30,7 @@ - + +
diff --git a/plus.svg b/plus.svg new file mode 100644 index 00000000..07520165 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 00000000..0c65bfe9 --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/search/all_0.js b/search/all_0.js index 8f39ff88..e03bdcef 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -3,7 +3,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_unmap_view_of_file__delete.html#aa38ff5b3a531d1074a7ddd681de563b6',1,'winstd::UnmapViewOfFile_delete::_Myt'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aabd3d19b0796e7de041f8475f5e4cc6c',1,'winstd::UnmapViewOfFile_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']]], + ['_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_unmap_view_of_file__delete.html#aa38ff5b3a531d1074a7ddd681de563b6',1,'winstd::UnmapViewOfFile_delete::_Myt'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aabd3d19b0796e7de041f8475f5e4cc6c',1,'winstd::UnmapViewOfFile_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']]], ['_5ftcerr_4',['_tcerr',['../group___win_std_str_format.html#gad92c7b3354a4cc35a5b9ddd16841a9c0',1,'Common.h']]], ['_5ftcin_5',['_tcin',['../group___win_std_str_format.html#gadd052e867c5d82d180924da9d0e16798',1,'Common.h']]], ['_5ftclog_6',['_tclog',['../group___win_std_str_format.html#ga51ea87c84320a64b846a002ab52ac1b8',1,'Common.h']]], diff --git a/search/all_1.js b/search/all_1.js index 285b68a2..3d4d1b5b 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,12 +1,17 @@ var searchData= [ - ['acquire_0',['acquire',['../classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280',1,'winstd::sec_credentials']]], - ['actctx_5factivator_1',['actctx_activator',['../classwinstd_1_1actctx__activator.html#a557774255df823c979be34bf5f82a0f2',1,'winstd::actctx_activator::actctx_activator()'],['../classwinstd_1_1actctx__activator.html',1,'winstd::actctx_activator']]], - ['addrinfo_2',['addrinfo',['../classwinstd_1_1addrinfo.html',1,'winstd']]], - ['alloc_3',['alloc',['../classwinstd_1_1vmemory.html#a3a2a287a47ac11ce1eb0490b5bb37c3c',1,'winstd::vmemory']]], - ['allocate_4',['allocate',['../classwinstd_1_1heap__allocator.html#a371eaa06a2056171126eba66d7023b03',1,'winstd::heap_allocator']]], - ['allocateandinitializesid_5',['AllocateAndInitializeSid',['../group___win_std_win_a_p_i.html#ga588f0eb22a9ea276dc2c72d44f44781a',1,'Win.h']]], - ['attach_6',['attach',['../classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11',1,'winstd::handle::attach()'],['../classwinstd_1_1event__session.html#afe43f725628f047dadc8e44f4a8028b7',1,'winstd::event_session::attach()'],['../classwinstd_1_1vmemory.html#a70e3154374bf7a00c7ba1ea62c6f16a4',1,'winstd::vmemory::attach()']]], - ['attach_5fduplicated_7',['attach_duplicated',['../classwinstd_1_1dplhandle.html#a5563977cadc13e81808946174659d1d3',1,'winstd::dplhandle']]], - ['auto_2dsanitize_20memory_20management_8',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]] + ['a_20vulnerability_0',['Reporting a Vulnerability',['../md__s_e_c_u_r_i_t_y.html#autotoc_md13',1,'']]], + ['acquire_1',['acquire',['../classwinstd_1_1sec__credentials.html#af01c07130505e33fb2d4fbf5a8377280',1,'winstd::sec_credentials']]], + ['actctx_5factivator_2',['actctx_activator',['../classwinstd_1_1actctx__activator.html',1,'winstd::actctx_activator'],['../classwinstd_1_1actctx__activator.html#a557774255df823c979be34bf5f82a0f2',1,'winstd::actctx_activator::actctx_activator()']]], + ['addrinfo_3',['addrinfo',['../classwinstd_1_1addrinfo.html',1,'winstd']]], + ['alloc_4',['alloc',['../classwinstd_1_1vmemory.html#a3a2a287a47ac11ce1eb0490b5bb37c3c',1,'winstd::vmemory']]], + ['allocate_5',['allocate',['../classwinstd_1_1heap__allocator.html#a371eaa06a2056171126eba66d7023b03',1,'winstd::heap_allocator']]], + ['allocateandinitializesid_6',['AllocateAndInitializeSid',['../group___win_std_win_a_p_i.html#ga588f0eb22a9ea276dc2c72d44f44781a',1,'Win.h']]], + ['and_20resource_20helper_20classes_7',['Memory and Resource Helper Classes',['../index.html#autotoc_md3',1,'']]], + ['and_20templates_8',['Functions and Templates',['../index.html#autotoc_md5',1,'']]], + ['api_9',['api',['../group___win_std_cred_a_p_i.html',1,'Credentials API'],['../group___win_std_crypto_a_p_i.html',1,'Cryptography API'],['../group___win_std_e_t_w_a_p_i.html',1,'Event Tracing for Windows API'],['../group___win_std_e_a_p_a_p_i.html',1,'Extensible Authentication Protocol API'],['../group___win_std_gdi_a_p_i.html',1,'GDI API'],['../group___win_std_m_s_i_a_p_i.html',1,'Microsoft Installer API'],['../group___win_std_security_a_p_i.html',1,'Security API'],['../group___setup_a_p_i.html',1,'Setup API'],['../group___win_std_shell_w_a_p_i.html',1,'Shell API'],['../group___win_std_win_a_p_i.html',1,'Windows API'],['../group___win_sock2_a_p_i.html',1,'WinSock2 API'],['../group___win_trust_a_p_i.html',1,'WinTrust API'],['../group___win_std_w_l_a_n_a_p_i.html',1,'WLAN API']]], + ['attach_10',['attach',['../classwinstd_1_1vmemory.html#a70e3154374bf7a00c7ba1ea62c6f16a4',1,'winstd::vmemory::attach()'],['../classwinstd_1_1event__session.html#afe43f725628f047dadc8e44f4a8028b7',1,'winstd::event_session::attach()'],['../classwinstd_1_1handle.html#ab2a98042c3b88fda687e34d370756f11',1,'winstd::handle::attach()']]], + ['attach_5fduplicated_11',['attach_duplicated',['../classwinstd_1_1dplhandle.html#a5563977cadc13e81808946174659d1d3',1,'winstd::dplhandle']]], + ['authentication_20protocol_20api_12',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]], + ['auto_20sanitize_20memory_20management_13',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 8d3ac61f..41a871d7 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,8 +1,8 @@ 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#af092ed7ea1346c7a92b20ae2f6de5577',1,'winstd::ref_unique_ptr::ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)'],['../classwinstd_1_1ref__unique__ptr.html#a755e6f4235fa54330304921ea14b76bc',1,'winstd::ref_unique_ptr::ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a884355151c4c7d65f4ac279966793d5d',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a2e6a20baa25af8b928d80ccc566e11cc',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr.html',1,'winstd::ref_unique_ptr< _Ty, _Dx >']]], + ['rebind_1',['rebind',['../structwinstd_1_1sanitizing__allocator_1_1rebind.html',1,'winstd::sanitizing_allocator< _Ty >::rebind< _Other >'],['../structwinstd_1_1heap__allocator_1_1rebind.html',1,'winstd::heap_allocator< _Ty >::rebind< _Other >']]], + ['ref_5funique_5fptr_2',['ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html',1,'winstd::ref_unique_ptr< _Ty, _Dx >'],['../classwinstd_1_1ref__unique__ptr.html#af092ed7ea1346c7a92b20ae2f6de5577',1,'winstd::ref_unique_ptr::ref_unique_ptr(std::unique_ptr< _Ty, _Dx > &owner)'],['../classwinstd_1_1ref__unique__ptr.html#a755e6f4235fa54330304921ea14b76bc',1,'winstd::ref_unique_ptr::ref_unique_ptr(ref_unique_ptr< _Ty, _Dx > &&other)'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a884355151c4c7d65f4ac279966793d5d',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(std::unique_ptr< _Ty[], _Dx > &owner) noexcept'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a2e6a20baa25af8b928d80ccc566e11cc',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::ref_unique_ptr(ref_unique_ptr< _Ty[], _Dx > &&other)']]], ['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_1heap__allocator.html#a88ed8962cd0d64849119d7a11135b2d0',1,'winstd::heap_allocator']]], ['reg_5fkey_5',['reg_key',['../classwinstd_1_1reg__key.html',1,'winstd']]], @@ -12,11 +12,13 @@ var searchData= ['regloadmuistringw_9',['RegLoadMUIStringW',['../group___win_std_win_a_p_i.html#ga3f9a3593107d5333f057570a76e04a57',1,'Win.h']]], ['regopenkeyexa_10',['RegOpenKeyExA',['../group___win_std_win_a_p_i.html#ga2974136cb4530867e14434fb05712b92',1,'Win.h']]], ['regopenkeyexw_11',['RegOpenKeyExW',['../group___win_std_win_a_p_i.html#ga2c61d837a3d96ca9dad3a73df03bf8e4',1,'Win.h']]], - ['regquerystringvalue_12',['RegQueryStringValue',['../group___win_std_win_a_p_i.html#gaef0a2e894cd51e0003498958008ef825',1,'RegQueryStringValue(HKEY hReg, LPCWSTR pszName, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gac91030c0badd322d3c64663ceab77b7a',1,'RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept: Win.h']]], + ['regquerystringvalue_12',['regquerystringvalue',['../group___win_std_win_a_p_i.html#gaef0a2e894cd51e0003498958008ef825',1,'RegQueryStringValue(HKEY hReg, LPCWSTR pszName, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gac91030c0badd322d3c64663ceab77b7a',1,'RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept: Win.h']]], ['regqueryvalueexa_13',['RegQueryValueExA',['../group___win_std_win_a_p_i.html#gac75dca7a4e87365ca7021edd82509584',1,'Win.h']]], ['regqueryvalueexw_14',['RegQueryValueExW',['../group___win_std_win_a_p_i.html#ga78f02613f20cc234aad4e1b4726db9ea',1,'Win.h']]], ['repair_15',['repair',['../classwinstd_1_1eap__runtime__error.html#a981cb9a1cbf0c6e7e19252d776a2558f',1,'winstd::eap_runtime_error']]], ['repair_5fid_16',['repair_id',['../classwinstd_1_1eap__runtime__error.html#a1e80ead2a4d348ab2c939bfbbaf9330a',1,'winstd::eap_runtime_error']]], - ['root_5fcause_17',['root_cause',['../classwinstd_1_1eap__runtime__error.html#a0aa17a51b2c110e874b60924281a3743',1,'winstd::eap_runtime_error']]], - ['root_5fcause_5fid_18',['root_cause_id',['../classwinstd_1_1eap__runtime__error.html#ae39b6b32c9505c0be2e199d8692175d1',1,'winstd::eap_runtime_error']]] + ['reporting_20a_20vulnerability_17',['Reporting a Vulnerability',['../md__s_e_c_u_r_i_t_y.html#autotoc_md13',1,'']]], + ['resource_20helper_20classes_18',['Memory and Resource Helper Classes',['../index.html#autotoc_md3',1,'']]], + ['root_5fcause_19',['root_cause',['../classwinstd_1_1eap__runtime__error.html#a0aa17a51b2c110e874b60924281a3743',1,'winstd::eap_runtime_error']]], + ['root_5fcause_5fid_20',['root_cause_id',['../classwinstd_1_1eap__runtime__error.html#ae39b6b32c9505c0be2e199d8692175d1',1,'winstd::eap_runtime_error']]] ]; diff --git a/search/all_11.js b/search/all_11.js index 2eb6ac93..e91b16c4 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,46 +1,49 @@ var searchData= [ ['safearray_0',['safearray',['../classwinstd_1_1safearray.html',1,'winstd']]], - ['safearray_5faccessor_1',['safearray_accessor',['../classwinstd_1_1safearray__accessor.html#a342127d409f57fafd97f6792ae4e4665',1,'winstd::safearray_accessor::safearray_accessor()'],['../classwinstd_1_1safearray__accessor.html',1,'winstd::safearray_accessor< T >']]], - ['sanitizing_5fallocator_2',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html#a1559d5205a26a17bec111649840f5825',1,'winstd::sanitizing_allocator::sanitizing_allocator(const sanitizing_allocator< _Ty > &_Othr)'],['../classwinstd_1_1sanitizing__allocator.html#a63e7945c2c3e16de6676dea04d08ed16',1,'winstd::sanitizing_allocator::sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept'],['../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_3',['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_4',['sanitizing_string',['../group___win_std_mem_sanitize.html#gafaf527687e080349d49b51c2362c32e8',1,'winstd']]], - ['sanitizing_5ftstring_5',['sanitizing_tstring',['../group___win_std_mem_sanitize.html#gaa149b89d04cc80c125023a14e241e8bd',1,'winstd']]], - ['sanitizing_5fwstring_6',['sanitizing_wstring',['../group___win_std_mem_sanitize.html#ga57776f4affaac5040ba220302003eedc',1,'winstd']]], - ['sc_5fhandle_7',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], - ['sddl_8',['SDDL',['../group___win_std_s_d_d_l.html',1,'']]], - ['sec_5fbuffer_5fdesc_9',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5',1,'winstd::sec_buffer_desc::sec_buffer_desc()'],['../classwinstd_1_1sec__buffer__desc.html',1,'winstd::sec_buffer_desc']]], - ['sec_5fcontext_10',['sec_context',['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e',1,'winstd::sec_context::sec_context(sec_context &&h) noexcept'],['../classwinstd_1_1sec__context.html',1,'winstd::sec_context']]], - ['sec_5fcredentials_11',['sec_credentials',['../classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba',1,'winstd::sec_credentials::sec_credentials(sec_credentials &&h) noexcept'],['../classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946',1,'winstd::sec_credentials::sec_credentials(handle_type h, const TimeStamp expires)'],['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html',1,'winstd::sec_credentials']]], - ['sec_5fruntime_5ferror_12',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)'],['../classwinstd_1_1sec__runtime__error.html',1,'winstd::sec_runtime_error']]], - ['securemultibytetowidechar_13',['SecureMultiByteToWideChar',['../group___win_std_win_a_p_i.html#ga9aaaa6113374b6cbad241626819d06c9',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gaa15c8edc525c24109fafea640cdedfcb',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gab02484a16fea41e3d9a5c64c2ee1da1a',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Win.h']]], - ['securewidechartomultibyte_14',['SecureWideCharToMultiByte',['../group___win_std_win_a_p_i.html#ga05ac1b43a241f1bbcbf1440cf26c6335',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga1a0accb3a54ae0ed34944fd483e0c329',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga04f5e27a0e2066c85d7a421fe4e4c462',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h']]], - ['security_20api_15',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], - ['security_20policy_16',['Security Policy',['../md__s_e_c_u_r_i_t_y.html',1,'']]], - ['security_5fattributes_17',['security_attributes',['../classwinstd_1_1security__attributes.html#a230282fcc282814fd18aa239c7daaa17',1,'winstd::security_attributes::security_attributes(security_attributes &&a) noexcept'],['../classwinstd_1_1security__attributes.html#aa65302a5a16ca4dae9d76a2aea0788b2',1,'winstd::security_attributes::security_attributes() noexcept'],['../classwinstd_1_1security__attributes.html',1,'winstd::security_attributes']]], - ['security_5fid_18',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], - ['set_5fextended_5fdata_19',['set_extended_data',['../classwinstd_1_1event__rec.html#abfab939c3bb27839c3b591b9a62f9470',1,'winstd::event_rec']]], - ['set_5fextended_5fdata_5finternal_20',['set_extended_data_internal',['../classwinstd_1_1event__rec.html#a0c1c63cc3a3e2f83924aa9f21a298f6c',1,'winstd::event_rec']]], - ['set_5fuser_5fdata_21',['set_user_data',['../classwinstd_1_1event__rec.html#a0df49a47cf45cb76003b85148d7d5098',1,'winstd::event_rec']]], - ['set_5fuser_5fdata_5finternal_22',['set_user_data_internal',['../classwinstd_1_1event__rec.html#af71cc10ff1b9f9935c824b7c7a4130b8',1,'winstd::event_rec']]], - ['setentriesinacla_23',['SetEntriesInAclA',['../group___win_std_win_a_p_i.html#ga78c62cf670ca44d4cd25fb838dfd06e8',1,'Win.h']]], - ['setentriesinaclw_24',['SetEntriesInAclW',['../group___win_std_win_a_p_i.html#ga473c00779893dfff195afab022a3113e',1,'Win.h']]], - ['setup_20api_25',['Setup API',['../group___setup_a_p_i.html',1,'']]], - ['setup_5fdevice_5finfo_5flist_26',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], - ['setup_5fdriver_5finfo_5flist_5fbuilder_27',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f',1,'winstd::setup_driver_info_list_builder::setup_driver_info_list_builder()'],['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd::setup_driver_info_list_builder']]], - ['shell_20api_28',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], - ['size_29',['size',['../classwinstd_1_1data__blob.html#ab2ad06e271e8503d7158408773054d23',1,'winstd::data_blob::size()'],['../classwinstd_1_1eap__packet.html#a2534ad15ae47e2d46354d9f535f4031f',1,'winstd::eap_packet::size()']]], - ['size_5ftype_30',['size_type',['../classwinstd_1_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator']]], - ['sprintf_31',['sprintf',['../group___win_std_str_format.html#gac397f655a858a069b3e521940af64331',1,'Common.h']]], - ['start_32',['start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aea2b2676c28c0db26d39331a336c6b92',1,'winstd']]], - ['status_33',['status',['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()'],['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()']]], - ['string_20formatting_34',['String Formatting',['../group___win_std_str_format.html',1,'']]], - ['string_5fguid_35',['string_guid',['../classwinstd_1_1string__guid.html#a507ceea48ffeccc4179239dfb5f4cdb2',1,'winstd::string_guid::string_guid()'],['../classwinstd_1_1string__guid.html',1,'winstd::string_guid']]], - ['string_5fmsg_36',['string_msg',['../group___win_std_str_format.html#gae63195e25e08e2b3d9a9b9c2987f5740',1,'winstd']]], - ['string_5fprintf_37',['string_printf',['../group___win_std_str_format.html#ga9dda7a9a763b666f6fe00c4c6626621d',1,'winstd']]], - ['stringtoguid_38',['StringToGuid',['../group___win_std_win_a_p_i.html#gab9c35127ac48f8d941a5354b1a1b7abe',1,'Win.h']]], - ['stringtoguida_39',['StringToGuidA',['../group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c',1,'Win.h']]], - ['stringtoguidw_40',['StringToGuidW',['../group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa',1,'Win.h']]], - ['system_20handles_41',['System Handles',['../group___win_std_sys_handles.html',1,'']]], - ['system_5fimpersonator_42',['system_impersonator',['../classwinstd_1_1system__impersonator.html#a5e46322f6b3a64e74b6e711cc9dd059b',1,'winstd::system_impersonator::system_impersonator()'],['../classwinstd_1_1system__impersonator.html',1,'winstd::system_impersonator']]] + ['safearray_5faccessor_1',['safearray_accessor',['../classwinstd_1_1safearray__accessor.html',1,'winstd::safearray_accessor< T >'],['../classwinstd_1_1safearray__accessor.html#a342127d409f57fafd97f6792ae4e4665',1,'winstd::safearray_accessor::safearray_accessor()']]], + ['sanitize_20memory_20management_2',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]], + ['sanitizing_5fallocator_3',['sanitizing_allocator',['../classwinstd_1_1sanitizing__allocator.html#a63e7945c2c3e16de6676dea04d08ed16',1,'winstd::sanitizing_allocator::sanitizing_allocator(const sanitizing_allocator< _Other > &_Othr) noexcept'],['../classwinstd_1_1sanitizing__allocator.html#a1559d5205a26a17bec111649840f5825',1,'winstd::sanitizing_allocator::sanitizing_allocator(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_4',['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_5',['sanitizing_string',['../group___win_std_mem_sanitize.html#gafaf527687e080349d49b51c2362c32e8',1,'winstd']]], + ['sanitizing_5ftstring_6',['sanitizing_tstring',['../group___win_std_mem_sanitize.html#gaa149b89d04cc80c125023a14e241e8bd',1,'winstd']]], + ['sanitizing_5fwstring_7',['sanitizing_wstring',['../group___win_std_mem_sanitize.html#ga57776f4affaac5040ba220302003eedc',1,'winstd']]], + ['sc_5fhandle_8',['sc_handle',['../classwinstd_1_1sc__handle.html',1,'winstd']]], + ['sddl_9',['SDDL',['../group___win_std_s_d_d_l.html',1,'']]], + ['sec_5fbuffer_5fdesc_10',['sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html',1,'winstd::sec_buffer_desc'],['../classwinstd_1_1sec__buffer__desc.html#aed8a33ad87b31098a60facb3f656cea5',1,'winstd::sec_buffer_desc::sec_buffer_desc()']]], + ['sec_5fcontext_11',['sec_context',['../classwinstd_1_1sec__context.html',1,'winstd::sec_context'],['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e',1,'winstd::sec_context::sec_context(sec_context &&h) noexcept']]], + ['sec_5fcredentials_12',['sec_credentials',['../classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html',1,'winstd::sec_credentials'],['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946',1,'winstd::sec_credentials::sec_credentials(handle_type h, const TimeStamp expires)']]], + ['sec_5fruntime_5ferror_13',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)'],['../classwinstd_1_1sec__runtime__error.html',1,'winstd::sec_runtime_error']]], + ['securemultibytetowidechar_14',['securemultibytetowidechar',['../group___win_std_str_format.html#gab02484a16fea41e3d9a5c64c2ee1da1a',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gaa15c8edc525c24109fafea640cdedfcb',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga9aaaa6113374b6cbad241626819d06c9',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h']]], + ['securewidechartomultibyte_15',['securewidechartomultibyte',['../group___win_std_str_format.html#ga04f5e27a0e2066c85d7a421fe4e4c462',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga1a0accb3a54ae0ed34944fd483e0c329',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga05ac1b43a241f1bbcbf1440cf26c6335',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h']]], + ['security_20api_16',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], + ['security_20policy_17',['Security Policy',['../md__s_e_c_u_r_i_t_y.html',1,'']]], + ['security_5fattributes_18',['security_attributes',['../classwinstd_1_1security__attributes.html#a230282fcc282814fd18aa239c7daaa17',1,'winstd::security_attributes::security_attributes()'],['../classwinstd_1_1security__attributes.html',1,'winstd::security_attributes'],['../classwinstd_1_1security__attributes.html#aa65302a5a16ca4dae9d76a2aea0788b2',1,'winstd::security_attributes::security_attributes()']]], + ['security_5fid_19',['security_id',['../classwinstd_1_1security__id.html',1,'winstd']]], + ['set_5fextended_5fdata_20',['set_extended_data',['../classwinstd_1_1event__rec.html#abfab939c3bb27839c3b591b9a62f9470',1,'winstd::event_rec']]], + ['set_5fextended_5fdata_5finternal_21',['set_extended_data_internal',['../classwinstd_1_1event__rec.html#a0c1c63cc3a3e2f83924aa9f21a298f6c',1,'winstd::event_rec']]], + ['set_5fuser_5fdata_22',['set_user_data',['../classwinstd_1_1event__rec.html#a0df49a47cf45cb76003b85148d7d5098',1,'winstd::event_rec']]], + ['set_5fuser_5fdata_5finternal_23',['set_user_data_internal',['../classwinstd_1_1event__rec.html#af71cc10ff1b9f9935c824b7c7a4130b8',1,'winstd::event_rec']]], + ['setentriesinacla_24',['SetEntriesInAclA',['../group___win_std_win_a_p_i.html#ga78c62cf670ca44d4cd25fb838dfd06e8',1,'Win.h']]], + ['setentriesinaclw_25',['SetEntriesInAclW',['../group___win_std_win_a_p_i.html#ga473c00779893dfff195afab022a3113e',1,'Win.h']]], + ['setup_20api_26',['Setup API',['../group___setup_a_p_i.html',1,'']]], + ['setup_5fdevice_5finfo_5flist_27',['setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html',1,'winstd']]], + ['setup_5fdriver_5finfo_5flist_5fbuilder_28',['setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html',1,'winstd::setup_driver_info_list_builder'],['../classwinstd_1_1setup__driver__info__list__builder.html#a4774edfbe680a3a496e243544a68c94f',1,'winstd::setup_driver_info_list_builder::setup_driver_info_list_builder()']]], + ['shell_20api_29',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], + ['size_30',['size',['../classwinstd_1_1data__blob.html#ab2ad06e271e8503d7158408773054d23',1,'winstd::data_blob::size()'],['../classwinstd_1_1eap__packet.html#a2534ad15ae47e2d46354d9f535f4031f',1,'winstd::eap_packet::size()']]], + ['size_5ftype_31',['size_type',['../classwinstd_1_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator']]], + ['sprintf_32',['sprintf',['../group___win_std_str_format.html#gac397f655a858a069b3e521940af64331',1,'Common.h']]], + ['start_33',['start',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aea2b2676c28c0db26d39331a336c6b92',1,'winstd']]], + ['status_34',['status',['../classwinstd_1_1setup__driver__info__list__builder.html#ae9c062e82afc1ee1eda5926a0567637e',1,'winstd::setup_driver_info_list_builder::status()'],['../classwinstd_1_1dc__selector.html#aacb4060094f2c4b1747ffa76455b235d',1,'winstd::dc_selector::status()'],['../classwinstd_1_1com__initializer.html#ac3c997f810e8439096d8ca14fecb5b7d',1,'winstd::com_initializer::status()'],['../classwinstd_1_1event__trace__enabler.html#a726b84e91002da1243d512c37a060293',1,'winstd::event_trace_enabler::status()']]], + ['string_20formatters_35',['String Formatters',['../index.html#autotoc_md7',1,'']]], + ['string_20formatting_36',['String Formatting',['../group___win_std_str_format.html',1,'']]], + ['string_5fguid_37',['string_guid',['../classwinstd_1_1string__guid.html#a507ceea48ffeccc4179239dfb5f4cdb2',1,'winstd::string_guid::string_guid()'],['../classwinstd_1_1string__guid.html',1,'winstd::string_guid']]], + ['string_5fmsg_38',['string_msg',['../group___win_std_str_format.html#gae63195e25e08e2b3d9a9b9c2987f5740',1,'winstd']]], + ['string_5fprintf_39',['string_printf',['../group___win_std_str_format.html#ga9dda7a9a763b666f6fe00c4c6626621d',1,'winstd']]], + ['stringtoguid_40',['StringToGuid',['../group___win_std_win_a_p_i.html#gab9c35127ac48f8d941a5354b1a1b7abe',1,'Win.h']]], + ['stringtoguida_41',['StringToGuidA',['../group___win_std_win_a_p_i.html#ga0a3545c7b4d6509b77a9a156e882f32c',1,'Win.h']]], + ['stringtoguidw_42',['StringToGuidW',['../group___win_std_win_a_p_i.html#ga3411488c7daa5c8e03b2ad34764914aa',1,'Win.h']]], + ['supported_20versions_43',['Supported Versions',['../md__s_e_c_u_r_i_t_y.html#autotoc_md12',1,'']]], + ['system_20handles_44',['System Handles',['../group___win_std_sys_handles.html',1,'']]], + ['system_5fimpersonator_45',['system_impersonator',['../classwinstd_1_1system__impersonator.html',1,'winstd::system_impersonator'],['../classwinstd_1_1system__impersonator.html#a5e46322f6b3a64e74b6e711cc9dd059b',1,'winstd::system_impersonator::system_impersonator()']]] ]; diff --git a/search/all_12.js b/search/all_12.js index 4cfd6362..7d9da207 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -4,12 +4,14 @@ var searchData= ['tdhgeteventinformation_1',['TdhGetEventInformation',['../group___win_std_e_t_w_a_p_i.html#ga318eb7aaef74aa01c86039520360e68a',1,'ETW.h']]], ['tdhgeteventmapinformation_2',['TdhGetEventMapInformation',['../group___win_std_e_t_w_a_p_i.html#ga6726748672bf351a0910292e0ef23290',1,'ETW.h']]], ['tdhgetproperty_3',['TdhGetProperty',['../group___win_std_e_t_w_a_p_i.html#ga565b3185a93009edbb2d248227106bec',1,'ETW.h']]], - ['thread_4',['thread',['../group___win_std_win_a_p_i.html#gaff5d7416024ba7489a7631c310e15aab',1,'winstd']]], - ['tls_5',['tls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa60aeea3d4cdbb5049fc37164644bb34',1,'winstd']]], - ['tstring_6',['tstring',['../group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc',1,'winstd']]], - ['tstring_5fguid_7',['tstring_guid',['../group___win_std_str_format.html#ga4c44b6a587f894ee33bb58a10ba27d6b',1,'winstd']]], - ['tstring_5fmsg_8',['tstring_msg',['../group___win_std_str_format.html#gaf47f07aac0b4c8ef47cf42216ab17f1b',1,'winstd']]], - ['tstring_5fprintf_9',['tstring_printf',['../group___win_std_str_format.html#gab805ccda115191833fb01ba4457f208a',1,'winstd']]], - ['ttls_10',['ttls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315accd905a8bbc449980aa7f26fcbd206e2',1,'winstd']]], - ['type_11',['type',['../classwinstd_1_1eap__runtime__error.html#a0562abef7454f9a6f97902d4260b7f50',1,'winstd::eap_runtime_error']]] + ['templates_4',['Functions and Templates',['../index.html#autotoc_md5',1,'']]], + ['thread_5',['thread',['../group___win_std_win_a_p_i.html#gaff5d7416024ba7489a7631c310e15aab',1,'winstd']]], + ['tls_6',['tls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aa60aeea3d4cdbb5049fc37164644bb34',1,'winstd']]], + ['tracing_20for_20windows_20api_7',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]], + ['tstring_8',['tstring',['../group___win_std_general.html#ga8081292a94f5d070e644bdc90662d1fc',1,'winstd']]], + ['tstring_5fguid_9',['tstring_guid',['../group___win_std_str_format.html#ga4c44b6a587f894ee33bb58a10ba27d6b',1,'winstd']]], + ['tstring_5fmsg_10',['tstring_msg',['../group___win_std_str_format.html#gaf47f07aac0b4c8ef47cf42216ab17f1b',1,'winstd']]], + ['tstring_5fprintf_11',['tstring_printf',['../group___win_std_str_format.html#gab805ccda115191833fb01ba4457f208a',1,'winstd']]], + ['ttls_12',['ttls',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315accd905a8bbc449980aa7f26fcbd206e2',1,'winstd']]], + ['type_13',['type',['../classwinstd_1_1eap__runtime__error.html#a0562abef7454f9a6f97902d4260b7f50',1,'winstd::eap_runtime_error']]] ]; diff --git a/search/all_13.js b/search/all_13.js index 16252e42..0684d1d8 100644 --- a/search/all_13.js +++ b/search/all_13.js @@ -1,7 +1,8 @@ var searchData= [ ['undefined_0',['undefined',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a5e543256c480ac577d30f76f9120eb74',1,'winstd']]], - ['unmapviewoffile_5fdelete_1',['UnmapViewOfFile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html#af907afdb0be87ca6295673035d727279',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete()'],['../structwinstd_1_1_unmap_view_of_file__delete.html#a691a3dc8241514532164af426bbab7ee',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a49fbab80e6bee74067b9762abb659365',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::UnmapViewOfFile_delete()'],['../structwinstd_1_1_unmap_view_of_file__delete.html',1,'winstd::UnmapViewOfFile_delete< _Ty >']]], + ['unmapviewoffile_5fdelete_1',['unmapviewoffile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html',1,'winstd::UnmapViewOfFile_delete< _Ty >'],['../structwinstd_1_1_unmap_view_of_file__delete.html#af907afdb0be87ca6295673035d727279',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete()'],['../structwinstd_1_1_unmap_view_of_file__delete.html#a691a3dc8241514532164af426bbab7ee',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a49fbab80e6bee74067b9762abb659365',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::UnmapViewOfFile_delete()']]], ['unmapviewoffile_5fdelete_3c_20_5fty_5b_5d_3e_2',['UnmapViewOfFile_delete< _Ty[]>',['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], - ['user_5fimpersonator_3',['user_impersonator',['../classwinstd_1_1user__impersonator.html#a843ed65fc3673b6620a81e6883c1de34',1,'winstd::user_impersonator::user_impersonator()'],['../classwinstd_1_1user__impersonator.html',1,'winstd::user_impersonator']]] + ['usage_3',['Usage',['../index.html#autotoc_md10',1,'']]], + ['user_5fimpersonator_4',['user_impersonator',['../classwinstd_1_1user__impersonator.html',1,'winstd::user_impersonator'],['../classwinstd_1_1user__impersonator.html#a843ed65fc3673b6620a81e6883c1de34',1,'winstd::user_impersonator::user_impersonator()']]] ]; diff --git a/search/all_14.js b/search/all_14.js index c5fb76aa..e48740fd 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -1,8 +1,10 @@ var searchData= [ ['value_5ftype_0',['value_type',['../classwinstd_1_1heap__allocator.html#a091ba3fb46ee75b8350c3fa9e6277c57',1,'winstd::heap_allocator']]], - ['variant_1',['variant',['../classwinstd_1_1variant.html#a89726aecadc0b6e14108daae894a477b',1,'winstd::variant::variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept'],['../classwinstd_1_1variant.html#a841c962b433fd374aa1dfafc844e4b64',1,'winstd::variant::variant(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a2040f3ea8b404ff6b2847c9c9146141a',1,'winstd::variant::variant(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#ad22ad4af4e10101790dc481dbe1630da',1,'winstd::variant::variant(BSTR bstr) noexcept'],['../classwinstd_1_1variant.html#a66bf6c6544769977e1032732142bb464',1,'winstd::variant::variant(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ae60f506468b32ba02fe499c8a93a9b56',1,'winstd::variant::variant(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#ac1bc843b25415fd843bc2420a48ff9ad',1,'winstd::variant::variant(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a9ebbc5928574b7008c1c317e3528b7cb',1,'winstd::variant::variant(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#add6d3bb11f3ba343d2286dde7a4ce90a',1,'winstd::variant::variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept'],['../classwinstd_1_1variant.html#a1399659c252205487f2f85f2855567e2',1,'winstd::variant::variant(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#a76dee63188ebb8946d0c2152f553e0f5',1,'winstd::variant::variant(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#aa0b2188d63b23c1e7ade2d8c4871e172',1,'winstd::variant::variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a26d5b7a108cc2ae8ea6b9a60e8cfe68d',1,'winstd::variant::variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#aa38cc1a50cd08a3b81b8c87a968dd55a',1,'winstd::variant::variant(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#ae5f40c0c9ceb73d9a11f9eb5cf6e7acf',1,'winstd::variant::variant(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a6b7b7b21cd5e8293fc95957dec6ad1ac',1,'winstd::variant::variant(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#ac3d480425647e2ce72aa291eee5259bb',1,'winstd::variant::variant(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a02c9aacfd9b4db09f83d470d9ee62207',1,'winstd::variant::variant(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a170212d31acb2971ddf55b9247d6dc48',1,'winstd::variant::variant(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a6b13abee9e259102b5cfcadf799ac33d',1,'winstd::variant::variant(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#ab5b8d68675d23082008f57e9439c3a19',1,'winstd::variant::variant() noexcept'],['../classwinstd_1_1variant.html#a278e06d505cad1af830dd88c2c656cd3',1,'winstd::variant::variant(const SAFEARRAY *pSrc)'],['../classwinstd_1_1variant.html',1,'winstd::variant']]], - ['vmemory_2',['vmemory',['../classwinstd_1_1vmemory.html#ae49dd901cfb090ed736510e68a39be7d',1,'winstd::vmemory::vmemory() noexcept'],['../classwinstd_1_1vmemory.html#aa0f7cc6aaa5737fc3ea2deb1544fe0b2',1,'winstd::vmemory::vmemory(handle_type h, HANDLE proc) noexcept'],['../classwinstd_1_1vmemory.html#af3f982d2e1dd1309512aec2182a3b78b',1,'winstd::vmemory::vmemory(vmemory &&h) noexcept'],['../classwinstd_1_1vmemory.html',1,'winstd::vmemory']]], - ['vsnprintf_3',['vsnprintf',['../group___win_std_str_format.html#gaad906b9a0f259f7c45470a7d548957ed',1,'vsnprintf(char *str, size_t capacity, const char *format, va_list arg): Common.h'],['../group___win_std_str_format.html#ga9f831951f2e74c57aea12da36fe136d4',1,'vsnprintf(wchar_t *str, size_t capacity, const wchar_t *format, va_list arg) noexcept: Common.h']]], - ['vsprintf_4',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]] + ['variant_1',['variant',['../classwinstd_1_1variant.html',1,'winstd::variant'],['../classwinstd_1_1variant.html#a278e06d505cad1af830dd88c2c656cd3',1,'winstd::variant::variant(const SAFEARRAY *pSrc)'],['../classwinstd_1_1variant.html#a841c962b433fd374aa1dfafc844e4b64',1,'winstd::variant::variant(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a2040f3ea8b404ff6b2847c9c9146141a',1,'winstd::variant::variant(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#ad22ad4af4e10101790dc481dbe1630da',1,'winstd::variant::variant(BSTR bstr) noexcept'],['../classwinstd_1_1variant.html#a66bf6c6544769977e1032732142bb464',1,'winstd::variant::variant(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#ae60f506468b32ba02fe499c8a93a9b56',1,'winstd::variant::variant(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#ac1bc843b25415fd843bc2420a48ff9ad',1,'winstd::variant::variant(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a9ebbc5928574b7008c1c317e3528b7cb',1,'winstd::variant::variant(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#add6d3bb11f3ba343d2286dde7a4ce90a',1,'winstd::variant::variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept'],['../classwinstd_1_1variant.html#a1399659c252205487f2f85f2855567e2',1,'winstd::variant::variant(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#a76dee63188ebb8946d0c2152f553e0f5',1,'winstd::variant::variant(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#aa0b2188d63b23c1e7ade2d8c4871e172',1,'winstd::variant::variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#a89726aecadc0b6e14108daae894a477b',1,'winstd::variant::variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept'],['../classwinstd_1_1variant.html#a26d5b7a108cc2ae8ea6b9a60e8cfe68d',1,'winstd::variant::variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept'],['../classwinstd_1_1variant.html#aa38cc1a50cd08a3b81b8c87a968dd55a',1,'winstd::variant::variant(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#ae5f40c0c9ceb73d9a11f9eb5cf6e7acf',1,'winstd::variant::variant(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a6b7b7b21cd5e8293fc95957dec6ad1ac',1,'winstd::variant::variant(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#ac3d480425647e2ce72aa291eee5259bb',1,'winstd::variant::variant(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a02c9aacfd9b4db09f83d470d9ee62207',1,'winstd::variant::variant(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a170212d31acb2971ddf55b9247d6dc48',1,'winstd::variant::variant(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a6b13abee9e259102b5cfcadf799ac33d',1,'winstd::variant::variant(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#ab5b8d68675d23082008f57e9439c3a19',1,'winstd::variant::variant() noexcept']]], + ['versions_2',['Supported Versions',['../md__s_e_c_u_r_i_t_y.html#autotoc_md12',1,'']]], + ['vmemory_3',['vmemory',['../classwinstd_1_1vmemory.html',1,'winstd::vmemory'],['../classwinstd_1_1vmemory.html#af3f982d2e1dd1309512aec2182a3b78b',1,'winstd::vmemory::vmemory(vmemory &&h) noexcept'],['../classwinstd_1_1vmemory.html#aa0f7cc6aaa5737fc3ea2deb1544fe0b2',1,'winstd::vmemory::vmemory(handle_type h, HANDLE proc) noexcept'],['../classwinstd_1_1vmemory.html#ae49dd901cfb090ed736510e68a39be7d',1,'winstd::vmemory::vmemory() noexcept']]], + ['vsnprintf_4',['vsnprintf',['../group___win_std_str_format.html#gaad906b9a0f259f7c45470a7d548957ed',1,'vsnprintf(char *str, size_t capacity, const char *format, va_list arg): Common.h'],['../group___win_std_str_format.html#ga9f831951f2e74c57aea12da36fe136d4',1,'vsnprintf(wchar_t *str, size_t capacity, const wchar_t *format, va_list arg) noexcept: Common.h']]], + ['vsprintf_5',['vsprintf',['../group___win_std_str_format.html#ga583555761f3d01787d5e5f0226472f4e',1,'Common.h']]], + ['vulnerability_6',['Reporting a Vulnerability',['../md__s_e_c_u_r_i_t_y.html#autotoc_md13',1,'']]] ]; diff --git a/search/all_15.js b/search/all_15.js index eff487aa..5877e656 100644 --- a/search/all_15.js +++ b/search/all_15.js @@ -1,31 +1,34 @@ var searchData= [ ['waddrinfo_0',['waddrinfo',['../classwinstd_1_1waddrinfo.html',1,'winstd']]], - ['widechartomultibyte_1',['WideCharToMultiByte',['../group___win_std_win_a_p_i.html#gabf5eed22d7c5d7a89334dbe1e04e2656',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga9ab082dc4cba91b23c4364a125f2f778',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2eee7ccbf8faa628b303df158b67fb2b',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h']]], - ['win_5fhandle_2',['win_handle',['../classwinstd_1_1win__handle.html',1,'winstd']]], - ['win_5fruntime_5ferror_3',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html#aca84ec751726966e72136c67ef7f694f',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a9adb54bf4ff1bfece100a3886b441a77',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#ab38b42a2a55681bb97cc83ae4a6e5635',1,'winstd::win_runtime_error::win_runtime_error(const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#ac22014ee7d3fee84ca95ab52ac66e5b6',1,'winstd::win_runtime_error::win_runtime_error(const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html',1,'winstd::win_runtime_error']]], - ['window_5fdc_4',['window_dc',['../classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a',1,'winstd::window_dc::window_dc() noexcept'],['../classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12',1,'winstd::window_dc::window_dc(handle_type h, HWND hwnd) noexcept'],['../classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e',1,'winstd::window_dc::window_dc(window_dc &&h) noexcept'],['../classwinstd_1_1window__dc.html',1,'winstd::window_dc']]], - ['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#a5f01f7952ccb4e4f6b3b52968470e49b',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.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()']]], - ['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']]], - ['wlanopenhandle_21',['WlanOpenHandle',['../group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586',1,'WLAN.h']]], - ['wlanreasoncodetostring_22',['WlanReasonCodeToString',['../group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7',1,'WLAN.h']]], - ['write_23',['write',['../classwinstd_1_1event__provider.html#aa956835d2f62705db20e6c82c07be7fe',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, va_list arg)'],['../classwinstd_1_1event__provider.html#a068407834baa836c690b80a39a2d2692',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor)'],['../classwinstd_1_1event__provider.html#a570ec5977a37f490ddac7aaa047db5e9',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, ULONG UserDataCount=0, PEVENT_DATA_DESCRIPTOR UserData=NULL)'],['../classwinstd_1_1event__provider.html#ad782c4daf27784c0762d09578362db08',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, const EVENT_DATA_DESCRIPTOR param1,...)'],['../classwinstd_1_1event__provider.html#a9063c2f40716779223fe618b70df0888',1,'winstd::event_provider::write(UCHAR Level, ULONGLONG Keyword, PCWSTR String,...)']]], - ['ws2_5fruntime_5ferror_24',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html',1,'winstd::ws2_runtime_error'],['../classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e',1,'winstd::ws2_runtime_error::ws2_runtime_error(const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267',1,'winstd::ws2_runtime_error::ws2_runtime_error(const char *msg=nullptr)']]], - ['wstring_5fguid_25',['wstring_guid',['../classwinstd_1_1wstring__guid.html',1,'winstd::wstring_guid'],['../classwinstd_1_1wstring__guid.html#adca059128e082167a19d1281719d9d60',1,'winstd::wstring_guid::wstring_guid()']]], - ['wstring_5fmsg_26',['wstring_msg',['../group___win_std_str_format.html#ga52a88ab19a1a96f778dbf7a2938bc98f',1,'winstd']]], - ['wstring_5fprintf_27',['wstring_printf',['../group___win_std_str_format.html#ga0abdccf0a03840f984b7a889fea13cac',1,'winstd']]] + ['what_20winstd_20is_20not_1',['What WinStd Is Not',['../index.html#autotoc_md9',1,'']]], + ['widechartomultibyte_2',['widechartomultibyte',['../group___win_std_str_format.html#gabf5eed22d7c5d7a89334dbe1e04e2656',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga9ab082dc4cba91b23c4364a125f2f778',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga2eee7ccbf8faa628b303df158b67fb2b',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h']]], + ['win_5fhandle_3',['win_handle',['../classwinstd_1_1win__handle.html',1,'winstd']]], + ['win_5fruntime_5ferror_4',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html',1,'winstd::win_runtime_error'],['../classwinstd_1_1win__runtime__error.html#a4c84e2ebbaceb36fdf7330e3e5c80d7f',1,'winstd::win_runtime_error::win_runtime_error(error_type num)'],['../classwinstd_1_1win__runtime__error.html#aca84ec751726966e72136c67ef7f694f',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a12414cccf15cc8f5c12510f4aa74d715',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const char *msg)'],['../classwinstd_1_1win__runtime__error.html#a67d2c31d65907fe9393e71c66e1443c8',1,'winstd::win_runtime_error::win_runtime_error()'],['../classwinstd_1_1win__runtime__error.html#ab38b42a2a55681bb97cc83ae4a6e5635',1,'winstd::win_runtime_error::win_runtime_error(const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a074502b02650b1c8dc5746acd9e6ceec',1,'winstd::win_runtime_error::win_runtime_error(const char *msg)']]], + ['window_5fdc_5',['window_dc',['../classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a',1,'winstd::window_dc::window_dc() noexcept'],['../classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12',1,'winstd::window_dc::window_dc(handle_type h, HWND hwnd) noexcept'],['../classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e',1,'winstd::window_dc::window_dc(window_dc &&h) noexcept'],['../classwinstd_1_1window__dc.html',1,'winstd::window_dc']]], + ['windows_20api_6',['windows api',['../group___win_std_e_t_w_a_p_i.html',1,'Event Tracing for Windows API'],['../group___win_std_win_a_p_i.html',1,'Windows API']]], + ['windows_20http_20client_7',['Windows HTTP Client',['../group___win_std_win_h_t_t_p.html',1,'']]], + ['winsock2_20api_8',['WinSock2 API',['../group___win_sock2_a_p_i.html',1,'']]], + ['winstd_9',['WinStd',['../index.html',1,'']]], + ['winstd_20is_20not_10',['What WinStd Is Not',['../index.html#autotoc_md9',1,'']]], + ['winstd_5fdplhandle_5fimpl_11',['WINSTD_DPLHANDLE_IMPL',['../group___win_std_sys_handles.html#ga2768b80bcf124e3127f0b7fe64395adb',1,'Common.h']]], + ['winstd_5fhandle_5fimpl_12',['WINSTD_HANDLE_IMPL',['../group___win_std_sys_handles.html#ga419efffd12b5c96abc8a275ba375ca60',1,'Common.h']]], + ['winstd_5fnoncopyable_13',['WINSTD_NONCOPYABLE',['../group___win_std_general.html#ga11254c72ad33a6e0f5de31db708f784c',1,'Common.h']]], + ['winstd_5fnonmovable_14',['WINSTD_NONMOVABLE',['../group___win_std_general.html#gac91fa8d79c860b1fdbba65b6a322f760',1,'Common.h']]], + ['winstd_5fstack_5fbuffer_5fbytes_15',['WINSTD_STACK_BUFFER_BYTES',['../group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986',1,'Common.h']]], + ['winstd_5fstring_16',['WINSTD_STRING',['../group___win_std_general.html#gac2a4fa0600886ba34fd4f7d2116d35da',1,'Common.h']]], + ['winstd_5fstring_5fimpl_17',['WINSTD_STRING_IMPL',['../group___win_std_general.html#ga4a46b36a9276ea0451d0790e51c7621f',1,'Common.h']]], + ['wintrust_18',['wintrust',['../classwinstd_1_1wintrust.html',1,'winstd::wintrust'],['../classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b',1,'winstd::wintrust::wintrust()']]], + ['wintrust_20api_19',['WinTrust API',['../group___win_trust_a_p_i.html',1,'']]], + ['wlan_20api_20',['WLAN API',['../group___win_std_w_l_a_n_a_p_i.html',1,'']]], + ['wlan_5fhandle_21',['wlan_handle',['../classwinstd_1_1wlan__handle.html',1,'winstd']]], + ['wlanfreememory_5fdelete_22',['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_23',['WlanFreeMemory_delete< _Ty[]>',['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['wlanopenhandle_24',['WlanOpenHandle',['../group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586',1,'WLAN.h']]], + ['wlanreasoncodetostring_25',['WlanReasonCodeToString',['../group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7',1,'WLAN.h']]], + ['write_26',['write',['../classwinstd_1_1event__provider.html#a068407834baa836c690b80a39a2d2692',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor)'],['../classwinstd_1_1event__provider.html#a570ec5977a37f490ddac7aaa047db5e9',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, ULONG UserDataCount=0, PEVENT_DATA_DESCRIPTOR UserData=NULL)'],['../classwinstd_1_1event__provider.html#ad782c4daf27784c0762d09578362db08',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, const EVENT_DATA_DESCRIPTOR param1,...)'],['../classwinstd_1_1event__provider.html#aa956835d2f62705db20e6c82c07be7fe',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, va_list arg)'],['../classwinstd_1_1event__provider.html#a9063c2f40716779223fe618b70df0888',1,'winstd::event_provider::write(UCHAR Level, ULONGLONG Keyword, PCWSTR String,...)']]], + ['ws2_5fruntime_5ferror_27',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html#a3044648392aca11ab4966efa338670a1',1,'winstd::ws2_runtime_error::ws2_runtime_error()'],['../classwinstd_1_1ws2__runtime__error.html',1,'winstd::ws2_runtime_error'],['../classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#ab2c3f82f793f5d2e225cf969b6246c97',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const char *msg)'],['../classwinstd_1_1ws2__runtime__error.html#a953b8d4d69d6c394aefd398d4aca40ed',1,'winstd::ws2_runtime_error::ws2_runtime_error()'],['../classwinstd_1_1ws2__runtime__error.html#aef0b9c621c9e9dd9403fecfd65d8de7f',1,'winstd::ws2_runtime_error::ws2_runtime_error(const char *msg)'],['../classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e',1,'winstd::ws2_runtime_error::ws2_runtime_error(const std::string &msg)']]], + ['wstring_5fguid_28',['wstring_guid',['../classwinstd_1_1wstring__guid.html',1,'winstd::wstring_guid'],['../classwinstd_1_1wstring__guid.html#adca059128e082167a19d1281719d9d60',1,'winstd::wstring_guid::wstring_guid()']]], + ['wstring_5fmsg_29',['wstring_msg',['../group___win_std_str_format.html#ga52a88ab19a1a96f778dbf7a2938bc98f',1,'winstd']]], + ['wstring_5fprintf_30',['wstring_printf',['../group___win_std_str_format.html#ga0abdccf0a03840f984b7a889fea13cac',1,'winstd']]] ]; diff --git a/search/all_16.js b/search/all_16.js index 08b0c3ed..747dd5db 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -6,53 +6,55 @@ var searchData= ['_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_5flog_21',['~event_log',['../classwinstd_1_1event__log.html#adcaee9990fb509eb281159b170218700',1,'winstd::event_log']]], - ['_7eevent_5fprovider_22',['~event_provider',['../classwinstd_1_1event__provider.html#ab219ea75734671f98fabbf41485e558b',1,'winstd::event_provider']]], - ['_7eevent_5frec_23',['~event_rec',['../classwinstd_1_1event__rec.html#a2968045a00cf5994ffc2db1a7eb38601',1,'winstd::event_rec']]], - ['_7eevent_5fsession_24',['~event_session',['../classwinstd_1_1event__session.html#a31fe172bd0ce3fb712924de08445476a',1,'winstd::event_session']]], - ['_7eevent_5ftrace_25',['~event_trace',['../classwinstd_1_1event__trace.html#ab8800a2c88f1b96d5134e7eac24ac582',1,'winstd::event_trace']]], - ['_7eevent_5ftrace_5fenabler_26',['~event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a6be72a0a5dc8da579e26b74a1ac24a4f',1,'winstd::event_trace_enabler']]], - ['_7efind_5ffile_27',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], - ['_7egdi_5fhandle_28',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], - ['_7eglobalmem_5faccessor_29',['~globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a508a4187d2e6de81365d5ca9961ad950',1,'winstd::globalmem_accessor']]], - ['_7eheap_30',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], - ['_7eicon_31',['~icon',['../classwinstd_1_1icon.html#a569f3d6f5e841666d33917ae4f5e7f37',1,'winstd::icon']]], - ['_7eimpersonator_32',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], - ['_7elibrary_33',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], - ['_7eprocess_5finformation_34',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], - ['_7eref_5funique_5fptr_35',['~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_36',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], - ['_7esafearray_37',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], - ['_7esafearray_5faccessor_38',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], - ['_7esanitizing_5fblob_39',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], - ['_7esc_5fhandle_40',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], - ['_7esec_5fbuffer_5fdesc_41',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], - ['_7esec_5fcontext_42',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], - ['_7esec_5fcredentials_43',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], - ['_7esecurity_5fattributes_44',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], - ['_7esecurity_5fid_45',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], - ['_7esetup_5fdevice_5finfo_5flist_46',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], - ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_47',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], - ['_7evariant_48',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], - ['_7evmemory_49',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], - ['_7ewaddrinfo_50',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], - ['_7ewin_5fhandle_51',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], - ['_7ewindow_5fdc_52',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], - ['_7ewintrust_53',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], - ['_7ewlan_5fhandle_54',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] + ['_7eclipboard_5fopener_6',['~clipboard_opener',['../classwinstd_1_1clipboard__opener.html#a13b2c0a03314b40ec97b6b53318dfa38',1,'winstd::clipboard_opener']]], + ['_7ecom_5finitializer_7',['~com_initializer',['../classwinstd_1_1com__initializer.html#ad53a7697dfaf83d4832f8a57a4cf00f6',1,'winstd::com_initializer']]], + ['_7ecom_5fobj_8',['~com_obj',['../classwinstd_1_1com__obj.html#a91383e6e26266b0d3803c8594b8c5149',1,'winstd::com_obj']]], + ['_7econsole_5fctrl_5fhandler_9',['~console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a2cba550aa8c659f63386ed6322ccbd6e',1,'winstd::console_ctrl_handler']]], + ['_7ecritical_5fsection_10',['~critical_section',['../classwinstd_1_1critical__section.html#a67af5836304f27084f296c0cc17d7d20',1,'winstd::critical_section']]], + ['_7ecrypt_5fhash_11',['~crypt_hash',['../classwinstd_1_1crypt__hash.html#a7c688405c14799681018e0dfc8b51264',1,'winstd::crypt_hash']]], + ['_7ecrypt_5fkey_12',['~crypt_key',['../classwinstd_1_1crypt__key.html#a396a4af75fd99c896757679a890e6e29',1,'winstd::crypt_key']]], + ['_7ecrypt_5fprov_13',['~crypt_prov',['../classwinstd_1_1crypt__prov.html#a91c1f3d10b03ef1b5d1e1da029060289',1,'winstd::crypt_prov']]], + ['_7edata_5fblob_14',['~data_blob',['../classwinstd_1_1data__blob.html#a1c79df4fa5413536c745258d09e69599',1,'winstd::data_blob']]], + ['_7edc_15',['~dc',['../classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c',1,'winstd::dc']]], + ['_7edc_5fselector_16',['~dc_selector',['../classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd',1,'winstd::dc_selector']]], + ['_7eeap_5fattr_17',['~eap_attr',['../classwinstd_1_1eap__attr.html#a085d6ade88a42ba69cf128a97b7c9b0d',1,'winstd::eap_attr']]], + ['_7eeap_5fmethod_5finfo_5farray_18',['~eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html#a6870644e66359b0448094a193ef0b4b8',1,'winstd::eap_method_info_array']]], + ['_7eeap_5fpacket_19',['~eap_packet',['../classwinstd_1_1eap__packet.html#a6abed7e1c0460fd6e2ae5d832fbd7493',1,'winstd::eap_packet']]], + ['_7eevent_5ffn_5fauto_20',['~event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a764a83cffe2ed2ae41e9d973073d5cb0',1,'winstd::event_fn_auto']]], + ['_7eevent_5ffn_5fauto_5fret_21',['~event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a1bd1de5df10856a08187ad112992979f',1,'winstd::event_fn_auto_ret']]], + ['_7eevent_5flog_22',['~event_log',['../classwinstd_1_1event__log.html#adcaee9990fb509eb281159b170218700',1,'winstd::event_log']]], + ['_7eevent_5fprovider_23',['~event_provider',['../classwinstd_1_1event__provider.html#ab219ea75734671f98fabbf41485e558b',1,'winstd::event_provider']]], + ['_7eevent_5frec_24',['~event_rec',['../classwinstd_1_1event__rec.html#a2968045a00cf5994ffc2db1a7eb38601',1,'winstd::event_rec']]], + ['_7eevent_5fsession_25',['~event_session',['../classwinstd_1_1event__session.html#a31fe172bd0ce3fb712924de08445476a',1,'winstd::event_session']]], + ['_7eevent_5ftrace_26',['~event_trace',['../classwinstd_1_1event__trace.html#ab8800a2c88f1b96d5134e7eac24ac582',1,'winstd::event_trace']]], + ['_7eevent_5ftrace_5fenabler_27',['~event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a6be72a0a5dc8da579e26b74a1ac24a4f',1,'winstd::event_trace_enabler']]], + ['_7efind_5ffile_28',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], + ['_7egdi_5fhandle_29',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], + ['_7eglobalmem_5faccessor_30',['~globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a508a4187d2e6de81365d5ca9961ad950',1,'winstd::globalmem_accessor']]], + ['_7eheap_31',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], + ['_7ehttp_32',['~http',['../classwinstd_1_1http.html#a0dd8f655e3581cba346dfdc86e945580',1,'winstd::http']]], + ['_7eicon_33',['~icon',['../classwinstd_1_1icon.html#a569f3d6f5e841666d33917ae4f5e7f37',1,'winstd::icon']]], + ['_7eimpersonator_34',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], + ['_7elibrary_35',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], + ['_7eprocess_5finformation_36',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_37',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], + ['_7ereg_5fkey_38',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esafearray_39',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], + ['_7esafearray_5faccessor_40',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], + ['_7esanitizing_5fblob_41',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esc_5fhandle_42',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], + ['_7esec_5fbuffer_5fdesc_43',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_44',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_45',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fattributes_46',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], + ['_7esecurity_5fid_47',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_48',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_49',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], + ['_7evariant_50',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], + ['_7evmemory_51',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], + ['_7ewaddrinfo_52',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], + ['_7ewin_5fhandle_53',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], + ['_7ewindow_5fdc_54',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], + ['_7ewintrust_55',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], + ['_7ewlan_5fhandle_56',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] ]; diff --git a/search/all_2.js b/search/all_2.js index ac9aa123..abf36adb 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -1,11 +1,11 @@ var searchData= [ - ['basic_5fstring_5fguid_0',['basic_string_guid',['../classwinstd_1_1basic__string__guid.html#a69e6b961f17e862b55ff02dcb6e90c3e',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_0',['basic_string_guid',['../classwinstd_1_1basic__string__guid.html',1,'winstd::basic_string_guid< _Elem, _Traits, _Ax >'],['../classwinstd_1_1basic__string__guid.html#a69e6b961f17e862b55ff02dcb6e90c3e',1,'winstd::basic_string_guid::basic_string_guid()']]], ['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#a0b20861e7b0a943c80774b36f77924b9',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)'],['../classwinstd_1_1basic__string__msg.html#aee54bb91aa476ab3e7cd7fd118becf56',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a3fe77c26d3e41426fae90d6255455403',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a72842f64e4015027811f4f8bd36b86ee',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a6225c3a78cad401124dd7cafdd95ad31',1,'winstd::basic_string_msg::basic_string_msg(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a9203b643c2070c1954c595e5c6e519d5',1,'winstd::basic_string_msg::basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a736a3e3559471ede3f8b7144ed908c46',1,'winstd::basic_string_msg::basic_string_msg(const _Elem *format,...)'],['../classwinstd_1_1basic__string__msg.html',1,'winstd::basic_string_msg< _Elem, _Traits, _Ax >']]], - ['basic_5fstring_5fprintf_4',['basic_string_printf',['../classwinstd_1_1basic__string__printf.html#a409c94cb80a202d0bd628930514b64ba',1,'winstd::basic_string_printf::basic_string_printf(const _Elem *format,...)'],['../classwinstd_1_1basic__string__printf.html#ab258ccf8da028fc5e8511336401213ba',1,'winstd::basic_string_printf::basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html#a532bc995c0509b41f92612a77e169a83',1,'winstd::basic_string_printf::basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html',1,'winstd::basic_string_printf< _Elem, _Traits, _Ax >']]], + ['basic_5fstring_5fprintf_4',['basic_string_printf',['../classwinstd_1_1basic__string__printf.html',1,'winstd::basic_string_printf< _Elem, _Traits, _Ax >'],['../classwinstd_1_1basic__string__printf.html#a409c94cb80a202d0bd628930514b64ba',1,'winstd::basic_string_printf::basic_string_printf(const _Elem *format,...)'],['../classwinstd_1_1basic__string__printf.html#ab258ccf8da028fc5e8511336401213ba',1,'winstd::basic_string_printf::basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html#a532bc995c0509b41f92612a77e169a83',1,'winstd::basic_string_printf::basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)']]], ['blank_5feap_5fattr_5',['blank_eap_attr',['../group___win_std_e_a_p_a_p_i.html#gaeeb21f5241c6b605b67c3e6e4128f972',1,'winstd']]], ['blank_5fevent_5fdata_6',['blank_event_data',['../group___win_std_e_t_w_a_p_i.html#gaf7a60dde62523f074610aef107bd5d9d',1,'winstd']]], - ['bstr_7',['bstr',['../classwinstd_1_1bstr.html#a01b4deb6467c16d9d8e8e14fe6c057fa',1,'winstd::bstr::bstr(LPCOLESTR src)'],['../classwinstd_1_1bstr.html#aafb65f4d4ab54a13147912c2de8adc54',1,'winstd::bstr::bstr(LPCOLESTR src, UINT len)'],['../classwinstd_1_1bstr.html#a068d796beaad2d2978ea6cab60688be4',1,'winstd::bstr::bstr(const std::basic_string< wchar_t, _Traits, _Ax > &src)'],['../classwinstd_1_1bstr.html',1,'winstd::bstr']]] + ['bstr_7',['bstr',['../classwinstd_1_1bstr.html',1,'winstd::bstr'],['../classwinstd_1_1bstr.html#a01b4deb6467c16d9d8e8e14fe6c057fa',1,'winstd::bstr::bstr(LPCOLESTR src)'],['../classwinstd_1_1bstr.html#aafb65f4d4ab54a13147912c2de8adc54',1,'winstd::bstr::bstr(LPCOLESTR src, UINT len)'],['../classwinstd_1_1bstr.html#abc2160190ea71c4f9239ea9575efa9d3',1,'winstd::bstr::bstr(const std::basic_string< OLECHAR, _Traits, _Ax > &src)']]] ]; diff --git a/search/all_3.js b/search/all_3.js index 2bbc30cd..5afd662c 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -8,47 +8,50 @@ var searchData= ['certgetnamestringa_5',['CertGetNameStringA',['../group___win_std_crypto_a_p_i.html#ga551dacab30d7f72a713f69ea09edea92',1,'Crypt.h']]], ['certgetnamestringw_6',['CertGetNameStringW',['../group___win_std_crypto_a_p_i.html#ga2a0de58b33f5eb080e3b6ba9a7fe1e53',1,'Crypt.h']]], ['change_5ftype_7',['change_type',['../classwinstd_1_1variant.html#a499d38db49d577c816e447c6a3875ff5',1,'winstd::variant']]], - ['cocreateinstance_8',['CoCreateInstance',['../group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965',1,'COM.h']]], - ['cogetobject_9',['CoGetObject',['../group___win_std_c_o_m.html#ga825b73e9a34b1f496c577a951441b6f1',1,'COM.h']]], - ['com_20object_20management_10',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]], - ['com_5finitializer_11',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept'],['../classwinstd_1_1com__initializer.html',1,'winstd::com_initializer']]], - ['com_5fobj_12',['com_obj',['../classwinstd_1_1com__obj.html#a1983f51468452e51890a3a561d3d2627',1,'winstd::com_obj::com_obj(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)'],['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)'],['../classwinstd_1_1com__obj.html',1,'winstd::com_obj< T >']]], - ['com_5fruntime_5ferror_13',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1com__runtime__error.html',1,'winstd::com_runtime_error']]], - ['console_5fctrl_5fhandler_14',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler::console_ctrl_handler()'],['../classwinstd_1_1console__ctrl__handler.html',1,'winstd::console_ctrl_handler']]], - ['const_5fpointer_15',['const_pointer',['../classwinstd_1_1heap__allocator.html#adc56ad9f2484d7d34299bef73709ef9c',1,'winstd::heap_allocator']]], - ['const_5freference_16',['const_reference',['../classwinstd_1_1heap__allocator.html#ad98c7e8fc3e14da42a8dfc897e75a790',1,'winstd::heap_allocator']]], - ['construct_17',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], - ['convertstringsecuritydescriptortosecuritydescriptora_18',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], - ['convertstringsecuritydescriptortosecuritydescriptorw_19',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], - ['cotaskmemfree_5fdelete_20',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete::CoTaskMemFree_delete()'],['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd::CoTaskMemFree_delete']]], - ['create_21',['create',['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()']]], - ['create_5fexp1_22',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], - ['create_5fms_5fmppe_5fkey_23',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], - ['createwellknownsid_24',['CreateWellKnownSid',['../group___win_std_win_a_p_i.html#ga6b1c9ae28988d31bb03abefb32af5642',1,'Win.h']]], - ['credentials_20api_25',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], - ['credenumeratea_26',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], - ['credenumeratew_27',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], - ['credfree_5fdelete_28',['CredFree_delete',['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html',1,'winstd::CredFree_delete< _Ty >']]], - ['credfree_5fdelete_3c_20_5fty_5b_5d_3e_29',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], - ['credprotecta_30',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], - ['credprotectw_31',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], - ['credunprotecta_32',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], - ['credunprotectw_33',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], - ['critical_5fsection_34',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section::critical_section()'],['../classwinstd_1_1critical__section.html',1,'winstd::critical_section']]], - ['crypt_5fhash_35',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], - ['crypt_5fkey_36',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], - ['crypt_5fprov_37',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]], - ['cryptacquirecontexta_38',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], - ['cryptacquirecontextw_39',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], - ['cryptcreatehash_40',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], - ['cryptdecrypt_41',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], - ['cryptderivekey_42',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], - ['cryptencrypt_43',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], - ['cryptexportkey_44',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], - ['cryptgenkey_45',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], - ['cryptgethashparam_46',['CryptGetHashParam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptgetkeyparam_47',['CryptGetKeyParam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptimportkey_48',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], - ['cryptimportpublickeyinfo_49',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]], - ['cryptography_20api_50',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] + ['classes_8',['Memory and Resource Helper Classes',['../index.html#autotoc_md3',1,'']]], + ['client_9',['Windows HTTP Client',['../group___win_std_win_h_t_t_p.html',1,'']]], + ['clipboard_5fopener_10',['clipboard_opener',['../classwinstd_1_1clipboard__opener.html',1,'winstd::clipboard_opener'],['../classwinstd_1_1clipboard__opener.html#a5614d7336929b18d8c3966683565eded',1,'winstd::clipboard_opener::clipboard_opener()']]], + ['cocreateinstance_11',['CoCreateInstance',['../group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965',1,'COM.h']]], + ['cogetobject_12',['CoGetObject',['../group___win_std_c_o_m.html#ga825b73e9a34b1f496c577a951441b6f1',1,'COM.h']]], + ['com_20object_20management_13',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]], + ['com_5finitializer_14',['com_initializer',['../classwinstd_1_1com__initializer.html',1,'winstd::com_initializer'],['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept']]], + ['com_5fobj_15',['com_obj',['../classwinstd_1_1com__obj.html',1,'winstd::com_obj< T >'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)'],['../classwinstd_1_1com__obj.html#a1983f51468452e51890a3a561d3d2627',1,'winstd::com_obj::com_obj(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)'],['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)']]], + ['com_5fruntime_5ferror_16',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1com__runtime__error.html',1,'winstd::com_runtime_error']]], + ['console_5fctrl_5fhandler_17',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler::console_ctrl_handler()'],['../classwinstd_1_1console__ctrl__handler.html',1,'winstd::console_ctrl_handler']]], + ['const_5fpointer_18',['const_pointer',['../classwinstd_1_1heap__allocator.html#adc56ad9f2484d7d34299bef73709ef9c',1,'winstd::heap_allocator']]], + ['const_5freference_19',['const_reference',['../classwinstd_1_1heap__allocator.html#ad98c7e8fc3e14da42a8dfc897e75a790',1,'winstd::heap_allocator']]], + ['construct_20',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], + ['convertstringsecuritydescriptortosecuritydescriptora_21',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], + ['convertstringsecuritydescriptortosecuritydescriptorw_22',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], + ['cotaskmemfree_5fdelete_23',['cotaskmemfree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd::CoTaskMemFree_delete'],['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete::CoTaskMemFree_delete()']]], + ['create_24',['create',['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()']]], + ['create_5fexp1_25',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], + ['create_5fms_5fmppe_5fkey_26',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], + ['createwellknownsid_27',['CreateWellKnownSid',['../group___win_std_win_a_p_i.html#ga6b1c9ae28988d31bb03abefb32af5642',1,'Win.h']]], + ['credentials_20api_28',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], + ['credenumeratea_29',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], + ['credenumeratew_30',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], + ['credfree_5fdelete_31',['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_32',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['credprotecta_33',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], + ['credprotectw_34',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], + ['credunprotecta_35',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], + ['credunprotectw_36',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], + ['critical_5fsection_37',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section::critical_section()'],['../classwinstd_1_1critical__section.html',1,'winstd::critical_section']]], + ['crypt_5fhash_38',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], + ['crypt_5fkey_39',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], + ['crypt_5fprov_40',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]], + ['cryptacquirecontexta_41',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], + ['cryptacquirecontextw_42',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], + ['cryptcreatehash_43',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], + ['cryptdecrypt_44',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], + ['cryptderivekey_45',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], + ['cryptencrypt_46',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], + ['cryptexportkey_47',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], + ['cryptgenkey_48',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], + ['cryptgethashparam_49',['cryptgethashparam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptgetkeyparam_50',['cryptgetkeyparam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptimportkey_51',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], + ['cryptimportpublickeyinfo_52',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]], + ['cryptography_20api_53',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] ]; diff --git a/search/all_4.js b/search/all_4.js index fea3b980..79cb7d07 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -1,16 +1,16 @@ 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'],['../classwinstd_1_1safearray__accessor.html#a8b019e527bbd7a26abb9df734272cfd5',1,'winstd::safearray_accessor::data()'],['../classwinstd_1_1globalmem__accessor.html#a6fa33d36095bda00675cd0eb4b1df0ef',1,'winstd::globalmem_accessor::data()']]], - ['data_5fblob_1',['data_blob',['../classwinstd_1_1data__blob.html#a5cfa94091e87f259bde521a7050f27c7',1,'winstd::data_blob::data_blob(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#a11968f5b76e8a46784f7bcee3a8f00cc',1,'winstd::data_blob::data_blob(const DATA_BLOB &other)'],['../classwinstd_1_1data__blob.html#a66a5574a42c6c5c76051261a342a43a8',1,'winstd::data_blob::data_blob(BYTE *data, 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']]], + ['data_5fblob_1',['data_blob',['../classwinstd_1_1data__blob.html',1,'winstd::data_blob'],['../classwinstd_1_1data__blob.html#a5cfa94091e87f259bde521a7050f27c7',1,'winstd::data_blob::data_blob(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#a11968f5b76e8a46784f7bcee3a8f00cc',1,'winstd::data_blob::data_blob(const DATA_BLOB &other)'],['../classwinstd_1_1data__blob.html#a66a5574a42c6c5c76051261a342a43a8',1,'winstd::data_blob::data_blob(BYTE *data, DWORD size) noexcept'],['../classwinstd_1_1data__blob.html#a5bed8028538f9688eea5dc8353ff69d8',1,'winstd::data_blob::data_blob() noexcept']]], ['dc_2',['dc',['../classwinstd_1_1dc.html',1,'winstd']]], - ['dc_5fselector_3',['dc_selector',['../classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22',1,'winstd::dc_selector::dc_selector()'],['../classwinstd_1_1dc__selector.html',1,'winstd::dc_selector']]], + ['dc_5fselector_3',['dc_selector',['../classwinstd_1_1dc__selector.html',1,'winstd::dc_selector'],['../classwinstd_1_1dc__selector.html#a4cb5b528376651a59eb9bbb8471c3f22',1,'winstd::dc_selector::dc_selector()']]], ['deallocate_4',['deallocate',['../classwinstd_1_1sanitizing__allocator.html#a2c208920fad2171f4448ec6e7817522a',1,'winstd::sanitizing_allocator::deallocate()'],['../classwinstd_1_1heap__allocator.html#aa4dcda946d03a9a382ea9c0f0f140462',1,'winstd::heap_allocator::deallocate()']]], ['delete_5fsubkey_5',['delete_subkey',['../classwinstd_1_1reg__key.html#a5b8ee8731e0caa51c84b271f43604f54',1,'winstd::reg_key']]], ['destroy_6',['destroy',['../classwinstd_1_1heap__allocator.html#aef179f33ca0ad99ffda16f004b146143',1,'winstd::heap_allocator']]], ['detach_7',['detach',['../classwinstd_1_1handle.html#ad5acf6ce53e092b8d4d53f909cf321f9',1,'winstd::handle']]], ['difference_5ftype_8',['difference_type',['../classwinstd_1_1heap__allocator.html#a4b39b8176ea30e1ceb02642c44de7b43',1,'winstd::heap_allocator']]], ['disable_5ftrace_9',['disable_trace',['../classwinstd_1_1event__session.html#a86ff12521bc1c863ea685b8a689fd81b',1,'winstd::event_session']]], - ['dplhandle_10',['dplhandle',['../classwinstd_1_1dplhandle.html#ac1aa19e060402006d8ff8404be6b07c3',1,'winstd::dplhandle::dplhandle(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#ac7439fc22a5754f8aeb2b0e1afd25b9c',1,'winstd::dplhandle::dplhandle(const dplhandle< handle_type, INVAL > &h)'],['../classwinstd_1_1dplhandle.html#ab1ac74d5f212fddc217d1a8190a01177',1,'winstd::dplhandle::dplhandle(handle_type h) noexcept'],['../classwinstd_1_1dplhandle.html#ac95cbfb481c0d5e6c60d130f3c270b59',1,'winstd::dplhandle::dplhandle() noexcept'],['../classwinstd_1_1dplhandle.html',1,'winstd::dplhandle< T, INVAL >']]], + ['dplhandle_10',['dplhandle',['../classwinstd_1_1dplhandle.html',1,'winstd::dplhandle< T, INVAL >'],['../classwinstd_1_1dplhandle.html#ac7439fc22a5754f8aeb2b0e1afd25b9c',1,'winstd::dplhandle::dplhandle(const dplhandle< handle_type, INVAL > &h)'],['../classwinstd_1_1dplhandle.html#ab1ac74d5f212fddc217d1a8190a01177',1,'winstd::dplhandle::dplhandle(handle_type h) noexcept'],['../classwinstd_1_1dplhandle.html#ac95cbfb481c0d5e6c60d130f3c270b59',1,'winstd::dplhandle::dplhandle() noexcept'],['../classwinstd_1_1dplhandle.html#ac1aa19e060402006d8ff8404be6b07c3',1,'winstd::dplhandle::dplhandle(dplhandle< handle_type, INVAL > &&h) noexcept']]], ['dplhandle_3c_20bstr_2c_20null_20_3e_11',['dplhandle< BSTR, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], ['dplhandle_3c_20eappacket_20_2a_2c_20null_20_3e_12',['dplhandle< EapPacket *, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], ['dplhandle_3c_20hcrypthash_2c_20null_20_3e_13',['dplhandle< HCRYPTHASH, NULL >',['../classwinstd_1_1dplhandle.html',1,'winstd']]], diff --git a/search/all_5.js b/search/all_5.js index d00dea80..34710ff0 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,19 +1,19 @@ var searchData= [ - ['eap_5fattr_0',['eap_attr',['../classwinstd_1_1eap__attr.html#a029d15ddb8b9cd33b4907f01719da5b8',1,'winstd::eap_attr::eap_attr(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#a4cb8d6fbf7f4e53ec64a030bea00d148',1,'winstd::eap_attr::eap_attr(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_5fattr_0',['eap_attr',['../classwinstd_1_1eap__attr.html',1,'winstd::eap_attr'],['../classwinstd_1_1eap__attr.html#a029d15ddb8b9cd33b4907f01719da5b8',1,'winstd::eap_attr::eap_attr(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__attr.html#a4cb8d6fbf7f4e53ec64a030bea00d148',1,'winstd::eap_attr::eap_attr(const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1eap__attr.html#a015a82d7f91679f76ca590bbdabc04c1',1,'winstd::eap_attr::eap_attr() noexcept']]], ['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#a3c3e0f0150d21c09801c67ceb927e873',1,'winstd::eap_method_info_array::eap_method_info_array(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_5finfo_5farray_5',['eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html',1,'winstd::eap_method_info_array'],['../classwinstd_1_1eap__method__info__array.html#a3c3e0f0150d21c09801c67ceb927e873',1,'winstd::eap_method_info_array::eap_method_info_array(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']]], ['eap_5fmethod_5fprop_6',['eap_method_prop',['../classwinstd_1_1eap__method__prop.html#adc01bff4048e03f5f7b88d186940b9d8',1,'winstd::eap_method_prop::eap_method_prop(EAP_METHOD_PROPERTY_TYPE type, LPCWSTR value) noexcept'],['../classwinstd_1_1eap__method__prop.html#a7f0f5817c41e839a1e71eda3a2284949',1,'winstd::eap_method_prop::eap_method_prop(EAP_METHOD_PROPERTY_TYPE type, DWORD value) noexcept'],['../classwinstd_1_1eap__method__prop.html#a06b8588c10a52d60556ced6b6a111ac3',1,'winstd::eap_method_prop::eap_method_prop(EAP_METHOD_PROPERTY_TYPE type, BOOL 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#a4e271e11e866ee7114df20b63022d827',1,'winstd::eap_runtime_error::eap_runtime_error(const EAP_ERROR &err, const char *msg=nullptr)'],['../classwinstd_1_1eap__runtime__error.html#a68708f0598e27325339cc34473131240',1,'winstd::eap_runtime_error::eap_runtime_error(const EAP_ERROR &err, 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']]], + ['eaphostpeerfreeeaperror_5fdelete_10',['eaphostpeerfreeeaperror_delete',['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html',1,'winstd::EapHostPeerFreeEapError_delete'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ab4dd927d7e4cd40b2ce7068fe252b76e',1,'winstd::EapHostPeerFreeEapError_delete::EapHostPeerFreeEapError_delete()']]], + ['eaphostpeerfreeerrormemory_5fdelete_11',['eaphostpeerfreeerrormemory_delete',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html',1,'winstd::EapHostPeerFreeErrorMemory_delete'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a43f0b1a440b9a431e9fee807bc1386be',1,'winstd::EapHostPeerFreeErrorMemory_delete::EapHostPeerFreeErrorMemory_delete()']]], + ['eaphostpeerfreememory_5fdelete_12',['eaphostpeerfreememory_delete',['../structwinstd_1_1_eap_host_peer_free_memory__delete.html',1,'winstd::EapHostPeerFreeMemory_delete'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#af6220ac1d99cc114670c363ecfe64557',1,'winstd::EapHostPeerFreeMemory_delete::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']]], ['enable_5fcallback_14',['enable_callback',['../classwinstd_1_1event__provider.html#ac896e3a23b3f44ef0b1cb0ac6717e894',1,'winstd::event_provider::enable_callback(LPCGUID SourceId, ULONG IsEnabled, UCHAR Level, ULONGLONG MatchAnyKeyword, ULONGLONG MatchAllKeyword, PEVENT_FILTER_DESCRIPTOR FilterData)'],['../classwinstd_1_1event__provider.html#ae1bde7438a09da9e878e86890de50a07',1,'winstd::event_provider::enable_callback(LPCGUID SourceId, ULONG IsEnabled, UCHAR Level, ULONGLONG MatchAnyKeyword, ULONGLONG MatchAllKeyword, PEVENT_FILTER_DESCRIPTOR FilterData, PVOID CallbackContext)']]], ['enable_5ftrace_15',['enable_trace',['../classwinstd_1_1event__session.html#aa140384c61972ebabbf6489e8aa5700b',1,'winstd::event_session']]], ['end_16',['end',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a7f021a1415b86f2d013b2618fb31ae53',1,'winstd']]], @@ -21,17 +21,18 @@ var searchData= ['error_5ftype_18',['error_type',['../classwinstd_1_1num__runtime__error.html#a6fa2de87d0151b3ad9cac58f838852e0',1,'winstd::num_runtime_error']]], ['event_19',['event',['../group___win_std_win_a_p_i.html#ga8aad78395ff021f46a34e51816038d20',1,'winstd']]], ['event_20tracing_20for_20windows_20api_20',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]], - ['event_5fdata_21',['event_data',['../classwinstd_1_1event__data.html#acb4032673a3b2376eb0d62115bb37c4f',1,'winstd::event_data::event_data()'],['../classwinstd_1_1event__data.html#a0a53ee58077eed5bca18f146c34ced44',1,'winstd::event_data::event_data(const char &data)'],['../classwinstd_1_1event__data.html#a86447ba8727fe91c0de85b8f7835a4c1',1,'winstd::event_data::event_data(const unsigned char &data)'],['../classwinstd_1_1event__data.html#a26563233e9507adbf183291974005eaf',1,'winstd::event_data::event_data(const int &data)'],['../classwinstd_1_1event__data.html#a59b2ac8e1b681412ea0aa582b3028681',1,'winstd::event_data::event_data(const unsigned int &data)'],['../classwinstd_1_1event__data.html#aef6715d8e3e68eac7b7bbceacb3aff93',1,'winstd::event_data::event_data(const long &data)'],['../classwinstd_1_1event__data.html#aba0a6535c84e9165b5ccdf943449e10c',1,'winstd::event_data::event_data(const unsigned long &data)'],['../classwinstd_1_1event__data.html#a4d309bcda353b42ba1005b3c7b6f8dc1',1,'winstd::event_data::event_data(const GUID &data)'],['../classwinstd_1_1event__data.html#a74be98ecad61265232c0752e0e823a8e',1,'winstd::event_data::event_data(const char *data)'],['../classwinstd_1_1event__data.html#a0ac38aca75ec84f5265eb897fb3c7a7e',1,'winstd::event_data::event_data(const wchar_t *data)'],['../classwinstd_1_1event__data.html#aa9741846e354b469b750db2ea982b12d',1,'winstd::event_data::event_data(const std::basic_string< _Elem, _Traits, _Ax > &data)'],['../classwinstd_1_1event__data.html#a31af4a774845ec0f7db4267f573cd422',1,'winstd::event_data::event_data(const void *data, ULONG size)'],['../classwinstd_1_1event__data.html',1,'winstd::event_data']]], - ['event_5ffn_5fauto_22',['event_fn_auto',['../classwinstd_1_1event__fn__auto.html#aed0b955ff2db183f6667345925801b0b',1,'winstd::event_fn_auto::event_fn_auto(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#a5c45c1de3b87f6547f6e76a80b80f500',1,'winstd::event_fn_auto::event_fn_auto(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto.html#a751244aeeeceb01401da27c5080fc590',1,'winstd::event_fn_auto::event_fn_auto(event_provider &ep, const EVENT_DESCRIPTOR *event_cons, const EVENT_DESCRIPTOR *event_dest, LPCSTR pszFnName)'],['../classwinstd_1_1event__fn__auto.html',1,'winstd::event_fn_auto']]], - ['event_5ffn_5fauto_5fret_23',['event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a52fe971a33082d3652dd6d99378f17c5',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(event_provider &ep, const EVENT_DESCRIPTOR *event_cons, const EVENT_DESCRIPTOR *event_dest, LPCSTR pszFnName, T &result)'],['../classwinstd_1_1event__fn__auto__ret.html#a0f656d3899f65afdaee9c651baf69bff',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ac8b93b2bb498280707f795c03024d7d3',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1event__fn__auto__ret.html',1,'winstd::event_fn_auto_ret< T >']]], + ['event_5fdata_21',['event_data',['../classwinstd_1_1event__data.html#a31af4a774845ec0f7db4267f573cd422',1,'winstd::event_data::event_data(const void *data, ULONG size)'],['../classwinstd_1_1event__data.html#aa9741846e354b469b750db2ea982b12d',1,'winstd::event_data::event_data(const std::basic_string< _Elem, _Traits, _Ax > &data)'],['../classwinstd_1_1event__data.html#a0ac38aca75ec84f5265eb897fb3c7a7e',1,'winstd::event_data::event_data(const wchar_t *data)'],['../classwinstd_1_1event__data.html#a86447ba8727fe91c0de85b8f7835a4c1',1,'winstd::event_data::event_data(const unsigned char &data)'],['../classwinstd_1_1event__data.html#a74be98ecad61265232c0752e0e823a8e',1,'winstd::event_data::event_data(const char *data)'],['../classwinstd_1_1event__data.html#a4d309bcda353b42ba1005b3c7b6f8dc1',1,'winstd::event_data::event_data(const GUID &data)'],['../classwinstd_1_1event__data.html#aba0a6535c84e9165b5ccdf943449e10c',1,'winstd::event_data::event_data(const unsigned long &data)'],['../classwinstd_1_1event__data.html#a59b2ac8e1b681412ea0aa582b3028681',1,'winstd::event_data::event_data(const unsigned int &data)'],['../classwinstd_1_1event__data.html#a26563233e9507adbf183291974005eaf',1,'winstd::event_data::event_data(const int &data)'],['../classwinstd_1_1event__data.html#a0a53ee58077eed5bca18f146c34ced44',1,'winstd::event_data::event_data(const char &data)'],['../classwinstd_1_1event__data.html#acb4032673a3b2376eb0d62115bb37c4f',1,'winstd::event_data::event_data()'],['../classwinstd_1_1event__data.html',1,'winstd::event_data'],['../classwinstd_1_1event__data.html#aef6715d8e3e68eac7b7bbceacb3aff93',1,'winstd::event_data::event_data()']]], + ['event_5ffn_5fauto_22',['event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a751244aeeeceb01401da27c5080fc590',1,'winstd::event_fn_auto::event_fn_auto(event_provider &ep, const EVENT_DESCRIPTOR *event_cons, const EVENT_DESCRIPTOR *event_dest, LPCSTR pszFnName)'],['../classwinstd_1_1event__fn__auto.html#aed0b955ff2db183f6667345925801b0b',1,'winstd::event_fn_auto::event_fn_auto(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#a5c45c1de3b87f6547f6e76a80b80f500',1,'winstd::event_fn_auto::event_fn_auto(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto.html',1,'winstd::event_fn_auto']]], + ['event_5ffn_5fauto_5fret_23',['event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#ac8b93b2bb498280707f795c03024d7d3',1,'winstd::event_fn_auto_ret::event_fn_auto_ret()'],['../classwinstd_1_1event__fn__auto__ret.html',1,'winstd::event_fn_auto_ret< T >'],['../classwinstd_1_1event__fn__auto__ret.html#a0f656d3899f65afdaee9c651baf69bff',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#a52fe971a33082d3652dd6d99378f17c5',1,'winstd::event_fn_auto_ret::event_fn_auto_ret(event_provider &ep, const EVENT_DESCRIPTOR *event_cons, const EVENT_DESCRIPTOR *event_dest, LPCSTR pszFnName, T &result)']]], ['event_5flog_24',['event_log',['../classwinstd_1_1event__log.html',1,'winstd']]], ['event_5fprovider_25',['event_provider',['../classwinstd_1_1event__provider.html',1,'winstd']]], - ['event_5frec_26',['event_rec',['../classwinstd_1_1event__rec.html#a73f9f035b70ce7c030e2c616d3f42e37',1,'winstd::event_rec::event_rec(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#ac3a21e4c1a4469e7b85fc235f65006ca',1,'winstd::event_rec::event_rec(event_rec &&other) noexcept'],['../classwinstd_1_1event__rec.html#afd6e48f124743c9f5b0c576db2165787',1,'winstd::event_rec::event_rec(const event_rec &other)'],['../classwinstd_1_1event__rec.html#af2f781ca85c2d92b001bb32bf4839f11',1,'winstd::event_rec::event_rec()'],['../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#a21775ae7a7620d92be3b63d36bba757d',1,'winstd::event_session::event_session(handle_type h, const EVENT_TRACE_PROPERTIES *prop)'],['../classwinstd_1_1event__session.html#a14581a7203ad6d89bf69903093cfe83c',1,'winstd::event_session::event_session(event_session &&other) noexcept'],['../classwinstd_1_1event__session.html',1,'winstd::event_session']]], + ['event_5frec_26',['event_rec',['../classwinstd_1_1event__rec.html#af2f781ca85c2d92b001bb32bf4839f11',1,'winstd::event_rec::event_rec()'],['../classwinstd_1_1event__rec.html#afd6e48f124743c9f5b0c576db2165787',1,'winstd::event_rec::event_rec(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a73f9f035b70ce7c030e2c616d3f42e37',1,'winstd::event_rec::event_rec(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#ac3a21e4c1a4469e7b85fc235f65006ca',1,'winstd::event_rec::event_rec(event_rec &&other) noexcept'],['../classwinstd_1_1event__rec.html',1,'winstd::event_rec']]], + ['event_5fsession_27',['event_session',['../classwinstd_1_1event__session.html#a14581a7203ad6d89bf69903093cfe83c',1,'winstd::event_session::event_session()'],['../classwinstd_1_1event__session.html',1,'winstd::event_session'],['../classwinstd_1_1event__session.html#a21775ae7a7620d92be3b63d36bba757d',1,'winstd::event_session::event_session(handle_type h, const EVENT_TRACE_PROPERTIES *prop)'],['../classwinstd_1_1event__session.html#a24a43016accd86270c6a2ca6cf4934de',1,'winstd::event_session::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#a50ce2e4286dbfc133c7f4a4762b65a05',1,'winstd::event_trace_enabler::event_trace_enabler(LPCGUID SourceId, TRACEHANDLE TraceHandle, LPCGUID ProviderId, UCHAR Level, ULONGLONG MatchAnyKeyword=0, ULONGLONG MatchAllKeyword=0, ULONG EnableProperty=0, PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)'],['../classwinstd_1_1event__trace__enabler.html#a8666ba08639a65fa01eb64c4855d68a3',1,'winstd::event_trace_enabler::event_trace_enabler(const event_session &session, LPCGUID ProviderId, UCHAR Level, ULONGLONG MatchAnyKeyword=0, ULONGLONG MatchAllKeyword=0, ULONG EnableProperty=0, 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,'']]], - ['expandenvironmentstringsa_31',['ExpandEnvironmentStringsA',['../group___win_std_win_a_p_i.html#ga07fbe3c3b5aceaf3442a26fc3b6ce4b0',1,'Win.h']]], - ['expandenvironmentstringsw_32',['ExpandEnvironmentStringsW',['../group___win_std_win_a_p_i.html#gad2e379fa7f86f101bff21d2c10b7d430',1,'Win.h']]], - ['extensible_20authentication_20protocol_20api_33',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]] + ['event_5ftrace_5fenabler_29',['event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a8666ba08639a65fa01eb64c4855d68a3',1,'winstd::event_trace_enabler::event_trace_enabler(const event_session &session, LPCGUID ProviderId, UCHAR Level, ULONGLONG MatchAnyKeyword=0, ULONGLONG MatchAllKeyword=0, ULONG EnableProperty=0, PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)'],['../classwinstd_1_1event__trace__enabler.html#a50ce2e4286dbfc133c7f4a4762b65a05',1,'winstd::event_trace_enabler::event_trace_enabler(LPCGUID SourceId, TRACEHANDLE TraceHandle, LPCGUID ProviderId, UCHAR Level, ULONGLONG MatchAnyKeyword=0, ULONGLONG MatchAllKeyword=0, ULONG EnableProperty=0, PEVENT_FILTER_DESCRIPTOR EnableFilterDesc=NULL)'],['../classwinstd_1_1event__trace__enabler.html',1,'winstd::event_trace_enabler']]], + ['example_30',['example',['../index.html#autotoc_md4',1,'Example'],['../index.html#autotoc_md6',1,'Example'],['../index.html#autotoc_md8',1,'Example']]], + ['exceptions_31',['Exceptions',['../group___win_std_exceptions.html',1,'']]], + ['expandenvironmentstringsa_32',['ExpandEnvironmentStringsA',['../group___win_std_win_a_p_i.html#ga07fbe3c3b5aceaf3442a26fc3b6ce4b0',1,'Win.h']]], + ['expandenvironmentstringsw_33',['ExpandEnvironmentStringsW',['../group___win_std_win_a_p_i.html#gad2e379fa7f86f101bff21d2c10b7d430',1,'Win.h']]], + ['extensible_20authentication_20protocol_20api_34',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]] ]; diff --git a/search/all_6.js b/search/all_6.js index 0da0e7f2..d467743e 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,9 +1,14 @@ var searchData= [ - ['file_0',['file',['../group___win_std_win_a_p_i.html#ga1778bfb00ccb4f2d86f3bb6d660c1c9b',1,'winstd']]], - ['file_5fmapping_1',['file_mapping',['../group___win_std_win_a_p_i.html#gaaff19b3c25870c8fb66c2d43833875f0',1,'winstd']]], - ['find_5ffile_2',['find_file',['../classwinstd_1_1find__file.html',1,'winstd']]], - ['formatmessage_3',['FormatMessage',['../group___win_std_str_format.html#gaebf39378c982c5116ea0110a69eb2f75',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments): Common.h'],['../group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments): Common.h']]], - ['free_4',['free',['../classwinstd_1_1handle.html#a706aaab7691a472c608890f8e5dd0d96',1,'winstd::handle']]], - ['free_5finternal_5',['free_internal',['../classwinstd_1_1sc__handle.html#a3db1b2080f7e26c896aa9c47c230e64d',1,'winstd::sc_handle::free_internal()'],['../classwinstd_1_1win__handle.html#a456fe19828113913f42e901f112c6455',1,'winstd::win_handle::free_internal()'],['../classwinstd_1_1library.html#a0c602319cb498fa2b6a5c4eda4a150aa',1,'winstd::library::free_internal()'],['../classwinstd_1_1find__file.html#a5bb4f7e12689153f991ffcb08dbbe703',1,'winstd::find_file::free_internal()'],['../classwinstd_1_1heap.html#ae25434d96356a74d27c0b3b0e268df45',1,'winstd::heap::free_internal()'],['../classwinstd_1_1vmemory.html#a616dbfba873b9a3dcf393cff6504fc2e',1,'winstd::vmemory::free_internal()'],['../classwinstd_1_1reg__key.html#a3dba00d2105a1c633c571d8ad3131f54',1,'winstd::reg_key::free_internal()'],['../classwinstd_1_1security__id.html#a464626311e64ea1273fd6bca9ef93a73',1,'winstd::security_id::free_internal()'],['../classwinstd_1_1event__log.html#a3e7c083403f5692926aff600f6ead52e',1,'winstd::event_log::free_internal()'],['../classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437',1,'winstd::setup_device_info_list::free_internal()'],['../classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f',1,'winstd::addrinfo::free_internal()'],['../classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66',1,'winstd::waddrinfo::free_internal()'],['../classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261',1,'winstd::wlan_handle::free_internal()'],['../classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629',1,'winstd::handle::free_internal()'],['../classwinstd_1_1safearray.html#adc2ad157b72074ed1b306237819d3685',1,'winstd::safearray::free_internal()'],['../classwinstd_1_1bstr.html#a87edcb348af7d69ad86709e32b519870',1,'winstd::bstr::free_internal()'],['../classwinstd_1_1com__obj.html#a028b86f770253f74a62ca3eaebb14de5',1,'winstd::com_obj::free_internal()'],['../classwinstd_1_1cert__context.html#a1615ec6693eb68764543456ad418a970',1,'winstd::cert_context::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_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557',1,'winstd::dc::free_internal()'],['../classwinstd_1_1icon.html#a08f193eb987d54f2df65f42dcd1d5d0c',1,'winstd::icon::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()']]] + ['features_0',['Features',['../index.html#autotoc_md1',1,'']]], + ['file_1',['file',['../group___win_std_win_a_p_i.html#ga1778bfb00ccb4f2d86f3bb6d660c1c9b',1,'winstd']]], + ['file_5fmapping_2',['file_mapping',['../group___win_std_win_a_p_i.html#gaaff19b3c25870c8fb66c2d43833875f0',1,'winstd']]], + ['find_5ffile_3',['find_file',['../classwinstd_1_1find__file.html',1,'winstd']]], + ['for_20windows_20api_4',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]], + ['formatmessage_5',['formatmessage',['../group___win_std_str_format.html#gaebf39378c982c5116ea0110a69eb2f75',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments): Common.h'],['../group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments): Common.h']]], + ['formatters_6',['String Formatters',['../index.html#autotoc_md7',1,'']]], + ['formatting_7',['String Formatting',['../group___win_std_str_format.html',1,'']]], + ['free_8',['free',['../classwinstd_1_1handle.html#a706aaab7691a472c608890f8e5dd0d96',1,'winstd::handle']]], + ['free_5finternal_9',['free_internal',['../classwinstd_1_1crypt__prov.html#aa351d2dbc42daf51dddcf847fd95c39f',1,'winstd::crypt_prov::free_internal()'],['../classwinstd_1_1reg__key.html#a3dba00d2105a1c633c571d8ad3131f54',1,'winstd::reg_key::free_internal()'],['../classwinstd_1_1security__id.html#a464626311e64ea1273fd6bca9ef93a73',1,'winstd::security_id::free_internal()'],['../classwinstd_1_1event__log.html#a3e7c083403f5692926aff600f6ead52e',1,'winstd::event_log::free_internal()'],['../classwinstd_1_1sc__handle.html#a3db1b2080f7e26c896aa9c47c230e64d',1,'winstd::sc_handle::free_internal()'],['../classwinstd_1_1http.html#adb1a08aed51b8203b23c874e167b6248',1,'winstd::http::free_internal()'],['../classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f',1,'winstd::addrinfo::free_internal()'],['../classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66',1,'winstd::waddrinfo::free_internal()'],['../classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261',1,'winstd::wlan_handle::free_internal()'],['../classwinstd_1_1vmemory.html#a616dbfba873b9a3dcf393cff6504fc2e',1,'winstd::vmemory::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_1safearray.html#adc2ad157b72074ed1b306237819d3685',1,'winstd::safearray::free_internal()'],['../classwinstd_1_1bstr.html#a87edcb348af7d69ad86709e32b519870',1,'winstd::bstr::free_internal()'],['../classwinstd_1_1com__obj.html#a028b86f770253f74a62ca3eaebb14de5',1,'winstd::com_obj::free_internal()'],['../classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557',1,'winstd::dc::free_internal()'],['../classwinstd_1_1crypt__key.html#acf2f2ad35dd7602adcdeef17f605e391',1,'winstd::crypt_key::free_internal()'],['../classwinstd_1_1eap__packet.html#a6d68149b92c1564b2683ddb3a87b60f0',1,'winstd::eap_packet::free_internal()'],['../classwinstd_1_1event__provider.html#ad0d7ed652fe897a94f2ef198dd3f41a1',1,'winstd::event_provider::free_internal()'],['../classwinstd_1_1event__session.html#a4701ad4ae9d18e890ed4066473680751',1,'winstd::event_session::free_internal()'],['../classwinstd_1_1event__trace.html#ad8ef9b0616775c44e911d9db4676b19c',1,'winstd::event_trace::free_internal()'],['../classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87',1,'winstd::gdi_handle::free_internal()'],['../classwinstd_1_1icon.html#a08f193eb987d54f2df65f42dcd1d5d0c',1,'winstd::icon::free_internal()'],['../classwinstd_1_1crypt__hash.html#a3c19a87b4ff646d9e87524feac4e41b5',1,'winstd::crypt_hash::free_internal()'],['../classwinstd_1_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a',1,'winstd::window_dc::free_internal()'],['../classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260',1,'winstd::sec_credentials::free_internal()'],['../classwinstd_1_1sec__context.html#afe8682a77fe50e5818ee6c4c741f36d9',1,'winstd::sec_context::free_internal()'],['../classwinstd_1_1setup__device__info__list.html#a41f013a37e16074f1972fd279f8c1437',1,'winstd::setup_device_info_list::free_internal()'],['../classwinstd_1_1win__handle.html#a456fe19828113913f42e901f112c6455',1,'winstd::win_handle::free_internal()'],['../classwinstd_1_1library.html#a0c602319cb498fa2b6a5c4eda4a150aa',1,'winstd::library::free_internal()'],['../classwinstd_1_1find__file.html#a5bb4f7e12689153f991ffcb08dbbe703',1,'winstd::find_file::free_internal()'],['../classwinstd_1_1heap.html#ae25434d96356a74d27c0b3b0e268df45',1,'winstd::heap::free_internal()']]], + ['functions_20and_20templates_10',['Functions and Templates',['../index.html#autotoc_md5',1,'']]] ]; diff --git a/search/all_7.js b/search/all_7.js index 82e52c37..bb9be9f4 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -12,14 +12,15 @@ var searchData= ['getfileversioninfow_9',['GetFileVersionInfoW',['../group___win_std_win_a_p_i.html#ga7dbb645a5381e6e7bba37429d3de2d51',1,'Win.h']]], ['getmodulefilenamea_10',['GetModuleFileNameA',['../group___win_std_win_a_p_i.html#ga6934cae7e0b3133206b8324e4372e1cc',1,'Win.h']]], ['getmodulefilenamew_11',['GetModuleFileNameW',['../group___win_std_win_a_p_i.html#ga51dfe8b12845850282f4d120e51e80fa',1,'Win.h']]], - ['gettokeninformation_12',['GetTokenInformation',['../group___win_std_win_a_p_i.html#ga75b761473822ee6e9cf336d28b30b073',1,'Win.h']]], - ['getwindowtexta_13',['GetWindowTextA',['../group___win_std_win_a_p_i.html#ga11fd1f3e9a51e636f6e0f060e604c1aa',1,'Win.h']]], - ['getwindowtextw_14',['GetWindowTextW',['../group___win_std_win_a_p_i.html#gacab04e9e5cbbc759fe83cf70fb891acc',1,'Win.h']]], - ['globalfree_5fdelete_15',['GlobalFree_delete',['../structwinstd_1_1_global_free__delete.html#a07068a1b6ecc0628d16fc4a5d22d69a1',1,'winstd::GlobalFree_delete::GlobalFree_delete()'],['../structwinstd_1_1_global_free__delete.html',1,'winstd::GlobalFree_delete']]], - ['globalmem_5faccessor_16',['globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a7c13c963c94e5aa17dd67943c27b02c0',1,'winstd::globalmem_accessor::globalmem_accessor()'],['../classwinstd_1_1globalmem__accessor.html',1,'winstd::globalmem_accessor< T >']]], - ['gtc_17',['gtc',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a3761e7920c97542314b1aa50434f9293',1,'winstd']]], - ['gtcp_18',['gtcp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a811f41353a6e1e0ecf7a03308c4f8e0e',1,'winstd']]], - ['guidtostring_19',['GuidToString',['../group___win_std_win_a_p_i.html#gad08dfb2a0d1254918a2a4ed45061a50d',1,'Win.h']]], - ['guidtostringa_20',['GuidToStringA',['../group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313',1,'Win.h']]], - ['guidtostringw_21',['GuidToStringW',['../group___win_std_win_a_p_i.html#gad8dcada3be8a9e8c0d2f0db263c2a5e3',1,'Win.h']]] + ['getthreadpreferreduilanguages_12',['GetThreadPreferredUILanguages',['../group___win_std_win_a_p_i.html#gac8149fd4228a2af53ed1b340d6ce8f58',1,'Win.h']]], + ['gettokeninformation_13',['GetTokenInformation',['../group___win_std_win_a_p_i.html#ga75b761473822ee6e9cf336d28b30b073',1,'Win.h']]], + ['getwindowtexta_14',['GetWindowTextA',['../group___win_std_win_a_p_i.html#ga11fd1f3e9a51e636f6e0f060e604c1aa',1,'Win.h']]], + ['getwindowtextw_15',['GetWindowTextW',['../group___win_std_win_a_p_i.html#gacab04e9e5cbbc759fe83cf70fb891acc',1,'Win.h']]], + ['globalfree_5fdelete_16',['globalfree_delete',['../structwinstd_1_1_global_free__delete.html#a07068a1b6ecc0628d16fc4a5d22d69a1',1,'winstd::GlobalFree_delete::GlobalFree_delete()'],['../structwinstd_1_1_global_free__delete.html',1,'winstd::GlobalFree_delete']]], + ['globalmem_5faccessor_17',['globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a7c13c963c94e5aa17dd67943c27b02c0',1,'winstd::globalmem_accessor::globalmem_accessor()'],['../classwinstd_1_1globalmem__accessor.html',1,'winstd::globalmem_accessor< T >']]], + ['gtc_18',['gtc',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a3761e7920c97542314b1aa50434f9293',1,'winstd']]], + ['gtcp_19',['gtcp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a811f41353a6e1e0ecf7a03308c4f8e0e',1,'winstd']]], + ['guidtostring_20',['GuidToString',['../group___win_std_win_a_p_i.html#gad08dfb2a0d1254918a2a4ed45061a50d',1,'Win.h']]], + ['guidtostringa_21',['GuidToStringA',['../group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313',1,'Win.h']]], + ['guidtostringw_22',['GuidToStringW',['../group___win_std_win_a_p_i.html#gad8dcada3be8a9e8c0d2f0db263c2a5e3',1,'Win.h']]] ]; diff --git a/search/all_8.js b/search/all_8.js index baee0625..a7e3cf59 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -13,25 +13,30 @@ var searchData= ['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_20hicon_2c_20null_20_3e_12',['handle< HICON, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20hkey_2c_20null_20_3e_13',['handle< HKEY, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20hmodule_2c_20null_20_3e_14',['handle< HMODULE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20lpvoid_2c_20null_20_3e_15',['handle< LPVOID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20paddrinfoa_2c_20null_20_3e_16',['handle< PADDRINFOA, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20paddrinfow_2c_20null_20_3e_17',['handle< PADDRINFOW, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pccert_5fchain_5fcontext_2c_20inval_20_3e_18',['handle< PCCERT_CHAIN_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pccert_5fcontext_2c_20inval_20_3e_19',['handle< PCCERT_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pcredhandle_2c_20null_20_3e_20',['handle< PCredHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pctxthandle_2c_20null_20_3e_21',['handle< PCtxtHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20psid_2c_20null_20_3e_22',['handle< PSID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20reghandle_2c_20null_20_3e_23',['handle< REGHANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20safearray_20_2a_2c_20inval_20_3e_24',['handle< SAFEARRAY *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20sc_5fhandle_2c_20null_20_3e_25',['handle< SC_HANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20t_20_2a_2c_20inval_20_3e_26',['handle< T *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20t_2c_20null_20_3e_27',['handle< T, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20tracehandle_2c_200_20_3e_28',['handle< TRACEHANDLE, 0 >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20tracehandle_2c_20invalid_5fprocesstrace_5fhandle_20_3e_29',['handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_5ftype_30',['handle_type',['../classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81',1,'winstd::handle']]], - ['heap_31',['heap',['../classwinstd_1_1heap.html',1,'winstd']]], - ['heap_5fallocator_32',['heap_allocator',['../classwinstd_1_1heap__allocator.html#a71fbccc1260209b367f2ddfe96c5825a',1,'winstd::heap_allocator::heap_allocator(HANDLE heap)'],['../classwinstd_1_1heap__allocator.html#a12f843aaf554b4ca91ea69f7a321daf3',1,'winstd::heap_allocator::heap_allocator(const heap_allocator< _Other > &other)'],['../classwinstd_1_1heap__allocator.html',1,'winstd::heap_allocator< _Ty >']]], - ['help_5flink_5fid_33',['help_link_id',['../classwinstd_1_1eap__runtime__error.html#af7179a9cc9ff633a0e7d5983a4680171',1,'winstd::eap_runtime_error']]] + ['handle_3c_20hinternet_2c_20null_20_3e_13',['handle< HINTERNET, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hkey_2c_20null_20_3e_14',['handle< HKEY, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hmodule_2c_20null_20_3e_15',['handle< HMODULE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20lpvoid_2c_20null_20_3e_16',['handle< LPVOID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20paddrinfoa_2c_20null_20_3e_17',['handle< PADDRINFOA, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20paddrinfow_2c_20null_20_3e_18',['handle< PADDRINFOW, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fchain_5fcontext_2c_20inval_20_3e_19',['handle< PCCERT_CHAIN_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fcontext_2c_20inval_20_3e_20',['handle< PCCERT_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pcredhandle_2c_20null_20_3e_21',['handle< PCredHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pctxthandle_2c_20null_20_3e_22',['handle< PCtxtHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20psid_2c_20null_20_3e_23',['handle< PSID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20reghandle_2c_20null_20_3e_24',['handle< REGHANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20safearray_20_2a_2c_20inval_20_3e_25',['handle< SAFEARRAY *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20sc_5fhandle_2c_20null_20_3e_26',['handle< SC_HANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_20_2a_2c_20inval_20_3e_27',['handle< T *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_2c_20null_20_3e_28',['handle< T, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_200_20_3e_29',['handle< TRACEHANDLE, 0 >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_20invalid_5fprocesstrace_5fhandle_20_3e_30',['handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_5ftype_31',['handle_type',['../classwinstd_1_1handle.html#a3dda19199ecfbc378c932e7d84d0ea81',1,'winstd::handle']]], + ['handles_32',['System Handles',['../group___win_std_sys_handles.html',1,'']]], + ['heap_33',['heap',['../classwinstd_1_1heap.html',1,'winstd']]], + ['heap_5fallocator_34',['heap_allocator',['../classwinstd_1_1heap__allocator.html',1,'winstd::heap_allocator< _Ty >'],['../classwinstd_1_1heap__allocator.html#a71fbccc1260209b367f2ddfe96c5825a',1,'winstd::heap_allocator::heap_allocator(HANDLE heap)'],['../classwinstd_1_1heap__allocator.html#a12f843aaf554b4ca91ea69f7a321daf3',1,'winstd::heap_allocator::heap_allocator(const heap_allocator< _Other > &other)']]], + ['help_5flink_5fid_35',['help_link_id',['../classwinstd_1_1eap__runtime__error.html#af7179a9cc9ff633a0e7d5983a4680171',1,'winstd::eap_runtime_error']]], + ['helper_20classes_36',['Memory and Resource Helper Classes',['../index.html#autotoc_md3',1,'']]], + ['http_37',['http',['../classwinstd_1_1http.html',1,'winstd']]], + ['http_20client_38',['Windows HTTP Client',['../group___win_std_win_h_t_t_p.html',1,'']]] ]; diff --git a/search/all_9.js b/search/all_9.js index d8c21263..d9cd2864 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -2,7 +2,9 @@ var searchData= [ ['icon_0',['icon',['../classwinstd_1_1icon.html',1,'winstd']]], ['identity_1',['identity',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315aff483d1ff591898a9942916050d2ca3f',1,'winstd']]], - ['impersonator_2',['impersonator',['../classwinstd_1_1impersonator.html#a6d6a8f6446fd2f5bc2120318164f0eac',1,'winstd::impersonator::impersonator()'],['../classwinstd_1_1impersonator.html',1,'winstd::impersonator']]], + ['impersonator_2',['impersonator',['../classwinstd_1_1impersonator.html',1,'winstd::impersonator'],['../classwinstd_1_1impersonator.html#a6d6a8f6446fd2f5bc2120318164f0eac',1,'winstd::impersonator::impersonator()']]], ['initialize_3',['initialize',['../classwinstd_1_1sec__context.html#a7cc49346bd63d78928e65b11b21b6e21',1,'winstd::sec_context']]], - ['invalid_4',['invalid',['../group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c',1,'winstd::handle']]] + ['installer_20api_4',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]], + ['invalid_5',['invalid',['../group___win_std_sys_handles.html#gacf43e306968474166474090690857e1c',1,'winstd::handle']]], + ['is_20not_6',['What WinStd Is Not',['../index.html#autotoc_md9',1,'']]] ]; diff --git a/search/all_a.js b/search/all_a.js index dbd154ab..73af323f 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -6,7 +6,7 @@ var searchData= ['library_3',['library',['../classwinstd_1_1library.html',1,'winstd']]], ['loadstringa_4',['LoadStringA',['../group___win_std_win_a_p_i.html#ga141a51b128dac2b7b0b0f5fddc91fdaf',1,'Win.h']]], ['loadstringw_5',['LoadStringW',['../group___win_std_win_a_p_i.html#ga6c4d84d20f78aac00fe314a7d35d8b48',1,'Win.h']]], - ['localfree_5fdelete_6',['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_6',['localfree_delete',['../structwinstd_1_1_local_free__delete.html',1,'winstd::LocalFree_delete< _Ty >'],['../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()']]], ['localfree_5fdelete_3c_20_5fty_5b_5d_3e_7',['LocalFree_delete< _Ty[]>',['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], ['lookupaccountsida_8',['LookupAccountSidA',['../group___win_std_win_a_p_i.html#ga494161e98275f571eff0da1d34e80145',1,'Win.h']]], ['lookupaccountsidw_9',['LookupAccountSidW',['../group___win_std_win_a_p_i.html#ga55cf815e26d149f0032f1a1c5160fac4',1,'Win.h']]] diff --git a/search/all_b.js b/search/all_b.js index a25ef026..1836dc77 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -2,7 +2,7 @@ var searchData= [ ['m_5fattrib_0',['m_attrib',['../classwinstd_1_1sec__context.html#a8a211355b63585e9cc633639d801a13f',1,'winstd::sec_context']]], ['m_5fcookie_1',['m_cookie',['../classwinstd_1_1actctx__activator.html#ab3556f1baf628459929c8c394341a9a6',1,'winstd::actctx_activator::m_cookie'],['../classwinstd_1_1console__ctrl__handler.html#ae46848a80c517f95fc3fd7c1ee832134',1,'winstd::console_ctrl_handler::m_cookie'],['../classwinstd_1_1impersonator.html#acf82d1c062fce491af05b7e89c09d3f2',1,'winstd::impersonator::m_cookie']]], - ['m_5fdata_2',['m_data',['../classwinstd_1_1safearray__accessor.html#ae4a6744c6fc119a673701a4e0b3af1d4',1,'winstd::safearray_accessor::m_data'],['../classwinstd_1_1globalmem__accessor.html#a65be5938136bfa1ec65b7571cfccb3b7',1,'winstd::globalmem_accessor::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_5fdata_2',['m_data',['../classwinstd_1_1safearray__accessor.html#ae4a6744c6fc119a673701a4e0b3af1d4',1,'winstd::safearray_accessor::m_data'],['../classwinstd_1_1critical__section.html#a55b9b9e7f38b94cd5c3fc15a319a6719',1,'winstd::critical_section::m_data'],['../classwinstd_1_1sanitizing__blob.html#a38187ccd591a6a7cfa4a9d0a6f6f7701',1,'winstd::sanitizing_blob::m_data'],['../classwinstd_1_1globalmem__accessor.html#a65be5938136bfa1ec65b7571cfccb3b7',1,'winstd::globalmem_accessor::m_data']]], ['m_5fdesc_3',['m_desc',['../classwinstd_1_1event__fn__auto__ret.html#a23fa88c6a7aea86536cc0e4bee2746cf',1,'winstd::event_fn_auto_ret']]], ['m_5fenable_5ffilter_5fdesc_4',['m_enable_filter_desc',['../classwinstd_1_1event__trace__enabler.html#a358d20e2dbbc7dcaccbe8d3d303cc3c4',1,'winstd::event_trace_enabler']]], ['m_5fenable_5fproperty_5',['m_enable_property',['../classwinstd_1_1event__trace__enabler.html#afa99363e0122b520280f1e4a6f0a6c35',1,'winstd::event_trace_enabler']]], @@ -10,7 +10,7 @@ var searchData= ['m_5fevent_5fdest_7',['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_8',['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_9',['m_fn_name',['../classwinstd_1_1event__fn__auto.html#ad17409fc9cdaa8b78a9f38e39e21a9f0',1,'winstd::event_fn_auto']]], - ['m_5fh_10',['m_h',['../classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59',1,'winstd::handle::m_h'],['../classwinstd_1_1globalmem__accessor.html#a192f021a0694ab58dae6e2d63a5c66b8',1,'winstd::globalmem_accessor::m_h']]], + ['m_5fh_10',['m_h',['../classwinstd_1_1globalmem__accessor.html#a192f021a0694ab58dae6e2d63a5c66b8',1,'winstd::globalmem_accessor::m_h'],['../classwinstd_1_1handle.html#aabde3f16fd98b06b3b0282ef7806eb59',1,'winstd::handle::m_h']]], ['m_5fhandler_11',['m_handler',['../classwinstd_1_1console__ctrl__handler.html#a9ef863ec7a6cd26788acb94430948e60',1,'winstd::console_ctrl_handler']]], ['m_5fhdc_12',['m_hdc',['../classwinstd_1_1dc__selector.html#ab2d1223cd41529b6b2c9bb09c34568e3',1,'winstd::dc_selector']]], ['m_5fheap_13',['m_heap',['../classwinstd_1_1heap__allocator.html#a36fb89d5fca7564d2718ba54a519eadd',1,'winstd::heap_allocator']]], @@ -37,22 +37,26 @@ var searchData= ['m_5fstatus_34',['m_status',['../classwinstd_1_1event__trace__enabler.html#a576839d3b1e1db676ea1175329b02c9f',1,'winstd::event_trace_enabler']]], ['m_5ftrace_5fhandle_35',['m_trace_handle',['../classwinstd_1_1event__trace__enabler.html#a5ef48960265e3786fb94fe7f64587909',1,'winstd::event_trace_enabler']]], ['m_5ftype_36',['m_type',['../classwinstd_1_1eap__runtime__error.html#a4d7e04b38831f029d862990b607333aa',1,'winstd::eap_runtime_error']]], - ['max_5fsize_37',['max_size',['../classwinstd_1_1heap__allocator.html#ab2018e74ee3bc84eb3841fae8bc71b01',1,'winstd::heap_allocator']]], - ['md5_5fchallenge_38',['md5_challenge',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a1f61e547b81232a658f0704e85488a6c',1,'winstd']]], - ['microsoft_20installer_20api_39',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]], - ['ms_5fauth_5ftlv_40',['ms_auth_tlv',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ae19141eb8aa04ffb76d616409efcdf03',1,'winstd']]], - ['mschapv2_41',['mschapv2',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315af579ec4460aed7126de9ed539845a0f4',1,'winstd']]], - ['msg_42',['msg',['../classwinstd_1_1win__runtime__error.html#a868231adfa74636792a474a6362aeea7',1,'winstd::win_runtime_error::msg()'],['../classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f',1,'winstd::ws2_runtime_error::msg()']]], - ['msiformatrecorda_43',['MsiFormatRecordA',['../group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c',1,'MSI.h']]], - ['msiformatrecordw_44',['MsiFormatRecordW',['../group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2',1,'MSI.h']]], - ['msigetcomponentpatha_45',['MsiGetComponentPathA',['../group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3',1,'MSI.h']]], - ['msigetcomponentpathw_46',['MsiGetComponentPathW',['../group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58',1,'MSI.h']]], - ['msigetpropertya_47',['MsiGetPropertyA',['../group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385',1,'MSI.h']]], - ['msigetpropertyw_48',['MsiGetPropertyW',['../group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d',1,'MSI.h']]], - ['msigettargetpatha_49',['MsiGetTargetPathA',['../group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc',1,'MSI.h']]], - ['msigettargetpathw_50',['MsiGetTargetPathW',['../group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca',1,'MSI.h']]], - ['msirecordgetstringa_51',['MsiRecordGetStringA',['../group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29',1,'MSI.h']]], - ['msirecordgetstringw_52',['MsiRecordGetStringW',['../group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6',1,'MSI.h']]], - ['msirecordreadstream_53',['MsiRecordReadStream',['../group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036',1,'MSI.h']]], - ['multibytetowidechar_54',['MultiByteToWideChar',['../group___win_std_win_a_p_i.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Win.h']]] + ['management_37',['management',['../group___win_std_mem_sanitize.html',1,'Auto-sanitize Memory Management'],['../group___win_std_c_o_m.html',1,'COM Object Management']]], + ['max_5fsize_38',['max_size',['../classwinstd_1_1heap__allocator.html#ab2018e74ee3bc84eb3841fae8bc71b01',1,'winstd::heap_allocator']]], + ['md5_5fchallenge_39',['md5_challenge',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a1f61e547b81232a658f0704e85488a6c',1,'winstd']]], + ['memory_20and_20resource_20helper_20classes_40',['Memory and Resource Helper Classes',['../index.html#autotoc_md3',1,'']]], + ['memory_20management_41',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]], + ['message_42',['message',['../classwinstd_1_1win__runtime__error.html#aa8e0b5135a44273cfd219efb31781846',1,'winstd::win_runtime_error::message()'],['../classwinstd_1_1ws2__runtime__error.html#afedaedd3400dc4eeb6c3ec61459dec10',1,'winstd::ws2_runtime_error::message()']]], + ['microsoft_20installer_20api_43',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]], + ['ms_5fauth_5ftlv_44',['ms_auth_tlv',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ae19141eb8aa04ffb76d616409efcdf03',1,'winstd']]], + ['mschapv2_45',['mschapv2',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315af579ec4460aed7126de9ed539845a0f4',1,'winstd']]], + ['msiformatrecorda_46',['MsiFormatRecordA',['../group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c',1,'MSI.h']]], + ['msiformatrecordw_47',['MsiFormatRecordW',['../group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2',1,'MSI.h']]], + ['msigetcomponentpatha_48',['MsiGetComponentPathA',['../group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3',1,'MSI.h']]], + ['msigetcomponentpathw_49',['MsiGetComponentPathW',['../group___win_std_m_s_i_a_p_i.html#gac4be55d9d370a31e064787675c518c58',1,'MSI.h']]], + ['msigetpropertya_50',['MsiGetPropertyA',['../group___win_std_m_s_i_a_p_i.html#ga7a5853cf74ed8adb1b5cd1289c39e385',1,'MSI.h']]], + ['msigetpropertyw_51',['MsiGetPropertyW',['../group___win_std_m_s_i_a_p_i.html#ga32e20a17013eb7660fda19f2b1de389d',1,'MSI.h']]], + ['msigettargetpatha_52',['MsiGetTargetPathA',['../group___win_std_m_s_i_a_p_i.html#ga340ee7efbd658e2d6ecfb199c41856bc',1,'MSI.h']]], + ['msigettargetpathw_53',['MsiGetTargetPathW',['../group___win_std_m_s_i_a_p_i.html#ga51696a19fb4b748eed04fa3b6a8f9eca',1,'MSI.h']]], + ['msirecordgetstringa_54',['MsiRecordGetStringA',['../group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29',1,'MSI.h']]], + ['msirecordgetstringw_55',['MsiRecordGetStringW',['../group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6',1,'MSI.h']]], + ['msirecordreadstream_56',['MsiRecordReadStream',['../group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036',1,'MSI.h']]], + ['multibytetowidechar_57',['multibytetowidechar',['../group___win_std_str_format.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h']]], + ['mutex_58',['mutex',['../group___win_std_win_a_p_i.html#ga9fc26240d4a361ce032416c7507dee39',1,'winstd']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 900a73f8..c611f49f 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -4,12 +4,13 @@ var searchData= ['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']]], - ['normalizestring_4',['NormalizeString',['../group___win_std_win_a_p_i.html#ga006d35d0a588fa18614030e4e4487b91',1,'NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gadcb43067e0a63745adf10b68dafbfb7c',1,'NormalizeString(NORM_FORM NormForm, const std::basic_string< wchar_t, _Traits1, _Ax1 > &sSrcString, std::basic_string< wchar_t, _Traits2, _Ax2 > &sDstString) noexcept: Win.h']]], - ['notification_5',['notification',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a0cfd653d5d3e1e9fdbb644523d77971d',1,'winstd']]], - ['num_5fruntime_5ferror_6',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html#a4cfc6c7f3b1d5fed5a3d9e0c5aac3d19',1,'winstd::num_runtime_error::num_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1num__runtime__error.html#a4c0d5efd086891093156fede0dd43cd0',1,'winstd::num_runtime_error::num_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1num__runtime__error.html',1,'winstd::num_runtime_error< _Tn >']]], - ['num_5fruntime_5ferror_3c_20dword_20_3e_7',['num_runtime_error< DWORD >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20hresult_20_3e_8',['num_runtime_error< HRESULT >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20int_20_3e_9',['num_runtime_error< int >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['num_5fruntime_5ferror_3c_20security_5fstatus_20_3e_10',['num_runtime_error< SECURITY_STATUS >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], - ['number_11',['number',['../classwinstd_1_1num__runtime__error.html#a6388a483c00628c1a94a5ce45ca63e70',1,'winstd::num_runtime_error']]] + ['normalizestring_4',['normalizestring',['../group___win_std_win_a_p_i.html#ga006d35d0a588fa18614030e4e4487b91',1,'NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gadcb43067e0a63745adf10b68dafbfb7c',1,'NormalizeString(NORM_FORM NormForm, const std::basic_string< wchar_t, _Traits1, _Ax1 > &sSrcString, std::basic_string< wchar_t, _Traits2, _Ax2 > &sDstString) noexcept: Win.h']]], + ['not_5',['What WinStd Is Not',['../index.html#autotoc_md9',1,'']]], + ['notification_6',['notification',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315a0cfd653d5d3e1e9fdbb644523d77971d',1,'winstd']]], + ['num_5fruntime_5ferror_7',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html',1,'winstd::num_runtime_error< _Tn >'],['../classwinstd_1_1num__runtime__error.html#a4cfc6c7f3b1d5fed5a3d9e0c5aac3d19',1,'winstd::num_runtime_error::num_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1num__runtime__error.html#a4c0d5efd086891093156fede0dd43cd0',1,'winstd::num_runtime_error::num_runtime_error(error_type num, const char *msg=nullptr)']]], + ['num_5fruntime_5ferror_3c_20dword_20_3e_8',['num_runtime_error< DWORD >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20hresult_20_3e_9',['num_runtime_error< HRESULT >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20int_20_3e_10',['num_runtime_error< int >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['num_5fruntime_5ferror_3c_20security_5fstatus_20_3e_11',['num_runtime_error< SECURITY_STATUS >',['../classwinstd_1_1num__runtime__error.html',1,'winstd']]], + ['number_12',['number',['../classwinstd_1_1num__runtime__error.html#a6388a483c00628c1a94a5ce45ca63e70',1,'winstd::num_runtime_error']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 3ff529d1..297f6670 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,26 +1,27 @@ var searchData= [ - ['openprocesstoken_0',['OpenProcessToken',['../group___win_std_win_a_p_i.html#ga44eef1254def39a039cf838e1035c724',1,'Win.h']]], - ['operator_20bool_1',['operator bool',['../classwinstd_1_1impersonator.html#a0c295840090719079dbf5e5b691e6c3e',1,'winstd::impersonator']]], - ['operator_20const_20event_5ftrace_5fproperties_20_2a_2',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], - ['operator_20handle_5ftype_3',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], - ['operator_20lpcritical_5fsection_4',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], - ['operator_20typename_20_5fty_20_2a_26_5',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], - ['operator_20typename_20_5fty_20_2a_2a_6',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], - ['operator_21_7',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], - ['operator_21_3d_8',['operator!=',['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=()'],['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()']]], - ['operator_26_9',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], - ['operator_28_29_10',['operator()',['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a8a44a95dd279b699a8f3ff2c5f8dd31a',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aa9bfce548f756da75283fb781ea2da75',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_unmap_view_of_file__delete.html#aa3611bebc2deaf9acaed4e09e193032d',1,'winstd::UnmapViewOfFile_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aea662a4ce3e32723646313a9a56c4c9a',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../structwinstd_1_1_global_free__delete.html#a51cf3b37e54bcaf481d2ab03dcc2ae74',1,'winstd::GlobalFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abf0ecfcfbb58493103f7e0905272d8d8',1,'winstd::LocalFree_delete< _Ty[]>::operator()(_Ty *_Ptr) const noexcept'],['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()']]], - ['operator_2a_11',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], - ['operator_2d_3e_12',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], - ['operator_3c_13',['operator<',['../classwinstd_1_1variant.html#ac03c0c14bb91f7511425946ef7f3e725',1,'winstd::variant::operator<()'],['../classwinstd_1_1cert__context.html#a92881d07b0b41b81c4119ed8d8868c3b',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1handle.html#a4c4515d0d1071cab5c675e926aa2dc92',1,'winstd::handle::operator<(handle_type h) const']]], - ['operator_3c_3d_14',['operator<=',['../classwinstd_1_1handle.html#af9e9538d58b952799db4a1c68b0184b9',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a042240321d22636cddc379b198c7fd84',1,'winstd::cert_context::operator<=()'],['../classwinstd_1_1variant.html#a02366b97c9a937f57806640dc942ecaf',1,'winstd::variant::operator<=()']]], - ['operator_3d_15',['operator=',['../classwinstd_1_1eap__method__info__array.html#aea48aefd91b676cdbeb9511640108f2a',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1variant.html#a2ea74c1b7a770188f7f59d7eb6923dbe',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#a242766666ce3cbb83429ddd0eaeb9cc6',1,'winstd::eap_attr::operator=()'],['../classwinstd_1_1variant.html#af5e22f4158921eb49c2207335d7c7593',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#aa5909d52c15557908ff584f4712eea05',1,'winstd::eap_attr::operator=()'],['../classwinstd_1_1data__blob.html#a637b625d29bacc0875d543c69da351c2',1,'winstd::data_blob::operator=(data_blob &&other) noexcept'],['../classwinstd_1_1data__blob.html#ac818a3116ab5fc0af960f82aa505b6ae',1,'winstd::data_blob::operator=(const DATA_BLOB &other)'],['../classwinstd_1_1dplhandle.html#a546f1f737bc3da0c9b19967d849776d3',1,'winstd::dplhandle::operator=(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#abcccb97671b96da3623f700a93bb5c39',1,'winstd::dplhandle::operator=(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a31cec3cdf4ee749b1aef4b4cd7652fb7',1,'winstd::dplhandle::operator=(handle_type h) noexcept'],['../classwinstd_1_1handle.html#a6326bbc54ec3441e41f30bc1ec4d6a6c',1,'winstd::handle::operator=(handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1handle.html#a591e006af92e4d088fb9c1ed974c0923',1,'winstd::handle::operator=(handle_type h) noexcept'],['../classwinstd_1_1variant.html#a309d7d2356741ab49e5c2a200e8a5449',1,'winstd::variant::operator=()'],['../classwinstd_1_1event__rec.html#aa5287b5572575d440f881c1d8c17bac3',1,'winstd::event_rec::operator=(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a41f64986df27cea4fdaa8ee8ce2d3875',1,'winstd::event_rec::operator=(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a22ab332b9c7e3c21e6107e909703da0f',1,'winstd::event_rec::operator=(event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#a4e436a74c83a75aab21800bc9d954228',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#acb8dddbdd22399d26d4c5db2998afc1d',1,'winstd::event_fn_auto::operator=(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#ab64dd267c58d816b4ef5549e704a8949',1,'winstd::event_fn_auto::operator=(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a6bb69bf1ac97231ef47c2aed99921bc9',1,'winstd::event_fn_auto_ret::operator=(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ade4fd767e5e743649480b93cd0a5ba69',1,'winstd::event_fn_auto_ret::operator=(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b',1,'winstd::window_dc::operator=()'],['../classwinstd_1_1security__attributes.html#a85cc5cc2ce94a8876e888ee6646779d7',1,'winstd::security_attributes::operator=()'],['../classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a17a902c8f0ce17d3f06b69ec3e01a331',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#ad4a0fd8999d8d526bb232ebf70c18887',1,'winstd::variant::operator=(unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aff536ecc3c3a074fea648b7c60522a83',1,'winstd::variant::operator=(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#aeec12d33002777506b59d73f2c43421c',1,'winstd::variant::operator=(VARIANT &&varSrc) noexcept'],['../classwinstd_1_1variant.html#a355fecf0ce80d31377c9395f2ed1aada',1,'winstd::variant::operator=(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a63e75ec57af2d8f59830b029afeb3b68',1,'winstd::variant::operator=(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a602751a752d5a7442ade0f4437646231',1,'winstd::variant::operator=(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a5886220d7a2ff006d29cd4448a2a33ac',1,'winstd::variant::operator=(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a5c2733a19c37248f69a07771b8e939f1',1,'winstd::variant::operator=(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a71fb3ee2710ad470329e0b5c4f7f5ba4',1,'winstd::variant::operator=(int nSrc) noexcept'],['../classwinstd_1_1variant.html#a05ad6d2f51763b24d7528078a2c30e49',1,'winstd::variant::operator=(unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a360da15526269bd64a2fb670e9e280ff',1,'winstd::variant::operator=(long nSrc) noexcept'],['../classwinstd_1_1variant.html#a07980ff84773ac25807d0713dd05090a',1,'winstd::variant::operator=(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#af1898a82e4199d1f34924d448867f68f',1,'winstd::variant::operator=(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aebabfcb503a43abecc9f3c07629f591f',1,'winstd::variant::operator=(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aa01c928f87788c505b818b7930c0f3a0',1,'winstd::variant::operator=(unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#ad0ef65b5a3f40b1a812ac78ca5e5eb50',1,'winstd::variant::operator=(long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a1df6086270e7799b83ee2889e2b88d9e',1,'winstd::variant::operator=(float *pfSrc) noexcept'],['../classwinstd_1_1variant.html#a1786d099ef012c301c0774f98af0f13a',1,'winstd::variant::operator=(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#af86e9a10fd9dbe6e18b33a59d04f3b44',1,'winstd::variant::operator=(unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa321e1785731055f02abcf7789383912',1,'winstd::variant::operator=(long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a30ba85931db8557713e5ee32d48ceecc',1,'winstd::variant::operator=(int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#accf863f76609d78946f51ec07a52690e',1,'winstd::variant::operator=(unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa8c701dc6deac688a83d04ed9afdd4b5',1,'winstd::variant::operator=(short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a5bc092e989de74c42d92de5647248a57',1,'winstd::variant::operator=(unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#a55f962bb7a077f87aaa4a6bec03c10da',1,'winstd::variant::operator=(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#a984b2e054639678f06a40e3f57abf4d7',1,'winstd::variant::operator=(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#a935f6cff8004781f60d66b04a01c2330',1,'winstd::variant::operator=(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#a6fa877e7a098dba125c6342bd5e1c896',1,'winstd::variant::operator=(double dblSrc) noexcept']]], - ['operator_3d_3d_16',['operator==',['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==()'],['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h']]], - ['operator_3e_17',['operator>',['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()'],['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>(handle_type h) const']]], - ['operator_3e_3d_18',['operator>=',['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()'],['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()']]], - ['other_19',['other',['../structwinstd_1_1sanitizing__allocator_1_1rebind.html#a6a195ba8f7b42d8e82304efb08e18679',1,'winstd::sanitizing_allocator::rebind::other'],['../structwinstd_1_1heap__allocator_1_1rebind.html#a7916519ada01914c23461a64334ff331',1,'winstd::heap_allocator::rebind::other']]], - ['otp_20',['otp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d',1,'winstd']]], - ['outputdebugstr_21',['OutputDebugStr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], - ['outputdebugstrv_22',['OutputDebugStrV',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] + ['object_20management_0',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]], + ['openprocesstoken_1',['OpenProcessToken',['../group___win_std_win_a_p_i.html#ga44eef1254def39a039cf838e1035c724',1,'Win.h']]], + ['operator_20bool_2',['operator bool',['../classwinstd_1_1impersonator.html#a0c295840090719079dbf5e5b691e6c3e',1,'winstd::impersonator']]], + ['operator_20const_20event_5ftrace_5fproperties_20_2a_3',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], + ['operator_20handle_5ftype_4',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], + ['operator_20lpcritical_5fsection_5',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], + ['operator_20typename_20_5fty_20_2a_26_6',['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 *&()'],['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()']]], + ['operator_20typename_20_5fty_20_2a_2a_7',['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 **()'],['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()']]], + ['operator_21_8',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], + ['operator_21_3d_9',['operator!=',['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=(handle_type h) const']]], + ['operator_26_10',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], + ['operator_28_29_11',['operator()',['../structwinstd_1_1_global_free__delete.html#a51cf3b37e54bcaf481d2ab03dcc2ae74',1,'winstd::GlobalFree_delete::operator()()'],['../structwinstd_1_1_co_task_mem_free__delete.html#a66d6fbd417d9073624387c4664db782f',1,'winstd::CoTaskMemFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete.html#ad96c48c15a2dea2704073d8db5b72542',1,'winstd::LocalFree_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abf0ecfcfbb58493103f7e0905272d8d8',1,'winstd::LocalFree_delete< _Ty[]>::operator()()'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a3b0a5a8db35677a63c3583a45658df1b',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_wlan_free_memory__delete_3_01___ty_0f_0e_4.html#a60d22784612a4cfd16ca8ad6629a77e4',1,'winstd::WlanFreeMemory_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_wlan_free_memory__delete.html#a5013eb2213d92798d755cbb9fa24e26b',1,'winstd::WlanFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a8a44a95dd279b699a8f3ff2c5f8dd31a',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aa9bfce548f756da75283fb781ea2da75',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::operator()(_Ty *_Ptr) const'],['../structwinstd_1_1_eap_host_peer_free_eap_error__delete.html#ae6aa071d5b9824f6062746360478a683',1,'winstd::EapHostPeerFreeEapError_delete::operator()()'],['../structwinstd_1_1_local_free__delete_3_01___ty_0f_0e_4.html#abd0fd61b2b66c5e514755f84a655384b',1,'winstd::LocalFree_delete< _Ty[]>::operator()()'],['../structwinstd_1_1_cred_free__delete.html#a247d6f53f119468b6ccb08ff01338465',1,'winstd::CredFree_delete::operator()()'],['../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_3_01___ty_0f_0e_4.html#acc62d6419d7dea72f237ab2788171f48',1,'winstd::CredFree_delete< _Ty[]>::operator()(_Other *) const'],['../structwinstd_1_1_eap_host_peer_free_memory__delete.html#a20b97a65abb2063a31fc8fd7a9cb0f1f',1,'winstd::EapHostPeerFreeMemory_delete::operator()()'],['../structwinstd_1_1_unmap_view_of_file__delete.html#aa3611bebc2deaf9acaed4e09e193032d',1,'winstd::UnmapViewOfFile_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_error_memory__delete.html#a5dd9a56b7344ef66c378041a97fdb307',1,'winstd::EapHostPeerFreeErrorMemory_delete::operator()()'],['../structwinstd_1_1_eap_host_peer_free_runtime_memory__delete.html#a4c573463394fc3ea6781f796d29fe26e',1,'winstd::EapHostPeerFreeRuntimeMemory_delete::operator()()']]], + ['operator_2a_12',['operator*',['../classwinstd_1_1handle.html#a0f1ac60cf62e41c24394bf0e3457fbd9',1,'winstd::handle']]], + ['operator_2d_3e_13',['operator->',['../classwinstd_1_1handle.html#a285ada5936fe7afdd12eed70b38c2084',1,'winstd::handle']]], + ['operator_3c_14',['operator<',['../classwinstd_1_1cert__context.html#a92881d07b0b41b81c4119ed8d8868c3b',1,'winstd::cert_context::operator<()'],['../classwinstd_1_1variant.html#ac03c0c14bb91f7511425946ef7f3e725',1,'winstd::variant::operator<()'],['../classwinstd_1_1handle.html#a4c4515d0d1071cab5c675e926aa2dc92',1,'winstd::handle::operator<()']]], + ['operator_3c_3d_15',['operator<=',['../classwinstd_1_1variant.html#a02366b97c9a937f57806640dc942ecaf',1,'winstd::variant::operator<=()'],['../classwinstd_1_1handle.html#af9e9538d58b952799db4a1c68b0184b9',1,'winstd::handle::operator<=()'],['../classwinstd_1_1cert__context.html#a042240321d22636cddc379b198c7fd84',1,'winstd::cert_context::operator<=()']]], + ['operator_3d_16',['operator=',['../classwinstd_1_1variant.html#a309d7d2356741ab49e5c2a200e8a5449',1,'winstd::variant::operator=()'],['../classwinstd_1_1data__blob.html#a637b625d29bacc0875d543c69da351c2',1,'winstd::data_blob::operator=()'],['../classwinstd_1_1handle.html#a591e006af92e4d088fb9c1ed974c0923',1,'winstd::handle::operator=(handle_type h) noexcept'],['../classwinstd_1_1handle.html#a6326bbc54ec3441e41f30bc1ec4d6a6c',1,'winstd::handle::operator=(handle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1dplhandle.html#a31cec3cdf4ee749b1aef4b4cd7652fb7',1,'winstd::dplhandle::operator=(handle_type h) noexcept'],['../classwinstd_1_1dplhandle.html#abcccb97671b96da3623f700a93bb5c39',1,'winstd::dplhandle::operator=(const dplhandle< handle_type, INVAL > &h) noexcept'],['../classwinstd_1_1dplhandle.html#a546f1f737bc3da0c9b19967d849776d3',1,'winstd::dplhandle::operator=(dplhandle< handle_type, INVAL > &&h) noexcept'],['../classwinstd_1_1data__blob.html#ac818a3116ab5fc0af960f82aa505b6ae',1,'winstd::data_blob::operator=()'],['../classwinstd_1_1variant.html#aeec12d33002777506b59d73f2c43421c',1,'winstd::variant::operator=()'],['../classwinstd_1_1eap__attr.html#aa5909d52c15557908ff584f4712eea05',1,'winstd::eap_attr::operator=(const EAP_ATTRIBUTE &a)'],['../classwinstd_1_1eap__attr.html#a242766666ce3cbb83429ddd0eaeb9cc6',1,'winstd::eap_attr::operator=(eap_attr &&a) noexcept'],['../classwinstd_1_1eap__method__info__array.html#aea48aefd91b676cdbeb9511640108f2a',1,'winstd::eap_method_info_array::operator=()'],['../classwinstd_1_1event__rec.html#aa5287b5572575d440f881c1d8c17bac3',1,'winstd::event_rec::operator=(const event_rec &other)'],['../classwinstd_1_1event__rec.html#a41f64986df27cea4fdaa8ee8ce2d3875',1,'winstd::event_rec::operator=(const EVENT_RECORD &other)'],['../classwinstd_1_1event__rec.html#a22ab332b9c7e3c21e6107e909703da0f',1,'winstd::event_rec::operator=(event_rec &&other) noexcept'],['../classwinstd_1_1event__session.html#a4e436a74c83a75aab21800bc9d954228',1,'winstd::event_session::operator=()'],['../classwinstd_1_1event__fn__auto.html#acb8dddbdd22399d26d4c5db2998afc1d',1,'winstd::event_fn_auto::operator=(const event_fn_auto &other)'],['../classwinstd_1_1event__fn__auto.html#ab64dd267c58d816b4ef5549e704a8949',1,'winstd::event_fn_auto::operator=(event_fn_auto &&other) noexcept'],['../classwinstd_1_1event__fn__auto__ret.html#a6bb69bf1ac97231ef47c2aed99921bc9',1,'winstd::event_fn_auto_ret::operator=(const event_fn_auto_ret< T > &other)'],['../classwinstd_1_1event__fn__auto__ret.html#ade4fd767e5e743649480b93cd0a5ba69',1,'winstd::event_fn_auto_ret::operator=(event_fn_auto_ret< T > &&other)'],['../classwinstd_1_1window__dc.html#ad5d431027a698fef783407ba9e9d167b',1,'winstd::window_dc::operator=()'],['../classwinstd_1_1security__attributes.html#a85cc5cc2ce94a8876e888ee6646779d7',1,'winstd::security_attributes::operator=()'],['../classwinstd_1_1sec__credentials.html#af0c3ec1f8e1b060cd4dd99b4d34d4623',1,'winstd::sec_credentials::operator=()'],['../classwinstd_1_1sec__context.html#aba957329771358ef9ca65c5e1176fc52',1,'winstd::sec_context::operator=()'],['../classwinstd_1_1vmemory.html#a17a902c8f0ce17d3f06b69ec3e01a331',1,'winstd::vmemory::operator=()'],['../classwinstd_1_1variant.html#aff536ecc3c3a074fea648b7c60522a83',1,'winstd::variant::operator=(const VARIANT &varSrc)'],['../classwinstd_1_1variant.html#a71fb3ee2710ad470329e0b5c4f7f5ba4',1,'winstd::variant::operator=(int nSrc) noexcept'],['../classwinstd_1_1variant.html#a355fecf0ce80d31377c9395f2ed1aada',1,'winstd::variant::operator=(bool bSrc) noexcept'],['../classwinstd_1_1variant.html#a63e75ec57af2d8f59830b029afeb3b68',1,'winstd::variant::operator=(char cSrc) noexcept'],['../classwinstd_1_1variant.html#a602751a752d5a7442ade0f4437646231',1,'winstd::variant::operator=(unsigned char nSrc) noexcept'],['../classwinstd_1_1variant.html#a5886220d7a2ff006d29cd4448a2a33ac',1,'winstd::variant::operator=(short nSrc) noexcept'],['../classwinstd_1_1variant.html#a5c2733a19c37248f69a07771b8e939f1',1,'winstd::variant::operator=(unsigned short nSrc) noexcept'],['../classwinstd_1_1variant.html#a2ea74c1b7a770188f7f59d7eb6923dbe',1,'winstd::variant::operator=(double *pfSrc) noexcept'],['../classwinstd_1_1variant.html#a05ad6d2f51763b24d7528078a2c30e49',1,'winstd::variant::operator=(unsigned int nSrc) noexcept'],['../classwinstd_1_1variant.html#a360da15526269bd64a2fb670e9e280ff',1,'winstd::variant::operator=(long nSrc) noexcept'],['../classwinstd_1_1variant.html#a07980ff84773ac25807d0713dd05090a',1,'winstd::variant::operator=(unsigned long nSrc) noexcept'],['../classwinstd_1_1variant.html#af1898a82e4199d1f34924d448867f68f',1,'winstd::variant::operator=(long long nSrc) noexcept'],['../classwinstd_1_1variant.html#aebabfcb503a43abecc9f3c07629f591f',1,'winstd::variant::operator=(unsigned long long nSrc) noexcept'],['../classwinstd_1_1variant.html#a1786d099ef012c301c0774f98af0f13a',1,'winstd::variant::operator=(float fltSrc) noexcept'],['../classwinstd_1_1variant.html#a6fa877e7a098dba125c6342bd5e1c896',1,'winstd::variant::operator=(double dblSrc) noexcept'],['../classwinstd_1_1variant.html#a984b2e054639678f06a40e3f57abf4d7',1,'winstd::variant::operator=(LPCOLESTR lpszSrc) noexcept'],['../classwinstd_1_1variant.html#a1df6086270e7799b83ee2889e2b88d9e',1,'winstd::variant::operator=(float *pfSrc) noexcept'],['../classwinstd_1_1variant.html#ad4a0fd8999d8d526bb232ebf70c18887',1,'winstd::variant::operator=(unsigned long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#ad0ef65b5a3f40b1a812ac78ca5e5eb50',1,'winstd::variant::operator=(long long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#af86e9a10fd9dbe6e18b33a59d04f3b44',1,'winstd::variant::operator=(unsigned long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa321e1785731055f02abcf7789383912',1,'winstd::variant::operator=(long *pnSrc) noexcept'],['../classwinstd_1_1variant.html#aa01c928f87788c505b818b7930c0f3a0',1,'winstd::variant::operator=(unsigned int *pnSrc) noexcept'],['../classwinstd_1_1variant.html#accf863f76609d78946f51ec07a52690e',1,'winstd::variant::operator=(unsigned short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a935f6cff8004781f60d66b04a01c2330',1,'winstd::variant::operator=(CY cySrc) noexcept'],['../classwinstd_1_1variant.html#af5e22f4158921eb49c2207335d7c7593',1,'winstd::variant::operator=(IDispatch *pSrc)'],['../classwinstd_1_1variant.html#a55f962bb7a077f87aaa4a6bec03c10da',1,'winstd::variant::operator=(IUnknown *pSrc)'],['../classwinstd_1_1variant.html#aa8c701dc6deac688a83d04ed9afdd4b5',1,'winstd::variant::operator=(short *pnSrc) noexcept'],['../classwinstd_1_1variant.html#a5bc092e989de74c42d92de5647248a57',1,'winstd::variant::operator=(unsigned char *pbSrc) noexcept'],['../classwinstd_1_1variant.html#a30ba85931db8557713e5ee32d48ceecc',1,'winstd::variant::operator=(int *pnSrc) noexcept']]], + ['operator_3d_3d_17',['operator==',['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h'],['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()']]], + ['operator_3e_18',['operator>',['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>()'],['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()']]], + ['operator_3e_3d_19',['operator>=',['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()'],['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()']]], + ['other_20',['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_21',['otp',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ad2270e7120a93c8b0a6a34760e654c7d',1,'winstd']]], + ['outputdebugstr_22',['outputdebugstr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], + ['outputdebugstrv_23',['outputdebugstrv',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] ]; diff --git a/search/all_e.js b/search/all_e.js index 670bcca9..07fe61ae 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -6,9 +6,12 @@ var searchData= ['pathremovebackslashw_3',['PathRemoveBackslashW',['../group___win_std_shell_w_a_p_i.html#ga5784e817cc8d4a8e45199e871f61da6c',1,'Shell.h']]], ['peap_4',['peap',['../group___win_std_e_a_p_a_p_i.html#gga50f5584ca708165f43cec42c42243315ab62d9100a672844bff4ac5cbc8de9fce',1,'winstd']]], ['pointer_5',['pointer',['../classwinstd_1_1heap__allocator.html#ae04bc3ff970d32e6a2967072efdb06cd',1,'winstd::heap_allocator']]], - ['printf_5flpolestr_6',['PRINTF_LPOLESTR',['../group___win_std_str_format.html#ga1bb2b564655d7b0dee3ec63a0fda2eb5',1,'Common.h']]], - ['printf_5flptstr_7',['PRINTF_LPTSTR',['../group___win_std_str_format.html#ga145b6285cc6fced0a7a61c4368b0bf12',1,'Common.h']]], - ['process_8',['process',['../classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54',1,'winstd::sec_context::process()'],['../group___win_std_win_a_p_i.html#gac5db2a322de45a52343ca98bbec302df',1,'winstd::process']]], - ['process_5finformation_9',['process_information',['../classwinstd_1_1process__information.html#a8b66efb1e5c75ac7aef0ea02b9f9fd39',1,'winstd::process_information::process_information()'],['../classwinstd_1_1process__information.html',1,'winstd::process_information']]], - ['process_5fsnapshot_10',['process_snapshot',['../group___win_std_win_a_p_i.html#ga59cd7dece6bf5649013f07c929547e80',1,'winstd']]] + ['policy_6',['Security Policy',['../md__s_e_c_u_r_i_t_y.html',1,'']]], + ['portable_7',['Portable',['../index.html#autotoc_md2',1,'']]], + ['printf_5flpolestr_8',['PRINTF_LPOLESTR',['../group___win_std_str_format.html#ga1bb2b564655d7b0dee3ec63a0fda2eb5',1,'Common.h']]], + ['printf_5flptstr_9',['PRINTF_LPTSTR',['../group___win_std_str_format.html#ga145b6285cc6fced0a7a61c4368b0bf12',1,'Common.h']]], + ['process_10',['process',['../classwinstd_1_1sec__context.html#a07d7c85d0db22a2b7ababdac632b3c54',1,'winstd::sec_context::process()'],['../group___win_std_win_a_p_i.html#gac5db2a322de45a52343ca98bbec302df',1,'winstd::process']]], + ['process_5finformation_11',['process_information',['../classwinstd_1_1process__information.html',1,'winstd::process_information'],['../classwinstd_1_1process__information.html#a8b66efb1e5c75ac7aef0ea02b9f9fd39',1,'winstd::process_information::process_information()']]], + ['process_5fsnapshot_12',['process_snapshot',['../group___win_std_win_a_p_i.html#ga59cd7dece6bf5649013f07c929547e80',1,'winstd']]], + ['protocol_20api_13',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]] ]; diff --git a/search/classes_2.js b/search/classes_2.js index 0321b4e2..5241fbad 100644 --- a/search/classes_2.js +++ b/search/classes_2.js @@ -3,15 +3,16 @@ 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']]] + ['clipboard_5fopener_3',['clipboard_opener',['../classwinstd_1_1clipboard__opener.html',1,'winstd']]], + ['com_5finitializer_4',['com_initializer',['../classwinstd_1_1com__initializer.html',1,'winstd']]], + ['com_5fobj_5',['com_obj',['../classwinstd_1_1com__obj.html',1,'winstd']]], + ['com_5fruntime_5ferror_6',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html',1,'winstd']]], + ['console_5fctrl_5fhandler_7',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html',1,'winstd']]], + ['cotaskmemfree_5fdelete_8',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html',1,'winstd']]], + ['credfree_5fdelete_9',['CredFree_delete',['../structwinstd_1_1_cred_free__delete.html',1,'winstd']]], + ['credfree_5fdelete_3c_20_5fty_5b_5d_3e_10',['CredFree_delete< _Ty[]>',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html',1,'winstd']]], + ['critical_5fsection_11',['critical_section',['../classwinstd_1_1critical__section.html',1,'winstd']]], + ['crypt_5fhash_12',['crypt_hash',['../classwinstd_1_1crypt__hash.html',1,'winstd']]], + ['crypt_5fkey_13',['crypt_key',['../classwinstd_1_1crypt__key.html',1,'winstd']]], + ['crypt_5fprov_14',['crypt_prov',['../classwinstd_1_1crypt__prov.html',1,'winstd']]] ]; diff --git a/search/classes_7.js b/search/classes_7.js index 55f7134e..3a82b8c8 100644 --- a/search/classes_7.js +++ b/search/classes_7.js @@ -13,23 +13,25 @@ var searchData= ['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_20hicon_2c_20null_20_3e_12',['handle< HICON, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20hkey_2c_20null_20_3e_13',['handle< HKEY, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20hmodule_2c_20null_20_3e_14',['handle< HMODULE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20lpvoid_2c_20null_20_3e_15',['handle< LPVOID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20paddrinfoa_2c_20null_20_3e_16',['handle< PADDRINFOA, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20paddrinfow_2c_20null_20_3e_17',['handle< PADDRINFOW, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pccert_5fchain_5fcontext_2c_20inval_20_3e_18',['handle< PCCERT_CHAIN_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pccert_5fcontext_2c_20inval_20_3e_19',['handle< PCCERT_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pcredhandle_2c_20null_20_3e_20',['handle< PCredHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20pctxthandle_2c_20null_20_3e_21',['handle< PCtxtHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20psid_2c_20null_20_3e_22',['handle< PSID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20reghandle_2c_20null_20_3e_23',['handle< REGHANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20safearray_20_2a_2c_20inval_20_3e_24',['handle< SAFEARRAY *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20sc_5fhandle_2c_20null_20_3e_25',['handle< SC_HANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20t_20_2a_2c_20inval_20_3e_26',['handle< T *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20t_2c_20null_20_3e_27',['handle< T, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20tracehandle_2c_200_20_3e_28',['handle< TRACEHANDLE, 0 >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['handle_3c_20tracehandle_2c_20invalid_5fprocesstrace_5fhandle_20_3e_29',['handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >',['../classwinstd_1_1handle.html',1,'winstd']]], - ['heap_30',['heap',['../classwinstd_1_1heap.html',1,'winstd']]], - ['heap_5fallocator_31',['heap_allocator',['../classwinstd_1_1heap__allocator.html',1,'winstd']]] + ['handle_3c_20hinternet_2c_20null_20_3e_13',['handle< HINTERNET, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hkey_2c_20null_20_3e_14',['handle< HKEY, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20hmodule_2c_20null_20_3e_15',['handle< HMODULE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20lpvoid_2c_20null_20_3e_16',['handle< LPVOID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20paddrinfoa_2c_20null_20_3e_17',['handle< PADDRINFOA, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20paddrinfow_2c_20null_20_3e_18',['handle< PADDRINFOW, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fchain_5fcontext_2c_20inval_20_3e_19',['handle< PCCERT_CHAIN_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pccert_5fcontext_2c_20inval_20_3e_20',['handle< PCCERT_CONTEXT, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pcredhandle_2c_20null_20_3e_21',['handle< PCredHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20pctxthandle_2c_20null_20_3e_22',['handle< PCtxtHandle, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20psid_2c_20null_20_3e_23',['handle< PSID, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20reghandle_2c_20null_20_3e_24',['handle< REGHANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20safearray_20_2a_2c_20inval_20_3e_25',['handle< SAFEARRAY *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20sc_5fhandle_2c_20null_20_3e_26',['handle< SC_HANDLE, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_20_2a_2c_20inval_20_3e_27',['handle< T *, INVAL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20t_2c_20null_20_3e_28',['handle< T, NULL >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_200_20_3e_29',['handle< TRACEHANDLE, 0 >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['handle_3c_20tracehandle_2c_20invalid_5fprocesstrace_5fhandle_20_3e_30',['handle< TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE >',['../classwinstd_1_1handle.html',1,'winstd']]], + ['heap_31',['heap',['../classwinstd_1_1heap.html',1,'winstd']]], + ['heap_5fallocator_32',['heap_allocator',['../classwinstd_1_1heap__allocator.html',1,'winstd']]], + ['http_33',['http',['../classwinstd_1_1http.html',1,'winstd']]] ]; diff --git a/search/functions_1.js b/search/functions_1.js index 8ff4d434..0ba096f5 100644 --- a/search/functions_1.js +++ b/search/functions_1.js @@ -3,5 +3,5 @@ var searchData= ['basic_5fstring_5fguid_0',['basic_string_guid',['../classwinstd_1_1basic__string__guid.html#a69e6b961f17e862b55ff02dcb6e90c3e',1,'winstd::basic_string_guid']]], ['basic_5fstring_5fmsg_1',['basic_string_msg',['../classwinstd_1_1basic__string__msg.html#a736a3e3559471ede3f8b7144ed908c46',1,'winstd::basic_string_msg::basic_string_msg(const _Elem *format,...)'],['../classwinstd_1_1basic__string__msg.html#a9203b643c2070c1954c595e5c6e519d5',1,'winstd::basic_string_msg::basic_string_msg(HINSTANCE hInstance, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a6225c3a78cad401124dd7cafdd95ad31',1,'winstd::basic_string_msg::basic_string_msg(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__msg.html#a72842f64e4015027811f4f8bd36b86ee',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a0b20861e7b0a943c80774b36f77924b9',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, DWORD_PTR *Arguments)'],['../classwinstd_1_1basic__string__msg.html#a3fe77c26d3e41426fae90d6255455403',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, va_list *Arguments)'],['../classwinstd_1_1basic__string__msg.html#aee54bb91aa476ab3e7cd7fd118becf56',1,'winstd::basic_string_msg::basic_string_msg(DWORD dwFlags, LPCTSTR pszFormat, DWORD_PTR *Arguments)']]], ['basic_5fstring_5fprintf_2',['basic_string_printf',['../classwinstd_1_1basic__string__printf.html#a409c94cb80a202d0bd628930514b64ba',1,'winstd::basic_string_printf::basic_string_printf(const _Elem *format,...)'],['../classwinstd_1_1basic__string__printf.html#ab258ccf8da028fc5e8511336401213ba',1,'winstd::basic_string_printf::basic_string_printf(HINSTANCE hInstance, UINT nFormatID,...)'],['../classwinstd_1_1basic__string__printf.html#a532bc995c0509b41f92612a77e169a83',1,'winstd::basic_string_printf::basic_string_printf(HINSTANCE hInstance, WORD wLanguageID, UINT nFormatID,...)']]], - ['bstr_3',['bstr',['../classwinstd_1_1bstr.html#a01b4deb6467c16d9d8e8e14fe6c057fa',1,'winstd::bstr::bstr(LPCOLESTR src)'],['../classwinstd_1_1bstr.html#aafb65f4d4ab54a13147912c2de8adc54',1,'winstd::bstr::bstr(LPCOLESTR src, UINT len)'],['../classwinstd_1_1bstr.html#a068d796beaad2d2978ea6cab60688be4',1,'winstd::bstr::bstr(const std::basic_string< wchar_t, _Traits, _Ax > &src)']]] + ['bstr_3',['bstr',['../classwinstd_1_1bstr.html#a01b4deb6467c16d9d8e8e14fe6c057fa',1,'winstd::bstr::bstr(LPCOLESTR src)'],['../classwinstd_1_1bstr.html#aafb65f4d4ab54a13147912c2de8adc54',1,'winstd::bstr::bstr(LPCOLESTR src, UINT len)'],['../classwinstd_1_1bstr.html#abc2160190ea71c4f9239ea9575efa9d3',1,'winstd::bstr::bstr(const std::basic_string< OLECHAR, _Traits, _Ax > &src)']]] ]; diff --git a/search/functions_10.js b/search/functions_10.js index 1baed98c..73c958fc 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -7,8 +7,8 @@ var searchData= ['sec_5fcontext_4',['sec_context',['../classwinstd_1_1sec__context.html#a5d41cc2cbe613fcc2bd37cc260de9763',1,'winstd::sec_context::sec_context()'],['../classwinstd_1_1sec__context.html#a05356227fbaa04cf65cd8da86daac49e',1,'winstd::sec_context::sec_context(sec_context &&h) noexcept']]], ['sec_5fcredentials_5',['sec_credentials',['../classwinstd_1_1sec__credentials.html#a4cc86fe337998e5becc41c3f78563df8',1,'winstd::sec_credentials::sec_credentials()'],['../classwinstd_1_1sec__credentials.html#adac21d2b22fba61197ad315e8996f946',1,'winstd::sec_credentials::sec_credentials(handle_type h, const TimeStamp expires)'],['../classwinstd_1_1sec__credentials.html#ac9ece1c98aebffa3efc90a0b37f6d2ba',1,'winstd::sec_credentials::sec_credentials(sec_credentials &&h) noexcept']]], ['sec_5fruntime_5ferror_6',['sec_runtime_error',['../classwinstd_1_1sec__runtime__error.html#afc95fcf773b18fc72aaacf4ec025471b',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1sec__runtime__error.html#aa1d671d5c996a8217de62a816f39a5d4',1,'winstd::sec_runtime_error::sec_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1sec__runtime__error.html#ac9f3ac01e422ce43aebb8e5eae9290ce',1,'winstd::sec_runtime_error::sec_runtime_error(const sec_runtime_error &other)']]], - ['securemultibytetowidechar_7',['SecureMultiByteToWideChar',['../group___win_std_win_a_p_i.html#gaa15c8edc525c24109fafea640cdedfcb',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga9aaaa6113374b6cbad241626819d06c9',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gab02484a16fea41e3d9a5c64c2ee1da1a',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Win.h']]], - ['securewidechartomultibyte_8',['SecureWideCharToMultiByte',['../group___win_std_win_a_p_i.html#ga05ac1b43a241f1bbcbf1440cf26c6335',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga1a0accb3a54ae0ed34944fd483e0c329',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga04f5e27a0e2066c85d7a421fe4e4c462',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h']]], + ['securemultibytetowidechar_7',['securemultibytetowidechar',['../group___win_std_str_format.html#gaa15c8edc525c24109fafea640cdedfcb',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga9aaaa6113374b6cbad241626819d06c9',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gab02484a16fea41e3d9a5c64c2ee1da1a',1,'SecureMultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h']]], + ['securewidechartomultibyte_8',['securewidechartomultibyte',['../group___win_std_str_format.html#ga05ac1b43a241f1bbcbf1440cf26c6335',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga1a0accb3a54ae0ed34944fd483e0c329',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga04f5e27a0e2066c85d7a421fe4e4c462',1,'SecureWideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h']]], ['security_5fattributes_9',['security_attributes',['../classwinstd_1_1security__attributes.html#a230282fcc282814fd18aa239c7daaa17',1,'winstd::security_attributes::security_attributes(security_attributes &&a) noexcept'],['../classwinstd_1_1security__attributes.html#aa65302a5a16ca4dae9d76a2aea0788b2',1,'winstd::security_attributes::security_attributes() noexcept']]], ['set_5fextended_5fdata_10',['set_extended_data',['../classwinstd_1_1event__rec.html#abfab939c3bb27839c3b591b9a62f9470',1,'winstd::event_rec']]], ['set_5fextended_5fdata_5finternal_11',['set_extended_data_internal',['../classwinstd_1_1event__rec.html#a0c1c63cc3a3e2f83924aa9f21a298f6c',1,'winstd::event_rec']]], diff --git a/search/functions_12.js b/search/functions_12.js index 1a03c149..0a1d49ee 100644 --- a/search/functions_12.js +++ b/search/functions_12.js @@ -1,5 +1,5 @@ var searchData= [ - ['unmapviewoffile_5fdelete_0',['UnmapViewOfFile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html#af907afdb0be87ca6295673035d727279',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete()'],['../structwinstd_1_1_unmap_view_of_file__delete.html#a691a3dc8241514532164af426bbab7ee',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a49fbab80e6bee74067b9762abb659365',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::UnmapViewOfFile_delete()']]], + ['unmapviewoffile_5fdelete_0',['unmapviewoffile_delete',['../structwinstd_1_1_unmap_view_of_file__delete.html#af907afdb0be87ca6295673035d727279',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete()'],['../structwinstd_1_1_unmap_view_of_file__delete.html#a691a3dc8241514532164af426bbab7ee',1,'winstd::UnmapViewOfFile_delete::UnmapViewOfFile_delete(const UnmapViewOfFile_delete< _Ty2 > &)'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#a49fbab80e6bee74067b9762abb659365',1,'winstd::UnmapViewOfFile_delete< _Ty[]>::UnmapViewOfFile_delete()']]], ['user_5fimpersonator_1',['user_impersonator',['../classwinstd_1_1user__impersonator.html#a843ed65fc3673b6620a81e6883c1de34',1,'winstd::user_impersonator']]] ]; diff --git a/search/functions_14.js b/search/functions_14.js index a6b3921a..f01f74e2 100644 --- a/search/functions_14.js +++ b/search/functions_14.js @@ -1,13 +1,13 @@ var searchData= [ - ['widechartomultibyte_0',['WideCharToMultiByte',['../group___win_std_win_a_p_i.html#ga2eee7ccbf8faa628b303df158b67fb2b',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga9ab082dc4cba91b23c4364a125f2f778',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gabf5eed22d7c5d7a89334dbe1e04e2656',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Win.h']]], - ['win_5fruntime_5ferror_1',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html#a9adb54bf4ff1bfece100a3886b441a77',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#ab38b42a2a55681bb97cc83ae4a6e5635',1,'winstd::win_runtime_error::win_runtime_error(const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#ac22014ee7d3fee84ca95ab52ac66e5b6',1,'winstd::win_runtime_error::win_runtime_error(const char *msg=nullptr)'],['../classwinstd_1_1win__runtime__error.html#aca84ec751726966e72136c67ef7f694f',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const std::string &msg)']]], + ['widechartomultibyte_0',['widechartomultibyte',['../group___win_std_str_format.html#gabf5eed22d7c5d7a89334dbe1e04e2656',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::basic_string< char, _Traits, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga9ab082dc4cba91b23c4364a125f2f778',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, std::vector< char, _Ax > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h'],['../group___win_std_str_format.html#ga2eee7ccbf8faa628b303df158b67fb2b',1,'WideCharToMultiByte(UINT CodePage, DWORD dwFlags, std::basic_string< wchar_t, _Traits1, _Ax1 > sWideCharStr, std::basic_string< char, _Traits2, _Ax2 > &sMultiByteStr, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) noexcept: Common.h']]], + ['win_5fruntime_5ferror_1',['win_runtime_error',['../classwinstd_1_1win__runtime__error.html#aca84ec751726966e72136c67ef7f694f',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a4c84e2ebbaceb36fdf7330e3e5c80d7f',1,'winstd::win_runtime_error::win_runtime_error(error_type num)'],['../classwinstd_1_1win__runtime__error.html#a074502b02650b1c8dc5746acd9e6ceec',1,'winstd::win_runtime_error::win_runtime_error(const char *msg)'],['../classwinstd_1_1win__runtime__error.html#ab38b42a2a55681bb97cc83ae4a6e5635',1,'winstd::win_runtime_error::win_runtime_error(const std::string &msg)'],['../classwinstd_1_1win__runtime__error.html#a67d2c31d65907fe9393e71c66e1443c8',1,'winstd::win_runtime_error::win_runtime_error()'],['../classwinstd_1_1win__runtime__error.html#a12414cccf15cc8f5c12510f4aa74d715',1,'winstd::win_runtime_error::win_runtime_error(error_type num, const char *msg)']]], ['window_5fdc_2',['window_dc',['../classwinstd_1_1window__dc.html#a82c191df2785d2d83517d44744b28e0a',1,'winstd::window_dc::window_dc() noexcept'],['../classwinstd_1_1window__dc.html#a2b4c7b6f55d8d87dedadf08457031d12',1,'winstd::window_dc::window_dc(handle_type h, HWND hwnd) noexcept'],['../classwinstd_1_1window__dc.html#af4841fbba9da009955938892fad8de0e',1,'winstd::window_dc::window_dc(window_dc &&h) noexcept']]], ['wintrust_3',['wintrust',['../classwinstd_1_1wintrust.html#a5f01f7952ccb4e4f6b3b52968470e49b',1,'winstd::wintrust']]], - ['wlanfreememory_5fdelete_4',['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()']]], + ['wlanfreememory_5fdelete_4',['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()']]], ['wlanopenhandle_5',['WlanOpenHandle',['../group___win_std_w_l_a_n_a_p_i.html#ga2d1669a80ed12f13ffa780048076c586',1,'WLAN.h']]], ['wlanreasoncodetostring_6',['WlanReasonCodeToString',['../group___win_std_w_l_a_n_a_p_i.html#gaf621eeb252e56982bc063a629bee30c7',1,'WLAN.h']]], ['write_7',['write',['../classwinstd_1_1event__provider.html#a9063c2f40716779223fe618b70df0888',1,'winstd::event_provider::write(UCHAR Level, ULONGLONG Keyword, PCWSTR String,...)'],['../classwinstd_1_1event__provider.html#aa956835d2f62705db20e6c82c07be7fe',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, va_list arg)'],['../classwinstd_1_1event__provider.html#ad782c4daf27784c0762d09578362db08',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, const EVENT_DATA_DESCRIPTOR param1,...)'],['../classwinstd_1_1event__provider.html#a570ec5977a37f490ddac7aaa047db5e9',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor, ULONG UserDataCount=0, PEVENT_DATA_DESCRIPTOR UserData=NULL)'],['../classwinstd_1_1event__provider.html#a068407834baa836c690b80a39a2d2692',1,'winstd::event_provider::write(PCEVENT_DESCRIPTOR EventDescriptor)']]], - ['ws2_5fruntime_5ferror_8',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#a0f57437dbc7c87ac05230a5a5458846b',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const char *msg=nullptr)'],['../classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e',1,'winstd::ws2_runtime_error::ws2_runtime_error(const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#a2e54221cc0f78724af416f9af1415267',1,'winstd::ws2_runtime_error::ws2_runtime_error(const char *msg=nullptr)']]], + ['ws2_5fruntime_5ferror_8',['ws2_runtime_error',['../classwinstd_1_1ws2__runtime__error.html#a3044648392aca11ab4966efa338670a1',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num)'],['../classwinstd_1_1ws2__runtime__error.html#aa6ed38106310751800eca077c2fcb71a',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#ab2c3f82f793f5d2e225cf969b6246c97',1,'winstd::ws2_runtime_error::ws2_runtime_error(error_type num, const char *msg)'],['../classwinstd_1_1ws2__runtime__error.html#a953b8d4d69d6c394aefd398d4aca40ed',1,'winstd::ws2_runtime_error::ws2_runtime_error()'],['../classwinstd_1_1ws2__runtime__error.html#ae7914ed1c76d543399992573bc580b4e',1,'winstd::ws2_runtime_error::ws2_runtime_error(const std::string &msg)'],['../classwinstd_1_1ws2__runtime__error.html#aef0b9c621c9e9dd9403fecfd65d8de7f',1,'winstd::ws2_runtime_error::ws2_runtime_error(const char *msg)']]], ['wstring_5fguid_9',['wstring_guid',['../classwinstd_1_1wstring__guid.html#adca059128e082167a19d1281719d9d60',1,'winstd::wstring_guid']]] ]; diff --git a/search/functions_15.js b/search/functions_15.js index 08b0c3ed..747dd5db 100644 --- a/search/functions_15.js +++ b/search/functions_15.js @@ -6,53 +6,55 @@ var searchData= ['_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_5flog_21',['~event_log',['../classwinstd_1_1event__log.html#adcaee9990fb509eb281159b170218700',1,'winstd::event_log']]], - ['_7eevent_5fprovider_22',['~event_provider',['../classwinstd_1_1event__provider.html#ab219ea75734671f98fabbf41485e558b',1,'winstd::event_provider']]], - ['_7eevent_5frec_23',['~event_rec',['../classwinstd_1_1event__rec.html#a2968045a00cf5994ffc2db1a7eb38601',1,'winstd::event_rec']]], - ['_7eevent_5fsession_24',['~event_session',['../classwinstd_1_1event__session.html#a31fe172bd0ce3fb712924de08445476a',1,'winstd::event_session']]], - ['_7eevent_5ftrace_25',['~event_trace',['../classwinstd_1_1event__trace.html#ab8800a2c88f1b96d5134e7eac24ac582',1,'winstd::event_trace']]], - ['_7eevent_5ftrace_5fenabler_26',['~event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a6be72a0a5dc8da579e26b74a1ac24a4f',1,'winstd::event_trace_enabler']]], - ['_7efind_5ffile_27',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], - ['_7egdi_5fhandle_28',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], - ['_7eglobalmem_5faccessor_29',['~globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a508a4187d2e6de81365d5ca9961ad950',1,'winstd::globalmem_accessor']]], - ['_7eheap_30',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], - ['_7eicon_31',['~icon',['../classwinstd_1_1icon.html#a569f3d6f5e841666d33917ae4f5e7f37',1,'winstd::icon']]], - ['_7eimpersonator_32',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], - ['_7elibrary_33',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], - ['_7eprocess_5finformation_34',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], - ['_7eref_5funique_5fptr_35',['~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_36',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], - ['_7esafearray_37',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], - ['_7esafearray_5faccessor_38',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], - ['_7esanitizing_5fblob_39',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], - ['_7esc_5fhandle_40',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], - ['_7esec_5fbuffer_5fdesc_41',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], - ['_7esec_5fcontext_42',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], - ['_7esec_5fcredentials_43',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], - ['_7esecurity_5fattributes_44',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], - ['_7esecurity_5fid_45',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], - ['_7esetup_5fdevice_5finfo_5flist_46',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], - ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_47',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], - ['_7evariant_48',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], - ['_7evmemory_49',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], - ['_7ewaddrinfo_50',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], - ['_7ewin_5fhandle_51',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], - ['_7ewindow_5fdc_52',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], - ['_7ewintrust_53',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], - ['_7ewlan_5fhandle_54',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] + ['_7eclipboard_5fopener_6',['~clipboard_opener',['../classwinstd_1_1clipboard__opener.html#a13b2c0a03314b40ec97b6b53318dfa38',1,'winstd::clipboard_opener']]], + ['_7ecom_5finitializer_7',['~com_initializer',['../classwinstd_1_1com__initializer.html#ad53a7697dfaf83d4832f8a57a4cf00f6',1,'winstd::com_initializer']]], + ['_7ecom_5fobj_8',['~com_obj',['../classwinstd_1_1com__obj.html#a91383e6e26266b0d3803c8594b8c5149',1,'winstd::com_obj']]], + ['_7econsole_5fctrl_5fhandler_9',['~console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a2cba550aa8c659f63386ed6322ccbd6e',1,'winstd::console_ctrl_handler']]], + ['_7ecritical_5fsection_10',['~critical_section',['../classwinstd_1_1critical__section.html#a67af5836304f27084f296c0cc17d7d20',1,'winstd::critical_section']]], + ['_7ecrypt_5fhash_11',['~crypt_hash',['../classwinstd_1_1crypt__hash.html#a7c688405c14799681018e0dfc8b51264',1,'winstd::crypt_hash']]], + ['_7ecrypt_5fkey_12',['~crypt_key',['../classwinstd_1_1crypt__key.html#a396a4af75fd99c896757679a890e6e29',1,'winstd::crypt_key']]], + ['_7ecrypt_5fprov_13',['~crypt_prov',['../classwinstd_1_1crypt__prov.html#a91c1f3d10b03ef1b5d1e1da029060289',1,'winstd::crypt_prov']]], + ['_7edata_5fblob_14',['~data_blob',['../classwinstd_1_1data__blob.html#a1c79df4fa5413536c745258d09e69599',1,'winstd::data_blob']]], + ['_7edc_15',['~dc',['../classwinstd_1_1dc.html#ae8c5722935c8a1c3f6a1857679f4563c',1,'winstd::dc']]], + ['_7edc_5fselector_16',['~dc_selector',['../classwinstd_1_1dc__selector.html#a6e4daf6736cab31fc696dd3adfe4bcfd',1,'winstd::dc_selector']]], + ['_7eeap_5fattr_17',['~eap_attr',['../classwinstd_1_1eap__attr.html#a085d6ade88a42ba69cf128a97b7c9b0d',1,'winstd::eap_attr']]], + ['_7eeap_5fmethod_5finfo_5farray_18',['~eap_method_info_array',['../classwinstd_1_1eap__method__info__array.html#a6870644e66359b0448094a193ef0b4b8',1,'winstd::eap_method_info_array']]], + ['_7eeap_5fpacket_19',['~eap_packet',['../classwinstd_1_1eap__packet.html#a6abed7e1c0460fd6e2ae5d832fbd7493',1,'winstd::eap_packet']]], + ['_7eevent_5ffn_5fauto_20',['~event_fn_auto',['../classwinstd_1_1event__fn__auto.html#a764a83cffe2ed2ae41e9d973073d5cb0',1,'winstd::event_fn_auto']]], + ['_7eevent_5ffn_5fauto_5fret_21',['~event_fn_auto_ret',['../classwinstd_1_1event__fn__auto__ret.html#a1bd1de5df10856a08187ad112992979f',1,'winstd::event_fn_auto_ret']]], + ['_7eevent_5flog_22',['~event_log',['../classwinstd_1_1event__log.html#adcaee9990fb509eb281159b170218700',1,'winstd::event_log']]], + ['_7eevent_5fprovider_23',['~event_provider',['../classwinstd_1_1event__provider.html#ab219ea75734671f98fabbf41485e558b',1,'winstd::event_provider']]], + ['_7eevent_5frec_24',['~event_rec',['../classwinstd_1_1event__rec.html#a2968045a00cf5994ffc2db1a7eb38601',1,'winstd::event_rec']]], + ['_7eevent_5fsession_25',['~event_session',['../classwinstd_1_1event__session.html#a31fe172bd0ce3fb712924de08445476a',1,'winstd::event_session']]], + ['_7eevent_5ftrace_26',['~event_trace',['../classwinstd_1_1event__trace.html#ab8800a2c88f1b96d5134e7eac24ac582',1,'winstd::event_trace']]], + ['_7eevent_5ftrace_5fenabler_27',['~event_trace_enabler',['../classwinstd_1_1event__trace__enabler.html#a6be72a0a5dc8da579e26b74a1ac24a4f',1,'winstd::event_trace_enabler']]], + ['_7efind_5ffile_28',['~find_file',['../classwinstd_1_1find__file.html#a5135c1a0bf6b1c5f4ab695f208a87607',1,'winstd::find_file']]], + ['_7egdi_5fhandle_29',['~gdi_handle',['../classwinstd_1_1gdi__handle.html#aae79abc9495f415a548d7f1f1ce4dab2',1,'winstd::gdi_handle']]], + ['_7eglobalmem_5faccessor_30',['~globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a508a4187d2e6de81365d5ca9961ad950',1,'winstd::globalmem_accessor']]], + ['_7eheap_31',['~heap',['../classwinstd_1_1heap.html#aecb12bb6a2677638a6061510bdda868b',1,'winstd::heap']]], + ['_7ehttp_32',['~http',['../classwinstd_1_1http.html#a0dd8f655e3581cba346dfdc86e945580',1,'winstd::http']]], + ['_7eicon_33',['~icon',['../classwinstd_1_1icon.html#a569f3d6f5e841666d33917ae4f5e7f37',1,'winstd::icon']]], + ['_7eimpersonator_34',['~impersonator',['../classwinstd_1_1impersonator.html#a272883abcb25c9563ca5b919c0d9d71d',1,'winstd::impersonator']]], + ['_7elibrary_35',['~library',['../classwinstd_1_1library.html#ae33e87cbe9236861b5e8d37e8e544716',1,'winstd::library']]], + ['_7eprocess_5finformation_36',['~process_information',['../classwinstd_1_1process__information.html#a0a176161ac9779e203f3fd8942115196',1,'winstd::process_information']]], + ['_7eref_5funique_5fptr_37',['~ref_unique_ptr',['../classwinstd_1_1ref__unique__ptr.html#a7bf6de1a715ad7d84f0df0470a102275',1,'winstd::ref_unique_ptr::~ref_unique_ptr()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#a3595501185edb49fc4a596e9a966a030',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::~ref_unique_ptr()']]], + ['_7ereg_5fkey_38',['~reg_key',['../classwinstd_1_1reg__key.html#ae54556effe6fe91942f87fc8c8ff5d7c',1,'winstd::reg_key']]], + ['_7esafearray_39',['~safearray',['../classwinstd_1_1safearray.html#a77541ec05da9d75931560bb5883ea601',1,'winstd::safearray']]], + ['_7esafearray_5faccessor_40',['~safearray_accessor',['../classwinstd_1_1safearray__accessor.html#ac950581e34df79260b6ba997b4a4d2d8',1,'winstd::safearray_accessor']]], + ['_7esanitizing_5fblob_41',['~sanitizing_blob',['../classwinstd_1_1sanitizing__blob.html#ad478c9b04cc75d3ad1053ba9b23ea065',1,'winstd::sanitizing_blob']]], + ['_7esc_5fhandle_42',['~sc_handle',['../classwinstd_1_1sc__handle.html#a92d104320ed6db39eaf092d7fb465885',1,'winstd::sc_handle']]], + ['_7esec_5fbuffer_5fdesc_43',['~sec_buffer_desc',['../classwinstd_1_1sec__buffer__desc.html#a70ebe23821ab3f90eb20e4a5e69c49c4',1,'winstd::sec_buffer_desc']]], + ['_7esec_5fcontext_44',['~sec_context',['../classwinstd_1_1sec__context.html#a2307770cc707a4f8e815c3fea57ac8a9',1,'winstd::sec_context']]], + ['_7esec_5fcredentials_45',['~sec_credentials',['../classwinstd_1_1sec__credentials.html#ad8b34c3a231201fd201e56a28235b9c3',1,'winstd::sec_credentials']]], + ['_7esecurity_5fattributes_46',['~security_attributes',['../classwinstd_1_1security__attributes.html#a81c96818e1a244dc9fde2e0703d654e0',1,'winstd::security_attributes']]], + ['_7esecurity_5fid_47',['~security_id',['../classwinstd_1_1security__id.html#ac26d9d505eed5f5104e3ce8278913683',1,'winstd::security_id']]], + ['_7esetup_5fdevice_5finfo_5flist_48',['~setup_device_info_list',['../classwinstd_1_1setup__device__info__list.html#a25368d32a4f4bfe23cb9749464daa487',1,'winstd::setup_device_info_list']]], + ['_7esetup_5fdriver_5finfo_5flist_5fbuilder_49',['~setup_driver_info_list_builder',['../classwinstd_1_1setup__driver__info__list__builder.html#a836a7bb6c3c78c7c78965a32cfc2750e',1,'winstd::setup_driver_info_list_builder']]], + ['_7evariant_50',['~variant',['../classwinstd_1_1variant.html#a69b429a61582fc777b07541daad7887b',1,'winstd::variant']]], + ['_7evmemory_51',['~vmemory',['../classwinstd_1_1vmemory.html#aa0d2edd7c1986736662b54a553695d51',1,'winstd::vmemory']]], + ['_7ewaddrinfo_52',['~waddrinfo',['../classwinstd_1_1waddrinfo.html#a2b1209904bd7486acefd833ff5c4bcca',1,'winstd::waddrinfo']]], + ['_7ewin_5fhandle_53',['~win_handle',['../classwinstd_1_1win__handle.html#a6b8070a3be4dede99a1c764b7f341a36',1,'winstd::win_handle']]], + ['_7ewindow_5fdc_54',['~window_dc',['../classwinstd_1_1window__dc.html#a3fd01c5264443520462cb7cab886a79b',1,'winstd::window_dc']]], + ['_7ewintrust_55',['~wintrust',['../classwinstd_1_1wintrust.html#ac529a244b4f2f4eb85bcdf594ff723c3',1,'winstd::wintrust']]], + ['_7ewlan_5fhandle_56',['~wlan_handle',['../classwinstd_1_1wlan__handle.html#a57e97a572a121f6e28673e6d84493de9',1,'winstd::wlan_handle']]] ]; diff --git a/search/functions_2.js b/search/functions_2.js index 71dce8d7..3ceef938 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -5,38 +5,39 @@ var searchData= ['certgetnamestringa_2',['CertGetNameStringA',['../group___win_std_crypto_a_p_i.html#ga551dacab30d7f72a713f69ea09edea92',1,'Crypt.h']]], ['certgetnamestringw_3',['CertGetNameStringW',['../group___win_std_crypto_a_p_i.html#ga2a0de58b33f5eb080e3b6ba9a7fe1e53',1,'Crypt.h']]], ['change_5ftype_4',['change_type',['../classwinstd_1_1variant.html#a499d38db49d577c816e447c6a3875ff5',1,'winstd::variant']]], - ['cocreateinstance_5',['CoCreateInstance',['../group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965',1,'COM.h']]], - ['cogetobject_6',['CoGetObject',['../group___win_std_c_o_m.html#ga825b73e9a34b1f496c577a951441b6f1',1,'COM.h']]], - ['com_5finitializer_7',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept']]], - ['com_5fobj_8',['com_obj',['../classwinstd_1_1com__obj.html#a1983f51468452e51890a3a561d3d2627',1,'winstd::com_obj::com_obj(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)'],['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)'],['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)']]], - ['com_5fruntime_5ferror_9',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)']]], - ['console_5fctrl_5fhandler_10',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler']]], - ['construct_11',['construct',['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)'],['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)']]], - ['convertstringsecuritydescriptortosecuritydescriptora_12',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], - ['convertstringsecuritydescriptortosecuritydescriptorw_13',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], - ['cotaskmemfree_5fdelete_14',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete']]], - ['create_15',['create',['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()']]], - ['create_5fexp1_16',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], - ['create_5fms_5fmppe_5fkey_17',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], - ['createwellknownsid_18',['CreateWellKnownSid',['../group___win_std_win_a_p_i.html#ga6b1c9ae28988d31bb03abefb32af5642',1,'Win.h']]], - ['credenumeratea_19',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], - ['credenumeratew_20',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], - ['credfree_5fdelete_21',['CredFree_delete',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()']]], - ['credprotecta_22',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], - ['credprotectw_23',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], - ['credunprotecta_24',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], - ['credunprotectw_25',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], - ['critical_5fsection_26',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section']]], - ['cryptacquirecontexta_27',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], - ['cryptacquirecontextw_28',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], - ['cryptcreatehash_29',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], - ['cryptdecrypt_30',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], - ['cryptderivekey_31',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], - ['cryptencrypt_32',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], - ['cryptexportkey_33',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], - ['cryptgenkey_34',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], - ['cryptgethashparam_35',['CryptGetHashParam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptgetkeyparam_36',['CryptGetKeyParam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], - ['cryptimportkey_37',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], - ['cryptimportpublickeyinfo_38',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]] + ['clipboard_5fopener_5',['clipboard_opener',['../classwinstd_1_1clipboard__opener.html#a5614d7336929b18d8c3966683565eded',1,'winstd::clipboard_opener']]], + ['cocreateinstance_6',['CoCreateInstance',['../group___win_std_c_o_m.html#gaa05e677aa01b9b1f2f8b58571532c965',1,'COM.h']]], + ['cogetobject_7',['CoGetObject',['../group___win_std_c_o_m.html#ga825b73e9a34b1f496c577a951441b6f1',1,'COM.h']]], + ['com_5finitializer_8',['com_initializer',['../classwinstd_1_1com__initializer.html#a2e1dceaa4a658f2d35b93fe85d71e109',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved) noexcept'],['../classwinstd_1_1com__initializer.html#a20c89f6e237eb97166aac61f0dbdcbf6',1,'winstd::com_initializer::com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept']]], + ['com_5fobj_9',['com_obj',['../classwinstd_1_1com__obj.html#aace64e8520e9caf7c258ae207a5ef874',1,'winstd::com_obj::com_obj(com_obj< _Other > &other)'],['../classwinstd_1_1com__obj.html#a1983f51468452e51890a3a561d3d2627',1,'winstd::com_obj::com_obj(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)'],['../classwinstd_1_1com__obj.html#aa2c8f855aaad8e35c1da6cfd9f32e01e',1,'winstd::com_obj::com_obj(_Other *other)']]], + ['com_5fruntime_5ferror_10',['com_runtime_error',['../classwinstd_1_1com__runtime__error.html#a75030cbe7acc6532140c73caf4b15ed8',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1com__runtime__error.html#aa1b65214e16b18bf8b9b191abff254b7',1,'winstd::com_runtime_error::com_runtime_error(error_type num, const char *msg=nullptr)']]], + ['console_5fctrl_5fhandler_11',['console_ctrl_handler',['../classwinstd_1_1console__ctrl__handler.html#a1c05134a4453123739ac5b45f62fe13a',1,'winstd::console_ctrl_handler']]], + ['construct_12',['construct',['../classwinstd_1_1heap__allocator.html#ad307cb4c9eaf2dcbcd29b379bc01b463',1,'winstd::heap_allocator::construct(pointer ptr, const _Ty &val)'],['../classwinstd_1_1heap__allocator.html#a95485648de70d7896f81ef9cdad01fbf',1,'winstd::heap_allocator::construct(pointer ptr, _Ty &&val)']]], + ['convertstringsecuritydescriptortosecuritydescriptora_13',['ConvertStringSecurityDescriptorToSecurityDescriptorA',['../group___win_std_s_d_d_l.html#gaafcbc965140db7ed3d50d5dcc9dfb34c',1,'SDDL.h']]], + ['convertstringsecuritydescriptortosecuritydescriptorw_14',['ConvertStringSecurityDescriptorToSecurityDescriptorW',['../group___win_std_s_d_d_l.html#gae88d6ef3f22c3fccba5950a94c436fb0',1,'SDDL.h']]], + ['cotaskmemfree_5fdelete_15',['CoTaskMemFree_delete',['../structwinstd_1_1_co_task_mem_free__delete.html#a712d2e91abc99bebe8cf8d32ac649326',1,'winstd::CoTaskMemFree_delete']]], + ['create_16',['create',['../classwinstd_1_1event__session.html#af75b790f98bc16ed94f1167fe4acdb50',1,'winstd::event_session::create()'],['../classwinstd_1_1event__provider.html#aeb28bf6cc859920913e604b2d342f316',1,'winstd::event_provider::create()'],['../classwinstd_1_1eap__packet.html#ac769190286a427b778b17215f19010e9',1,'winstd::eap_packet::create()']]], + ['create_5fexp1_17',['create_exp1',['../classwinstd_1_1crypt__key.html#a9a6097582df953795969c29ec134914a',1,'winstd::crypt_key']]], + ['create_5fms_5fmppe_5fkey_18',['create_ms_mppe_key',['../classwinstd_1_1eap__attr.html#a8098b30108457f2c96c865bfabce3021',1,'winstd::eap_attr']]], + ['createwellknownsid_19',['CreateWellKnownSid',['../group___win_std_win_a_p_i.html#ga6b1c9ae28988d31bb03abefb32af5642',1,'Win.h']]], + ['credenumeratea_20',['CredEnumerateA',['../group___win_std_cred_a_p_i.html#ga6d7c3256a227574ba9e726a1e020fceb',1,'Cred.h']]], + ['credenumeratew_21',['CredEnumerateW',['../group___win_std_cred_a_p_i.html#ga71e6a2a069cd781252492021d70843da',1,'Cred.h']]], + ['credfree_5fdelete_22',['credfree_delete',['../structwinstd_1_1_cred_free__delete_3_01___ty_0f_0e_4.html#aad102423f4fb96fd105b57a88a6031ab',1,'winstd::CredFree_delete< _Ty[]>::CredFree_delete()'],['../structwinstd_1_1_cred_free__delete.html#ac4cc203e783bcc1c71011cde00ddf9ad',1,'winstd::CredFree_delete::CredFree_delete(const CredFree_delete< _Ty2 > &)'],['../structwinstd_1_1_cred_free__delete.html#a3959d2b3727e557e19d8b0f5c449b57a',1,'winstd::CredFree_delete::CredFree_delete()']]], + ['credprotecta_23',['CredProtectA',['../group___win_std_cred_a_p_i.html#ga66f305cb6a0bf6d4f2c6f2f49180df9b',1,'Cred.h']]], + ['credprotectw_24',['CredProtectW',['../group___win_std_cred_a_p_i.html#gaa140d15e40f91b075ad1fa69429a0922',1,'Cred.h']]], + ['credunprotecta_25',['CredUnprotectA',['../group___win_std_cred_a_p_i.html#ga289617e5856f3f4fd18b86754726407b',1,'Cred.h']]], + ['credunprotectw_26',['CredUnprotectW',['../group___win_std_cred_a_p_i.html#gac5fc6137d0a5f7c4bc713676e08a214e',1,'Cred.h']]], + ['critical_5fsection_27',['critical_section',['../classwinstd_1_1critical__section.html#a0f4fe7bc76838757d20967dd79dd7b2c',1,'winstd::critical_section']]], + ['cryptacquirecontexta_28',['CryptAcquireContextA',['../group___win_std_crypto_a_p_i.html#ga54a61f3b9b1ddc10544d7156184a9c51',1,'Crypt.h']]], + ['cryptacquirecontextw_29',['CryptAcquireContextW',['../group___win_std_crypto_a_p_i.html#gaa4a362230b1471ad35e4072a8d506ad4',1,'Crypt.h']]], + ['cryptcreatehash_30',['CryptCreateHash',['../group___win_std_crypto_a_p_i.html#ga947da720e2b4c51947e06f9489cf71eb',1,'Crypt.h']]], + ['cryptdecrypt_31',['CryptDecrypt',['../group___win_std_crypto_a_p_i.html#gae93b1a49d6eafd5c7d8abe48ee97faf8',1,'Crypt.h']]], + ['cryptderivekey_32',['CryptDeriveKey',['../group___win_std_crypto_a_p_i.html#gad2de3e63d5df80d031a13aaa50bade53',1,'Crypt.h']]], + ['cryptencrypt_33',['CryptEncrypt',['../group___win_std_crypto_a_p_i.html#gabd30cb0e884c2c88c3e4f3321ea5efff',1,'Crypt.h']]], + ['cryptexportkey_34',['CryptExportKey',['../group___win_std_crypto_a_p_i.html#ga72ee7a873236f55ff0cb56d46e4ff0a6',1,'Crypt.h']]], + ['cryptgenkey_35',['CryptGenKey',['../group___win_std_crypto_a_p_i.html#ga5e6ab0e4e8a49e8c52c1c5b3bb9b0965',1,'Crypt.h']]], + ['cryptgethashparam_36',['cryptgethashparam',['../group___win_std_crypto_a_p_i.html#ga231b40581fbe230fdc82d4f473f2e43f',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gab3ae01f33782c38e84f2ec4a520c0628',1,'CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptgetkeyparam_37',['cryptgetkeyparam',['../group___win_std_crypto_a_p_i.html#ga782fd6fda714da07b5e687b80fc6f443',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, std::vector< _Ty, _Ax > &aData, DWORD dwFlags): Crypt.h'],['../group___win_std_crypto_a_p_i.html#gaba94a7e33622f959702ac0e24edc3aee',1,'CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, T &data, DWORD dwFlags): Crypt.h']]], + ['cryptimportkey_38',['CryptImportKey',['../group___win_std_crypto_a_p_i.html#gaf835e8e1fa80cfed905aa535e210a177',1,'Crypt.h']]], + ['cryptimportpublickeyinfo_39',['CryptImportPublicKeyInfo',['../group___win_std_crypto_a_p_i.html#ga0e1662683cff5871962961a6f49664a0',1,'Crypt.h']]] ]; diff --git a/search/functions_5.js b/search/functions_5.js index 50efd68e..74e0ef97 100644 --- a/search/functions_5.js +++ b/search/functions_5.js @@ -1,6 +1,6 @@ var searchData= [ - ['formatmessage_0',['FormatMessage',['../group___win_std_str_format.html#gaebf39378c982c5116ea0110a69eb2f75',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments): Common.h'],['../group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments): Common.h']]], + ['formatmessage_0',['formatmessage',['../group___win_std_str_format.html#gaebf39378c982c5116ea0110a69eb2f75',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< wchar_t, _Traits, _Ax > &str, va_list *Arguments): Common.h'],['../group___win_std_str_format.html#ga78bf19793ce080f2826f56f228d64623',1,'FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, std::basic_string< char, _Traits, _Ax > &str, va_list *Arguments): Common.h']]], ['free_1',['free',['../classwinstd_1_1handle.html#a706aaab7691a472c608890f8e5dd0d96',1,'winstd::handle']]], - ['free_5finternal_2',['free_internal',['../classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261',1,'winstd::wlan_handle::free_internal()'],['../classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66',1,'winstd::waddrinfo::free_internal()'],['../classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f',1,'winstd::addrinfo::free_internal()'],['../classwinstd_1_1sc__handle.html#a3db1b2080f7e26c896aa9c47c230e64d',1,'winstd::sc_handle::free_internal()'],['../classwinstd_1_1event__log.html#a3e7c083403f5692926aff600f6ead52e',1,'winstd::event_log::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_1crypt__hash.html#a3c19a87b4ff646d9e87524feac4e41b5',1,'winstd::crypt_hash::free_internal()'],['../classwinstd_1_1com__obj.html#a028b86f770253f74a62ca3eaebb14de5',1,'winstd::com_obj::free_internal()'],['../classwinstd_1_1bstr.html#a87edcb348af7d69ad86709e32b519870',1,'winstd::bstr::free_internal()'],['../classwinstd_1_1safearray.html#adc2ad157b72074ed1b306237819d3685',1,'winstd::safearray::free_internal()'],['../classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629',1,'winstd::handle::free_internal()'],['../classwinstd_1_1cert__context.html#a1615ec6693eb68764543456ad418a970',1,'winstd::cert_context::free_internal()'],['../classwinstd_1_1cert__chain__context.html#ae15044b1a7be10d96643d3921e149ee6',1,'winstd::cert_chain_context::free_internal()'],['../classwinstd_1_1cert__store.html#ab709fe692a4117173eae26e741da2069',1,'winstd::cert_store::free_internal()'],['../classwinstd_1_1crypt__prov.html#aa351d2dbc42daf51dddcf847fd95c39f',1,'winstd::crypt_prov::free_internal()'],['../classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557',1,'winstd::dc::free_internal()'],['../classwinstd_1_1crypt__key.html#acf2f2ad35dd7602adcdeef17f605e391',1,'winstd::crypt_key::free_internal()'],['../classwinstd_1_1eap__packet.html#a6d68149b92c1564b2683ddb3a87b60f0',1,'winstd::eap_packet::free_internal()'],['../classwinstd_1_1event__provider.html#ad0d7ed652fe897a94f2ef198dd3f41a1',1,'winstd::event_provider::free_internal()'],['../classwinstd_1_1event__session.html#a4701ad4ae9d18e890ed4066473680751',1,'winstd::event_session::free_internal()'],['../classwinstd_1_1event__trace.html#ad8ef9b0616775c44e911d9db4676b19c',1,'winstd::event_trace::free_internal()'],['../classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87',1,'winstd::gdi_handle::free_internal()'],['../classwinstd_1_1icon.html#a08f193eb987d54f2df65f42dcd1d5d0c',1,'winstd::icon::free_internal()']]] + ['free_5finternal_2',['free_internal',['../classwinstd_1_1wlan__handle.html#a86e2b4aa2a5177b6ebac0258099f9261',1,'winstd::wlan_handle::free_internal()'],['../classwinstd_1_1waddrinfo.html#a479f7602b60a4c4205a9327f91e25f66',1,'winstd::waddrinfo::free_internal()'],['../classwinstd_1_1addrinfo.html#a279ad84ce2877b22797eedbec80cd55f',1,'winstd::addrinfo::free_internal()'],['../classwinstd_1_1http.html#adb1a08aed51b8203b23c874e167b6248',1,'winstd::http::free_internal()'],['../classwinstd_1_1sc__handle.html#a3db1b2080f7e26c896aa9c47c230e64d',1,'winstd::sc_handle::free_internal()'],['../classwinstd_1_1event__log.html#a3e7c083403f5692926aff600f6ead52e',1,'winstd::event_log::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_1window__dc.html#a351bae4203ad766c94f4fc6eac74e98a',1,'winstd::window_dc::free_internal()'],['../classwinstd_1_1crypt__hash.html#a3c19a87b4ff646d9e87524feac4e41b5',1,'winstd::crypt_hash::free_internal()'],['../classwinstd_1_1com__obj.html#a028b86f770253f74a62ca3eaebb14de5',1,'winstd::com_obj::free_internal()'],['../classwinstd_1_1bstr.html#a87edcb348af7d69ad86709e32b519870',1,'winstd::bstr::free_internal()'],['../classwinstd_1_1safearray.html#adc2ad157b72074ed1b306237819d3685',1,'winstd::safearray::free_internal()'],['../classwinstd_1_1handle.html#a137560600851eb4c3e4b80e25d4da629',1,'winstd::handle::free_internal()'],['../classwinstd_1_1cert__context.html#a1615ec6693eb68764543456ad418a970',1,'winstd::cert_context::free_internal()'],['../classwinstd_1_1cert__chain__context.html#ae15044b1a7be10d96643d3921e149ee6',1,'winstd::cert_chain_context::free_internal()'],['../classwinstd_1_1cert__store.html#ab709fe692a4117173eae26e741da2069',1,'winstd::cert_store::free_internal()'],['../classwinstd_1_1crypt__prov.html#aa351d2dbc42daf51dddcf847fd95c39f',1,'winstd::crypt_prov::free_internal()'],['../classwinstd_1_1sec__credentials.html#a6156649d1a93696c8369361cb426e260',1,'winstd::sec_credentials::free_internal()'],['../classwinstd_1_1crypt__key.html#acf2f2ad35dd7602adcdeef17f605e391',1,'winstd::crypt_key::free_internal()'],['../classwinstd_1_1eap__packet.html#a6d68149b92c1564b2683ddb3a87b60f0',1,'winstd::eap_packet::free_internal()'],['../classwinstd_1_1event__provider.html#ad0d7ed652fe897a94f2ef198dd3f41a1',1,'winstd::event_provider::free_internal()'],['../classwinstd_1_1event__session.html#a4701ad4ae9d18e890ed4066473680751',1,'winstd::event_session::free_internal()'],['../classwinstd_1_1event__trace.html#ad8ef9b0616775c44e911d9db4676b19c',1,'winstd::event_trace::free_internal()'],['../classwinstd_1_1gdi__handle.html#a777cd2403d6b8d0fb0a4b69c82fcca87',1,'winstd::gdi_handle::free_internal()'],['../classwinstd_1_1icon.html#a08f193eb987d54f2df65f42dcd1d5d0c',1,'winstd::icon::free_internal()'],['../classwinstd_1_1dc.html#ad3dc9d48645022e7a1adcdb9ea01a557',1,'winstd::dc::free_internal()']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index ca10ae6f..00cedad0 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -9,11 +9,12 @@ var searchData= ['getfileversioninfow_6',['GetFileVersionInfoW',['../group___win_std_win_a_p_i.html#ga7dbb645a5381e6e7bba37429d3de2d51',1,'Win.h']]], ['getmodulefilenamea_7',['GetModuleFileNameA',['../group___win_std_win_a_p_i.html#ga6934cae7e0b3133206b8324e4372e1cc',1,'Win.h']]], ['getmodulefilenamew_8',['GetModuleFileNameW',['../group___win_std_win_a_p_i.html#ga51dfe8b12845850282f4d120e51e80fa',1,'Win.h']]], - ['gettokeninformation_9',['GetTokenInformation',['../group___win_std_win_a_p_i.html#ga75b761473822ee6e9cf336d28b30b073',1,'Win.h']]], - ['getwindowtexta_10',['GetWindowTextA',['../group___win_std_win_a_p_i.html#ga11fd1f3e9a51e636f6e0f060e604c1aa',1,'Win.h']]], - ['getwindowtextw_11',['GetWindowTextW',['../group___win_std_win_a_p_i.html#gacab04e9e5cbbc759fe83cf70fb891acc',1,'Win.h']]], - ['globalfree_5fdelete_12',['GlobalFree_delete',['../structwinstd_1_1_global_free__delete.html#a07068a1b6ecc0628d16fc4a5d22d69a1',1,'winstd::GlobalFree_delete']]], - ['globalmem_5faccessor_13',['globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a7c13c963c94e5aa17dd67943c27b02c0',1,'winstd::globalmem_accessor']]], - ['guidtostringa_14',['GuidToStringA',['../group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313',1,'Win.h']]], - ['guidtostringw_15',['GuidToStringW',['../group___win_std_win_a_p_i.html#gad8dcada3be8a9e8c0d2f0db263c2a5e3',1,'Win.h']]] + ['getthreadpreferreduilanguages_9',['GetThreadPreferredUILanguages',['../group___win_std_win_a_p_i.html#gac8149fd4228a2af53ed1b340d6ce8f58',1,'Win.h']]], + ['gettokeninformation_10',['GetTokenInformation',['../group___win_std_win_a_p_i.html#ga75b761473822ee6e9cf336d28b30b073',1,'Win.h']]], + ['getwindowtexta_11',['GetWindowTextA',['../group___win_std_win_a_p_i.html#ga11fd1f3e9a51e636f6e0f060e604c1aa',1,'Win.h']]], + ['getwindowtextw_12',['GetWindowTextW',['../group___win_std_win_a_p_i.html#gacab04e9e5cbbc759fe83cf70fb891acc',1,'Win.h']]], + ['globalfree_5fdelete_13',['GlobalFree_delete',['../structwinstd_1_1_global_free__delete.html#a07068a1b6ecc0628d16fc4a5d22d69a1',1,'winstd::GlobalFree_delete']]], + ['globalmem_5faccessor_14',['globalmem_accessor',['../classwinstd_1_1globalmem__accessor.html#a7c13c963c94e5aa17dd67943c27b02c0',1,'winstd::globalmem_accessor']]], + ['guidtostringa_15',['GuidToStringA',['../group___win_std_win_a_p_i.html#ga2ec9f457e182c451486333fa0a994313',1,'Win.h']]], + ['guidtostringw_16',['GuidToStringW',['../group___win_std_win_a_p_i.html#gad8dcada3be8a9e8c0d2f0db263c2a5e3',1,'Win.h']]] ]; diff --git a/search/functions_9.js b/search/functions_9.js index 3240cb6c..b5e04d55 100644 --- a/search/functions_9.js +++ b/search/functions_9.js @@ -3,7 +3,7 @@ var searchData= ['length_0',['length',['../classwinstd_1_1bstr.html#aa6970921c6334a993f5f0fc1be5d54e3',1,'winstd::bstr']]], ['loadstringa_1',['LoadStringA',['../group___win_std_win_a_p_i.html#ga141a51b128dac2b7b0b0f5fddc91fdaf',1,'Win.h']]], ['loadstringw_2',['LoadStringW',['../group___win_std_win_a_p_i.html#ga6c4d84d20f78aac00fe314a7d35d8b48',1,'Win.h']]], - ['localfree_5fdelete_3',['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()']]], + ['localfree_5fdelete_3',['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()']]], ['lookupaccountsida_4',['LookupAccountSidA',['../group___win_std_win_a_p_i.html#ga494161e98275f571eff0da1d34e80145',1,'Win.h']]], ['lookupaccountsidw_5',['LookupAccountSidW',['../group___win_std_win_a_p_i.html#ga55cf815e26d149f0032f1a1c5160fac4',1,'Win.h']]] ]; diff --git a/search/functions_a.js b/search/functions_a.js index e76f249e..14e9c4e2 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -1,7 +1,7 @@ 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#a868231adfa74636792a474a6362aeea7',1,'winstd::win_runtime_error::msg()'],['../classwinstd_1_1ws2__runtime__error.html#af6984de4ac18e732a6844f379d67c52f',1,'winstd::ws2_runtime_error::msg()']]], + ['message_1',['message',['../classwinstd_1_1win__runtime__error.html#aa8e0b5135a44273cfd219efb31781846',1,'winstd::win_runtime_error::message()'],['../classwinstd_1_1ws2__runtime__error.html#afedaedd3400dc4eeb6c3ec61459dec10',1,'winstd::ws2_runtime_error::message()']]], ['msiformatrecorda_2',['MsiFormatRecordA',['../group___win_std_m_s_i_a_p_i.html#ga7cb245425b74bdf9b89c754636486f0c',1,'MSI.h']]], ['msiformatrecordw_3',['MsiFormatRecordW',['../group___win_std_m_s_i_a_p_i.html#ga016f87f038892fe3121a2dd5232468d2',1,'MSI.h']]], ['msigetcomponentpatha_4',['MsiGetComponentPathA',['../group___win_std_m_s_i_a_p_i.html#ga41c26288267e69f5bba73f9b125bf2a3',1,'MSI.h']]], @@ -13,5 +13,5 @@ var searchData= ['msirecordgetstringa_10',['MsiRecordGetStringA',['../group___win_std_m_s_i_a_p_i.html#gaedc818f42d945e54f6956c928b3ffc29',1,'MSI.h']]], ['msirecordgetstringw_11',['MsiRecordGetStringW',['../group___win_std_m_s_i_a_p_i.html#ga487c38b4353054a4e518ca01d1397cf6',1,'MSI.h']]], ['msirecordreadstream_12',['MsiRecordReadStream',['../group___win_std_m_s_i_a_p_i.html#ga83052d8dfbdf437cc45e6a4b46357036',1,'MSI.h']]], - ['multibytetowidechar_13',['MultiByteToWideChar',['../group___win_std_win_a_p_i.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Win.h']]] + ['multibytetowidechar_13',['multibytetowidechar',['../group___win_std_str_format.html#ga1a92ed50a4e4cdaea5d470a52291098c',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::basic_string< wchar_t, _Traits, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#gaeb4d134b8910610678988196480a29cc',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, std::vector< wchar_t, _Ax > &sWideCharStr) noexcept: Common.h'],['../group___win_std_str_format.html#ga5fe48d031512d6acbd14095b6d4e182d',1,'MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const std::basic_string< char, _Traits1, _Ax1 > &sMultiByteStr, std::basic_string< wchar_t, _Traits2, _Ax2 > &sWideCharStr) noexcept: Common.h']]] ]; diff --git a/search/functions_b.js b/search/functions_b.js index 30fdb360..27b748db 100644 --- a/search/functions_b.js +++ b/search/functions_b.js @@ -1,7 +1,7 @@ var searchData= [ ['name_0',['name',['../classwinstd_1_1event__session.html#a029e88ded7419ed152e398388f6a8578',1,'winstd::event_session']]], - ['normalizestring_1',['NormalizeString',['../group___win_std_win_a_p_i.html#ga006d35d0a588fa18614030e4e4487b91',1,'NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gadcb43067e0a63745adf10b68dafbfb7c',1,'NormalizeString(NORM_FORM NormForm, const std::basic_string< wchar_t, _Traits1, _Ax1 > &sSrcString, std::basic_string< wchar_t, _Traits2, _Ax2 > &sDstString) noexcept: Win.h']]], + ['normalizestring_1',['normalizestring',['../group___win_std_win_a_p_i.html#ga006d35d0a588fa18614030e4e4487b91',1,'NormalizeString(NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, std::basic_string< wchar_t, _Traits, _Ax > &sDstString) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gadcb43067e0a63745adf10b68dafbfb7c',1,'NormalizeString(NORM_FORM NormForm, const std::basic_string< wchar_t, _Traits1, _Ax1 > &sSrcString, std::basic_string< wchar_t, _Traits2, _Ax2 > &sDstString) noexcept: Win.h']]], ['num_5fruntime_5ferror_2',['num_runtime_error',['../classwinstd_1_1num__runtime__error.html#a4cfc6c7f3b1d5fed5a3d9e0c5aac3d19',1,'winstd::num_runtime_error::num_runtime_error(error_type num, const std::string &msg)'],['../classwinstd_1_1num__runtime__error.html#a4c0d5efd086891093156fede0dd43cd0',1,'winstd::num_runtime_error::num_runtime_error(error_type num, const char *msg=nullptr)']]], ['number_3',['number',['../classwinstd_1_1num__runtime__error.html#a6388a483c00628c1a94a5ce45ca63e70',1,'winstd::num_runtime_error']]] ]; diff --git a/search/functions_c.js b/search/functions_c.js index a48e1205..9ea5358f 100644 --- a/search/functions_c.js +++ b/search/functions_c.js @@ -5,8 +5,8 @@ var searchData= ['operator_20const_20event_5ftrace_5fproperties_20_2a_2',['operator const EVENT_TRACE_PROPERTIES *',['../classwinstd_1_1event__session.html#a1a37f33aed68839679f91bfe51e675d1',1,'winstd::event_session']]], ['operator_20handle_5ftype_3',['operator handle_type',['../classwinstd_1_1handle.html#a86114637674c82d6fd96d7b3eae39ac8',1,'winstd::handle']]], ['operator_20lpcritical_5fsection_4',['operator LPCRITICAL_SECTION',['../classwinstd_1_1critical__section.html#a7d071e54253a18e11dfdba7130333083',1,'winstd::critical_section']]], - ['operator_20typename_20_5fty_20_2a_26_5',['operator typename _Ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], - ['operator_20typename_20_5fty_20_2a_2a_6',['operator typename _Ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], + ['operator_20typename_20_5fty_20_2a_26_5',['operator typename _ty *&',['../classwinstd_1_1ref__unique__ptr.html#a45bf0e1b5544e6b8f8f1e907ddaec41b',1,'winstd::ref_unique_ptr::operator typename _Ty *&()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#afe5ec21f5765e9023bf8379d05c12187',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty *&()']]], + ['operator_20typename_20_5fty_20_2a_2a_6',['operator typename _ty **',['../classwinstd_1_1ref__unique__ptr.html#a0a43c89cd281cfe203cd45655d537a02',1,'winstd::ref_unique_ptr::operator typename _Ty **()'],['../classwinstd_1_1ref__unique__ptr_3_01___ty_0f_0e_00_01___dx_01_4.html#ae7d16a5850060668cf78a7fc92b62719',1,'winstd::ref_unique_ptr< _Ty[], _Dx >::operator typename _Ty **()']]], ['operator_21_7',['operator!',['../classwinstd_1_1handle.html#a5df08ecb32b9040bf7342479aee2286c',1,'winstd::handle']]], ['operator_21_3d_8',['operator!=',['../group___win_std_e_a_p_a_p_i.html#gac742802fadd5c08227ed40026c21524a',1,'operator!=(): EAP.h'],['../classwinstd_1_1variant.html#a70dc99253ef9de24b443e6d48b662643',1,'winstd::variant::operator!=()'],['../classwinstd_1_1handle.html#a6df58f6c131ab4288acb96d5b8f3012e',1,'winstd::handle::operator!=()'],['../classwinstd_1_1cert__context.html#adfad0db8dd947143a8406f2f988d04ad',1,'winstd::cert_context::operator!=()']]], ['operator_26_9',['operator&',['../classwinstd_1_1handle.html#a2bd2de7bb89dcebe2c9379dd54ee79c1',1,'winstd::handle']]], @@ -19,6 +19,6 @@ var searchData= ['operator_3d_3d_16',['operator==',['../classwinstd_1_1cert__context.html#a2f3ad38a637fce69d8c2a5ee3460a296',1,'winstd::cert_context::operator==()'],['../group___win_std_e_a_p_a_p_i.html#ga4fac0d35e8ca3fa63c53f85a9d10fa80',1,'operator==(): EAP.h'],['../classwinstd_1_1handle.html#ab6021e9c11accef6b813948dc4601ddc',1,'winstd::handle::operator==()'],['../classwinstd_1_1variant.html#a7e4c402b1b8d459aa2d73fb5b5e83853',1,'winstd::variant::operator==()']]], ['operator_3e_17',['operator>',['../classwinstd_1_1handle.html#ae7361f6159006e3f87cbe10ba2a76329',1,'winstd::handle::operator>()'],['../classwinstd_1_1cert__context.html#a7224d1fe6c57bfe903fa8a6df32d2466',1,'winstd::cert_context::operator>()'],['../classwinstd_1_1variant.html#a323955b7123424305aed08eea20f9381',1,'winstd::variant::operator>(const VARIANT &varSrc) const noexcept']]], ['operator_3e_3d_18',['operator>=',['../classwinstd_1_1variant.html#aa7ea26592a0d6b6c529eb87130ebd820',1,'winstd::variant::operator>=()'],['../classwinstd_1_1handle.html#a20e325dde8a25d1e3a7efb50b431641b',1,'winstd::handle::operator>=()'],['../classwinstd_1_1cert__context.html#a6c9f09455ef40e581accc6499222040c',1,'winstd::cert_context::operator>=()']]], - ['outputdebugstr_19',['OutputDebugStr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], - ['outputdebugstrv_20',['OutputDebugStrV',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] + ['outputdebugstr_19',['outputdebugstr',['../group___win_std_win_a_p_i.html#ga9742ac3627448c97ece59127536bb830',1,'OutputDebugStr(LPCSTR lpOutputString,...) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#ga2ccdeb31db4cf3a93f6b8bcf78636f7b',1,'OutputDebugStr(LPCWSTR lpOutputString,...) noexcept: Win.h']]], + ['outputdebugstrv_20',['outputdebugstrv',['../group___win_std_win_a_p_i.html#gae4bcdb27022cf775035520bc749cbc84',1,'OutputDebugStrV(LPCSTR lpOutputString, va_list arg) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gae399b26e1670d999125e1332e03e9f70',1,'OutputDebugStrV(LPCWSTR lpOutputString, va_list arg) noexcept: Win.h']]] ]; diff --git a/search/functions_f.js b/search/functions_f.js index 19155560..2b1e6196 100644 --- a/search/functions_f.js +++ b/search/functions_f.js @@ -8,7 +8,7 @@ var searchData= ['regloadmuistringw_5',['RegLoadMUIStringW',['../group___win_std_win_a_p_i.html#ga3f9a3593107d5333f057570a76e04a57',1,'Win.h']]], ['regopenkeyexa_6',['RegOpenKeyExA',['../group___win_std_win_a_p_i.html#ga2974136cb4530867e14434fb05712b92',1,'Win.h']]], ['regopenkeyexw_7',['RegOpenKeyExW',['../group___win_std_win_a_p_i.html#ga2c61d837a3d96ca9dad3a73df03bf8e4',1,'Win.h']]], - ['regquerystringvalue_8',['RegQueryStringValue',['../group___win_std_win_a_p_i.html#gac91030c0badd322d3c64663ceab77b7a',1,'RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gaef0a2e894cd51e0003498958008ef825',1,'RegQueryStringValue(HKEY hReg, LPCWSTR pszName, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept: Win.h']]], + ['regquerystringvalue_8',['regquerystringvalue',['../group___win_std_win_a_p_i.html#gac91030c0badd322d3c64663ceab77b7a',1,'RegQueryStringValue(HKEY hReg, LPCSTR pszName, std::basic_string< char, _Traits, _Ax > &sValue) noexcept: Win.h'],['../group___win_std_win_a_p_i.html#gaef0a2e894cd51e0003498958008ef825',1,'RegQueryStringValue(HKEY hReg, LPCWSTR pszName, std::basic_string< wchar_t, _Traits, _Ax > &sValue) noexcept: Win.h']]], ['regqueryvalueexa_9',['RegQueryValueExA',['../group___win_std_win_a_p_i.html#gac75dca7a4e87365ca7021edd82509584',1,'Win.h']]], ['regqueryvalueexw_10',['RegQueryValueExW',['../group___win_std_win_a_p_i.html#ga78f02613f20cc234aad4e1b4726db9ea',1,'Win.h']]], ['repair_11',['repair',['../classwinstd_1_1eap__runtime__error.html#a981cb9a1cbf0c6e7e19252d776a2558f',1,'winstd::eap_runtime_error']]], diff --git a/search/groups_0.js b/search/groups_0.js index c5e05f0b..e92eddcb 100644 --- a/search/groups_0.js +++ b/search/groups_0.js @@ -1,4 +1,6 @@ var searchData= [ - ['auto_2dsanitize_20memory_20management_0',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]] + ['api_0',['api',['../group___win_std_cred_a_p_i.html',1,'Credentials API'],['../group___win_std_crypto_a_p_i.html',1,'Cryptography API'],['../group___win_std_e_t_w_a_p_i.html',1,'Event Tracing for Windows API'],['../group___win_std_e_a_p_a_p_i.html',1,'Extensible Authentication Protocol API'],['../group___win_std_gdi_a_p_i.html',1,'GDI API'],['../group___win_std_m_s_i_a_p_i.html',1,'Microsoft Installer API'],['../group___win_std_security_a_p_i.html',1,'Security API'],['../group___setup_a_p_i.html',1,'Setup API'],['../group___win_std_shell_w_a_p_i.html',1,'Shell API'],['../group___win_std_win_a_p_i.html',1,'Windows API'],['../group___win_sock2_a_p_i.html',1,'WinSock2 API'],['../group___win_trust_a_p_i.html',1,'WinTrust API'],['../group___win_std_w_l_a_n_a_p_i.html',1,'WLAN API']]], + ['authentication_20protocol_20api_1',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]], + ['auto_20sanitize_20memory_20management_2',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]] ]; diff --git a/search/groups_1.js b/search/groups_1.js index ee5d88be..b37ec6dc 100644 --- a/search/groups_1.js +++ b/search/groups_1.js @@ -1,6 +1,7 @@ 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,'']]] + ['client_0',['Windows HTTP Client',['../group___win_std_win_h_t_t_p.html',1,'']]], + ['com_20object_20management_1',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]], + ['credentials_20api_2',['Credentials API',['../group___win_std_cred_a_p_i.html',1,'']]], + ['cryptography_20api_3',['Cryptography API',['../group___win_std_crypto_a_p_i.html',1,'']]] ]; diff --git a/search/groups_3.js b/search/groups_3.js index ae3c103b..8a0d01e7 100644 --- a/search/groups_3.js +++ b/search/groups_3.js @@ -1,5 +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,'']]] + ['for_20windows_20api_0',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]], + ['formatting_1',['String Formatting',['../group___win_std_str_format.html',1,'']]] ]; diff --git a/search/groups_4.js b/search/groups_4.js index 5171c04b..ae3c103b 100644 --- a/search/groups_4.js +++ b/search/groups_4.js @@ -1,4 +1,5 @@ var searchData= [ - ['microsoft_20installer_20api_0',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]] + ['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_5.js b/search/groups_5.js index 42a4dbdf..75d6f5e1 100644 --- a/search/groups_5.js +++ b/search/groups_5.js @@ -1,9 +1,5 @@ var searchData= [ - ['sddl_0',['SDDL',['../group___win_std_s_d_d_l.html',1,'']]], - ['security_20api_1',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], - ['setup_20api_2',['Setup API',['../group___setup_a_p_i.html',1,'']]], - ['shell_20api_3',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], - ['string_20formatting_4',['String Formatting',['../group___win_std_str_format.html',1,'']]], - ['system_20handles_5',['System Handles',['../group___win_std_sys_handles.html',1,'']]] + ['handles_0',['System Handles',['../group___win_std_sys_handles.html',1,'']]], + ['http_20client_1',['Windows HTTP Client',['../group___win_std_win_h_t_t_p.html',1,'']]] ]; diff --git a/search/groups_6.js b/search/groups_6.js index 8943ad11..3252b913 100644 --- a/search/groups_6.js +++ b/search/groups_6.js @@ -1,7 +1,4 @@ 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,'']]] + ['installer_20api_0',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]] ]; diff --git a/search/groups_7.js b/search/groups_7.js new file mode 100644 index 00000000..d443a7fb --- /dev/null +++ b/search/groups_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['management_0',['management',['../group___win_std_mem_sanitize.html',1,'Auto-sanitize Memory Management'],['../group___win_std_c_o_m.html',1,'COM Object Management']]], + ['memory_20management_1',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]], + ['microsoft_20installer_20api_2',['Microsoft Installer API',['../group___win_std_m_s_i_a_p_i.html',1,'']]] +]; diff --git a/search/groups_8.js b/search/groups_8.js new file mode 100644 index 00000000..9a92aacd --- /dev/null +++ b/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['object_20management_0',['COM Object Management',['../group___win_std_c_o_m.html',1,'']]] +]; diff --git a/search/groups_9.js b/search/groups_9.js new file mode 100644 index 00000000..4670d845 --- /dev/null +++ b/search/groups_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['protocol_20api_0',['Extensible Authentication Protocol API',['../group___win_std_e_a_p_a_p_i.html',1,'']]] +]; diff --git a/search/groups_a.js b/search/groups_a.js new file mode 100644 index 00000000..78e8347d --- /dev/null +++ b/search/groups_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['sanitize_20memory_20management_0',['Auto-sanitize Memory Management',['../group___win_std_mem_sanitize.html',1,'']]], + ['sddl_1',['SDDL',['../group___win_std_s_d_d_l.html',1,'']]], + ['security_20api_2',['Security API',['../group___win_std_security_a_p_i.html',1,'']]], + ['setup_20api_3',['Setup API',['../group___setup_a_p_i.html',1,'']]], + ['shell_20api_4',['Shell API',['../group___win_std_shell_w_a_p_i.html',1,'']]], + ['string_20formatting_5',['String Formatting',['../group___win_std_str_format.html',1,'']]], + ['system_20handles_6',['System Handles',['../group___win_std_sys_handles.html',1,'']]] +]; diff --git a/search/groups_b.js b/search/groups_b.js new file mode 100644 index 00000000..24ba911c --- /dev/null +++ b/search/groups_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tracing_20for_20windows_20api_0',['Event Tracing for Windows API',['../group___win_std_e_t_w_a_p_i.html',1,'']]] +]; diff --git a/search/groups_c.js b/search/groups_c.js new file mode 100644 index 00000000..806f6034 --- /dev/null +++ b/search/groups_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['windows_20api_0',['windows api',['../group___win_std_e_t_w_a_p_i.html',1,'Event Tracing for Windows API'],['../group___win_std_win_a_p_i.html',1,'Windows API']]], + ['windows_20http_20client_1',['Windows HTTP Client',['../group___win_std_win_h_t_t_p.html',1,'']]], + ['winsock2_20api_2',['WinSock2 API',['../group___win_sock2_a_p_i.html',1,'']]], + ['wintrust_20api_3',['WinTrust API',['../group___win_trust_a_p_i.html',1,'']]], + ['wlan_20api_4',['WLAN API',['../group___win_std_w_l_a_n_a_p_i.html',1,'']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js index fa7948db..c0907541 100644 --- a/search/pages_0.js +++ b/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['security_20policy_0',['Security Policy',['../md__s_e_c_u_r_i_t_y.html',1,'']]] + ['policy_0',['Security Policy',['../md__s_e_c_u_r_i_t_y.html',1,'']]] ]; diff --git a/search/pages_1.js b/search/pages_1.js index ce9389fd..fa7948db 100644 --- a/search/pages_1.js +++ b/search/pages_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['winstd_0',['WinStd',['../index.html',1,'']]] + ['security_20policy_0',['Security Policy',['../md__s_e_c_u_r_i_t_y.html',1,'']]] ]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 00000000..ce9389fd --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['winstd_0',['WinStd',['../index.html',1,'']]] +]; diff --git a/search/search.js b/search/search.js index 9b7a52a1..6fd40c67 100644 --- a/search/search.js +++ b/search/search.js @@ -195,6 +195,7 @@ function SearchBox(name, resultsPath, extension) } else if (e.keyCode==27) // Escape out of the search field { + e.stopPropagation(); this.DOMSearchField().blur(); this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; @@ -289,6 +290,7 @@ function SearchBox(name, resultsPath, extension) } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); @@ -670,6 +672,7 @@ function SearchResults(name) } else if (this.lastKey==27) // Escape { + e.stopPropagation(); searchBox.CloseResultsWindow(); document.getElementById("MSearchField").focus(); } @@ -713,6 +716,7 @@ function SearchResults(name) } else if (this.lastKey==27) // Escape { + e.stopPropagation(); searchBox.CloseResultsWindow(); document.getElementById("MSearchField").focus(); } @@ -806,6 +810,7 @@ function createResults(resultsPath) function init_search() { var results = document.getElementById("MSearchSelectWindow"); + results.tabIndex=0; for (var key in indexSectionLabels) { var link = document.createElement('a'); @@ -816,5 +821,20 @@ function init_search() results.appendChild(link); } searchBox.OnSelectItem(0); + + var input = document.getElementById("MSearchSelect"); + var searchSelectWindow = document.getElementById("MSearchSelectWindow"); + input.tabIndex=0; + input.addEventListener("keydown", function(event) { + if (event.keyCode==13 || event.keyCode==40) { + event.preventDefault(); + if (searchSelectWindow.style.display == 'block') { + searchBox.CloseSelectionWindow(); + } else { + searchBox.OnSearchSelectShow(); + searchBox.DOMSearchSelectWindow().focus(); + } + } + }); } /* @license-end */ diff --git a/search/searchdata.js b/search/searchdata.js index 67175f98..ae08769d 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -4,11 +4,11 @@ var indexSectionsWithContent = 1: "abcdefghilnprsuvw", 2: "abcdefghilmnopqrstuvw~", 3: "bim", - 4: "_cdefhoprstvw", + 4: "_cdefhmoprstvw", 5: "e", 6: "egilmnopstu", - 7: "acegmsw", - 8: "sw" + 7: "acefghimopstw", + 8: "psw" }; var indexSectionNames = diff --git a/search/typedefs_0.js b/search/typedefs_0.js index 7e9c24ed..b519b81c 100644 --- a/search/typedefs_0.js +++ b/search/typedefs_0.js @@ -1,5 +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_unmap_view_of_file__delete.html#aa38ff5b3a531d1074a7ddd681de563b6',1,'winstd::UnmapViewOfFile_delete::_Myt'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aabd3d19b0796e7de041f8475f5e4cc6c',1,'winstd::UnmapViewOfFile_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']]] + ['_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_unmap_view_of_file__delete.html#aa38ff5b3a531d1074a7ddd681de563b6',1,'winstd::UnmapViewOfFile_delete::_Myt'],['../structwinstd_1_1_unmap_view_of_file__delete_3_01___ty_0f_0e_4.html#aabd3d19b0796e7de041f8475f5e4cc6c',1,'winstd::UnmapViewOfFile_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_6.js b/search/typedefs_6.js index 928b79cd..081b3f72 100644 --- a/search/typedefs_6.js +++ b/search/typedefs_6.js @@ -1,4 +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']]] + ['mutex_0',['mutex',['../group___win_std_win_a_p_i.html#ga9fc26240d4a361ce032416c7507dee39',1,'winstd']]] ]; diff --git a/search/typedefs_7.js b/search/typedefs_7.js index 75272730..928b79cd 100644 --- a/search/typedefs_7.js +++ b/search/typedefs_7.js @@ -1,6 +1,4 @@ var searchData= [ - ['pointer_0',['pointer',['../classwinstd_1_1heap__allocator.html#ae04bc3ff970d32e6a2967072efdb06cd',1,'winstd::heap_allocator']]], - ['process_1',['process',['../group___win_std_win_a_p_i.html#gac5db2a322de45a52343ca98bbec302df',1,'winstd']]], - ['process_5fsnapshot_2',['process_snapshot',['../group___win_std_win_a_p_i.html#ga59cd7dece6bf5649013f07c929547e80',1,'winstd']]] + ['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_8.js b/search/typedefs_8.js index 980e601b..75272730 100644 --- a/search/typedefs_8.js +++ b/search/typedefs_8.js @@ -1,4 +1,6 @@ var searchData= [ - ['reference_0',['reference',['../classwinstd_1_1heap__allocator.html#a88ed8962cd0d64849119d7a11135b2d0',1,'winstd::heap_allocator']]] + ['pointer_0',['pointer',['../classwinstd_1_1heap__allocator.html#ae04bc3ff970d32e6a2967072efdb06cd',1,'winstd::heap_allocator']]], + ['process_1',['process',['../group___win_std_win_a_p_i.html#gac5db2a322de45a52343ca98bbec302df',1,'winstd']]], + ['process_5fsnapshot_2',['process_snapshot',['../group___win_std_win_a_p_i.html#ga59cd7dece6bf5649013f07c929547e80',1,'winstd']]] ]; diff --git a/search/typedefs_9.js b/search/typedefs_9.js index adbaa4e7..980e601b 100644 --- a/search/typedefs_9.js +++ b/search/typedefs_9.js @@ -1,9 +1,4 @@ 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_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator']]], - ['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']]] + ['reference_0',['reference',['../classwinstd_1_1heap__allocator.html#a88ed8962cd0d64849119d7a11135b2d0',1,'winstd::heap_allocator']]] ]; diff --git a/search/typedefs_a.js b/search/typedefs_a.js index b5ef5a7d..adbaa4e7 100644 --- a/search/typedefs_a.js +++ b/search/typedefs_a.js @@ -1,9 +1,9 @@ var searchData= [ - ['taddrinfo_0',['taddrinfo',['../group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6',1,'winstd']]], - ['thread_1',['thread',['../group___win_std_win_a_p_i.html#gaff5d7416024ba7489a7631c310e15aab',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']]] + ['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_1heap__allocator.html#a01815f4f9097b1447c7ddaa2de868f59',1,'winstd::heap_allocator']]], + ['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_b.js b/search/typedefs_b.js index 898d7dbc..b5ef5a7d 100644 --- a/search/typedefs_b.js +++ b/search/typedefs_b.js @@ -1,4 +1,9 @@ var searchData= [ - ['value_5ftype_0',['value_type',['../classwinstd_1_1heap__allocator.html#a091ba3fb46ee75b8350c3fa9e6277c57',1,'winstd::heap_allocator']]] + ['taddrinfo_0',['taddrinfo',['../group___win_sock2_a_p_i.html#ga73a783d5ebf3d1af2a565cb78062b5b6',1,'winstd']]], + ['thread_1',['thread',['../group___win_std_win_a_p_i.html#gaff5d7416024ba7489a7631c310e15aab',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']]] ]; diff --git a/search/typedefs_c.js b/search/typedefs_c.js index ff38f411..898d7dbc 100644 --- a/search/typedefs_c.js +++ b/search/typedefs_c.js @@ -1,5 +1,4 @@ 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']]] + ['value_5ftype_0',['value_type',['../classwinstd_1_1heap__allocator.html#a091ba3fb46ee75b8350c3fa9e6277c57',1,'winstd::heap_allocator']]] ]; diff --git a/search/typedefs_d.js b/search/typedefs_d.js new file mode 100644 index 00000000..ff38f411 --- /dev/null +++ b/search/typedefs_d.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/structwinstd_1_1_co_task_mem_free__delete-members.html b/structwinstd_1_1_co_task_mem_free__delete-members.html index 6ff577fd..9e956b86 100644 --- a/structwinstd_1_1_co_task_mem_free__delete-members.html +++ b/structwinstd_1_1_co_task_mem_free__delete-members.html @@ -3,7 +3,7 @@ - + WinStd: Member List @@ -30,7 +30,7 @@ - + @@ -30,7 +30,7 @@ - +