Source code of Windows XP (NT5)
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.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1991 - 1999
//
// File: rpcx86.h
//
//--------------------------------------------------------------------------
/*********************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1991 **/ /** **/ /** Exceptions package for C for DOS/WIN/OS2 **/ /** **/ /*********************************************************/
#ifndef __RPCx86_H__
#define __RPCx86_H__
typedef struct _ExceptionBuff { int registers[RPCXCWORD]; struct _ExceptionBuff __RPC_FAR *pExceptNext;
} ExceptionBuff, __RPC_FAR *pExceptionBuff;
int RPC_ENTRY RpcSetException(pExceptionBuff); void RPC_ENTRY RpcLeaveException(void);
#define RpcTryExcept \
{ \ int _exception_code; \ ExceptionBuff exception; \ \ _exception_code = RpcSetException(&exception); \ \ if (!_exception_code) \ {
// trystmts
#define RpcExcept(expr) \
RpcLeaveException(); \ } \ else \ { \ if (!(expr)) \ RpcRaiseException(_exception_code);
// exceptstmts
#define RpcEndExcept \
} \ }
#define RpcTryFinally \
{ \ int _abnormal_termination; \ ExceptionBuff exception; \ \ _abnormal_termination = RpcSetException(&exception); \ \ if (!_abnormal_termination) \ {
// trystmts
#define RpcFinally \
RpcLeaveException(); \ }
// finallystmts
#define RpcEndFinally \
if (_abnormal_termination) \ RpcRaiseException(_abnormal_termination); \ }
#define RpcExceptionCode() _exception_code
#define RpcAbnormalTermination() _abnormal_termination
#endif // __RPCx86_H__
|