27template <UINT t_category = (1 << 19), UINT t_level = 0>
33 TraceGeneral = (1 << 0),
36 TraceRegistrar = (1 << 3),
37 TraceRefcount = (1 << 4),
38 TraceWindowing = (1 << 5),
39 TraceControls = (1 << 6),
40 TraceHosting = (1 << 7),
41 TraceDBClient = (1 << 8),
42 TraceDBProv
ider = (1 << 9),
43 TraceSnapin = (1 << 10),
44 TraceNotImpl = (1 << 11),
45 TraceAllocation = (1 << 12),
46 TraceException = (1 << 13),
47 TraceTime = (1 << 14),
48 TraceCache = (1 << 15),
49 TraceStencil = (1 << 16),
50 TraceString = (1 << 17),
52 TraceUtil = (1 << 19),
53 TraceSecurity = (1 << 20),
54 TraceSync = (1 << 21),
55 TraceISAPI = (1 << 22),
59 CTraceCategoryEx(LPCTSTR name = NULL) : m_name(name)
63 static UINT GetLevel() { return t_level; }
64 static UINT GetCategory() { return t_category; }
65 operator UINT() const { return GetCategory(); }
66 LPCTSTR GetCategoryName() const { return m_name; }
72class CTraceCategory : public CTraceCategoryEx<>
74 CTraceCategory(LPCTSTR name = NULL) : CTraceCategoryEx<>(name)
79#define DEFINE_TRACE_CATEGORY(name, cat) extern const DECLSPEC_
SELECTANY CTraceCategoryEx<cat, 0> name(TEXT(#name))
80DEFINE_TRACE_CATEGORY(atlTraceGeneral, CTraceCategoryEx<>::TraceGeneral);
81DEFINE_TRACE_CATEGORY(atlTraceCOM, CTraceCategoryEx<>::TraceCom);
82DEFINE_TRACE_CATEGORY(atlTraceQI, CTraceCategoryEx<>::TraceQI);
83DEFINE_TRACE_CATEGORY(atlTraceRegistrar, CTraceCategoryEx<>::TraceRegistrar);
84DEFINE_TRACE_CATEGORY(atlTraceRefcount, CTraceCategoryEx<>::TraceRefcount);
85DEFINE_TRACE_CATEGORY(atlTraceWindowing, CTraceCategoryEx<>::TraceWindowing);
86DEFINE_TRACE_CATEGORY(atlTraceControls, CTraceCategoryEx<>::TraceControls);
87DEFINE_TRACE_CATEGORY(atlTraceHosting, CTraceCategoryEx<>::TraceHosting);
88DEFINE_TRACE_CATEGORY(atlTraceDBClient, CTraceCategoryEx<>::TraceDBClient);
89DEFINE_TRACE_CATEGORY(atlTraceDBProv
ider, CTraceCategoryEx<>::TraceDBProv
ider);
90DEFINE_TRACE_CATEGORY(atlTraceSnapin, CTraceCategoryEx<>::TraceSnapin);
91DEFINE_TRACE_CATEGORY(atlTraceNotImpl, CTraceCategoryEx<>::TraceNotImpl);
92DEFINE_TRACE_CATEGORY(atlTraceAllocation, CTraceCategoryEx<>::TraceAllocation);
93DEFINE_TRACE_CATEGORY(atlTraceException, CTraceCategoryEx<>::TraceException);
94DEFINE_TRACE_CATEGORY(atlTraceTime, CTraceCategoryEx<>::TraceTime);
95DEFINE_TRACE_CATEGORY(atlTraceCache, CTraceCategoryEx<>::TraceCache);
96DEFINE_TRACE_CATEGORY(atlTraceStencil, CTraceCategoryEx<>::TraceStencil);
97DEFINE_TRACE_CATEGORY(atlTraceString, CTraceCategoryEx<>::TraceString);
98DEFINE_TRACE_CATEGORY(atlTraceMap, CTraceCategoryEx<>::TraceMap);
99DEFINE_TRACE_CATEGORY(atlTraceUtil, CTraceCategoryEx<>::TraceUtil);
100DEFINE_TRACE_CATEGORY(atlTraceSecurity, CTraceCategoryEx<>::TraceSecurity);
101DEFINE_TRACE_CATEGORY(atlTraceSync, CTraceCategoryEx<>::TraceSync);
102DEFINE_TRACE_CATEGORY(atlTraceISAPI, CTraceCategoryEx<>::TraceISAPI);
103#undef DEFINE_TRACE_CATEGORY
105struct CTraceCategoryEasy
111 template <UINT t_category, UINT t_level>
112 CTraceCategoryEasy(
const CTraceCategoryEx<t_category, t_level>& cat)
114 m_category = t_category;
116 m_name = cat.GetCategoryName();
119 operator UINT()
const {
return m_category; }
121 BOOL IsGeneral()
const
123 return lstrcmp(m_name,
TEXT(
"atlTraceGeneral")) == 0;
131 DefaultTraceLevel = 0,
132 DisableTracing = 0xFFFFFFFF,
133 EnableAllCategories = 0xFFFFFFFF
136 static UINT GetLevel() {
return s_level; }
137 static UINT GetCategories() {
return s_categories; }
143 return (s_level != DisableTracing && s_level >=
level && (s_categories &
category));
147 static UINT s_categories;
154template <
typename X_CHAR>
158 _In_ const CTraceCategoryEasy& cat,
163 char szBuff[1024], szFile[
MAX_PATH];
165 const BOOL bUnicode = (
sizeof(
TCHAR) == 2);
167 if (!CTrace::IsTracingEnabled(cat,
level))
170#ifdef _STRSAFE_H_INCLUDED_
172 if (!cat.IsGeneral())
180 if (!cat.IsGeneral())
188template <
typename X_CHAR>
192 _In_ const CTraceCategoryEasy& cat,
199 const BOOL bUnicode = (
sizeof(
TCHAR) == 2);
201 if (!CTrace::IsTracingEnabled(cat,
level))
204#ifdef _STRSAFE_H_INCLUDED_
206 if (!cat.IsGeneral())
214 if (!cat.IsGeneral())
222template <
typename X_CHAR,
typename Y_CHAR>
226 _In_ const CTraceCategoryEasy& cat,
237template <
typename X_CHAR,
typename Y_CHAR>
258template <
typename X_CHAR>
264 AtlTraceV(
NULL, -1, atlTraceGeneral, 0,
format, va);
274 #define ATLTRACE(format, ...) ATL::AtlTraceEx(__FILE__, __LINE__, format, ##__VA_ARGS__)
276 #define ATLTRACE(format, ...) ((void)0)
280#define ATLTRACE2 ATLTRACE
283 #define ATLTRACENOTIMPL(funcname) do { \
284 ATLTRACE(atlTraceNotImpl, 0, #funcname " is not implemented.\n"); \
288 #define ATLTRACENOTIMPL(funcname) return E_NOTIMPL
291#ifndef _ATL_NO_AUTOMATIC_NAMESPACE
EXTERN_C int __cdecl _CrtDbgReportW(int reportType, const wchar_t *filename, int linenumber, const wchar_t *moduleName, const wchar_t *format,...)
EXTERN_C int __cdecl _CrtDbgReport(int reportType, const char *filename, int linenumber, const char *moduleName, const char *format,...)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
GLsizei GLenum * categories
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
static DWORD DWORD void LPSTR DWORD cch
#define _Printf_format_string_
#define DECLSPEC_SELECTANY
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz, size_t cchMax, size_t *pcchLength)
STRSAFEAPI StringCchVPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
STRSAFEAPI StringCchVPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat, va_list argList)