mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.8 KiB
72 lines
2.8 KiB
/*++
|
|
|
|
© 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
|