windows-nt/Source/XPSP1/NT/base/fs/hsm/gui/rsntfy/stdafx.h

178 lines
5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
<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