137 lines
3.0 KiB
C++
137 lines
3.0 KiB
C++
#ifndef TRACE_SERVICE_HEAD_FILE
|
|
#define TRACE_SERVICE_HEAD_FILE
|
|
|
|
#pragma once
|
|
|
|
#include "KernelEngineHead.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//追踪服务
|
|
class KERNEL_ENGINE_CLASS CTraceService
|
|
{
|
|
//函数定义
|
|
protected:
|
|
//构造函数
|
|
CTraceService();
|
|
|
|
//服务配置
|
|
public:
|
|
//设置服务
|
|
static bool SetTraceService(IUnknownEx * pIUnknownEx);
|
|
//获取服务
|
|
static VOID * GetTraceService(const IID & Guid, DWORD dwQueryVer);
|
|
//获取服务
|
|
static VOID * GetTraceServiceManager(const IID & Guid, DWORD dwQueryVer);
|
|
|
|
//状态管理
|
|
public:
|
|
//追踪状态
|
|
static bool IsEnableTrace(enTraceLevel TraceLevel);
|
|
//追踪控制
|
|
static bool EnableTrace(enTraceLevel TraceLevel, bool bEnableTrace);
|
|
//全体追踪控制
|
|
static bool EnableAllTrace(bool bEnableTrace);
|
|
//功能函数
|
|
public:
|
|
//追踪信息
|
|
static bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel);
|
|
//格式化追踪信息
|
|
static bool TraceFormat( enTraceLevel TraceLevel, LPCTSTR pszFormat,... );
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//追踪服务
|
|
class KERNEL_ENGINE_CLASS CTraceServiceControl : public CRichEditCtrl, public ITraceService
|
|
{
|
|
//辅助变量
|
|
protected:
|
|
LONG m_lMaxLineCount; //最大行数
|
|
LONG m_lReserveLineCount; //保留行数
|
|
BYTE m_cbBuffer[MAX_ASYNCHRONISM_DATA]; //临时对象
|
|
|
|
//组件变量
|
|
protected:
|
|
CWHDataQueue m_DataQueue; //数据队列
|
|
CCriticalSection m_CriticalSection; //同步对象
|
|
|
|
//函数定义
|
|
public:
|
|
//构造函数
|
|
CTraceServiceControl();
|
|
//析构函数
|
|
virtual ~CTraceServiceControl();
|
|
|
|
//基础接口
|
|
public:
|
|
//释放对象
|
|
virtual VOID Release() { return; }
|
|
//接口查询
|
|
virtual VOID * QueryInterface(const IID & Guid, DWORD dwQueryVer);
|
|
|
|
//信息接口
|
|
public:
|
|
//追踪信息
|
|
virtual bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel);
|
|
|
|
//重载函数
|
|
protected:
|
|
//绑定函数
|
|
virtual VOID PreSubclassWindow();
|
|
|
|
//功能函数
|
|
public:
|
|
//加载消息
|
|
bool LoadMessage(LPCTSTR pszFileName);
|
|
//保存信息
|
|
bool SaveMessage(LPCTSTR pszFileName);
|
|
//设置参数
|
|
bool SetParameter(LONG lMaxLineCount, LONG lReserveLineCount);
|
|
|
|
//辅助函数
|
|
private:
|
|
//配置服务
|
|
VOID InitializeService();
|
|
//获取颜色
|
|
COLORREF GetTraceColor(enTraceLevel TraceLevel);
|
|
//插入字串
|
|
bool InsertString(LPCTSTR pszString, CHARFORMAT2 & CharFormat);
|
|
|
|
//回调函数
|
|
private:
|
|
//加载回调
|
|
static DWORD CALLBACK LoadCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb);
|
|
//保存回调
|
|
static DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb);
|
|
|
|
//菜单命令
|
|
protected:
|
|
//删除信息
|
|
VOID OnClearAll();
|
|
//全部选择
|
|
VOID OnSelectAll();
|
|
//拷贝字符
|
|
VOID OnCopyString();
|
|
//保存信息
|
|
VOID OnSaveString();
|
|
//删除字符
|
|
VOID OnDeleteString();
|
|
|
|
//消息映射
|
|
protected:
|
|
//建立消息
|
|
INT OnCreate(LPCREATESTRUCT lpCreateStruct);
|
|
//右键消息
|
|
VOID OnRButtonDown(UINT nFlags, CPoint point);
|
|
//窗口销毁
|
|
void OnDestroy();
|
|
//追踪消息
|
|
LRESULT OnTraceServiceMessage(WPARAM wParam, LPARAM lParam);
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif |