93 lines
2.3 KiB
C++
93 lines
2.3 KiB
C++
// This is a part of the Active Template Library.
|
|
// Copyright (C) 1996-2001 Microsoft Corporation
|
|
// All rights reserved.
|
|
//
|
|
// This source code is only intended as a supplement to the
|
|
// Active Template Library Reference and related
|
|
// electronic documentation provided with the library.
|
|
// See these sources for detailed information regarding the
|
|
// Active Template Library product.
|
|
|
|
#include "stdafx.h"
|
|
#include "Common.h"
|
|
#include "AtlTraceModuleManager.h"
|
|
|
|
extern HINSTANCE g_hInst;
|
|
|
|
CAtlTraceModuleInfo::CAtlTraceModuleInfo() :
|
|
m_hInst(NULL),
|
|
m_nCategories(0),
|
|
m_iFirstCategory(-1)
|
|
{
|
|
m_szPath[0] = L'\0';
|
|
m_szName[0] = L'\0';
|
|
}
|
|
|
|
void CAtlTraceModuleInfo::Reset(HINSTANCE hInst)
|
|
{
|
|
WCHAR szModulePath[MAX_PATH] = {L'\0'};
|
|
if(0 != (GetVersion() & 0x80000000))
|
|
{
|
|
USES_CONVERSION;
|
|
CHAR szTemp[MAX_PATH];
|
|
if(GetModuleFileNameA(hInst, szTemp, MAX_PATH))
|
|
wcscpy(szModulePath, A2W(szTemp));
|
|
}
|
|
else
|
|
GetModuleFileNameW(hInst, szModulePath, MAX_PATH);
|
|
|
|
wcsncpy(m_szPath, szModulePath, MAX_PATH);
|
|
WCHAR *pszShortName = m_szPath + wcslen(m_szPath);
|
|
while(pszShortName > m_szPath && *(pszShortName - 1) != L'\\')
|
|
pszShortName--;
|
|
wcsncpy(m_szName, pszShortName, ATL_TRACE_MAX_NAME_SIZE);
|
|
|
|
m_hInst = hInst;
|
|
m_nCategories = 0;
|
|
m_iFirstCategory = -1;
|
|
}
|
|
|
|
// Categories
|
|
CAtlTraceCategory::CAtlTraceCategory() :
|
|
m_nModuleCookie(0)
|
|
{
|
|
Reset(L"", 0);
|
|
}
|
|
|
|
void CAtlTraceCategory::Reset(const WCHAR *pszName, LONG nModuleCookie)
|
|
{
|
|
wcsncpy(m_szName, pszName, ATL_TRACE_MAX_NAME_SIZE);
|
|
m_nModuleCookie = nModuleCookie;
|
|
}
|
|
|
|
// Modules
|
|
CAtlTraceModule::CAtlTraceModule() :
|
|
m_pfnCrtDbgReport(NULL)
|
|
{
|
|
}
|
|
|
|
void CAtlTraceModule::CrtDbgReport(CAtlTraceModule::fnCrtDbgReport_t pfnCrtDbgReport)
|
|
{
|
|
#ifdef _DEBUG
|
|
m_pfnCrtDbgReport = pfnCrtDbgReport ? pfnCrtDbgReport : _CrtDbgReport;
|
|
#else
|
|
m_pfnCrtDbgReport = pfnCrtDbgReport ? pfnCrtDbgReport : NULL;
|
|
#endif
|
|
}
|
|
|
|
// Processes
|
|
CAtlTraceProcess::CAtlTraceProcess(DWORD_PTR dwMaxSize) :
|
|
CAtlTraceModuleInfo(),
|
|
m_dwId(GetCurrentProcessId()), m_nRef(1), m_dwMaxSize(dwMaxSize),
|
|
m_dwFrontAlloc(0), m_dwBackAlloc(0), m_dwCurrFront(0), m_dwCurrBack(0),
|
|
m_nLevel(0), m_bLoaded(false), m_bEnabled(true), m_bFuncAndCategoryNames(false), m_bFileNameAndLineNo(false),
|
|
m_nNextCookie( 0 )
|
|
{
|
|
m_pvBase = this;
|
|
}
|
|
|
|
LONG CAtlTraceProcess::GetNextCookie()
|
|
{
|
|
return( ::InterlockedIncrement( &m_nNextCookie ) );
|
|
}
|