TRANSACT.H

//.------------------------------------------------------------------------- 
//.
//. Microsoft Windows
//. Copyright (C) Microsoft Corporation, 1995.
//.
//. File: transact.idl
//.
//. Contents: The basic transaction interfaces and types.
//.
//.--------------------------------------------------------------------------


/* File created by MIDL compiler version 2.00.0102 */
/* at Tue Nov 21 16:54:32 1995
*/
//@@MIDL_FILE_HEADING( )
#include "rpc.h"
#include "rpcndr.h"
#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __transact_h__
#define __transact_h__

#ifdef __cplusplus
extern "C"{
#endif

/* Forward Declarations */

#ifndef __ITransaction_FWD_DEFINED__
#define __ITransaction_FWD_DEFINED__
typedef interface ITransaction ITransaction;
#endif /* __ITransaction_FWD_DEFINED__ */


#ifndef __ITransactionDispenser_FWD_DEFINED__
#define __ITransactionDispenser_FWD_DEFINED__
typedef interface ITransactionDispenser ITransactionDispenser;
#endif /* __ITransactionDispenser_FWD_DEFINED__ */


#ifndef __ITransactionOptions_FWD_DEFINED__
#define __ITransactionOptions_FWD_DEFINED__
typedef interface ITransactionOptions ITransactionOptions;
#endif /* __ITransactionOptions_FWD_DEFINED__ */


#ifndef __ITransactionOutcomeEvents_FWD_DEFINED__
#define __ITransactionOutcomeEvents_FWD_DEFINED__
typedef interface ITransactionOutcomeEvents ITransactionOutcomeEvents;
#endif /* __ITransactionOutcomeEvents_FWD_DEFINED__ */


#ifndef __ITransactionCompletionEvents_FWD_DEFINED__
#define __ITransactionCompletionEvents_FWD_DEFINED__
typedef interface ITransactionCompletionEvents ITransactionCompletionEvents;
#endif /* __ITransactionCompletionEvents_FWD_DEFINED__ */


/* header files for imported files */

void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * );

/****************************************
* Generated header for interface: __MIDL__intf_0000
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [local] */


/* size is 0 */

/* size is 0 */

/* size is 0 */

/* size is 0 */

/* size is 0 */



extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;

#ifndef __BasicTransactionTypes_INTERFACE_DEFINED__
#define __BasicTransactionTypes_INTERFACE_DEFINED__

/****************************************
* Generated header for interface: BasicTransactionTypes
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [unique][local] */


/* size is 16 */
typedef struct BOID
{
BYTE rgb[ 16 ];
}BOID;

#define BOID_NULL (*((BOID*)(&IID_NULL)))

#define MAX_TRAN_DESC 40// used by XACTOPT via midl - see transact.idl
/* size is 16 */
typedef BOID XACTUOW;

/* size is 4 */
typedef LONG ISOLEVEL;

#if defined(_WIN32)
/* size is 2 */
typedef
enum ISOLATIONLEVEL
{ISOLATIONLEVEL_UNSPECIFIED= 0xffffffff,
ISOLATIONLEVEL_CHAOS= 0x10,
ISOLATIONLEVEL_READUNCOMMITTED= 0x100,
ISOLATIONLEVEL_BROWSE= 0x100,
ISOLATIONLEVEL_CURSORSTABILITY= 0x1000,
ISOLATIONLEVEL_READCOMMITTED= 0x1000,
ISOLATIONLEVEL_REPEATABLEREAD= 0x10000,
ISOLATIONLEVEL_SERIALIZABLE= 0x100000,
ISOLATIONLEVEL_ISOLATED= 0x100000
}ISOLATIONLEVEL;

#else
#define ISOLATIONLEVEL_UNSPECIFIED 0xFFFFFFFF
#define ISOLATIONLEVEL_CHAOS 0x00000010
#define ISOLATIONLEVEL_READUNCOMMITTED 0x00000100
#define ISOLATIONLEVEL_BROWSE 0x00000100
#define ISOLATIONLEVEL_CURSORSTABILITY 0x00001000
#define ISOLATIONLEVEL_READCOMMITTED 0x00001000
#define ISOLATIONLEVEL_REPEATABLEREAD 0x00010000
#define ISOLATIONLEVEL_SERIALIZABLE 0x00100000
#define ISOLATIONLEVEL_ISOLATED 0x00100000
#endif
/* size is 40 */
typedef struct XACTTRANSINFO
{
XACTUOW uow;
ISOLEVEL isoLevel;
ULONG isoFlags;
DWORD grfTCSupported;
DWORD grfRMSupported;
DWORD grfTCSupportedRetaining;
DWORD grfRMSupportedRetaining;
}XACTTRANSINFO;

/* size is 36 */
typedef struct XACTSTATS
{
ULONG cOpen;
ULONG cCommitting;
ULONG cCommitted;
ULONG cAborting;
ULONG cAborted;
ULONG cInDoubt;
ULONG cHeuristicDecision;
FILETIME timeTransactionsUp;
}XACTSTATS;

/* size is 2 */
typedef
enum ISOFLAG
{ISOFLAG_RETAIN_COMMIT_DC= 1,
ISOFLAG_RETAIN_COMMIT= 2,
ISOFLAG_RETAIN_COMMIT_NO= 3,
ISOFLAG_RETAIN_ABORT_DC= 4,
ISOFLAG_RETAIN_ABORT= 8,
ISOFLAG_RETAIN_ABORT_NO= 12,
ISOFLAG_RETAIN_DONTCARE= ISOFLAG_RETAIN_COMMIT_DC | ISOFLAG_RETAIN_ABORT_DC,
ISOFLAG_RETAIN_BOTH= ISOFLAG_RETAIN_COMMIT | ISOFLAG_RETAIN_ABORT,
ISOFLAG_RETAIN_NONE= ISOFLAG_RETAIN_COMMIT_NO | ISOFLAG_RETAIN_ABORT_NO,
ISOFLAG_OPTIMISTIC= 16
}ISOFLAG;

/* size is 2 */
typedef
enum XACTTC
{XACTTC_SYNC_PHASEONE= 1,
XACTTC_SYNC_PHASETWO= 2,
XACTTC_SYNC= 2,
XACTTC_ASYNC_PHASEONE= 4
}XACTTC;

/* size is 2 */
typedef
enum XACTRM
{XACTRM_OPTIMISTICLASTWINS= 1,
XACTRM_NOREADONLYPREPARES= 2
}XACTRM;

/* size is 2 */
typedef
enum XACTCONST
{XACTCONST_TIMEOUTINFINITE= 0
}XACTCONST;

/* size is 2 */
typedef
enum XACTHEURISTIC
{XACTHEURISTIC_ABORT= 1,
XACTHEURISTIC_COMMIT= 2,
XACTHEURISTIC_DAMAGE= 3,
XACTHEURISTIC_DANGER= 4
}XACTHEURISTIC;

#if defined(_WIN32)
/* size is 2 */
typedef
enum XACTSTAT
{XACTSTAT_NONE= 0,
XACTSTAT_OPENNORMAL= 0x1,
XACTSTAT_OPENREFUSED= 0x2,
XACTSTAT_PREPARING= 0x4,
XACTSTAT_PREPARED= 0x8,
XACTSTAT_PREPARERETAINING= 0x10,
XACTSTAT_PREPARERETAINED= 0x20,
XACTSTAT_COMMITTING= 0x40,
XACTSTAT_COMMITRETAINING= 0x80,
XACTSTAT_ABORTING= 0x100,
XACTSTAT_ABORTED= 0x200,
XACTSTAT_COMMITTED= 0x400,
XACTSTAT_HEURISTIC_ABORT= 0x800,
XACTSTAT_HEURISTIC_COMMIT= 0x1000,
XACTSTAT_HEURISTIC_DAMAGE= 0x2000,
XACTSTAT_HEURISTIC_DANGER= 0x4000,
XACTSTAT_FORCED_ABORT= 0x8000,
XACTSTAT_FORCED_COMMIT= 0x10000,
XACTSTAT_INDOUBT= 0x20000,
XACTSTAT_CLOSED= 0x40000,
XACTSTAT_OPEN= 0x3,
XACTSTAT_NOTPREPARED= 0x7ffc3,
XACTSTAT_ALL= 0x7ffff
}XACTSTAT;

#else
#define XACTSTAT_NONE 0x00000000
#define XACTSTAT_OPENNORMAL 0x00000001
#define XACTSTAT_OPENREFUSED 0x00000002
#define XACTSTAT_PREPARING 0x00000004
#define XACTSTAT_PREPARED 0x00000008
#define XACTSTAT_PREPARERETAINING 0x00000010
#define XACTSTAT_PREPARERETAINED 0x00000020
#define XACTSTAT_COMMITTING 0x00000040
#define XACTSTAT_COMMITRETAINING 0x00000080
#define XACTSTAT_ABORTING 0x00000100
#define XACTSTAT_ABORTED 0x00000200
#define XACTSTAT_COMMITTED 0x00000400
#define XACTSTAT_HEURISTIC_ABORT 0x00000800
#define XACTSTAT_HEURISTIC_COMMIT 0x00001000
#define XACTSTAT_HEURISTIC_DAMAGE 0x00002000
#define XACTSTAT_HEURISTIC_DANGER 0x00004000
#define XACTSTAT_FORCED_ABORT 0x00008000
#define XACTSTAT_FORCED_COMMIT 0x00010000
#define XACTSTAT_INDOUBT 0x00020000
#define XACTSTAT_CLOSED 0x00040000
#define XACTSTAT_OPEN 0x00000003
#define XACTSTAT_NOTPREPARED 0x0007FFC3
#define XACTSTAT_ALL 0x0007FFFF
#endif
/* size is 44 */
typedef struct XACTOPT
{
ULONG ulTimeout;
unsigned char szDescription[ 40 ];
}XACTOPT;



extern RPC_IF_HANDLE BasicTransactionTypes_v0_0_c_ifspec;
extern RPC_IF_HANDLE BasicTransactionTypes_v0_0_s_ifspec;
#endif /* __BasicTransactionTypes_INTERFACE_DEFINED__ */

#ifndef __ITransaction_INTERFACE_DEFINED__
#define __ITransaction_INTERFACE_DEFINED__

/****************************************
* Generated header for interface: ITransaction
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [unique][uuid][object] */



EXTERN_C const IID IID_ITransaction;

#if defined(__cplusplus) && !defined(CINTERFACE)

interface ITransaction : public IUnknown
{
public:
virtual HRESULT __stdcall Commit(
/* [in] */ BOOL fRetaining,
/* [in] */ DWORD grfTC,
/* [in] */ DWORD grfRM) = 0;

virtual HRESULT __stdcall Abort(
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ BOOL fAsync) = 0;

virtual HRESULT __stdcall GetTransactionInfo(
/* [out] */ XACTTRANSINFO __RPC_FAR *pinfo) = 0;

};

#else /* C style interface */

typedef struct ITransactionVtbl
{

HRESULT ( __stdcall __RPC_FAR *QueryInterface )(
ITransaction __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

ULONG ( __stdcall __RPC_FAR *AddRef )(
ITransaction __RPC_FAR * This);

ULONG ( __stdcall __RPC_FAR *Release )(
ITransaction __RPC_FAR * This);

HRESULT ( __stdcall __RPC_FAR *Commit )(
ITransaction __RPC_FAR * This,
/* [in] */ BOOL fRetaining,
/* [in] */ DWORD grfTC,
/* [in] */ DWORD grfRM);

HRESULT ( __stdcall __RPC_FAR *Abort )(
ITransaction __RPC_FAR * This,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ BOOL fAsync);

HRESULT ( __stdcall __RPC_FAR *GetTransactionInfo )(
ITransaction __RPC_FAR * This,
/* [out] */ XACTTRANSINFO __RPC_FAR *pinfo);

} ITransactionVtbl;

interface ITransaction
{
CONST_VTBL struct ITransactionVtbl __RPC_FAR *lpVtbl;
};



#ifdef COBJMACROS


#define ITransaction_QueryInterface(This,riid,ppvObject)\
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ITransaction_AddRef(This)\
(This)->lpVtbl -> AddRef(This)

#define ITransaction_Release(This)\
(This)->lpVtbl -> Release(This)


#define ITransaction_Commit(This,fRetaining,grfTC,grfRM)\
(This)->lpVtbl -> Commit(This,fRetaining,grfTC,grfRM)

#define ITransaction_Abort(This,pboidReason,fRetaining,fAsync)\
(This)->lpVtbl -> Abort(This,pboidReason,fRetaining,fAsync)

#define ITransaction_GetTransactionInfo(This,pinfo)\
(This)->lpVtbl -> GetTransactionInfo(This,pinfo)

#endif /* COBJMACROS */


#endif /* C style interface */



HRESULT __stdcall ITransaction_Commit_Proxy(
ITransaction __RPC_FAR * This,
/* [in] */ BOOL fRetaining,
/* [in] */ DWORD grfTC,
/* [in] */ DWORD grfRM);


void __RPC_STUB ITransaction_Commit_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransaction_Abort_Proxy(
ITransaction __RPC_FAR * This,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ BOOL fAsync);


void __RPC_STUB ITransaction_Abort_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransaction_GetTransactionInfo_Proxy(
ITransaction __RPC_FAR * This,
/* [out] */ XACTTRANSINFO __RPC_FAR *pinfo);


void __RPC_STUB ITransaction_GetTransactionInfo_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);



#endif /* __ITransaction_INTERFACE_DEFINED__ */


#ifndef __ITransactionDispenser_INTERFACE_DEFINED__
#define __ITransactionDispenser_INTERFACE_DEFINED__

/****************************************
* Generated header for interface: ITransactionDispenser
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [unique][uuid][object] */



EXTERN_C const IID IID_ITransactionDispenser;

#if defined(__cplusplus) && !defined(CINTERFACE)

interface ITransactionDispenser : public IUnknown
{
public:
virtual HRESULT __stdcall GetOptionsObject(
/* [out] */ ITransactionOptions __RPC_FAR *__RPC_FAR *ppOptions) = 0;

virtual HRESULT __stdcall BeginTransaction(
/* [in] */ IUnknown __RPC_FAR *punkOuter,
/* [in] */ ISOLEVEL isoLevel,
/* [in] */ ULONG isoFlags,
/* [in] */ ITransactionOptions __RPC_FAR *pOptions,
/* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction) = 0;

};

#else /* C style interface */

typedef struct ITransactionDispenserVtbl
{

HRESULT ( __stdcall __RPC_FAR *QueryInterface )(
ITransactionDispenser __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

ULONG ( __stdcall __RPC_FAR *AddRef )(
ITransactionDispenser __RPC_FAR * This);

ULONG ( __stdcall __RPC_FAR *Release )(
ITransactionDispenser __RPC_FAR * This);

HRESULT ( __stdcall __RPC_FAR *GetOptionsObject )(
ITransactionDispenser __RPC_FAR * This,
/* [out] */ ITransactionOptions __RPC_FAR *__RPC_FAR *ppOptions);

HRESULT ( __stdcall __RPC_FAR *BeginTransaction )(
ITransactionDispenser __RPC_FAR * This,
/* [in] */ IUnknown __RPC_FAR *punkOuter,
/* [in] */ ISOLEVEL isoLevel,
/* [in] */ ULONG isoFlags,
/* [in] */ ITransactionOptions __RPC_FAR *pOptions,
/* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);

} ITransactionDispenserVtbl;

interface ITransactionDispenser
{
CONST_VTBL struct ITransactionDispenserVtbl __RPC_FAR *lpVtbl;
};



#ifdef COBJMACROS


#define ITransactionDispenser_QueryInterface(This,riid,ppvObject)\
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ITransactionDispenser_AddRef(This)\
(This)->lpVtbl -> AddRef(This)

#define ITransactionDispenser_Release(This)\
(This)->lpVtbl -> Release(This)


#define ITransactionDispenser_GetOptionsObject(This,ppOptions)\
(This)->lpVtbl -> GetOptionsObject(This,ppOptions)

#define ITransactionDispenser_BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction)\
(This)->lpVtbl -> BeginTransaction(This,punkOuter,isoLevel,isoFlags,pOptions,ppTransaction)

#endif /* COBJMACROS */


#endif /* C style interface */



HRESULT __stdcall ITransactionDispenser_GetOptionsObject_Proxy(
ITransactionDispenser __RPC_FAR * This,
/* [out] */ ITransactionOptions __RPC_FAR *__RPC_FAR *ppOptions);


void __RPC_STUB ITransactionDispenser_GetOptionsObject_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionDispenser_BeginTransaction_Proxy(
ITransactionDispenser __RPC_FAR * This,
/* [in] */ IUnknown __RPC_FAR *punkOuter,
/* [in] */ ISOLEVEL isoLevel,
/* [in] */ ULONG isoFlags,
/* [in] */ ITransactionOptions __RPC_FAR *pOptions,
/* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);


void __RPC_STUB ITransactionDispenser_BeginTransaction_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);



#endif /* __ITransactionDispenser_INTERFACE_DEFINED__ */


#ifndef __ITransactionOptions_INTERFACE_DEFINED__
#define __ITransactionOptions_INTERFACE_DEFINED__

/****************************************
* Generated header for interface: ITransactionOptions
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [unique][uuid][object] */



EXTERN_C const IID IID_ITransactionOptions;

#if defined(__cplusplus) && !defined(CINTERFACE)

interface ITransactionOptions : public IUnknown
{
public:
virtual HRESULT __stdcall SetOptions(
/* [in] */ XACTOPT __RPC_FAR *pOptions) = 0;

virtual HRESULT __stdcall GetOptions(
/* [out][in] */ XACTOPT __RPC_FAR *pOptions) = 0;

};

#else /* C style interface */

typedef struct ITransactionOptionsVtbl
{

HRESULT ( __stdcall __RPC_FAR *QueryInterface )(
ITransactionOptions __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

ULONG ( __stdcall __RPC_FAR *AddRef )(
ITransactionOptions __RPC_FAR * This);

ULONG ( __stdcall __RPC_FAR *Release )(
ITransactionOptions __RPC_FAR * This);

HRESULT ( __stdcall __RPC_FAR *SetOptions )(
ITransactionOptions __RPC_FAR * This,
/* [in] */ XACTOPT __RPC_FAR *pOptions);

HRESULT ( __stdcall __RPC_FAR *GetOptions )(
ITransactionOptions __RPC_FAR * This,
/* [out][in] */ XACTOPT __RPC_FAR *pOptions);

} ITransactionOptionsVtbl;

interface ITransactionOptions
{
CONST_VTBL struct ITransactionOptionsVtbl __RPC_FAR *lpVtbl;
};



#ifdef COBJMACROS


#define ITransactionOptions_QueryInterface(This,riid,ppvObject)\
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ITransactionOptions_AddRef(This)\
(This)->lpVtbl -> AddRef(This)

#define ITransactionOptions_Release(This)\
(This)->lpVtbl -> Release(This)


#define ITransactionOptions_SetOptions(This,pOptions)\
(This)->lpVtbl -> SetOptions(This,pOptions)

#define ITransactionOptions_GetOptions(This,pOptions)\
(This)->lpVtbl -> GetOptions(This,pOptions)

#endif /* COBJMACROS */


#endif /* C style interface */



HRESULT __stdcall ITransactionOptions_SetOptions_Proxy(
ITransactionOptions __RPC_FAR * This,
/* [in] */ XACTOPT __RPC_FAR *pOptions);


void __RPC_STUB ITransactionOptions_SetOptions_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionOptions_GetOptions_Proxy(
ITransactionOptions __RPC_FAR * This,
/* [out][in] */ XACTOPT __RPC_FAR *pOptions);


void __RPC_STUB ITransactionOptions_GetOptions_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);



#endif /* __ITransactionOptions_INTERFACE_DEFINED__ */


#ifndef __ITransactionOutcomeEvents_INTERFACE_DEFINED__
#define __ITransactionOutcomeEvents_INTERFACE_DEFINED__

/****************************************
* Generated header for interface: ITransactionOutcomeEvents
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [unique][uuid][object] */



EXTERN_C const IID IID_ITransactionOutcomeEvents;

#if defined(__cplusplus) && !defined(CINTERFACE)

interface ITransactionOutcomeEvents : public IUnknown
{
public:
virtual HRESULT __stdcall Committed(
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr) = 0;

virtual HRESULT __stdcall Aborted(
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr) = 0;

virtual HRESULT __stdcall HeuristicDecision(
/* [in] */ DWORD dwDecision,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ HRESULT hr) = 0;

virtual HRESULT __stdcall Indoubt( void) = 0;

};

#else /* C style interface */

typedef struct ITransactionOutcomeEventsVtbl
{

HRESULT ( __stdcall __RPC_FAR *QueryInterface )(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

ULONG ( __stdcall __RPC_FAR *AddRef )(
ITransactionOutcomeEvents __RPC_FAR * This);

ULONG ( __stdcall __RPC_FAR *Release )(
ITransactionOutcomeEvents __RPC_FAR * This);

HRESULT ( __stdcall __RPC_FAR *Committed )(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);

HRESULT ( __stdcall __RPC_FAR *Aborted )(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);

HRESULT ( __stdcall __RPC_FAR *HeuristicDecision )(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ DWORD dwDecision,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ HRESULT hr);

HRESULT ( __stdcall __RPC_FAR *Indoubt )(
ITransactionOutcomeEvents __RPC_FAR * This);

} ITransactionOutcomeEventsVtbl;

interface ITransactionOutcomeEvents
{
CONST_VTBL struct ITransactionOutcomeEventsVtbl __RPC_FAR *lpVtbl;
};



#ifdef COBJMACROS


#define ITransactionOutcomeEvents_QueryInterface(This,riid,ppvObject)\
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ITransactionOutcomeEvents_AddRef(This)\
(This)->lpVtbl -> AddRef(This)

#define ITransactionOutcomeEvents_Release(This)\
(This)->lpVtbl -> Release(This)


#define ITransactionOutcomeEvents_Committed(This,fRetaining,pNewUOW,hr)\
(This)->lpVtbl -> Committed(This,fRetaining,pNewUOW,hr)

#define ITransactionOutcomeEvents_Aborted(This,pboidReason,fRetaining,pNewUOW,hr)\
(This)->lpVtbl -> Aborted(This,pboidReason,fRetaining,pNewUOW,hr)

#define ITransactionOutcomeEvents_HeuristicDecision(This,dwDecision,pboidReason,hr)\
(This)->lpVtbl -> HeuristicDecision(This,dwDecision,pboidReason,hr)

#define ITransactionOutcomeEvents_Indoubt(This)\
(This)->lpVtbl -> Indoubt(This)

#endif /* COBJMACROS */


#endif /* C style interface */



HRESULT __stdcall ITransactionOutcomeEvents_Committed_Proxy(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);


void __RPC_STUB ITransactionOutcomeEvents_Committed_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionOutcomeEvents_Aborted_Proxy(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);


void __RPC_STUB ITransactionOutcomeEvents_Aborted_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionOutcomeEvents_HeuristicDecision_Proxy(
ITransactionOutcomeEvents __RPC_FAR * This,
/* [in] */ DWORD dwDecision,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ HRESULT hr);


void __RPC_STUB ITransactionOutcomeEvents_HeuristicDecision_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionOutcomeEvents_Indoubt_Proxy(
ITransactionOutcomeEvents __RPC_FAR * This);


void __RPC_STUB ITransactionOutcomeEvents_Indoubt_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);



#endif /* __ITransactionOutcomeEvents_INTERFACE_DEFINED__ */


#ifndef __ITransactionCompletionEvents_INTERFACE_DEFINED__
#define __ITransactionCompletionEvents_INTERFACE_DEFINED__

/****************************************
* Generated header for interface: ITransactionCompletionEvents
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [unique][uuid][object] */



EXTERN_C const IID IID_ITransactionCompletionEvents;

#if defined(__cplusplus) && !defined(CINTERFACE)

interface ITransactionCompletionEvents : public IUnknown
{
public:
virtual HRESULT __stdcall Committed(
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr) = 0;

virtual HRESULT __stdcall Aborted(
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr) = 0;

virtual HRESULT __stdcall HeuristicDecision(
/* [in] */ DWORD dwDecision,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ HRESULT hr) = 0;

virtual HRESULT __stdcall Indoubt( void) = 0;

};

#else /* C style interface */

typedef struct ITransactionCompletionEventsVtbl
{

HRESULT ( __stdcall __RPC_FAR *QueryInterface )(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

ULONG ( __stdcall __RPC_FAR *AddRef )(
ITransactionCompletionEvents __RPC_FAR * This);

ULONG ( __stdcall __RPC_FAR *Release )(
ITransactionCompletionEvents __RPC_FAR * This);

HRESULT ( __stdcall __RPC_FAR *Committed )(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);

HRESULT ( __stdcall __RPC_FAR *Aborted )(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);

HRESULT ( __stdcall __RPC_FAR *HeuristicDecision )(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ DWORD dwDecision,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ HRESULT hr);

HRESULT ( __stdcall __RPC_FAR *Indoubt )(
ITransactionCompletionEvents __RPC_FAR * This);

} ITransactionCompletionEventsVtbl;

interface ITransactionCompletionEvents
{
CONST_VTBL struct ITransactionCompletionEventsVtbl __RPC_FAR *lpVtbl;
};



#ifdef COBJMACROS


#define ITransactionCompletionEvents_QueryInterface(This,riid,ppvObject)\
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ITransactionCompletionEvents_AddRef(This)\
(This)->lpVtbl -> AddRef(This)

#define ITransactionCompletionEvents_Release(This)\
(This)->lpVtbl -> Release(This)


#define ITransactionCompletionEvents_Committed(This,fRetaining,pNewUOW,hr)\
(This)->lpVtbl -> Committed(This,fRetaining,pNewUOW,hr)

#define ITransactionCompletionEvents_Aborted(This,pboidReason,fRetaining,pNewUOW,hr)\
(This)->lpVtbl -> Aborted(This,pboidReason,fRetaining,pNewUOW,hr)

#define ITransactionCompletionEvents_HeuristicDecision(This,dwDecision,pboidReason,hr)\
(This)->lpVtbl -> HeuristicDecision(This,dwDecision,pboidReason,hr)

#define ITransactionCompletionEvents_Indoubt(This)\
(This)->lpVtbl -> Indoubt(This)

#endif /* COBJMACROS */


#endif /* C style interface */



HRESULT __stdcall ITransactionCompletionEvents_Committed_Proxy(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);


void __RPC_STUB ITransactionCompletionEvents_Committed_Stub(

IRpcStubBuffer *This, 
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionCompletionEvents_Aborted_Proxy(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ BOOL fRetaining,
/* [in] */ XACTUOW __RPC_FAR *pNewUOW,
/* [in] */ HRESULT hr);


void __RPC_STUB ITransactionCompletionEvents_Aborted_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionCompletionEvents_HeuristicDecision_Proxy(
ITransactionCompletionEvents __RPC_FAR * This,
/* [in] */ DWORD dwDecision,
/* [in] */ BOID __RPC_FAR *pboidReason,
/* [in] */ HRESULT hr);


void __RPC_STUB ITransactionCompletionEvents_HeuristicDecision_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);


HRESULT __stdcall ITransactionCompletionEvents_Indoubt_Proxy(
ITransactionCompletionEvents __RPC_FAR * This);


void __RPC_STUB ITransactionCompletionEvents_Indoubt_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);



#endif /* __ITransactionCompletionEvents_INTERFACE_DEFINED__ */


/****************************************
* Generated header for interface: __MIDL__intf_0011
* at Tue Nov 21 16:54:32 1995
* using MIDL 2.00.0102
****************************************/
/* [local] */


#define XACT_E_FIRST 0x8004D000
#define XACT_E_LAST 0x8004D01E
#define XACT_S_FIRST 0x0004D000
#define XACT_S_LAST 0x0004D009

#define XACT_E_ABORTED 0x8004D019
#define XACT_E_ALREADYOTHERSINGLEPHASE 0x8004D000
#define XACT_E_ALREADYINPROGRESS 0x8004D018
#define XACT_E_CANTRETAIN 0x8004D001
#define XACT_E_COMMITFAILED 0x8004D002
#define XACT_E_COMMITPREVENTED 0x8004D003
#define XACT_E_CONNECTION_DENIED 0x8004D01D
#define XACT_E_CONNECTION_DOWN 0x8004D01C
#define XACT_E_HEURISTICABORT 0x8004D004
#define XACT_E_HEURISTICCOMMIT 0x8004D005
#define XACT_E_HEURISTICDAMAGE 0x8004D006
#define XACT_E_HEURISTICDANGER 0x8004D007
#define XACT_E_INDOUBT 0x8004D016
#define XACT_E_INVALIDCOOKIE 0x8004D015
#define XACT_E_ISOLATIONLEVEL 0x8004D008
#define XACT_E_LOGFULL 0x8004D01A
#define XACT_E_NOASYNC 0x8004D009
#define XACT_E_NOENLIST 0x8004D00A
#define XACT_E_NOIMPORTOBJECT 0x8004D014
#define XACT_E_NOISORETAIN 0x8004D00B
#define XACT_E_NORESOURCE 0x8004D00C
#define XACT_E_NOTCURRENT 0x8004D00D
#define XACT_E_NOTIMEOUT 0x8004D017
#define XACT_E_NOTRANSACTION 0x8004D00E
#define XACT_E_NOTSUPPORTED 0x8004D00F
#define XACT_E_REENLISTTIMEOUT 0x8004D01E
#define XACT_E_TMNOTAVAILABLE 0x8004D01B
#define XACT_E_UNKNOWNRMGRID 0x8004D010
#define XACT_E_WRONGSTATE 0x8004D011
#define XACT_E_WRONGUOW 0x8004D012
#define XACT_E_XTIONEXISTS 0x8004D013

#define XACT_S_ABORTING 0x0004D008
#define XACT_S_ALLNORETAIN 0x0004D007
#define XACT_S_ASYNC 0x0004D000
#define XACT_S_DEFECT 0x0004D001
#define XACT_S_OKINFORM 0x0004D004
#define XACT_S_MADECHANGESCONTENT 0x0004D005
#define XACT_S_MADECHANGESINFORM 0x0004D006
#define XACT_S_READONLY 0x0004D002
#define XACT_S_SINGLEPHASE 0x0004D009
#define XACT_S_SOMENORETAIN 0x0004D003


extern RPC_IF_HANDLE __MIDL__intf_0011_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL__intf_0011_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif

///////////////////////////////////////////////////////////////////////
//
// IID definitions for interfaces defined in this header file
//

#if !defined(_transact_iid_) && defined(INITGUID)
#define _transact_iid_
const IID IID_ITransaction = {0x0fb15084,0xaf41,0x11ce,{0xbd,0x2b,0x20,0x4c,0x4f,0x4f,0x50,0x20}};
const IID IID_ITransactionDispenser = {0x3A6AD9E1,0x23B9,0x11cf,{0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD}};
const IID IID_ITransactionOptions = {0x3A6AD9E0,0x23B9,0x11cf,{0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD}};
const IID IID_ITransactionOutcomeEvents = {0x3A6AD9E2,0x23B9,0x11cf,{0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD}};
const IID IID_ITransactionCompletionEvents = {0xB38D5220,0x23CE,0x11cf,{0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD}};
#endif

///////////////////////////////////////////////////////////////////////