178 lines
5 KiB
C
178 lines
5 KiB
C
|
/*++
|
|||
|
|
|||
|
<EFBFBD> 1998 Seagate Software, Inc. All rights reserved
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
StdAfx.cpp
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
Precompiled header root.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Rohde Wakefield [rohde] 20-Feb-1998
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#ifndef RECALL_STDAFX_H
|
|||
|
#define RECALL_STDAFX_H
|
|||
|
|
|||
|
#pragma once
|
|||
|
|
|||
|
//#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
|||
|
|
|||
|
#include <afxwin.h>
|
|||
|
#include <afxext.h>
|
|||
|
#include <afxcmn.h>
|
|||
|
#include <afxtempl.h>
|
|||
|
|
|||
|
#include <atlbase.h>
|
|||
|
extern CComModule _Module;
|
|||
|
#include <atlcom.h>
|
|||
|
#include <statreg.h>
|
|||
|
|
|||
|
//{{AFX_INSERT_LOCATION}}
|
|||
|
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
|||
|
//}}AFX
|
|||
|
|
|||
|
#include "RsTrace.h"
|
|||
|
#include "resource.h"
|
|||
|
#include "rsutil.h"
|
|||
|
#include "fsaint.h"
|
|||
|
#include "RsRecall.h"
|
|||
|
#include "clientob.h"
|
|||
|
#include "note.h"
|
|||
|
|
|||
|
// Don't do module state tracking if just an exe
|
|||
|
#ifndef _USRDLL
|
|||
|
#undef AFX_MANAGE_STATE
|
|||
|
#define AFX_MANAGE_STATE(a)
|
|||
|
#endif
|
|||
|
|
|||
|
#define RecDebugOut CRsFuncTrace::Trace
|
|||
|
|
|||
|
#define RecAssert(cond, hr) if (!(cond)) RecThrow(hr)
|
|||
|
#define RecThrow(hr) throw( CRecThrowContext( __FILE__, __LINE__, hr ) );
|
|||
|
|
|||
|
#define RecAffirm(cond, hr) if (!(cond)) RecThrow(hr)
|
|||
|
#define RecAffirmHr(hr) \
|
|||
|
{ \
|
|||
|
HRESULT lHr; \
|
|||
|
lHr = (hr); \
|
|||
|
RecAffirm(SUCCEEDED(lHr), lHr); \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAffirmHrOk(hr) \
|
|||
|
{ \
|
|||
|
HRESULT lHr; \
|
|||
|
lHr = (hr); \
|
|||
|
RecAffirm(S_OK == lHr, lHr); \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAssertHr(hr) \
|
|||
|
{ \
|
|||
|
HRESULT lHr; \
|
|||
|
lHr = (hr); \
|
|||
|
RecAssert(SUCCEEDED(lHr), lHr); \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAssertStatus(status) \
|
|||
|
{ \
|
|||
|
BOOL bStatus; \
|
|||
|
bStatus = (status); \
|
|||
|
if (!bStatus) { \
|
|||
|
DWORD dwErr = GetLastError(); \
|
|||
|
HRESULT lHr = HRESULT_FROM_WIN32(dwErr); \
|
|||
|
RecAssert(SUCCEEDED(lHr), lHr); \
|
|||
|
} \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAssertHandle(hndl) \
|
|||
|
{ \
|
|||
|
HANDLE hHndl; \
|
|||
|
hHndl = (hndl); \
|
|||
|
if (hHndl == INVALID_HANDLE_VALUE) { \
|
|||
|
DWORD dwErr = GetLastError(); \
|
|||
|
HRESULT lHr = HRESULT_FROM_WIN32(dwErr); \
|
|||
|
RecAssert(SUCCEEDED(lHr), lHr); \
|
|||
|
} \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAssertPointer( ptr ) \
|
|||
|
{ \
|
|||
|
RecAssert( ptr != 0, E_POINTER);\
|
|||
|
}
|
|||
|
|
|||
|
#define RecAffirmStatus(status) \
|
|||
|
{ \
|
|||
|
BOOL bStatus; \
|
|||
|
bStatus = (status); \
|
|||
|
if (!bStatus) { \
|
|||
|
DWORD dwErr = GetLastError(); \
|
|||
|
HRESULT lHr = HRESULT_FROM_WIN32(dwErr); \
|
|||
|
RecAffirm(SUCCEEDED(lHr), lHr); \
|
|||
|
} \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAffirmHandle(hndl) \
|
|||
|
{ \
|
|||
|
HANDLE hHndl; \
|
|||
|
hHndl = (hndl); \
|
|||
|
if (hHndl == INVALID_HANDLE_VALUE) { \
|
|||
|
DWORD dwErr = GetLastError(); \
|
|||
|
HRESULT lHr = HRESULT_FROM_WIN32(dwErr); \
|
|||
|
RecAffirm(SUCCEEDED(lHr), lHr); \
|
|||
|
} \
|
|||
|
}
|
|||
|
|
|||
|
#define RecAffirmPointer( ptr ) \
|
|||
|
{ \
|
|||
|
RecAffirm( ptr != 0, E_POINTER);\
|
|||
|
}
|
|||
|
|
|||
|
#define RecCatchAndDo(hr, code) \
|
|||
|
catch(CRecThrowContext context) { \
|
|||
|
hr = context.m_Hr; \
|
|||
|
TRACE( _T("Throw <0x%p> on line [%ld] of %hs"), context.m_Hr, (long)context.m_Line, context.m_File); \
|
|||
|
{ code } \
|
|||
|
}
|
|||
|
|
|||
|
// Turn on In-Your-Trace error messages for debugging.
|
|||
|
|
|||
|
class CRecThrowContext {
|
|||
|
public:
|
|||
|
CRecThrowContext( char * File, long Line, HRESULT Hr ) :
|
|||
|
m_File(File), m_Line(Line), m_Hr(Hr) { }
|
|||
|
char * m_File;
|
|||
|
long m_Line;
|
|||
|
HRESULT m_Hr;
|
|||
|
};
|
|||
|
|
|||
|
#define RecCatch(hr) \
|
|||
|
catch(CRecThrowContext context) { \
|
|||
|
hr = context.m_Hr; \
|
|||
|
TRACE( _T("Throw <0x%p> on line [%ld] of %hs"), context.m_Hr, (long)context.m_Line, context.m_File); \
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
class RecComString {
|
|||
|
public:
|
|||
|
RecComString( ) : m_sz( 0 ) { }
|
|||
|
RecComString( const OLECHAR * sz ) { m_sz = (OLECHAR*)CoTaskMemAlloc( ( wcslen( sz ) + 1 ) * sizeof( OLECHAR ) ); }
|
|||
|
~RecComString( ) { Free( ); }
|
|||
|
|
|||
|
void Free( ) { if( m_sz ) CoTaskMemFree( m_sz ); }
|
|||
|
|
|||
|
operator OLECHAR * () { return( m_sz ); }
|
|||
|
OLECHAR** operator &() { return( &m_sz ); }
|
|||
|
|
|||
|
private:
|
|||
|
OLECHAR * m_sz;
|
|||
|
};
|
|||
|
|
|||
|
#endif
|