73 lines
2.8 KiB
C++
73 lines
2.8 KiB
C++
/*++
|
|
|
|
© 1998 Seagate Software, Inc. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
RsOpt.h
|
|
|
|
Abstract:
|
|
|
|
Special error handling macros for RsOptCom and RsCln.
|
|
|
|
Author:
|
|
|
|
Carl Hagerstrom [carlh] 20-Aug-1998
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _RSOPT_H
|
|
#define _RSOPT_H
|
|
|
|
#define RsOptThrow(hr) throw ((HRESULT)hr)
|
|
#define RsOptLastError (HRESULT_FROM_WIN32(GetLastError()))
|
|
#define RsOptAffirm(cond,hr) if (!(cond)) RsOptThrow(hr)
|
|
#define RsOptAffirmStatus(stat) RsOptAffirm(stat, RsOptLastError)
|
|
#define RsOptAffirmPointer(ptr) RsOptAffirm(ptr, E_POINTER)
|
|
#define RsOptAffirmAlloc(ptr) RsOptAffirm(ptr, E_OUTOFMEMORY)
|
|
#define RsOptAffirmHr(hr) \
|
|
{ \
|
|
HRESULT lHr; \
|
|
lHr = (hr); \
|
|
RsOptAffirm(SUCCEEDED(lHr), lHr); \
|
|
}
|
|
|
|
|
|
#define RsOptAffirmHandle(hndl) \
|
|
{ \
|
|
HANDLE _hndl; \
|
|
_hndl = (hndl); \
|
|
RsOptAffirm(_hndl && _hndl != INVALID_HANDLE_VALUE, RsOptLastError); \
|
|
}
|
|
|
|
#define RsOptAffirmNtStatus(ntstat) \
|
|
{ \
|
|
NTSTATUS _ntstat; \
|
|
_ntstat = (ntstat); \
|
|
RsOptAffirm(NT_SUCCESS(_ntstat), HRESULT_FROM_NT(_ntstat)); \
|
|
}
|
|
|
|
#define RsOptAffirmDw(hr) \
|
|
{ \
|
|
HRESULT _hr; \
|
|
_hr = (hr); \
|
|
RsOptAffirm(SUCCEEDED(_hr), _hr); \
|
|
}
|
|
|
|
#define RsOptAffirmWin32(stat) \
|
|
{ \
|
|
LONG _stat; \
|
|
_stat = (stat); \
|
|
RsOptAffirm(_stat == ERROR_SUCCESS, HRESULT_FROM_WIN32(_stat)); \
|
|
}
|
|
|
|
#define RsOptCatch(retval) \
|
|
catch(HRESULT _retval) \
|
|
{ \
|
|
retval = _retval; \
|
|
}
|
|
|
|
#endif // _RSOPT_H
|