Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Sinkutil.h

Exchange Server 2003

Topic Last Modified: 6/8/2004


//------------------------------------------------------------
//
// File: Sinkutil.h
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-------------------------------------------------------------

#include "windows.h"

#ifdef TRACE
	#include "dbgtrace.h"

	#define PCFunctEnterEx( lParam, sz ) \
        char *__PCFuncName = sz; \
        TraceFunctEnterEx( lParam, sz )

	#define PCFunctEnter( sz ) PCFunctEnterEx( (LPARAM)0, sz)

	#define PCFunctLeaveEx( lParam ) \
        TraceFunctLeaveEx( lParam );

	#define PCFunctLeave() PCFunctLeaveEx( (LPARAM)0 )

	#define PCErrorTraceEx	ErrorTrace

	#define PCDebugTraceEx	DebugTrace

//TRACE
#else
	#define PCFunctEnterEx( lParam, sz )

	#define PCFunctEnter( sz )

	#define PCFunctLeaveEx( lParam )

	#define PCFunctLeave()

	#define PCErrorTraceEx 1 ? (void)0 : ShowAsyncTraceEx

	#define PCDebugTraceEx 1 ? (void)0 : ShowAsyncTraceEx

	__inline int ShowAsyncTraceEx( LPARAM lParam, LPCSTR szFormat, ... )
	{
        return( 1);
	}

// TRACE
#endif


#define PC_REGKEY_PATH "Software\\Microsoft\\Exchange\\CatReader"




// Common Defines

#define CRLF TEXT("\r\n")
#define MAX_DOMAIN 250
#define MAX_LOGIN	64
#define MAX_EMAIL_LENGTH MAX_DOMAIN + MAX_LOGIN + 2 // @ + Null terminator


class CAttrEntry {


private:
	TCHAR * m_pszAttrName;
	GUID m_gGuid;

public:
	CAttrEntry * m_pNext;

	CAttrEntry()
	{
		m_pNext = NULL;
	}

	~CAttrEntry()
	{
	}

	const TCHAR	* GetAttrName()
	{
		return m_pszAttrName;
	}

	const GUID GetAttrGuid()
	{
		return m_gGuid;
	}

	void * operator new(size_t size, TCHAR * pszName, TCHAR * pszGuid);

	void  operator delete(void *p, size_t size);

};

class CAttrList {


private:
	CAttrEntry * m_pHead;
	CAttrEntry * m_pTail;
	DWORD	m_dwEntries;
public:

	CAttrList()
	{
		m_pHead = NULL;
		m_pTail = NULL;
		m_dwEntries = 0;
	}

	~CAttrList()
	{
		CAttrEntry * pAttrTemp = m_pHead;
		CAttrEntry * pAttr;

        while (pAttrTemp != NULL) {
    		pAttr = pAttrTemp->m_pNext;
	    	delete pAttrTemp;
	    	pAttrTemp = pAttr;
        }

		m_pHead = NULL;
		m_pTail = NULL;
		m_dwEntries = 0;
	}

	CAttrEntry * GetHeadEntry()
	{
		return m_pHead;
	}

	CAttrEntry * GetNextEntry(CAttrEntry *pCurrent)
	{
		CAttrEntry *pCurrentTemp = NULL;
		if (pCurrent != NULL)
			 pCurrentTemp = pCurrent->m_pNext;
		return pCurrentTemp;
	}

	const TCHAR	* GetAttrName(CAttrEntry *pCurrent)
	{
		TCHAR *pszName = NULL;
		if (pCurrent != NULL)
			pszName = (TCHAR *)pCurrent->GetAttrName();
		return pszName;
	}

	const GUID GetAttrGuid(CAttrEntry *pCurrent)
	{
		GUID gGuid;
		ZeroMemory(&gGuid, sizeof(GUID));
		if (pCurrent != NULL)
			gGuid = pCurrent->GetAttrGuid();
		return gGuid;
	}

	DWORD ListCount() {
		return m_dwEntries;
	}

	HRESULT AddEntry(TCHAR * pszName, TCHAR * pszGuid);
};



// Utility functions

BOOL ShowMessage(
	LPTSTR szMessage, ...);

HRESULT ConvertStringtoCLSID(
			      LPSTR pszString,
			      LPGUID pguid);

HRESULT HrReadRegParams(CAttrList * pAttrList);

Show:
© 2015 Microsoft