/*** Autogenerated by WIDL 5.0 from txdtc.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __txdtc_h__
#define __txdtc_h__

/* Forward declarations */

#ifndef __IXATransLookup_FWD_DEFINED__
#define __IXATransLookup_FWD_DEFINED__
typedef interface IXATransLookup IXATransLookup;
#ifdef __cplusplus
interface IXATransLookup;
#endif /* __cplusplus */
#endif

#ifndef __IXATransLookup2_FWD_DEFINED__
#define __IXATransLookup2_FWD_DEFINED__
typedef interface IXATransLookup2 IXATransLookup2;
#ifdef __cplusplus
interface IXATransLookup2;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManagerSink_FWD_DEFINED__
#define __IResourceManagerSink_FWD_DEFINED__
typedef interface IResourceManagerSink IResourceManagerSink;
#ifdef __cplusplus
interface IResourceManagerSink;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManager_FWD_DEFINED__
#define __IResourceManager_FWD_DEFINED__
typedef interface IResourceManager IResourceManager;
#ifdef __cplusplus
interface IResourceManager;
#endif /* __cplusplus */
#endif

#ifndef __ILastResourceManager_FWD_DEFINED__
#define __ILastResourceManager_FWD_DEFINED__
typedef interface ILastResourceManager ILastResourceManager;
#ifdef __cplusplus
interface ILastResourceManager;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManager2_FWD_DEFINED__
#define __IResourceManager2_FWD_DEFINED__
typedef interface IResourceManager2 IResourceManager2;
#ifdef __cplusplus
interface IResourceManager2;
#endif /* __cplusplus */
#endif

#ifndef __IXAConfig_FWD_DEFINED__
#define __IXAConfig_FWD_DEFINED__
typedef interface IXAConfig IXAConfig;
#ifdef __cplusplus
interface IXAConfig;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManagerFactory_FWD_DEFINED__
#define __IResourceManagerFactory_FWD_DEFINED__
typedef interface IResourceManagerFactory IResourceManagerFactory;
#ifdef __cplusplus
interface IResourceManagerFactory;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManagerFactory2_FWD_DEFINED__
#define __IResourceManagerFactory2_FWD_DEFINED__
typedef interface IResourceManagerFactory2 IResourceManagerFactory2;
#ifdef __cplusplus
interface IResourceManagerFactory2;
#endif /* __cplusplus */
#endif

#ifndef __IPrepareInfo_FWD_DEFINED__
#define __IPrepareInfo_FWD_DEFINED__
typedef interface IPrepareInfo IPrepareInfo;
#ifdef __cplusplus
interface IPrepareInfo;
#endif /* __cplusplus */
#endif

#ifndef __IPrepareInfo2_FWD_DEFINED__
#define __IPrepareInfo2_FWD_DEFINED__
typedef interface IPrepareInfo2 IPrepareInfo2;
#ifdef __cplusplus
interface IPrepareInfo2;
#endif /* __cplusplus */
#endif

#ifndef __IGetDispenser_FWD_DEFINED__
#define __IGetDispenser_FWD_DEFINED__
typedef interface IGetDispenser IGetDispenser;
#ifdef __cplusplus
interface IGetDispenser;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionVoterBallotAsync2_FWD_DEFINED__
#define __ITransactionVoterBallotAsync2_FWD_DEFINED__
typedef interface ITransactionVoterBallotAsync2 ITransactionVoterBallotAsync2;
#ifdef __cplusplus
interface ITransactionVoterBallotAsync2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionVoterNotifyAsync2_FWD_DEFINED__
#define __ITransactionVoterNotifyAsync2_FWD_DEFINED__
typedef interface ITransactionVoterNotifyAsync2 ITransactionVoterNotifyAsync2;
#ifdef __cplusplus
interface ITransactionVoterNotifyAsync2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionVoterFactory2_FWD_DEFINED__
#define __ITransactionVoterFactory2_FWD_DEFINED__
typedef interface ITransactionVoterFactory2 ITransactionVoterFactory2;
#ifdef __cplusplus
interface ITransactionVoterFactory2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionPhase0EnlistmentAsync_FWD_DEFINED__
#define __ITransactionPhase0EnlistmentAsync_FWD_DEFINED__
typedef interface ITransactionPhase0EnlistmentAsync ITransactionPhase0EnlistmentAsync;
#ifdef __cplusplus
interface ITransactionPhase0EnlistmentAsync;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionPhase0NotifyAsync_FWD_DEFINED__
#define __ITransactionPhase0NotifyAsync_FWD_DEFINED__
typedef interface ITransactionPhase0NotifyAsync ITransactionPhase0NotifyAsync;
#ifdef __cplusplus
interface ITransactionPhase0NotifyAsync;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionPhase0Factory_FWD_DEFINED__
#define __ITransactionPhase0Factory_FWD_DEFINED__
typedef interface ITransactionPhase0Factory ITransactionPhase0Factory;
#ifdef __cplusplus
interface ITransactionPhase0Factory;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionTransmitter_FWD_DEFINED__
#define __ITransactionTransmitter_FWD_DEFINED__
typedef interface ITransactionTransmitter ITransactionTransmitter;
#ifdef __cplusplus
interface ITransactionTransmitter;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionTransmitterFactory_FWD_DEFINED__
#define __ITransactionTransmitterFactory_FWD_DEFINED__
typedef interface ITransactionTransmitterFactory ITransactionTransmitterFactory;
#ifdef __cplusplus
interface ITransactionTransmitterFactory;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionReceiver_FWD_DEFINED__
#define __ITransactionReceiver_FWD_DEFINED__
typedef interface ITransactionReceiver ITransactionReceiver;
#ifdef __cplusplus
interface ITransactionReceiver;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionReceiverFactory_FWD_DEFINED__
#define __ITransactionReceiverFactory_FWD_DEFINED__
typedef interface ITransactionReceiverFactory ITransactionReceiverFactory;
#ifdef __cplusplus
interface ITransactionReceiverFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuConfigure_FWD_DEFINED__
#define __IDtcLuConfigure_FWD_DEFINED__
typedef interface IDtcLuConfigure IDtcLuConfigure;
#ifdef __cplusplus
interface IDtcLuConfigure;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecovery_FWD_DEFINED__
#define __IDtcLuRecovery_FWD_DEFINED__
typedef interface IDtcLuRecovery IDtcLuRecovery;
#ifdef __cplusplus
interface IDtcLuRecovery;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryFactory_FWD_DEFINED__
#define __IDtcLuRecoveryFactory_FWD_DEFINED__
typedef interface IDtcLuRecoveryFactory IDtcLuRecoveryFactory;
#ifdef __cplusplus
interface IDtcLuRecoveryFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByDtcTransWork_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtcTransWork_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByDtcTransWork IDtcLuRecoveryInitiatedByDtcTransWork;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByDtcTransWork;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByDtcStatusWork_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtcStatusWork_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByDtcStatusWork IDtcLuRecoveryInitiatedByDtcStatusWork;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByDtcStatusWork;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByDtc_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtc_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByDtc IDtcLuRecoveryInitiatedByDtc;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByDtc;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByLuWork_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByLuWork_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByLuWork IDtcLuRecoveryInitiatedByLuWork;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByLuWork;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByLu_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByLu_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByLu IDtcLuRecoveryInitiatedByLu;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByLu;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRmEnlistment_FWD_DEFINED__
#define __IDtcLuRmEnlistment_FWD_DEFINED__
typedef interface IDtcLuRmEnlistment IDtcLuRmEnlistment;
#ifdef __cplusplus
interface IDtcLuRmEnlistment;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRmEnlistmentSink_FWD_DEFINED__
#define __IDtcLuRmEnlistmentSink_FWD_DEFINED__
typedef interface IDtcLuRmEnlistmentSink IDtcLuRmEnlistmentSink;
#ifdef __cplusplus
interface IDtcLuRmEnlistmentSink;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRmEnlistmentFactory_FWD_DEFINED__
#define __IDtcLuRmEnlistmentFactory_FWD_DEFINED__
typedef interface IDtcLuRmEnlistmentFactory IDtcLuRmEnlistmentFactory;
#ifdef __cplusplus
interface IDtcLuRmEnlistmentFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuSubordinateDtc_FWD_DEFINED__
#define __IDtcLuSubordinateDtc_FWD_DEFINED__
typedef interface IDtcLuSubordinateDtc IDtcLuSubordinateDtc;
#ifdef __cplusplus
interface IDtcLuSubordinateDtc;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuSubordinateDtcSink_FWD_DEFINED__
#define __IDtcLuSubordinateDtcSink_FWD_DEFINED__
typedef interface IDtcLuSubordinateDtcSink IDtcLuSubordinateDtcSink;
#ifdef __cplusplus
interface IDtcLuSubordinateDtcSink;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuSubordinateDtcFactory_FWD_DEFINED__
#define __IDtcLuSubordinateDtcFactory_FWD_DEFINED__
typedef interface IDtcLuSubordinateDtcFactory IDtcLuSubordinateDtcFactory;
#ifdef __cplusplus
interface IDtcLuSubordinateDtcFactory;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <txcoord.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IXATransLookup_FWD_DEFINED__
#define __IXATransLookup_FWD_DEFINED__
typedef interface IXATransLookup IXATransLookup;
#ifdef __cplusplus
interface IXATransLookup;
#endif /* __cplusplus */
#endif

#ifndef __IXATransLookup2_FWD_DEFINED__
#define __IXATransLookup2_FWD_DEFINED__
typedef interface IXATransLookup2 IXATransLookup2;
#ifdef __cplusplus
interface IXATransLookup2;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManagerSink_FWD_DEFINED__
#define __IResourceManagerSink_FWD_DEFINED__
typedef interface IResourceManagerSink IResourceManagerSink;
#ifdef __cplusplus
interface IResourceManagerSink;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManager_FWD_DEFINED__
#define __IResourceManager_FWD_DEFINED__
typedef interface IResourceManager IResourceManager;
#ifdef __cplusplus
interface IResourceManager;
#endif /* __cplusplus */
#endif

#ifndef __ILastResourceManager_FWD_DEFINED__
#define __ILastResourceManager_FWD_DEFINED__
typedef interface ILastResourceManager ILastResourceManager;
#ifdef __cplusplus
interface ILastResourceManager;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManager2_FWD_DEFINED__
#define __IResourceManager2_FWD_DEFINED__
typedef interface IResourceManager2 IResourceManager2;
#ifdef __cplusplus
interface IResourceManager2;
#endif /* __cplusplus */
#endif

#ifndef __IXAConfig_FWD_DEFINED__
#define __IXAConfig_FWD_DEFINED__
typedef interface IXAConfig IXAConfig;
#ifdef __cplusplus
interface IXAConfig;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManagerFactory_FWD_DEFINED__
#define __IResourceManagerFactory_FWD_DEFINED__
typedef interface IResourceManagerFactory IResourceManagerFactory;
#ifdef __cplusplus
interface IResourceManagerFactory;
#endif /* __cplusplus */
#endif

#ifndef __IResourceManagerFactory2_FWD_DEFINED__
#define __IResourceManagerFactory2_FWD_DEFINED__
typedef interface IResourceManagerFactory2 IResourceManagerFactory2;
#ifdef __cplusplus
interface IResourceManagerFactory2;
#endif /* __cplusplus */
#endif

#ifndef __IPrepareInfo_FWD_DEFINED__
#define __IPrepareInfo_FWD_DEFINED__
typedef interface IPrepareInfo IPrepareInfo;
#ifdef __cplusplus
interface IPrepareInfo;
#endif /* __cplusplus */
#endif

#ifndef __IPrepareInfo2_FWD_DEFINED__
#define __IPrepareInfo2_FWD_DEFINED__
typedef interface IPrepareInfo2 IPrepareInfo2;
#ifdef __cplusplus
interface IPrepareInfo2;
#endif /* __cplusplus */
#endif

#ifndef __IGetDispenser_FWD_DEFINED__
#define __IGetDispenser_FWD_DEFINED__
typedef interface IGetDispenser IGetDispenser;
#ifdef __cplusplus
interface IGetDispenser;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionVoterBallotAsync2_FWD_DEFINED__
#define __ITransactionVoterBallotAsync2_FWD_DEFINED__
typedef interface ITransactionVoterBallotAsync2 ITransactionVoterBallotAsync2;
#ifdef __cplusplus
interface ITransactionVoterBallotAsync2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionVoterNotifyAsync2_FWD_DEFINED__
#define __ITransactionVoterNotifyAsync2_FWD_DEFINED__
typedef interface ITransactionVoterNotifyAsync2 ITransactionVoterNotifyAsync2;
#ifdef __cplusplus
interface ITransactionVoterNotifyAsync2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionVoterFactory2_FWD_DEFINED__
#define __ITransactionVoterFactory2_FWD_DEFINED__
typedef interface ITransactionVoterFactory2 ITransactionVoterFactory2;
#ifdef __cplusplus
interface ITransactionVoterFactory2;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionPhase0EnlistmentAsync_FWD_DEFINED__
#define __ITransactionPhase0EnlistmentAsync_FWD_DEFINED__
typedef interface ITransactionPhase0EnlistmentAsync ITransactionPhase0EnlistmentAsync;
#ifdef __cplusplus
interface ITransactionPhase0EnlistmentAsync;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionPhase0NotifyAsync_FWD_DEFINED__
#define __ITransactionPhase0NotifyAsync_FWD_DEFINED__
typedef interface ITransactionPhase0NotifyAsync ITransactionPhase0NotifyAsync;
#ifdef __cplusplus
interface ITransactionPhase0NotifyAsync;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionPhase0Factory_FWD_DEFINED__
#define __ITransactionPhase0Factory_FWD_DEFINED__
typedef interface ITransactionPhase0Factory ITransactionPhase0Factory;
#ifdef __cplusplus
interface ITransactionPhase0Factory;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionTransmitter_FWD_DEFINED__
#define __ITransactionTransmitter_FWD_DEFINED__
typedef interface ITransactionTransmitter ITransactionTransmitter;
#ifdef __cplusplus
interface ITransactionTransmitter;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionTransmitterFactory_FWD_DEFINED__
#define __ITransactionTransmitterFactory_FWD_DEFINED__
typedef interface ITransactionTransmitterFactory ITransactionTransmitterFactory;
#ifdef __cplusplus
interface ITransactionTransmitterFactory;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionReceiver_FWD_DEFINED__
#define __ITransactionReceiver_FWD_DEFINED__
typedef interface ITransactionReceiver ITransactionReceiver;
#ifdef __cplusplus
interface ITransactionReceiver;
#endif /* __cplusplus */
#endif

#ifndef __ITransactionReceiverFactory_FWD_DEFINED__
#define __ITransactionReceiverFactory_FWD_DEFINED__
typedef interface ITransactionReceiverFactory ITransactionReceiverFactory;
#ifdef __cplusplus
interface ITransactionReceiverFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuConfigure_FWD_DEFINED__
#define __IDtcLuConfigure_FWD_DEFINED__
typedef interface IDtcLuConfigure IDtcLuConfigure;
#ifdef __cplusplus
interface IDtcLuConfigure;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecovery_FWD_DEFINED__
#define __IDtcLuRecovery_FWD_DEFINED__
typedef interface IDtcLuRecovery IDtcLuRecovery;
#ifdef __cplusplus
interface IDtcLuRecovery;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryFactory_FWD_DEFINED__
#define __IDtcLuRecoveryFactory_FWD_DEFINED__
typedef interface IDtcLuRecoveryFactory IDtcLuRecoveryFactory;
#ifdef __cplusplus
interface IDtcLuRecoveryFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByDtcTransWork_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtcTransWork_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByDtcTransWork IDtcLuRecoveryInitiatedByDtcTransWork;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByDtcTransWork;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByDtcStatusWork_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtcStatusWork_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByDtcStatusWork IDtcLuRecoveryInitiatedByDtcStatusWork;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByDtcStatusWork;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByDtc_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtc_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByDtc IDtcLuRecoveryInitiatedByDtc;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByDtc;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByLuWork_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByLuWork_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByLuWork IDtcLuRecoveryInitiatedByLuWork;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByLuWork;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRecoveryInitiatedByLu_FWD_DEFINED__
#define __IDtcLuRecoveryInitiatedByLu_FWD_DEFINED__
typedef interface IDtcLuRecoveryInitiatedByLu IDtcLuRecoveryInitiatedByLu;
#ifdef __cplusplus
interface IDtcLuRecoveryInitiatedByLu;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRmEnlistment_FWD_DEFINED__
#define __IDtcLuRmEnlistment_FWD_DEFINED__
typedef interface IDtcLuRmEnlistment IDtcLuRmEnlistment;
#ifdef __cplusplus
interface IDtcLuRmEnlistment;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRmEnlistmentSink_FWD_DEFINED__
#define __IDtcLuRmEnlistmentSink_FWD_DEFINED__
typedef interface IDtcLuRmEnlistmentSink IDtcLuRmEnlistmentSink;
#ifdef __cplusplus
interface IDtcLuRmEnlistmentSink;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuRmEnlistmentFactory_FWD_DEFINED__
#define __IDtcLuRmEnlistmentFactory_FWD_DEFINED__
typedef interface IDtcLuRmEnlistmentFactory IDtcLuRmEnlistmentFactory;
#ifdef __cplusplus
interface IDtcLuRmEnlistmentFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuSubordinateDtc_FWD_DEFINED__
#define __IDtcLuSubordinateDtc_FWD_DEFINED__
typedef interface IDtcLuSubordinateDtc IDtcLuSubordinateDtc;
#ifdef __cplusplus
interface IDtcLuSubordinateDtc;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuSubordinateDtcSink_FWD_DEFINED__
#define __IDtcLuSubordinateDtcSink_FWD_DEFINED__
typedef interface IDtcLuSubordinateDtcSink IDtcLuSubordinateDtcSink;
#ifdef __cplusplus
interface IDtcLuSubordinateDtcSink;
#endif /* __cplusplus */
#endif

#ifndef __IDtcLuSubordinateDtcFactory_FWD_DEFINED__
#define __IDtcLuSubordinateDtcFactory_FWD_DEFINED__
typedef interface IDtcLuSubordinateDtcFactory IDtcLuSubordinateDtcFactory;
#ifdef __cplusplus
interface IDtcLuSubordinateDtcFactory;
#endif /* __cplusplus */
#endif

#define XACTTOMSG(dwXact) (dwXact-0x00040000+0x40000000)
typedef enum XACT_DTC_CONSTANTS {
    XACT_E_CONNECTION_REQUEST_DENIED = 0x8004d100,
    XACT_E_TOOMANY_ENLISTMENTS = 0x8004d101,
    XACT_E_DUPLICATE_GUID = 0x8004d102,
    XACT_E_NOTSINGLEPHASE = 0x8004d103,
    XACT_E_RECOVERYALREADYDONE = 0x8004d104,
    XACT_E_PROTOCOL = 0x8004d105,
    XACT_E_RM_FAILURE = 0x8004d106,
    XACT_E_RECOVERY_FAILED = 0x8004d107,
    XACT_E_LU_NOT_FOUND = 0x8004d108,
    XACT_E_DUPLICATE_LU = 0x8004d109,
    XACT_E_LU_NOT_CONNECTED = 0x8004d10a,
    XACT_E_DUPLICATE_TRANSID = 0x8004d10b,
    XACT_E_LU_BUSY = 0x8004d10c,
    XACT_E_LU_NO_RECOVERY_PROCESS = 0x8004d10d,
    XACT_E_LU_DOWN = 0x8004d10e,
    XACT_E_LU_RECOVERING = 0x8004d10f,
    XACT_E_LU_RECOVERY_MISMATCH = 0x8004d110,
    XACT_E_RM_UNAVAILABLE = 0x8004d111,
    XACT_E_LRMRECOVERYALREADYDONE = 0x8004d112,
    XACT_E_NOLASTRESOURCEINTERFACE = 0x8004d113,
    XACT_S_NONOTIFY = 0x4d100,
    XACT_OK_NONOTIFY = 0x4d101,
    dwUSER_MS_SQLSERVER = 0xffff
} XACT_DTC_CONSTANTS;
#ifndef _XID_T_DEFINED
#define _XID_T_DEFINED
typedef struct xid_t {
    LONG32 formatID;
    LONG32 gtrid_length;
    LONG32 bqual_length;
    char data[128];
} XID;
#endif
/*****************************************************************************
 * IXATransLookup interface
 */
#ifndef __IXATransLookup_INTERFACE_DEFINED__
#define __IXATransLookup_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXATransLookup, 0xf3b1f131, 0xeeda, 0x11ce, 0xae,0xd4, 0x00,0xaa,0x00,0x51,0xe2,0xc4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f3b1f131-eeda-11ce-aed4-00aa0051e2c4")
IXATransLookup : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Lookup(
        ITransaction **ppTransaction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXATransLookup, 0xf3b1f131, 0xeeda, 0x11ce, 0xae,0xd4, 0x00,0xaa,0x00,0x51,0xe2,0xc4)
#endif
#else
typedef struct IXATransLookupVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IXATransLookup *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IXATransLookup *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IXATransLookup *This);

    /*** IXATransLookup methods ***/
    HRESULT (STDMETHODCALLTYPE *Lookup)(
        IXATransLookup *This,
        ITransaction **ppTransaction);

    END_INTERFACE
} IXATransLookupVtbl;

interface IXATransLookup {
    CONST_VTBL IXATransLookupVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXATransLookup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXATransLookup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXATransLookup_Release(This) (This)->lpVtbl->Release(This)
/*** IXATransLookup methods ***/
#define IXATransLookup_Lookup(This,ppTransaction) (This)->lpVtbl->Lookup(This,ppTransaction)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IXATransLookup_QueryInterface(IXATransLookup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IXATransLookup_AddRef(IXATransLookup* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IXATransLookup_Release(IXATransLookup* This) {
    return This->lpVtbl->Release(This);
}
/*** IXATransLookup methods ***/
static FORCEINLINE HRESULT IXATransLookup_Lookup(IXATransLookup* This,ITransaction **ppTransaction) {
    return This->lpVtbl->Lookup(This,ppTransaction);
}
#endif
#endif

#endif


#endif  /* __IXATransLookup_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXATransLookup2 interface
 */
#ifndef __IXATransLookup2_INTERFACE_DEFINED__
#define __IXATransLookup2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXATransLookup2, 0xbf193c85, 0x0d1a, 0x4290, 0xb8,0x8f, 0xd2,0xcb,0x88,0x73,0xd1,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bf193c85-0d1a-4290-b88f-d2cb8873d1e7")
IXATransLookup2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Lookup(
        XID *pXID,
        ITransaction **ppTransaction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXATransLookup2, 0xbf193c85, 0x0d1a, 0x4290, 0xb8,0x8f, 0xd2,0xcb,0x88,0x73,0xd1,0xe7)
#endif
#else
typedef struct IXATransLookup2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IXATransLookup2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IXATransLookup2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IXATransLookup2 *This);

    /*** IXATransLookup2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Lookup)(
        IXATransLookup2 *This,
        XID *pXID,
        ITransaction **ppTransaction);

    END_INTERFACE
} IXATransLookup2Vtbl;

interface IXATransLookup2 {
    CONST_VTBL IXATransLookup2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXATransLookup2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXATransLookup2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXATransLookup2_Release(This) (This)->lpVtbl->Release(This)
/*** IXATransLookup2 methods ***/
#define IXATransLookup2_Lookup(This,pXID,ppTransaction) (This)->lpVtbl->Lookup(This,pXID,ppTransaction)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IXATransLookup2_QueryInterface(IXATransLookup2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IXATransLookup2_AddRef(IXATransLookup2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IXATransLookup2_Release(IXATransLookup2* This) {
    return This->lpVtbl->Release(This);
}
/*** IXATransLookup2 methods ***/
static FORCEINLINE HRESULT IXATransLookup2_Lookup(IXATransLookup2* This,XID *pXID,ITransaction **ppTransaction) {
    return This->lpVtbl->Lookup(This,pXID,ppTransaction);
}
#endif
#endif

#endif


#endif  /* __IXATransLookup2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IResourceManagerSink interface
 */
#ifndef __IResourceManagerSink_INTERFACE_DEFINED__
#define __IResourceManagerSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResourceManagerSink, 0x0d563181, 0xdefb, 0x11ce, 0xae,0xd1, 0x00,0xaa,0x00,0x51,0xe2,0xc4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0d563181-defb-11ce-aed1-00aa0051e2c4")
IResourceManagerSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE TMDown(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResourceManagerSink, 0x0d563181, 0xdefb, 0x11ce, 0xae,0xd1, 0x00,0xaa,0x00,0x51,0xe2,0xc4)
#endif
#else
typedef struct IResourceManagerSinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IResourceManagerSink *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IResourceManagerSink *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IResourceManagerSink *This);

    /*** IResourceManagerSink methods ***/
    HRESULT (STDMETHODCALLTYPE *TMDown)(
        IResourceManagerSink *This);

    END_INTERFACE
} IResourceManagerSinkVtbl;

interface IResourceManagerSink {
    CONST_VTBL IResourceManagerSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IResourceManagerSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceManagerSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceManagerSink_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceManagerSink methods ***/
#define IResourceManagerSink_TMDown(This) (This)->lpVtbl->TMDown(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IResourceManagerSink_QueryInterface(IResourceManagerSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IResourceManagerSink_AddRef(IResourceManagerSink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IResourceManagerSink_Release(IResourceManagerSink* This) {
    return This->lpVtbl->Release(This);
}
/*** IResourceManagerSink methods ***/
static FORCEINLINE HRESULT IResourceManagerSink_TMDown(IResourceManagerSink* This) {
    return This->lpVtbl->TMDown(This);
}
#endif
#endif

#endif


#endif  /* __IResourceManagerSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IResourceManager interface
 */
#ifndef __IResourceManager_INTERFACE_DEFINED__
#define __IResourceManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResourceManager, 0x13741d21, 0x87eb, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("13741d21-87eb-11ce-8081-0080c758527e")
IResourceManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Enlist(
        ITransaction *pTransaction,
        ITransactionResourceAsync *pRes,
        XACTUOW *pUOW,
        LONG *pisoLevel,
        ITransactionEnlistmentAsync **ppEnlist) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reenlist(
        byte *pPrepInfo,
        ULONG cbPrepInfo,
        DWORD lTimeout,
        XACTSTAT *pXactStat) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReenlistmentComplete(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDistributedTransactionManager(
        REFIID iid,
        void **ppvObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResourceManager, 0x13741d21, 0x87eb, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e)
#endif
#else
typedef struct IResourceManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IResourceManager *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IResourceManager *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IResourceManager *This);

    /*** IResourceManager methods ***/
    HRESULT (STDMETHODCALLTYPE *Enlist)(
        IResourceManager *This,
        ITransaction *pTransaction,
        ITransactionResourceAsync *pRes,
        XACTUOW *pUOW,
        LONG *pisoLevel,
        ITransactionEnlistmentAsync **ppEnlist);

    HRESULT (STDMETHODCALLTYPE *Reenlist)(
        IResourceManager *This,
        byte *pPrepInfo,
        ULONG cbPrepInfo,
        DWORD lTimeout,
        XACTSTAT *pXactStat);

    HRESULT (STDMETHODCALLTYPE *ReenlistmentComplete)(
        IResourceManager *This);

    HRESULT (STDMETHODCALLTYPE *GetDistributedTransactionManager)(
        IResourceManager *This,
        REFIID iid,
        void **ppvObject);

    END_INTERFACE
} IResourceManagerVtbl;

interface IResourceManager {
    CONST_VTBL IResourceManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IResourceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceManager_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceManager methods ***/
#define IResourceManager_Enlist(This,pTransaction,pRes,pUOW,pisoLevel,ppEnlist) (This)->lpVtbl->Enlist(This,pTransaction,pRes,pUOW,pisoLevel,ppEnlist)
#define IResourceManager_Reenlist(This,pPrepInfo,cbPrepInfo,lTimeout,pXactStat) (This)->lpVtbl->Reenlist(This,pPrepInfo,cbPrepInfo,lTimeout,pXactStat)
#define IResourceManager_ReenlistmentComplete(This) (This)->lpVtbl->ReenlistmentComplete(This)
#define IResourceManager_GetDistributedTransactionManager(This,iid,ppvObject) (This)->lpVtbl->GetDistributedTransactionManager(This,iid,ppvObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IResourceManager_QueryInterface(IResourceManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IResourceManager_AddRef(IResourceManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IResourceManager_Release(IResourceManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IResourceManager methods ***/
static FORCEINLINE HRESULT IResourceManager_Enlist(IResourceManager* This,ITransaction *pTransaction,ITransactionResourceAsync *pRes,XACTUOW *pUOW,LONG *pisoLevel,ITransactionEnlistmentAsync **ppEnlist) {
    return This->lpVtbl->Enlist(This,pTransaction,pRes,pUOW,pisoLevel,ppEnlist);
}
static FORCEINLINE HRESULT IResourceManager_Reenlist(IResourceManager* This,byte *pPrepInfo,ULONG cbPrepInfo,DWORD lTimeout,XACTSTAT *pXactStat) {
    return This->lpVtbl->Reenlist(This,pPrepInfo,cbPrepInfo,lTimeout,pXactStat);
}
static FORCEINLINE HRESULT IResourceManager_ReenlistmentComplete(IResourceManager* This) {
    return This->lpVtbl->ReenlistmentComplete(This);
}
static FORCEINLINE HRESULT IResourceManager_GetDistributedTransactionManager(IResourceManager* This,REFIID iid,void **ppvObject) {
    return This->lpVtbl->GetDistributedTransactionManager(This,iid,ppvObject);
}
#endif
#endif

#endif


#endif  /* __IResourceManager_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ILastResourceManager interface
 */
#ifndef __ILastResourceManager_INTERFACE_DEFINED__
#define __ILastResourceManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_ILastResourceManager, 0x4d964ad4, 0x5b33, 0x11d3, 0x8a,0x91, 0x00,0xc0,0x4f,0x79,0xeb,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4d964ad4-5b33-11d3-8a91-00c04f79eb6d")
ILastResourceManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE TransactionCommitted(
        byte *pPrepInfo,
        ULONG cbPrepInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE RecoveryDone(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ILastResourceManager, 0x4d964ad4, 0x5b33, 0x11d3, 0x8a,0x91, 0x00,0xc0,0x4f,0x79,0xeb,0x6d)
#endif
#else
typedef struct ILastResourceManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ILastResourceManager *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ILastResourceManager *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ILastResourceManager *This);

    /*** ILastResourceManager methods ***/
    HRESULT (STDMETHODCALLTYPE *TransactionCommitted)(
        ILastResourceManager *This,
        byte *pPrepInfo,
        ULONG cbPrepInfo);

    HRESULT (STDMETHODCALLTYPE *RecoveryDone)(
        ILastResourceManager *This);

    END_INTERFACE
} ILastResourceManagerVtbl;

interface ILastResourceManager {
    CONST_VTBL ILastResourceManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ILastResourceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ILastResourceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ILastResourceManager_Release(This) (This)->lpVtbl->Release(This)
/*** ILastResourceManager methods ***/
#define ILastResourceManager_TransactionCommitted(This,pPrepInfo,cbPrepInfo) (This)->lpVtbl->TransactionCommitted(This,pPrepInfo,cbPrepInfo)
#define ILastResourceManager_RecoveryDone(This) (This)->lpVtbl->RecoveryDone(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ILastResourceManager_QueryInterface(ILastResourceManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ILastResourceManager_AddRef(ILastResourceManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ILastResourceManager_Release(ILastResourceManager* This) {
    return This->lpVtbl->Release(This);
}
/*** ILastResourceManager methods ***/
static FORCEINLINE HRESULT ILastResourceManager_TransactionCommitted(ILastResourceManager* This,byte *pPrepInfo,ULONG cbPrepInfo) {
    return This->lpVtbl->TransactionCommitted(This,pPrepInfo,cbPrepInfo);
}
static FORCEINLINE HRESULT ILastResourceManager_RecoveryDone(ILastResourceManager* This) {
    return This->lpVtbl->RecoveryDone(This);
}
#endif
#endif

#endif


#endif  /* __ILastResourceManager_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IResourceManager2 interface
 */
#ifndef __IResourceManager2_INTERFACE_DEFINED__
#define __IResourceManager2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResourceManager2, 0xd136c69a, 0xf749, 0x11d1, 0x8f,0x47, 0x00,0xc0,0x4f,0x8e,0xe5,0x7d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d136c69a-f749-11d1-8f47-00c04f8ee57d")
IResourceManager2 : public IResourceManager
{
    virtual HRESULT STDMETHODCALLTYPE Enlist2(
        ITransaction *pTransaction,
        ITransactionResourceAsync *pResAsync,
        XACTUOW *pUOW,
        LONG *pisoLevel,
        XID *pXid,
        ITransactionEnlistmentAsync **ppEnlist) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reenlist2(
        XID *pXid,
        DWORD dwTimeout,
        XACTSTAT *pXactStat) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResourceManager2, 0xd136c69a, 0xf749, 0x11d1, 0x8f,0x47, 0x00,0xc0,0x4f,0x8e,0xe5,0x7d)
#endif
#else
typedef struct IResourceManager2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IResourceManager2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IResourceManager2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IResourceManager2 *This);

    /*** IResourceManager methods ***/
    HRESULT (STDMETHODCALLTYPE *Enlist)(
        IResourceManager2 *This,
        ITransaction *pTransaction,
        ITransactionResourceAsync *pRes,
        XACTUOW *pUOW,
        LONG *pisoLevel,
        ITransactionEnlistmentAsync **ppEnlist);

    HRESULT (STDMETHODCALLTYPE *Reenlist)(
        IResourceManager2 *This,
        byte *pPrepInfo,
        ULONG cbPrepInfo,
        DWORD lTimeout,
        XACTSTAT *pXactStat);

    HRESULT (STDMETHODCALLTYPE *ReenlistmentComplete)(
        IResourceManager2 *This);

    HRESULT (STDMETHODCALLTYPE *GetDistributedTransactionManager)(
        IResourceManager2 *This,
        REFIID iid,
        void **ppvObject);

    /*** IResourceManager2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Enlist2)(
        IResourceManager2 *This,
        ITransaction *pTransaction,
        ITransactionResourceAsync *pResAsync,
        XACTUOW *pUOW,
        LONG *pisoLevel,
        XID *pXid,
        ITransactionEnlistmentAsync **ppEnlist);

    HRESULT (STDMETHODCALLTYPE *Reenlist2)(
        IResourceManager2 *This,
        XID *pXid,
        DWORD dwTimeout,
        XACTSTAT *pXactStat);

    END_INTERFACE
} IResourceManager2Vtbl;

interface IResourceManager2 {
    CONST_VTBL IResourceManager2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IResourceManager2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceManager2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceManager2_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceManager methods ***/
#define IResourceManager2_Enlist(This,pTransaction,pRes,pUOW,pisoLevel,ppEnlist) (This)->lpVtbl->Enlist(This,pTransaction,pRes,pUOW,pisoLevel,ppEnlist)
#define IResourceManager2_Reenlist(This,pPrepInfo,cbPrepInfo,lTimeout,pXactStat) (This)->lpVtbl->Reenlist(This,pPrepInfo,cbPrepInfo,lTimeout,pXactStat)
#define IResourceManager2_ReenlistmentComplete(This) (This)->lpVtbl->ReenlistmentComplete(This)
#define IResourceManager2_GetDistributedTransactionManager(This,iid,ppvObject) (This)->lpVtbl->GetDistributedTransactionManager(This,iid,ppvObject)
/*** IResourceManager2 methods ***/
#define IResourceManager2_Enlist2(This,pTransaction,pResAsync,pUOW,pisoLevel,pXid,ppEnlist) (This)->lpVtbl->Enlist2(This,pTransaction,pResAsync,pUOW,pisoLevel,pXid,ppEnlist)
#define IResourceManager2_Reenlist2(This,pXid,dwTimeout,pXactStat) (This)->lpVtbl->Reenlist2(This,pXid,dwTimeout,pXactStat)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IResourceManager2_QueryInterface(IResourceManager2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IResourceManager2_AddRef(IResourceManager2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IResourceManager2_Release(IResourceManager2* This) {
    return This->lpVtbl->Release(This);
}
/*** IResourceManager methods ***/
static FORCEINLINE HRESULT IResourceManager2_Enlist(IResourceManager2* This,ITransaction *pTransaction,ITransactionResourceAsync *pRes,XACTUOW *pUOW,LONG *pisoLevel,ITransactionEnlistmentAsync **ppEnlist) {
    return This->lpVtbl->Enlist(This,pTransaction,pRes,pUOW,pisoLevel,ppEnlist);
}
static FORCEINLINE HRESULT IResourceManager2_Reenlist(IResourceManager2* This,byte *pPrepInfo,ULONG cbPrepInfo,DWORD lTimeout,XACTSTAT *pXactStat) {
    return This->lpVtbl->Reenlist(This,pPrepInfo,cbPrepInfo,lTimeout,pXactStat);
}
static FORCEINLINE HRESULT IResourceManager2_ReenlistmentComplete(IResourceManager2* This) {
    return This->lpVtbl->ReenlistmentComplete(This);
}
static FORCEINLINE HRESULT IResourceManager2_GetDistributedTransactionManager(IResourceManager2* This,REFIID iid,void **ppvObject) {
    return This->lpVtbl->GetDistributedTransactionManager(This,iid,ppvObject);
}
/*** IResourceManager2 methods ***/
static FORCEINLINE HRESULT IResourceManager2_Enlist2(IResourceManager2* This,ITransaction *pTransaction,ITransactionResourceAsync *pResAsync,XACTUOW *pUOW,LONG *pisoLevel,XID *pXid,ITransactionEnlistmentAsync **ppEnlist) {
    return This->lpVtbl->Enlist2(This,pTransaction,pResAsync,pUOW,pisoLevel,pXid,ppEnlist);
}
static FORCEINLINE HRESULT IResourceManager2_Reenlist2(IResourceManager2* This,XID *pXid,DWORD dwTimeout,XACTSTAT *pXactStat) {
    return This->lpVtbl->Reenlist2(This,pXid,dwTimeout,pXactStat);
}
#endif
#endif

#endif


#endif  /* __IResourceManager2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXAConfig interface
 */
#ifndef __IXAConfig_INTERFACE_DEFINED__
#define __IXAConfig_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXAConfig, 0xc8a6e3a1, 0x9a8c, 0x11cf, 0xa3,0x08, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c8a6e3a1-9a8c-11cf-a308-00a0c905416e")
IXAConfig : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        GUID clsidHelperDll) = 0;

    virtual HRESULT STDMETHODCALLTYPE Terminate(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXAConfig, 0xc8a6e3a1, 0x9a8c, 0x11cf, 0xa3,0x08, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IXAConfigVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IXAConfig *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IXAConfig *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IXAConfig *This);

    /*** IXAConfig methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IXAConfig *This,
        GUID clsidHelperDll);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        IXAConfig *This);

    END_INTERFACE
} IXAConfigVtbl;

interface IXAConfig {
    CONST_VTBL IXAConfigVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXAConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXAConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXAConfig_Release(This) (This)->lpVtbl->Release(This)
/*** IXAConfig methods ***/
#define IXAConfig_Initialize(This,clsidHelperDll) (This)->lpVtbl->Initialize(This,clsidHelperDll)
#define IXAConfig_Terminate(This) (This)->lpVtbl->Terminate(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IXAConfig_QueryInterface(IXAConfig* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IXAConfig_AddRef(IXAConfig* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IXAConfig_Release(IXAConfig* This) {
    return This->lpVtbl->Release(This);
}
/*** IXAConfig methods ***/
static FORCEINLINE HRESULT IXAConfig_Initialize(IXAConfig* This,GUID clsidHelperDll) {
    return This->lpVtbl->Initialize(This,clsidHelperDll);
}
static FORCEINLINE HRESULT IXAConfig_Terminate(IXAConfig* This) {
    return This->lpVtbl->Terminate(This);
}
#endif
#endif

#endif


#endif  /* __IXAConfig_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IResourceManagerFactory interface
 */
#ifndef __IResourceManagerFactory_INTERFACE_DEFINED__
#define __IResourceManagerFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResourceManagerFactory, 0x13741d20, 0x87eb, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("13741d20-87eb-11ce-8081-0080c758527e")
IResourceManagerFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        GUID *pguidRM,
        CHAR *pszRMName,
        IResourceManagerSink *pIResMgrSink,
        IResourceManager **ppResMgr) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResourceManagerFactory, 0x13741d20, 0x87eb, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e)
#endif
#else
typedef struct IResourceManagerFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IResourceManagerFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IResourceManagerFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IResourceManagerFactory *This);

    /*** IResourceManagerFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        IResourceManagerFactory *This,
        GUID *pguidRM,
        CHAR *pszRMName,
        IResourceManagerSink *pIResMgrSink,
        IResourceManager **ppResMgr);

    END_INTERFACE
} IResourceManagerFactoryVtbl;

interface IResourceManagerFactory {
    CONST_VTBL IResourceManagerFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IResourceManagerFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceManagerFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceManagerFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceManagerFactory methods ***/
#define IResourceManagerFactory_Create(This,pguidRM,pszRMName,pIResMgrSink,ppResMgr) (This)->lpVtbl->Create(This,pguidRM,pszRMName,pIResMgrSink,ppResMgr)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IResourceManagerFactory_QueryInterface(IResourceManagerFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IResourceManagerFactory_AddRef(IResourceManagerFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IResourceManagerFactory_Release(IResourceManagerFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IResourceManagerFactory methods ***/
static FORCEINLINE HRESULT IResourceManagerFactory_Create(IResourceManagerFactory* This,GUID *pguidRM,CHAR *pszRMName,IResourceManagerSink *pIResMgrSink,IResourceManager **ppResMgr) {
    return This->lpVtbl->Create(This,pguidRM,pszRMName,pIResMgrSink,ppResMgr);
}
#endif
#endif

#endif


#endif  /* __IResourceManagerFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IResourceManagerFactory2 interface
 */
#ifndef __IResourceManagerFactory2_INTERFACE_DEFINED__
#define __IResourceManagerFactory2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResourceManagerFactory2, 0x6b369c21, 0xfbd2, 0x11d1, 0x8f,0x47, 0x00,0xc0,0x4f,0x8e,0xe5,0x7d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6b369c21-fbd2-11d1-8f47-00c04f8ee57d")
IResourceManagerFactory2 : public IResourceManagerFactory
{
    virtual HRESULT STDMETHODCALLTYPE CreateEx(
        GUID *pguidRM,
        CHAR *pszRMName,
        IResourceManagerSink *pIResMgrSink,
        REFIID riidRequested,
        void **ppvResMgr) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResourceManagerFactory2, 0x6b369c21, 0xfbd2, 0x11d1, 0x8f,0x47, 0x00,0xc0,0x4f,0x8e,0xe5,0x7d)
#endif
#else
typedef struct IResourceManagerFactory2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IResourceManagerFactory2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IResourceManagerFactory2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IResourceManagerFactory2 *This);

    /*** IResourceManagerFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        IResourceManagerFactory2 *This,
        GUID *pguidRM,
        CHAR *pszRMName,
        IResourceManagerSink *pIResMgrSink,
        IResourceManager **ppResMgr);

    /*** IResourceManagerFactory2 methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateEx)(
        IResourceManagerFactory2 *This,
        GUID *pguidRM,
        CHAR *pszRMName,
        IResourceManagerSink *pIResMgrSink,
        REFIID riidRequested,
        void **ppvResMgr);

    END_INTERFACE
} IResourceManagerFactory2Vtbl;

interface IResourceManagerFactory2 {
    CONST_VTBL IResourceManagerFactory2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IResourceManagerFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResourceManagerFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResourceManagerFactory2_Release(This) (This)->lpVtbl->Release(This)
/*** IResourceManagerFactory methods ***/
#define IResourceManagerFactory2_Create(This,pguidRM,pszRMName,pIResMgrSink,ppResMgr) (This)->lpVtbl->Create(This,pguidRM,pszRMName,pIResMgrSink,ppResMgr)
/*** IResourceManagerFactory2 methods ***/
#define IResourceManagerFactory2_CreateEx(This,pguidRM,pszRMName,pIResMgrSink,riidRequested,ppvResMgr) (This)->lpVtbl->CreateEx(This,pguidRM,pszRMName,pIResMgrSink,riidRequested,ppvResMgr)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IResourceManagerFactory2_QueryInterface(IResourceManagerFactory2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IResourceManagerFactory2_AddRef(IResourceManagerFactory2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IResourceManagerFactory2_Release(IResourceManagerFactory2* This) {
    return This->lpVtbl->Release(This);
}
/*** IResourceManagerFactory methods ***/
static FORCEINLINE HRESULT IResourceManagerFactory2_Create(IResourceManagerFactory2* This,GUID *pguidRM,CHAR *pszRMName,IResourceManagerSink *pIResMgrSink,IResourceManager **ppResMgr) {
    return This->lpVtbl->Create(This,pguidRM,pszRMName,pIResMgrSink,ppResMgr);
}
/*** IResourceManagerFactory2 methods ***/
static FORCEINLINE HRESULT IResourceManagerFactory2_CreateEx(IResourceManagerFactory2* This,GUID *pguidRM,CHAR *pszRMName,IResourceManagerSink *pIResMgrSink,REFIID riidRequested,void **ppvResMgr) {
    return This->lpVtbl->CreateEx(This,pguidRM,pszRMName,pIResMgrSink,riidRequested,ppvResMgr);
}
#endif
#endif

#endif


#endif  /* __IResourceManagerFactory2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IPrepareInfo interface
 */
#ifndef __IPrepareInfo_INTERFACE_DEFINED__
#define __IPrepareInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPrepareInfo, 0x80c7bfd0, 0x87ee, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("80c7bfd0-87ee-11ce-8081-0080c758527e")
IPrepareInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPrepareInfoSize(
        ULONG *pcbPrepInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPrepareInfo(
        byte *pPrepInfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPrepareInfo, 0x80c7bfd0, 0x87ee, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e)
#endif
#else
typedef struct IPrepareInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPrepareInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPrepareInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPrepareInfo *This);

    /*** IPrepareInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPrepareInfoSize)(
        IPrepareInfo *This,
        ULONG *pcbPrepInfo);

    HRESULT (STDMETHODCALLTYPE *GetPrepareInfo)(
        IPrepareInfo *This,
        byte *pPrepInfo);

    END_INTERFACE
} IPrepareInfoVtbl;

interface IPrepareInfo {
    CONST_VTBL IPrepareInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPrepareInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPrepareInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPrepareInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IPrepareInfo methods ***/
#define IPrepareInfo_GetPrepareInfoSize(This,pcbPrepInfo) (This)->lpVtbl->GetPrepareInfoSize(This,pcbPrepInfo)
#define IPrepareInfo_GetPrepareInfo(This,pPrepInfo) (This)->lpVtbl->GetPrepareInfo(This,pPrepInfo)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPrepareInfo_QueryInterface(IPrepareInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPrepareInfo_AddRef(IPrepareInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPrepareInfo_Release(IPrepareInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IPrepareInfo methods ***/
static FORCEINLINE HRESULT IPrepareInfo_GetPrepareInfoSize(IPrepareInfo* This,ULONG *pcbPrepInfo) {
    return This->lpVtbl->GetPrepareInfoSize(This,pcbPrepInfo);
}
static FORCEINLINE HRESULT IPrepareInfo_GetPrepareInfo(IPrepareInfo* This,byte *pPrepInfo) {
    return This->lpVtbl->GetPrepareInfo(This,pPrepInfo);
}
#endif
#endif

#endif


#endif  /* __IPrepareInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IPrepareInfo2 interface
 */
#ifndef __IPrepareInfo2_INTERFACE_DEFINED__
#define __IPrepareInfo2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPrepareInfo2, 0x5fab2547, 0x9779, 0x11d1, 0xb8,0x86, 0x00,0xc0,0x4f,0xb9,0x61,0x8a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5fab2547-9779-11d1-b886-00c04fb9618a")
IPrepareInfo2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPrepareInfoSize(
        ULONG *pcbPrepInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPrepareInfo(
        ULONG cbPrepareInfo,
        byte *pPrepInfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPrepareInfo2, 0x5fab2547, 0x9779, 0x11d1, 0xb8,0x86, 0x00,0xc0,0x4f,0xb9,0x61,0x8a)
#endif
#else
typedef struct IPrepareInfo2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPrepareInfo2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPrepareInfo2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPrepareInfo2 *This);

    /*** IPrepareInfo2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPrepareInfoSize)(
        IPrepareInfo2 *This,
        ULONG *pcbPrepInfo);

    HRESULT (STDMETHODCALLTYPE *GetPrepareInfo)(
        IPrepareInfo2 *This,
        ULONG cbPrepareInfo,
        byte *pPrepInfo);

    END_INTERFACE
} IPrepareInfo2Vtbl;

interface IPrepareInfo2 {
    CONST_VTBL IPrepareInfo2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPrepareInfo2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPrepareInfo2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPrepareInfo2_Release(This) (This)->lpVtbl->Release(This)
/*** IPrepareInfo2 methods ***/
#define IPrepareInfo2_GetPrepareInfoSize(This,pcbPrepInfo) (This)->lpVtbl->GetPrepareInfoSize(This,pcbPrepInfo)
#define IPrepareInfo2_GetPrepareInfo(This,cbPrepareInfo,pPrepInfo) (This)->lpVtbl->GetPrepareInfo(This,cbPrepareInfo,pPrepInfo)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPrepareInfo2_QueryInterface(IPrepareInfo2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPrepareInfo2_AddRef(IPrepareInfo2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPrepareInfo2_Release(IPrepareInfo2* This) {
    return This->lpVtbl->Release(This);
}
/*** IPrepareInfo2 methods ***/
static FORCEINLINE HRESULT IPrepareInfo2_GetPrepareInfoSize(IPrepareInfo2* This,ULONG *pcbPrepInfo) {
    return This->lpVtbl->GetPrepareInfoSize(This,pcbPrepInfo);
}
static FORCEINLINE HRESULT IPrepareInfo2_GetPrepareInfo(IPrepareInfo2* This,ULONG cbPrepareInfo,byte *pPrepInfo) {
    return This->lpVtbl->GetPrepareInfo(This,cbPrepareInfo,pPrepInfo);
}
#endif
#endif

#endif


#endif  /* __IPrepareInfo2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IGetDispenser interface
 */
#ifndef __IGetDispenser_INTERFACE_DEFINED__
#define __IGetDispenser_INTERFACE_DEFINED__

DEFINE_GUID(IID_IGetDispenser, 0xc23cc370, 0x87ef, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c23cc370-87ef-11ce-8081-0080c758527e")
IGetDispenser : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDispenser(
        REFIID iid,
        void **ppvObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IGetDispenser, 0xc23cc370, 0x87ef, 0x11ce, 0x80,0x81, 0x00,0x80,0xc7,0x58,0x52,0x7e)
#endif
#else
typedef struct IGetDispenserVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IGetDispenser *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IGetDispenser *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IGetDispenser *This);

    /*** IGetDispenser methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDispenser)(
        IGetDispenser *This,
        REFIID iid,
        void **ppvObject);

    END_INTERFACE
} IGetDispenserVtbl;

interface IGetDispenser {
    CONST_VTBL IGetDispenserVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IGetDispenser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGetDispenser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGetDispenser_Release(This) (This)->lpVtbl->Release(This)
/*** IGetDispenser methods ***/
#define IGetDispenser_GetDispenser(This,iid,ppvObject) (This)->lpVtbl->GetDispenser(This,iid,ppvObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IGetDispenser_QueryInterface(IGetDispenser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IGetDispenser_AddRef(IGetDispenser* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IGetDispenser_Release(IGetDispenser* This) {
    return This->lpVtbl->Release(This);
}
/*** IGetDispenser methods ***/
static FORCEINLINE HRESULT IGetDispenser_GetDispenser(IGetDispenser* This,REFIID iid,void **ppvObject) {
    return This->lpVtbl->GetDispenser(This,iid,ppvObject);
}
#endif
#endif

#endif


#endif  /* __IGetDispenser_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionVoterBallotAsync2 interface
 */
#ifndef __ITransactionVoterBallotAsync2_INTERFACE_DEFINED__
#define __ITransactionVoterBallotAsync2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionVoterBallotAsync2, 0x5433376c, 0x414d, 0x11d3, 0xb2,0x06, 0x00,0xc0,0x4f,0xc2,0xf3,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5433376c-414d-11d3-b206-00c04fc2f3ef")
ITransactionVoterBallotAsync2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VoteRequestDone(
        HRESULT hr,
        BOID *pboidReason) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionVoterBallotAsync2, 0x5433376c, 0x414d, 0x11d3, 0xb2,0x06, 0x00,0xc0,0x4f,0xc2,0xf3,0xef)
#endif
#else
typedef struct ITransactionVoterBallotAsync2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionVoterBallotAsync2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionVoterBallotAsync2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionVoterBallotAsync2 *This);

    /*** ITransactionVoterBallotAsync2 methods ***/
    HRESULT (STDMETHODCALLTYPE *VoteRequestDone)(
        ITransactionVoterBallotAsync2 *This,
        HRESULT hr,
        BOID *pboidReason);

    END_INTERFACE
} ITransactionVoterBallotAsync2Vtbl;

interface ITransactionVoterBallotAsync2 {
    CONST_VTBL ITransactionVoterBallotAsync2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionVoterBallotAsync2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionVoterBallotAsync2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionVoterBallotAsync2_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionVoterBallotAsync2 methods ***/
#define ITransactionVoterBallotAsync2_VoteRequestDone(This,hr,pboidReason) (This)->lpVtbl->VoteRequestDone(This,hr,pboidReason)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionVoterBallotAsync2_QueryInterface(ITransactionVoterBallotAsync2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionVoterBallotAsync2_AddRef(ITransactionVoterBallotAsync2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionVoterBallotAsync2_Release(ITransactionVoterBallotAsync2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionVoterBallotAsync2 methods ***/
static FORCEINLINE HRESULT ITransactionVoterBallotAsync2_VoteRequestDone(ITransactionVoterBallotAsync2* This,HRESULT hr,BOID *pboidReason) {
    return This->lpVtbl->VoteRequestDone(This,hr,pboidReason);
}
#endif
#endif

#endif


#endif  /* __ITransactionVoterBallotAsync2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionVoterNotifyAsync2 interface
 */
#ifndef __ITransactionVoterNotifyAsync2_INTERFACE_DEFINED__
#define __ITransactionVoterNotifyAsync2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionVoterNotifyAsync2, 0x5433376b, 0x414d, 0x11d3, 0xb2,0x06, 0x00,0xc0,0x4f,0xc2,0xf3,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5433376b-414d-11d3-b206-00c04fc2f3ef")
ITransactionVoterNotifyAsync2 : public ITransactionOutcomeEvents
{
    virtual HRESULT STDMETHODCALLTYPE VoteRequest(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionVoterNotifyAsync2, 0x5433376b, 0x414d, 0x11d3, 0xb2,0x06, 0x00,0xc0,0x4f,0xc2,0xf3,0xef)
#endif
#else
typedef struct ITransactionVoterNotifyAsync2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionVoterNotifyAsync2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionVoterNotifyAsync2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionVoterNotifyAsync2 *This);

    /*** ITransactionOutcomeEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *Committed)(
        ITransactionVoterNotifyAsync2 *This,
        BOOL fRetaining,
        XACTUOW *pNewUOW,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *Aborted)(
        ITransactionVoterNotifyAsync2 *This,
        BOID *pboidReason,
        BOOL fRetaining,
        XACTUOW *pNewUOW,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *HeuristicDecision)(
        ITransactionVoterNotifyAsync2 *This,
        DWORD dwDecision,
        BOID *pboidReason,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *Indoubt)(
        ITransactionVoterNotifyAsync2 *This);

    /*** ITransactionVoterNotifyAsync2 methods ***/
    HRESULT (STDMETHODCALLTYPE *VoteRequest)(
        ITransactionVoterNotifyAsync2 *This);

    END_INTERFACE
} ITransactionVoterNotifyAsync2Vtbl;

interface ITransactionVoterNotifyAsync2 {
    CONST_VTBL ITransactionVoterNotifyAsync2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionVoterNotifyAsync2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionVoterNotifyAsync2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionVoterNotifyAsync2_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionOutcomeEvents methods ***/
#define ITransactionVoterNotifyAsync2_Committed(This,fRetaining,pNewUOW,hr) (This)->lpVtbl->Committed(This,fRetaining,pNewUOW,hr)
#define ITransactionVoterNotifyAsync2_Aborted(This,pboidReason,fRetaining,pNewUOW,hr) (This)->lpVtbl->Aborted(This,pboidReason,fRetaining,pNewUOW,hr)
#define ITransactionVoterNotifyAsync2_HeuristicDecision(This,dwDecision,pboidReason,hr) (This)->lpVtbl->HeuristicDecision(This,dwDecision,pboidReason,hr)
#define ITransactionVoterNotifyAsync2_Indoubt(This) (This)->lpVtbl->Indoubt(This)
/*** ITransactionVoterNotifyAsync2 methods ***/
#define ITransactionVoterNotifyAsync2_VoteRequest(This) (This)->lpVtbl->VoteRequest(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionVoterNotifyAsync2_QueryInterface(ITransactionVoterNotifyAsync2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionVoterNotifyAsync2_AddRef(ITransactionVoterNotifyAsync2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionVoterNotifyAsync2_Release(ITransactionVoterNotifyAsync2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionOutcomeEvents methods ***/
static FORCEINLINE HRESULT ITransactionVoterNotifyAsync2_Committed(ITransactionVoterNotifyAsync2* This,BOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr) {
    return This->lpVtbl->Committed(This,fRetaining,pNewUOW,hr);
}
static FORCEINLINE HRESULT ITransactionVoterNotifyAsync2_Aborted(ITransactionVoterNotifyAsync2* This,BOID *pboidReason,BOOL fRetaining,XACTUOW *pNewUOW,HRESULT hr) {
    return This->lpVtbl->Aborted(This,pboidReason,fRetaining,pNewUOW,hr);
}
static FORCEINLINE HRESULT ITransactionVoterNotifyAsync2_HeuristicDecision(ITransactionVoterNotifyAsync2* This,DWORD dwDecision,BOID *pboidReason,HRESULT hr) {
    return This->lpVtbl->HeuristicDecision(This,dwDecision,pboidReason,hr);
}
static FORCEINLINE HRESULT ITransactionVoterNotifyAsync2_Indoubt(ITransactionVoterNotifyAsync2* This) {
    return This->lpVtbl->Indoubt(This);
}
/*** ITransactionVoterNotifyAsync2 methods ***/
static FORCEINLINE HRESULT ITransactionVoterNotifyAsync2_VoteRequest(ITransactionVoterNotifyAsync2* This) {
    return This->lpVtbl->VoteRequest(This);
}
#endif
#endif

#endif


#endif  /* __ITransactionVoterNotifyAsync2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionVoterFactory2 interface
 */
#ifndef __ITransactionVoterFactory2_INTERFACE_DEFINED__
#define __ITransactionVoterFactory2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionVoterFactory2, 0x5433376a, 0x414d, 0x11d3, 0xb2,0x06, 0x00,0xc0,0x4f,0xc2,0xf3,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5433376a-414d-11d3-b206-00c04fc2f3ef")
ITransactionVoterFactory2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        ITransaction *pTransaction,
        ITransactionVoterNotifyAsync2 *pVoterNotify,
        ITransactionVoterBallotAsync2 **ppVoterBallot) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionVoterFactory2, 0x5433376a, 0x414d, 0x11d3, 0xb2,0x06, 0x00,0xc0,0x4f,0xc2,0xf3,0xef)
#endif
#else
typedef struct ITransactionVoterFactory2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionVoterFactory2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionVoterFactory2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionVoterFactory2 *This);

    /*** ITransactionVoterFactory2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        ITransactionVoterFactory2 *This,
        ITransaction *pTransaction,
        ITransactionVoterNotifyAsync2 *pVoterNotify,
        ITransactionVoterBallotAsync2 **ppVoterBallot);

    END_INTERFACE
} ITransactionVoterFactory2Vtbl;

interface ITransactionVoterFactory2 {
    CONST_VTBL ITransactionVoterFactory2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionVoterFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionVoterFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionVoterFactory2_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionVoterFactory2 methods ***/
#define ITransactionVoterFactory2_Create(This,pTransaction,pVoterNotify,ppVoterBallot) (This)->lpVtbl->Create(This,pTransaction,pVoterNotify,ppVoterBallot)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionVoterFactory2_QueryInterface(ITransactionVoterFactory2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionVoterFactory2_AddRef(ITransactionVoterFactory2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionVoterFactory2_Release(ITransactionVoterFactory2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionVoterFactory2 methods ***/
static FORCEINLINE HRESULT ITransactionVoterFactory2_Create(ITransactionVoterFactory2* This,ITransaction *pTransaction,ITransactionVoterNotifyAsync2 *pVoterNotify,ITransactionVoterBallotAsync2 **ppVoterBallot) {
    return This->lpVtbl->Create(This,pTransaction,pVoterNotify,ppVoterBallot);
}
#endif
#endif

#endif


#endif  /* __ITransactionVoterFactory2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionPhase0EnlistmentAsync interface
 */
#ifndef __ITransactionPhase0EnlistmentAsync_INTERFACE_DEFINED__
#define __ITransactionPhase0EnlistmentAsync_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionPhase0EnlistmentAsync, 0x82dc88e1, 0xa954, 0x11d1, 0x8f,0x88, 0x00,0x60,0x08,0x95,0xe7,0xd5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("82dc88e1-a954-11d1-8f88-00600895e7d5")
ITransactionPhase0EnlistmentAsync : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Enable(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForEnlistment(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Phase0Done(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unenlist(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTransaction(
        ITransaction **ppITransaction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionPhase0EnlistmentAsync, 0x82dc88e1, 0xa954, 0x11d1, 0x8f,0x88, 0x00,0x60,0x08,0x95,0xe7,0xd5)
#endif
#else
typedef struct ITransactionPhase0EnlistmentAsyncVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionPhase0EnlistmentAsync *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionPhase0EnlistmentAsync *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionPhase0EnlistmentAsync *This);

    /*** ITransactionPhase0EnlistmentAsync methods ***/
    HRESULT (STDMETHODCALLTYPE *Enable)(
        ITransactionPhase0EnlistmentAsync *This);

    HRESULT (STDMETHODCALLTYPE *WaitForEnlistment)(
        ITransactionPhase0EnlistmentAsync *This);

    HRESULT (STDMETHODCALLTYPE *Phase0Done)(
        ITransactionPhase0EnlistmentAsync *This);

    HRESULT (STDMETHODCALLTYPE *Unenlist)(
        ITransactionPhase0EnlistmentAsync *This);

    HRESULT (STDMETHODCALLTYPE *GetTransaction)(
        ITransactionPhase0EnlistmentAsync *This,
        ITransaction **ppITransaction);

    END_INTERFACE
} ITransactionPhase0EnlistmentAsyncVtbl;

interface ITransactionPhase0EnlistmentAsync {
    CONST_VTBL ITransactionPhase0EnlistmentAsyncVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionPhase0EnlistmentAsync_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionPhase0EnlistmentAsync_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionPhase0EnlistmentAsync_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionPhase0EnlistmentAsync methods ***/
#define ITransactionPhase0EnlistmentAsync_Enable(This) (This)->lpVtbl->Enable(This)
#define ITransactionPhase0EnlistmentAsync_WaitForEnlistment(This) (This)->lpVtbl->WaitForEnlistment(This)
#define ITransactionPhase0EnlistmentAsync_Phase0Done(This) (This)->lpVtbl->Phase0Done(This)
#define ITransactionPhase0EnlistmentAsync_Unenlist(This) (This)->lpVtbl->Unenlist(This)
#define ITransactionPhase0EnlistmentAsync_GetTransaction(This,ppITransaction) (This)->lpVtbl->GetTransaction(This,ppITransaction)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionPhase0EnlistmentAsync_QueryInterface(ITransactionPhase0EnlistmentAsync* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionPhase0EnlistmentAsync_AddRef(ITransactionPhase0EnlistmentAsync* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionPhase0EnlistmentAsync_Release(ITransactionPhase0EnlistmentAsync* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionPhase0EnlistmentAsync methods ***/
static FORCEINLINE HRESULT ITransactionPhase0EnlistmentAsync_Enable(ITransactionPhase0EnlistmentAsync* This) {
    return This->lpVtbl->Enable(This);
}
static FORCEINLINE HRESULT ITransactionPhase0EnlistmentAsync_WaitForEnlistment(ITransactionPhase0EnlistmentAsync* This) {
    return This->lpVtbl->WaitForEnlistment(This);
}
static FORCEINLINE HRESULT ITransactionPhase0EnlistmentAsync_Phase0Done(ITransactionPhase0EnlistmentAsync* This) {
    return This->lpVtbl->Phase0Done(This);
}
static FORCEINLINE HRESULT ITransactionPhase0EnlistmentAsync_Unenlist(ITransactionPhase0EnlistmentAsync* This) {
    return This->lpVtbl->Unenlist(This);
}
static FORCEINLINE HRESULT ITransactionPhase0EnlistmentAsync_GetTransaction(ITransactionPhase0EnlistmentAsync* This,ITransaction **ppITransaction) {
    return This->lpVtbl->GetTransaction(This,ppITransaction);
}
#endif
#endif

#endif


#endif  /* __ITransactionPhase0EnlistmentAsync_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionPhase0NotifyAsync interface
 */
#ifndef __ITransactionPhase0NotifyAsync_INTERFACE_DEFINED__
#define __ITransactionPhase0NotifyAsync_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionPhase0NotifyAsync, 0xef081809, 0x0c76, 0x11d2, 0x87,0xa6, 0x00,0xc0,0x4f,0x99,0x0f,0x34);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ef081809-0c76-11d2-87a6-00c04f990f34")
ITransactionPhase0NotifyAsync : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Phase0Request(
        BOOL fAbortingHint) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnlistCompleted(
        HRESULT status) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionPhase0NotifyAsync, 0xef081809, 0x0c76, 0x11d2, 0x87,0xa6, 0x00,0xc0,0x4f,0x99,0x0f,0x34)
#endif
#else
typedef struct ITransactionPhase0NotifyAsyncVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionPhase0NotifyAsync *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionPhase0NotifyAsync *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionPhase0NotifyAsync *This);

    /*** ITransactionPhase0NotifyAsync methods ***/
    HRESULT (STDMETHODCALLTYPE *Phase0Request)(
        ITransactionPhase0NotifyAsync *This,
        BOOL fAbortingHint);

    HRESULT (STDMETHODCALLTYPE *EnlistCompleted)(
        ITransactionPhase0NotifyAsync *This,
        HRESULT status);

    END_INTERFACE
} ITransactionPhase0NotifyAsyncVtbl;

interface ITransactionPhase0NotifyAsync {
    CONST_VTBL ITransactionPhase0NotifyAsyncVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionPhase0NotifyAsync_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionPhase0NotifyAsync_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionPhase0NotifyAsync_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionPhase0NotifyAsync methods ***/
#define ITransactionPhase0NotifyAsync_Phase0Request(This,fAbortingHint) (This)->lpVtbl->Phase0Request(This,fAbortingHint)
#define ITransactionPhase0NotifyAsync_EnlistCompleted(This,status) (This)->lpVtbl->EnlistCompleted(This,status)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionPhase0NotifyAsync_QueryInterface(ITransactionPhase0NotifyAsync* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionPhase0NotifyAsync_AddRef(ITransactionPhase0NotifyAsync* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionPhase0NotifyAsync_Release(ITransactionPhase0NotifyAsync* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionPhase0NotifyAsync methods ***/
static FORCEINLINE HRESULT ITransactionPhase0NotifyAsync_Phase0Request(ITransactionPhase0NotifyAsync* This,BOOL fAbortingHint) {
    return This->lpVtbl->Phase0Request(This,fAbortingHint);
}
static FORCEINLINE HRESULT ITransactionPhase0NotifyAsync_EnlistCompleted(ITransactionPhase0NotifyAsync* This,HRESULT status) {
    return This->lpVtbl->EnlistCompleted(This,status);
}
#endif
#endif

#endif


#endif  /* __ITransactionPhase0NotifyAsync_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionPhase0Factory interface
 */
#ifndef __ITransactionPhase0Factory_INTERFACE_DEFINED__
#define __ITransactionPhase0Factory_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionPhase0Factory, 0x82dc88e0, 0xa954, 0x11d1, 0x8f,0x88, 0x00,0x60,0x08,0x95,0xe7,0xd5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("82dc88e0-a954-11d1-8f88-00600895e7d5")
ITransactionPhase0Factory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        ITransactionPhase0NotifyAsync *pPhase0Notify,
        ITransactionPhase0EnlistmentAsync **ppPhase0Enlistment) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionPhase0Factory, 0x82dc88e0, 0xa954, 0x11d1, 0x8f,0x88, 0x00,0x60,0x08,0x95,0xe7,0xd5)
#endif
#else
typedef struct ITransactionPhase0FactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionPhase0Factory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionPhase0Factory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionPhase0Factory *This);

    /*** ITransactionPhase0Factory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        ITransactionPhase0Factory *This,
        ITransactionPhase0NotifyAsync *pPhase0Notify,
        ITransactionPhase0EnlistmentAsync **ppPhase0Enlistment);

    END_INTERFACE
} ITransactionPhase0FactoryVtbl;

interface ITransactionPhase0Factory {
    CONST_VTBL ITransactionPhase0FactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionPhase0Factory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionPhase0Factory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionPhase0Factory_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionPhase0Factory methods ***/
#define ITransactionPhase0Factory_Create(This,pPhase0Notify,ppPhase0Enlistment) (This)->lpVtbl->Create(This,pPhase0Notify,ppPhase0Enlistment)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionPhase0Factory_QueryInterface(ITransactionPhase0Factory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionPhase0Factory_AddRef(ITransactionPhase0Factory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionPhase0Factory_Release(ITransactionPhase0Factory* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionPhase0Factory methods ***/
static FORCEINLINE HRESULT ITransactionPhase0Factory_Create(ITransactionPhase0Factory* This,ITransactionPhase0NotifyAsync *pPhase0Notify,ITransactionPhase0EnlistmentAsync **ppPhase0Enlistment) {
    return This->lpVtbl->Create(This,pPhase0Notify,ppPhase0Enlistment);
}
#endif
#endif

#endif


#endif  /* __ITransactionPhase0Factory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionTransmitter interface
 */
#ifndef __ITransactionTransmitter_INTERFACE_DEFINED__
#define __ITransactionTransmitter_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionTransmitter, 0x59313e01, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("59313e01-b36c-11cf-a539-00aa006887c3")
ITransactionTransmitter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Set(
        ITransaction *pTransaction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropagationTokenSize(
        ULONG *pcbToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE MarshalPropagationToken(
        ULONG cbToken,
        byte *rgbToken,
        ULONG *pcbUsed) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnmarshalReturnToken(
        ULONG cbReturnToken,
        byte *rgbReturnToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionTransmitter, 0x59313e01, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3)
#endif
#else
typedef struct ITransactionTransmitterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionTransmitter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionTransmitter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionTransmitter *This);

    /*** ITransactionTransmitter methods ***/
    HRESULT (STDMETHODCALLTYPE *Set)(
        ITransactionTransmitter *This,
        ITransaction *pTransaction);

    HRESULT (STDMETHODCALLTYPE *GetPropagationTokenSize)(
        ITransactionTransmitter *This,
        ULONG *pcbToken);

    HRESULT (STDMETHODCALLTYPE *MarshalPropagationToken)(
        ITransactionTransmitter *This,
        ULONG cbToken,
        byte *rgbToken,
        ULONG *pcbUsed);

    HRESULT (STDMETHODCALLTYPE *UnmarshalReturnToken)(
        ITransactionTransmitter *This,
        ULONG cbReturnToken,
        byte *rgbReturnToken);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ITransactionTransmitter *This);

    END_INTERFACE
} ITransactionTransmitterVtbl;

interface ITransactionTransmitter {
    CONST_VTBL ITransactionTransmitterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionTransmitter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionTransmitter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionTransmitter_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionTransmitter methods ***/
#define ITransactionTransmitter_Set(This,pTransaction) (This)->lpVtbl->Set(This,pTransaction)
#define ITransactionTransmitter_GetPropagationTokenSize(This,pcbToken) (This)->lpVtbl->GetPropagationTokenSize(This,pcbToken)
#define ITransactionTransmitter_MarshalPropagationToken(This,cbToken,rgbToken,pcbUsed) (This)->lpVtbl->MarshalPropagationToken(This,cbToken,rgbToken,pcbUsed)
#define ITransactionTransmitter_UnmarshalReturnToken(This,cbReturnToken,rgbReturnToken) (This)->lpVtbl->UnmarshalReturnToken(This,cbReturnToken,rgbReturnToken)
#define ITransactionTransmitter_Reset(This) (This)->lpVtbl->Reset(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionTransmitter_QueryInterface(ITransactionTransmitter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionTransmitter_AddRef(ITransactionTransmitter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionTransmitter_Release(ITransactionTransmitter* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionTransmitter methods ***/
static FORCEINLINE HRESULT ITransactionTransmitter_Set(ITransactionTransmitter* This,ITransaction *pTransaction) {
    return This->lpVtbl->Set(This,pTransaction);
}
static FORCEINLINE HRESULT ITransactionTransmitter_GetPropagationTokenSize(ITransactionTransmitter* This,ULONG *pcbToken) {
    return This->lpVtbl->GetPropagationTokenSize(This,pcbToken);
}
static FORCEINLINE HRESULT ITransactionTransmitter_MarshalPropagationToken(ITransactionTransmitter* This,ULONG cbToken,byte *rgbToken,ULONG *pcbUsed) {
    return This->lpVtbl->MarshalPropagationToken(This,cbToken,rgbToken,pcbUsed);
}
static FORCEINLINE HRESULT ITransactionTransmitter_UnmarshalReturnToken(ITransactionTransmitter* This,ULONG cbReturnToken,byte *rgbReturnToken) {
    return This->lpVtbl->UnmarshalReturnToken(This,cbReturnToken,rgbReturnToken);
}
static FORCEINLINE HRESULT ITransactionTransmitter_Reset(ITransactionTransmitter* This) {
    return This->lpVtbl->Reset(This);
}
#endif
#endif

#endif


#endif  /* __ITransactionTransmitter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionTransmitterFactory interface
 */
#ifndef __ITransactionTransmitterFactory_INTERFACE_DEFINED__
#define __ITransactionTransmitterFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionTransmitterFactory, 0x59313e00, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("59313e00-b36c-11cf-a539-00aa006887c3")
ITransactionTransmitterFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        ITransactionTransmitter **ppTransmitter) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionTransmitterFactory, 0x59313e00, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3)
#endif
#else
typedef struct ITransactionTransmitterFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionTransmitterFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionTransmitterFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionTransmitterFactory *This);

    /*** ITransactionTransmitterFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        ITransactionTransmitterFactory *This,
        ITransactionTransmitter **ppTransmitter);

    END_INTERFACE
} ITransactionTransmitterFactoryVtbl;

interface ITransactionTransmitterFactory {
    CONST_VTBL ITransactionTransmitterFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionTransmitterFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionTransmitterFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionTransmitterFactory_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionTransmitterFactory methods ***/
#define ITransactionTransmitterFactory_Create(This,ppTransmitter) (This)->lpVtbl->Create(This,ppTransmitter)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionTransmitterFactory_QueryInterface(ITransactionTransmitterFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionTransmitterFactory_AddRef(ITransactionTransmitterFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionTransmitterFactory_Release(ITransactionTransmitterFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionTransmitterFactory methods ***/
static FORCEINLINE HRESULT ITransactionTransmitterFactory_Create(ITransactionTransmitterFactory* This,ITransactionTransmitter **ppTransmitter) {
    return This->lpVtbl->Create(This,ppTransmitter);
}
#endif
#endif

#endif


#endif  /* __ITransactionTransmitterFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionReceiver interface
 */
#ifndef __ITransactionReceiver_INTERFACE_DEFINED__
#define __ITransactionReceiver_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionReceiver, 0x59313e03, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("59313e03-b36c-11cf-a539-00aa006887c3")
ITransactionReceiver : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE UnmarshalPropagationToken(
        ULONG cbToken,
        byte *rgbToken,
        ITransaction **ppTransaction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReturnTokenSize(
        ULONG *pcbReturnToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE MarshalReturnToken(
        ULONG cbReturnToken,
        byte *rgbReturnToken,
        ULONG *pcbUsed) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionReceiver, 0x59313e03, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3)
#endif
#else
typedef struct ITransactionReceiverVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionReceiver *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionReceiver *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionReceiver *This);

    /*** ITransactionReceiver methods ***/
    HRESULT (STDMETHODCALLTYPE *UnmarshalPropagationToken)(
        ITransactionReceiver *This,
        ULONG cbToken,
        byte *rgbToken,
        ITransaction **ppTransaction);

    HRESULT (STDMETHODCALLTYPE *GetReturnTokenSize)(
        ITransactionReceiver *This,
        ULONG *pcbReturnToken);

    HRESULT (STDMETHODCALLTYPE *MarshalReturnToken)(
        ITransactionReceiver *This,
        ULONG cbReturnToken,
        byte *rgbReturnToken,
        ULONG *pcbUsed);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ITransactionReceiver *This);

    END_INTERFACE
} ITransactionReceiverVtbl;

interface ITransactionReceiver {
    CONST_VTBL ITransactionReceiverVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionReceiver_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionReceiver_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionReceiver_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionReceiver methods ***/
#define ITransactionReceiver_UnmarshalPropagationToken(This,cbToken,rgbToken,ppTransaction) (This)->lpVtbl->UnmarshalPropagationToken(This,cbToken,rgbToken,ppTransaction)
#define ITransactionReceiver_GetReturnTokenSize(This,pcbReturnToken) (This)->lpVtbl->GetReturnTokenSize(This,pcbReturnToken)
#define ITransactionReceiver_MarshalReturnToken(This,cbReturnToken,rgbReturnToken,pcbUsed) (This)->lpVtbl->MarshalReturnToken(This,cbReturnToken,rgbReturnToken,pcbUsed)
#define ITransactionReceiver_Reset(This) (This)->lpVtbl->Reset(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionReceiver_QueryInterface(ITransactionReceiver* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionReceiver_AddRef(ITransactionReceiver* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionReceiver_Release(ITransactionReceiver* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionReceiver methods ***/
static FORCEINLINE HRESULT ITransactionReceiver_UnmarshalPropagationToken(ITransactionReceiver* This,ULONG cbToken,byte *rgbToken,ITransaction **ppTransaction) {
    return This->lpVtbl->UnmarshalPropagationToken(This,cbToken,rgbToken,ppTransaction);
}
static FORCEINLINE HRESULT ITransactionReceiver_GetReturnTokenSize(ITransactionReceiver* This,ULONG *pcbReturnToken) {
    return This->lpVtbl->GetReturnTokenSize(This,pcbReturnToken);
}
static FORCEINLINE HRESULT ITransactionReceiver_MarshalReturnToken(ITransactionReceiver* This,ULONG cbReturnToken,byte *rgbReturnToken,ULONG *pcbUsed) {
    return This->lpVtbl->MarshalReturnToken(This,cbReturnToken,rgbReturnToken,pcbUsed);
}
static FORCEINLINE HRESULT ITransactionReceiver_Reset(ITransactionReceiver* This) {
    return This->lpVtbl->Reset(This);
}
#endif
#endif

#endif


#endif  /* __ITransactionReceiver_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransactionReceiverFactory interface
 */
#ifndef __ITransactionReceiverFactory_INTERFACE_DEFINED__
#define __ITransactionReceiverFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransactionReceiverFactory, 0x59313e02, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("59313e02-b36c-11cf-a539-00aa006887c3")
ITransactionReceiverFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        ITransactionReceiver **ppReceiver) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransactionReceiverFactory, 0x59313e02, 0xb36c, 0x11cf, 0xa5,0x39, 0x00,0xaa,0x00,0x68,0x87,0xc3)
#endif
#else
typedef struct ITransactionReceiverFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransactionReceiverFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransactionReceiverFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransactionReceiverFactory *This);

    /*** ITransactionReceiverFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        ITransactionReceiverFactory *This,
        ITransactionReceiver **ppReceiver);

    END_INTERFACE
} ITransactionReceiverFactoryVtbl;

interface ITransactionReceiverFactory {
    CONST_VTBL ITransactionReceiverFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransactionReceiverFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransactionReceiverFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransactionReceiverFactory_Release(This) (This)->lpVtbl->Release(This)
/*** ITransactionReceiverFactory methods ***/
#define ITransactionReceiverFactory_Create(This,ppReceiver) (This)->lpVtbl->Create(This,ppReceiver)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransactionReceiverFactory_QueryInterface(ITransactionReceiverFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransactionReceiverFactory_AddRef(ITransactionReceiverFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransactionReceiverFactory_Release(ITransactionReceiverFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransactionReceiverFactory methods ***/
static FORCEINLINE HRESULT ITransactionReceiverFactory_Create(ITransactionReceiverFactory* This,ITransactionReceiver **ppReceiver) {
    return This->lpVtbl->Create(This,ppReceiver);
}
#endif
#endif

#endif


#endif  /* __ITransactionReceiverFactory_INTERFACE_DEFINED__ */

typedef struct _ProxyConfigParams {
    WORD wcThreadsMax;
} PROXY_CONFIG_PARAMS;
/*****************************************************************************
 * IDtcLuConfigure interface
 */
#ifndef __IDtcLuConfigure_INTERFACE_DEFINED__
#define __IDtcLuConfigure_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuConfigure, 0x4131e760, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e760-1aea-11d0-944b-00a0c905416e")
IDtcLuConfigure : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Add(
        byte *pucLuPair,
        DWORD cbLuPair) = 0;

    virtual HRESULT STDMETHODCALLTYPE Delete(
        byte *pucLuPair,
        DWORD cbLuPair) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuConfigure, 0x4131e760, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuConfigureVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuConfigure *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuConfigure *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuConfigure *This);

    /*** IDtcLuConfigure methods ***/
    HRESULT (STDMETHODCALLTYPE *Add)(
        IDtcLuConfigure *This,
        byte *pucLuPair,
        DWORD cbLuPair);

    HRESULT (STDMETHODCALLTYPE *Delete)(
        IDtcLuConfigure *This,
        byte *pucLuPair,
        DWORD cbLuPair);

    END_INTERFACE
} IDtcLuConfigureVtbl;

interface IDtcLuConfigure {
    CONST_VTBL IDtcLuConfigureVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuConfigure_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuConfigure_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuConfigure_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuConfigure methods ***/
#define IDtcLuConfigure_Add(This,pucLuPair,cbLuPair) (This)->lpVtbl->Add(This,pucLuPair,cbLuPair)
#define IDtcLuConfigure_Delete(This,pucLuPair,cbLuPair) (This)->lpVtbl->Delete(This,pucLuPair,cbLuPair)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuConfigure_QueryInterface(IDtcLuConfigure* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuConfigure_AddRef(IDtcLuConfigure* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuConfigure_Release(IDtcLuConfigure* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuConfigure methods ***/
static FORCEINLINE HRESULT IDtcLuConfigure_Add(IDtcLuConfigure* This,byte *pucLuPair,DWORD cbLuPair) {
    return This->lpVtbl->Add(This,pucLuPair,cbLuPair);
}
static FORCEINLINE HRESULT IDtcLuConfigure_Delete(IDtcLuConfigure* This,byte *pucLuPair,DWORD cbLuPair) {
    return This->lpVtbl->Delete(This,pucLuPair,cbLuPair);
}
#endif
#endif

#endif


#endif  /* __IDtcLuConfigure_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRecovery interface
 */
#ifndef __IDtcLuRecovery_INTERFACE_DEFINED__
#define __IDtcLuRecovery_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecovery, 0xac2b8ad2, 0xd6f0, 0x11d0, 0xb3,0x86, 0x00,0xa0,0xc9,0x08,0x33,0x65);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ac2b8ad2-d6f0-11d0-b386-00a0c9083365")
IDtcLuRecovery : public IUnknown
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecovery, 0xac2b8ad2, 0xd6f0, 0x11d0, 0xb3,0x86, 0x00,0xa0,0xc9,0x08,0x33,0x65)
#endif
#else
typedef struct IDtcLuRecoveryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecovery *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecovery *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecovery *This);

    END_INTERFACE
} IDtcLuRecoveryVtbl;

interface IDtcLuRecovery {
    CONST_VTBL IDtcLuRecoveryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecovery_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecovery_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecovery_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecovery_QueryInterface(IDtcLuRecovery* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecovery_AddRef(IDtcLuRecovery* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecovery_Release(IDtcLuRecovery* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecovery_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRecoveryFactory interface
 */
#ifndef __IDtcLuRecoveryFactory_INTERFACE_DEFINED__
#define __IDtcLuRecoveryFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecoveryFactory, 0x4131e762, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e762-1aea-11d0-944b-00a0c905416e")
IDtcLuRecoveryFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        byte *pucLuPair,
        DWORD cbLuPair,
        IDtcLuRecovery **ppRecovery) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecoveryFactory, 0x4131e762, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRecoveryFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecoveryFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecoveryFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecoveryFactory *This);

    /*** IDtcLuRecoveryFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        IDtcLuRecoveryFactory *This,
        byte *pucLuPair,
        DWORD cbLuPair,
        IDtcLuRecovery **ppRecovery);

    END_INTERFACE
} IDtcLuRecoveryFactoryVtbl;

interface IDtcLuRecoveryFactory {
    CONST_VTBL IDtcLuRecoveryFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecoveryFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecoveryFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecoveryFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRecoveryFactory methods ***/
#define IDtcLuRecoveryFactory_Create(This,pucLuPair,cbLuPair,ppRecovery) (This)->lpVtbl->Create(This,pucLuPair,cbLuPair,ppRecovery)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryFactory_QueryInterface(IDtcLuRecoveryFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecoveryFactory_AddRef(IDtcLuRecoveryFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecoveryFactory_Release(IDtcLuRecoveryFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRecoveryFactory methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryFactory_Create(IDtcLuRecoveryFactory* This,byte *pucLuPair,DWORD cbLuPair,IDtcLuRecovery **ppRecovery) {
    return This->lpVtbl->Create(This,pucLuPair,cbLuPair,ppRecovery);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecoveryFactory_INTERFACE_DEFINED__ */

typedef enum _DtcLu_LocalRecovery_Work {
    DTCINITIATEDRECOVERYWORK_CHECKLUSTATUS = 1,
    DTCINITIATEDRECOVERYWORK_TRANS = 2,
    DTCINITIATEDRECOVERYWORK_TMDOWN = 3
} DTCINITIATEDRECOVERYWORK;
typedef enum _DtcLu_Xln {
    DTCLUXLN_COLD = 1,
    DTCLUXLN_WARM = 2
} DTCLUXLN;
typedef enum _DtcLu_Xln_Confirmation {
    DTCLUXLNCONFIRMATION_CONFIRM = 1,
    DTCLUXLNCONFIRMATION_LOGNAMEMISMATCH = 2,
    DTCLUXLNCONFIRMATION_COLDWARMMISMATCH = 3,
    DTCLUXLNCONFIRMATION_OBSOLETE = 4
} DTCLUXLNCONFIRMATION;
typedef enum _DtcLu_Xln_Response {
    DTCLUXLNRESPONSE_OK_SENDOURXLNBACK = 1,
    DTCLUXLNRESPONSE_OK_SENDCONFIRMATION = 2,
    DTCLUXLNRESPONSE_LOGNAMEMISMATCH = 3,
    DTCLUXLNRESPONSE_COLDWARMMISMATCH = 4
} DTCLUXLNRESPONSE;
typedef enum _DtcLu_Xln_Error {
    DTCLUXLNERROR_PROTOCOL = 1,
    DTCLUXLNERROR_LOGNAMEMISMATCH = 2,
    DTCLUXLNERROR_COLDWARMMISMATCH = 3
} DTCLUXLNERROR;
typedef enum _DtcLu_CompareState {
    DTCLUCOMPARESTATE_COMMITTED = 1,
    DTCLUCOMPARESTATE_HEURISTICCOMMITTED = 2,
    DTCLUCOMPARESTATE_HEURISTICMIXED = 3,
    DTCLUCOMPARESTATE_HEURISTICRESET = 4,
    DTCLUCOMPARESTATE_INDOUBT = 5,
    DTCLUCOMPARESTATE_RESET = 6
} DTCLUCOMPARESTATE;
typedef enum _DtcLu_CompareStates_Confirmation {
    DTCLUCOMPARESTATESCONFIRMATION_CONFIRM = 1,
    DTCLUCOMPARESTATESCONFIRMATION_PROTOCOL = 2
} DTCLUCOMPARESTATESCONFIRMATION;
typedef enum _DtcLu_CompareStates_Error {
    DTCLUCOMPARESTATESERROR_PROTOCOL = 1
} DTCLUCOMPARESTATESERROR;
typedef enum _DtcLu_CompareStates_Response {
    DTCLUCOMPARESTATESRESPONSE_OK = 1,
    DTCLUCOMPARESTATESRESPONSE_PROTOCOL = 2
} DTCLUCOMPARESTATESRESPONSE;
/*****************************************************************************
 * IDtcLuRecoveryInitiatedByDtcTransWork interface
 */
#ifndef __IDtcLuRecoveryInitiatedByDtcTransWork_INTERFACE_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtcTransWork_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecoveryInitiatedByDtcTransWork, 0x4131e765, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e765-1aea-11d0-944b-00a0c905416e")
IDtcLuRecoveryInitiatedByDtcTransWork : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetLogNameSizes(
        DWORD *pcbOurLogName,
        DWORD *pcbRemoteLogName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOurXln(
        DTCLUXLN *pXln,
        unsigned char *pOurLogName,
        unsigned char *pRemoteLogName,
        DWORD *pdwProtocol) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleConfirmationFromOurXln(
        DTCLUXLNCONFIRMATION Confirmation) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleTheirXlnResponse(
        DTCLUXLN Xln,
        unsigned char *pRemoteLogName,
        DWORD cbRemoteLogName,
        DWORD dwProtocol,
        DTCLUXLNCONFIRMATION *pConfirmation) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleErrorFromOurXln(
        DTCLUXLNERROR Error) = 0;

    virtual HRESULT STDMETHODCALLTYPE CheckForCompareStates(
        BOOL *fCompareStates) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOurTransIdSize(
        DWORD *pcbOurTransId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOurCompareStates(
        unsigned char *pOurTransId,
        DTCLUCOMPARESTATE *pCompareState) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleTheirCompareStatesResponse(
        DTCLUCOMPARESTATE CompareState,
        DTCLUCOMPARESTATESCONFIRMATION *pConfirmation) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleErrorFromOurCompareStates(
        DTCLUCOMPARESTATESERROR Error) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConversationLost(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRecoverySeqNum(
        LONG *plRecoverySeqNum) = 0;

    virtual HRESULT STDMETHODCALLTYPE ObsoleteRecoverySeqNum(
        LONG lNewRecoverySeqNum) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecoveryInitiatedByDtcTransWork, 0x4131e765, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRecoveryInitiatedByDtcTransWorkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This);

    /*** IDtcLuRecoveryInitiatedByDtcTransWork methods ***/
    HRESULT (STDMETHODCALLTYPE *GetLogNameSizes)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DWORD *pcbOurLogName,
        DWORD *pcbRemoteLogName);

    HRESULT (STDMETHODCALLTYPE *GetOurXln)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DTCLUXLN *pXln,
        unsigned char *pOurLogName,
        unsigned char *pRemoteLogName,
        DWORD *pdwProtocol);

    HRESULT (STDMETHODCALLTYPE *HandleConfirmationFromOurXln)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DTCLUXLNCONFIRMATION Confirmation);

    HRESULT (STDMETHODCALLTYPE *HandleTheirXlnResponse)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DTCLUXLN Xln,
        unsigned char *pRemoteLogName,
        DWORD cbRemoteLogName,
        DWORD dwProtocol,
        DTCLUXLNCONFIRMATION *pConfirmation);

    HRESULT (STDMETHODCALLTYPE *HandleErrorFromOurXln)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DTCLUXLNERROR Error);

    HRESULT (STDMETHODCALLTYPE *CheckForCompareStates)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        BOOL *fCompareStates);

    HRESULT (STDMETHODCALLTYPE *GetOurTransIdSize)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DWORD *pcbOurTransId);

    HRESULT (STDMETHODCALLTYPE *GetOurCompareStates)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        unsigned char *pOurTransId,
        DTCLUCOMPARESTATE *pCompareState);

    HRESULT (STDMETHODCALLTYPE *HandleTheirCompareStatesResponse)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DTCLUCOMPARESTATE CompareState,
        DTCLUCOMPARESTATESCONFIRMATION *pConfirmation);

    HRESULT (STDMETHODCALLTYPE *HandleErrorFromOurCompareStates)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        DTCLUCOMPARESTATESERROR Error);

    HRESULT (STDMETHODCALLTYPE *ConversationLost)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This);

    HRESULT (STDMETHODCALLTYPE *GetRecoverySeqNum)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        LONG *plRecoverySeqNum);

    HRESULT (STDMETHODCALLTYPE *ObsoleteRecoverySeqNum)(
        IDtcLuRecoveryInitiatedByDtcTransWork *This,
        LONG lNewRecoverySeqNum);

    END_INTERFACE
} IDtcLuRecoveryInitiatedByDtcTransWorkVtbl;

interface IDtcLuRecoveryInitiatedByDtcTransWork {
    CONST_VTBL IDtcLuRecoveryInitiatedByDtcTransWorkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecoveryInitiatedByDtcTransWork_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecoveryInitiatedByDtcTransWork_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecoveryInitiatedByDtcTransWork_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRecoveryInitiatedByDtcTransWork methods ***/
#define IDtcLuRecoveryInitiatedByDtcTransWork_GetLogNameSizes(This,pcbOurLogName,pcbRemoteLogName) (This)->lpVtbl->GetLogNameSizes(This,pcbOurLogName,pcbRemoteLogName)
#define IDtcLuRecoveryInitiatedByDtcTransWork_GetOurXln(This,pXln,pOurLogName,pRemoteLogName,pdwProtocol) (This)->lpVtbl->GetOurXln(This,pXln,pOurLogName,pRemoteLogName,pdwProtocol)
#define IDtcLuRecoveryInitiatedByDtcTransWork_HandleConfirmationFromOurXln(This,Confirmation) (This)->lpVtbl->HandleConfirmationFromOurXln(This,Confirmation)
#define IDtcLuRecoveryInitiatedByDtcTransWork_HandleTheirXlnResponse(This,Xln,pRemoteLogName,cbRemoteLogName,dwProtocol,pConfirmation) (This)->lpVtbl->HandleTheirXlnResponse(This,Xln,pRemoteLogName,cbRemoteLogName,dwProtocol,pConfirmation)
#define IDtcLuRecoveryInitiatedByDtcTransWork_HandleErrorFromOurXln(This,Error) (This)->lpVtbl->HandleErrorFromOurXln(This,Error)
#define IDtcLuRecoveryInitiatedByDtcTransWork_CheckForCompareStates(This,fCompareStates) (This)->lpVtbl->CheckForCompareStates(This,fCompareStates)
#define IDtcLuRecoveryInitiatedByDtcTransWork_GetOurTransIdSize(This,pcbOurTransId) (This)->lpVtbl->GetOurTransIdSize(This,pcbOurTransId)
#define IDtcLuRecoveryInitiatedByDtcTransWork_GetOurCompareStates(This,pOurTransId,pCompareState) (This)->lpVtbl->GetOurCompareStates(This,pOurTransId,pCompareState)
#define IDtcLuRecoveryInitiatedByDtcTransWork_HandleTheirCompareStatesResponse(This,CompareState,pConfirmation) (This)->lpVtbl->HandleTheirCompareStatesResponse(This,CompareState,pConfirmation)
#define IDtcLuRecoveryInitiatedByDtcTransWork_HandleErrorFromOurCompareStates(This,Error) (This)->lpVtbl->HandleErrorFromOurCompareStates(This,Error)
#define IDtcLuRecoveryInitiatedByDtcTransWork_ConversationLost(This) (This)->lpVtbl->ConversationLost(This)
#define IDtcLuRecoveryInitiatedByDtcTransWork_GetRecoverySeqNum(This,plRecoverySeqNum) (This)->lpVtbl->GetRecoverySeqNum(This,plRecoverySeqNum)
#define IDtcLuRecoveryInitiatedByDtcTransWork_ObsoleteRecoverySeqNum(This,lNewRecoverySeqNum) (This)->lpVtbl->ObsoleteRecoverySeqNum(This,lNewRecoverySeqNum)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_QueryInterface(IDtcLuRecoveryInitiatedByDtcTransWork* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByDtcTransWork_AddRef(IDtcLuRecoveryInitiatedByDtcTransWork* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByDtcTransWork_Release(IDtcLuRecoveryInitiatedByDtcTransWork* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRecoveryInitiatedByDtcTransWork methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_GetLogNameSizes(IDtcLuRecoveryInitiatedByDtcTransWork* This,DWORD *pcbOurLogName,DWORD *pcbRemoteLogName) {
    return This->lpVtbl->GetLogNameSizes(This,pcbOurLogName,pcbRemoteLogName);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_GetOurXln(IDtcLuRecoveryInitiatedByDtcTransWork* This,DTCLUXLN *pXln,unsigned char *pOurLogName,unsigned char *pRemoteLogName,DWORD *pdwProtocol) {
    return This->lpVtbl->GetOurXln(This,pXln,pOurLogName,pRemoteLogName,pdwProtocol);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_HandleConfirmationFromOurXln(IDtcLuRecoveryInitiatedByDtcTransWork* This,DTCLUXLNCONFIRMATION Confirmation) {
    return This->lpVtbl->HandleConfirmationFromOurXln(This,Confirmation);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_HandleTheirXlnResponse(IDtcLuRecoveryInitiatedByDtcTransWork* This,DTCLUXLN Xln,unsigned char *pRemoteLogName,DWORD cbRemoteLogName,DWORD dwProtocol,DTCLUXLNCONFIRMATION *pConfirmation) {
    return This->lpVtbl->HandleTheirXlnResponse(This,Xln,pRemoteLogName,cbRemoteLogName,dwProtocol,pConfirmation);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_HandleErrorFromOurXln(IDtcLuRecoveryInitiatedByDtcTransWork* This,DTCLUXLNERROR Error) {
    return This->lpVtbl->HandleErrorFromOurXln(This,Error);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_CheckForCompareStates(IDtcLuRecoveryInitiatedByDtcTransWork* This,BOOL *fCompareStates) {
    return This->lpVtbl->CheckForCompareStates(This,fCompareStates);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_GetOurTransIdSize(IDtcLuRecoveryInitiatedByDtcTransWork* This,DWORD *pcbOurTransId) {
    return This->lpVtbl->GetOurTransIdSize(This,pcbOurTransId);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_GetOurCompareStates(IDtcLuRecoveryInitiatedByDtcTransWork* This,unsigned char *pOurTransId,DTCLUCOMPARESTATE *pCompareState) {
    return This->lpVtbl->GetOurCompareStates(This,pOurTransId,pCompareState);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_HandleTheirCompareStatesResponse(IDtcLuRecoveryInitiatedByDtcTransWork* This,DTCLUCOMPARESTATE CompareState,DTCLUCOMPARESTATESCONFIRMATION *pConfirmation) {
    return This->lpVtbl->HandleTheirCompareStatesResponse(This,CompareState,pConfirmation);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_HandleErrorFromOurCompareStates(IDtcLuRecoveryInitiatedByDtcTransWork* This,DTCLUCOMPARESTATESERROR Error) {
    return This->lpVtbl->HandleErrorFromOurCompareStates(This,Error);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_ConversationLost(IDtcLuRecoveryInitiatedByDtcTransWork* This) {
    return This->lpVtbl->ConversationLost(This);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_GetRecoverySeqNum(IDtcLuRecoveryInitiatedByDtcTransWork* This,LONG *plRecoverySeqNum) {
    return This->lpVtbl->GetRecoverySeqNum(This,plRecoverySeqNum);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcTransWork_ObsoleteRecoverySeqNum(IDtcLuRecoveryInitiatedByDtcTransWork* This,LONG lNewRecoverySeqNum) {
    return This->lpVtbl->ObsoleteRecoverySeqNum(This,lNewRecoverySeqNum);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecoveryInitiatedByDtcTransWork_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRecoveryInitiatedByDtcStatusWork interface
 */
#ifndef __IDtcLuRecoveryInitiatedByDtcStatusWork_INTERFACE_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtcStatusWork_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecoveryInitiatedByDtcStatusWork, 0x4131e766, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e766-1aea-11d0-944b-00a0c905416e")
IDtcLuRecoveryInitiatedByDtcStatusWork : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleCheckLuStatus(
        LONG lRecoverySeqNum) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecoveryInitiatedByDtcStatusWork, 0x4131e766, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRecoveryInitiatedByDtcStatusWorkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecoveryInitiatedByDtcStatusWork *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecoveryInitiatedByDtcStatusWork *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecoveryInitiatedByDtcStatusWork *This);

    /*** IDtcLuRecoveryInitiatedByDtcStatusWork methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleCheckLuStatus)(
        IDtcLuRecoveryInitiatedByDtcStatusWork *This,
        LONG lRecoverySeqNum);

    END_INTERFACE
} IDtcLuRecoveryInitiatedByDtcStatusWorkVtbl;

interface IDtcLuRecoveryInitiatedByDtcStatusWork {
    CONST_VTBL IDtcLuRecoveryInitiatedByDtcStatusWorkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecoveryInitiatedByDtcStatusWork_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecoveryInitiatedByDtcStatusWork_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecoveryInitiatedByDtcStatusWork_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRecoveryInitiatedByDtcStatusWork methods ***/
#define IDtcLuRecoveryInitiatedByDtcStatusWork_HandleCheckLuStatus(This,lRecoverySeqNum) (This)->lpVtbl->HandleCheckLuStatus(This,lRecoverySeqNum)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcStatusWork_QueryInterface(IDtcLuRecoveryInitiatedByDtcStatusWork* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByDtcStatusWork_AddRef(IDtcLuRecoveryInitiatedByDtcStatusWork* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByDtcStatusWork_Release(IDtcLuRecoveryInitiatedByDtcStatusWork* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRecoveryInitiatedByDtcStatusWork methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtcStatusWork_HandleCheckLuStatus(IDtcLuRecoveryInitiatedByDtcStatusWork* This,LONG lRecoverySeqNum) {
    return This->lpVtbl->HandleCheckLuStatus(This,lRecoverySeqNum);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecoveryInitiatedByDtcStatusWork_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRecoveryInitiatedByDtc interface
 */
#ifndef __IDtcLuRecoveryInitiatedByDtc_INTERFACE_DEFINED__
#define __IDtcLuRecoveryInitiatedByDtc_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecoveryInitiatedByDtc, 0x4131e764, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e764-1aea-11d0-944b-00a0c905416e")
IDtcLuRecoveryInitiatedByDtc : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetWork(
        DTCINITIATEDRECOVERYWORK *pWork,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecoveryInitiatedByDtc, 0x4131e764, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRecoveryInitiatedByDtcVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecoveryInitiatedByDtc *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecoveryInitiatedByDtc *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecoveryInitiatedByDtc *This);

    /*** IDtcLuRecoveryInitiatedByDtc methods ***/
    HRESULT (STDMETHODCALLTYPE *GetWork)(
        IDtcLuRecoveryInitiatedByDtc *This,
        DTCINITIATEDRECOVERYWORK *pWork,
        void **ppv);

    END_INTERFACE
} IDtcLuRecoveryInitiatedByDtcVtbl;

interface IDtcLuRecoveryInitiatedByDtc {
    CONST_VTBL IDtcLuRecoveryInitiatedByDtcVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecoveryInitiatedByDtc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecoveryInitiatedByDtc_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecoveryInitiatedByDtc_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRecoveryInitiatedByDtc methods ***/
#define IDtcLuRecoveryInitiatedByDtc_GetWork(This,pWork,ppv) (This)->lpVtbl->GetWork(This,pWork,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtc_QueryInterface(IDtcLuRecoveryInitiatedByDtc* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByDtc_AddRef(IDtcLuRecoveryInitiatedByDtc* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByDtc_Release(IDtcLuRecoveryInitiatedByDtc* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRecoveryInitiatedByDtc methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByDtc_GetWork(IDtcLuRecoveryInitiatedByDtc* This,DTCINITIATEDRECOVERYWORK *pWork,void **ppv) {
    return This->lpVtbl->GetWork(This,pWork,ppv);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecoveryInitiatedByDtc_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRecoveryInitiatedByLuWork interface
 */
#ifndef __IDtcLuRecoveryInitiatedByLuWork_INTERFACE_DEFINED__
#define __IDtcLuRecoveryInitiatedByLuWork_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecoveryInitiatedByLuWork, 0xac2b8ad1, 0xd6f0, 0x11d0, 0xb3,0x86, 0x00,0xa0,0xc9,0x08,0x33,0x65);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ac2b8ad1-d6f0-11d0-b386-00a0c9083365")
IDtcLuRecoveryInitiatedByLuWork : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HandleTheirXln(
        LONG lRecoverySeqNum,
        DTCLUXLN Xln,
        unsigned char *pRemoteLogName,
        DWORD cbRemoteLogName,
        unsigned char *pOurLogName,
        DWORD cbOurLogName,
        DWORD dwProtocol,
        DTCLUXLNRESPONSE *pResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOurLogNameSize(
        DWORD *pcbOurLogName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOurXln(
        DTCLUXLN *pXln,
        unsigned char *pOurLogName,
        DWORD *pdwProtocol) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleConfirmationOfOurXln(
        DTCLUXLNCONFIRMATION Confirmation) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleTheirCompareStates(
        unsigned char *pRemoteTransId,
        DWORD cbRemoteTransId,
        DTCLUCOMPARESTATE CompareState,
        DTCLUCOMPARESTATESRESPONSE *pResponse,
        DTCLUCOMPARESTATE *pCompareState) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleConfirmationOfOurCompareStates(
        DTCLUCOMPARESTATESCONFIRMATION Confirmation) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleErrorFromOurCompareStates(
        DTCLUCOMPARESTATESERROR Error) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConversationLost(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecoveryInitiatedByLuWork, 0xac2b8ad1, 0xd6f0, 0x11d0, 0xb3,0x86, 0x00,0xa0,0xc9,0x08,0x33,0x65)
#endif
#else
typedef struct IDtcLuRecoveryInitiatedByLuWorkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecoveryInitiatedByLuWork *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecoveryInitiatedByLuWork *This);

    /*** IDtcLuRecoveryInitiatedByLuWork methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleTheirXln)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        LONG lRecoverySeqNum,
        DTCLUXLN Xln,
        unsigned char *pRemoteLogName,
        DWORD cbRemoteLogName,
        unsigned char *pOurLogName,
        DWORD cbOurLogName,
        DWORD dwProtocol,
        DTCLUXLNRESPONSE *pResponse);

    HRESULT (STDMETHODCALLTYPE *GetOurLogNameSize)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        DWORD *pcbOurLogName);

    HRESULT (STDMETHODCALLTYPE *GetOurXln)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        DTCLUXLN *pXln,
        unsigned char *pOurLogName,
        DWORD *pdwProtocol);

    HRESULT (STDMETHODCALLTYPE *HandleConfirmationOfOurXln)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        DTCLUXLNCONFIRMATION Confirmation);

    HRESULT (STDMETHODCALLTYPE *HandleTheirCompareStates)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        unsigned char *pRemoteTransId,
        DWORD cbRemoteTransId,
        DTCLUCOMPARESTATE CompareState,
        DTCLUCOMPARESTATESRESPONSE *pResponse,
        DTCLUCOMPARESTATE *pCompareState);

    HRESULT (STDMETHODCALLTYPE *HandleConfirmationOfOurCompareStates)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        DTCLUCOMPARESTATESCONFIRMATION Confirmation);

    HRESULT (STDMETHODCALLTYPE *HandleErrorFromOurCompareStates)(
        IDtcLuRecoveryInitiatedByLuWork *This,
        DTCLUCOMPARESTATESERROR Error);

    HRESULT (STDMETHODCALLTYPE *ConversationLost)(
        IDtcLuRecoveryInitiatedByLuWork *This);

    END_INTERFACE
} IDtcLuRecoveryInitiatedByLuWorkVtbl;

interface IDtcLuRecoveryInitiatedByLuWork {
    CONST_VTBL IDtcLuRecoveryInitiatedByLuWorkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecoveryInitiatedByLuWork_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecoveryInitiatedByLuWork_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecoveryInitiatedByLuWork_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRecoveryInitiatedByLuWork methods ***/
#define IDtcLuRecoveryInitiatedByLuWork_HandleTheirXln(This,lRecoverySeqNum,Xln,pRemoteLogName,cbRemoteLogName,pOurLogName,cbOurLogName,dwProtocol,pResponse) (This)->lpVtbl->HandleTheirXln(This,lRecoverySeqNum,Xln,pRemoteLogName,cbRemoteLogName,pOurLogName,cbOurLogName,dwProtocol,pResponse)
#define IDtcLuRecoveryInitiatedByLuWork_GetOurLogNameSize(This,pcbOurLogName) (This)->lpVtbl->GetOurLogNameSize(This,pcbOurLogName)
#define IDtcLuRecoveryInitiatedByLuWork_GetOurXln(This,pXln,pOurLogName,pdwProtocol) (This)->lpVtbl->GetOurXln(This,pXln,pOurLogName,pdwProtocol)
#define IDtcLuRecoveryInitiatedByLuWork_HandleConfirmationOfOurXln(This,Confirmation) (This)->lpVtbl->HandleConfirmationOfOurXln(This,Confirmation)
#define IDtcLuRecoveryInitiatedByLuWork_HandleTheirCompareStates(This,pRemoteTransId,cbRemoteTransId,CompareState,pResponse,pCompareState) (This)->lpVtbl->HandleTheirCompareStates(This,pRemoteTransId,cbRemoteTransId,CompareState,pResponse,pCompareState)
#define IDtcLuRecoveryInitiatedByLuWork_HandleConfirmationOfOurCompareStates(This,Confirmation) (This)->lpVtbl->HandleConfirmationOfOurCompareStates(This,Confirmation)
#define IDtcLuRecoveryInitiatedByLuWork_HandleErrorFromOurCompareStates(This,Error) (This)->lpVtbl->HandleErrorFromOurCompareStates(This,Error)
#define IDtcLuRecoveryInitiatedByLuWork_ConversationLost(This) (This)->lpVtbl->ConversationLost(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_QueryInterface(IDtcLuRecoveryInitiatedByLuWork* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByLuWork_AddRef(IDtcLuRecoveryInitiatedByLuWork* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByLuWork_Release(IDtcLuRecoveryInitiatedByLuWork* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRecoveryInitiatedByLuWork methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_HandleTheirXln(IDtcLuRecoveryInitiatedByLuWork* This,LONG lRecoverySeqNum,DTCLUXLN Xln,unsigned char *pRemoteLogName,DWORD cbRemoteLogName,unsigned char *pOurLogName,DWORD cbOurLogName,DWORD dwProtocol,DTCLUXLNRESPONSE *pResponse) {
    return This->lpVtbl->HandleTheirXln(This,lRecoverySeqNum,Xln,pRemoteLogName,cbRemoteLogName,pOurLogName,cbOurLogName,dwProtocol,pResponse);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_GetOurLogNameSize(IDtcLuRecoveryInitiatedByLuWork* This,DWORD *pcbOurLogName) {
    return This->lpVtbl->GetOurLogNameSize(This,pcbOurLogName);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_GetOurXln(IDtcLuRecoveryInitiatedByLuWork* This,DTCLUXLN *pXln,unsigned char *pOurLogName,DWORD *pdwProtocol) {
    return This->lpVtbl->GetOurXln(This,pXln,pOurLogName,pdwProtocol);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_HandleConfirmationOfOurXln(IDtcLuRecoveryInitiatedByLuWork* This,DTCLUXLNCONFIRMATION Confirmation) {
    return This->lpVtbl->HandleConfirmationOfOurXln(This,Confirmation);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_HandleTheirCompareStates(IDtcLuRecoveryInitiatedByLuWork* This,unsigned char *pRemoteTransId,DWORD cbRemoteTransId,DTCLUCOMPARESTATE CompareState,DTCLUCOMPARESTATESRESPONSE *pResponse,DTCLUCOMPARESTATE *pCompareState) {
    return This->lpVtbl->HandleTheirCompareStates(This,pRemoteTransId,cbRemoteTransId,CompareState,pResponse,pCompareState);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_HandleConfirmationOfOurCompareStates(IDtcLuRecoveryInitiatedByLuWork* This,DTCLUCOMPARESTATESCONFIRMATION Confirmation) {
    return This->lpVtbl->HandleConfirmationOfOurCompareStates(This,Confirmation);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_HandleErrorFromOurCompareStates(IDtcLuRecoveryInitiatedByLuWork* This,DTCLUCOMPARESTATESERROR Error) {
    return This->lpVtbl->HandleErrorFromOurCompareStates(This,Error);
}
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLuWork_ConversationLost(IDtcLuRecoveryInitiatedByLuWork* This) {
    return This->lpVtbl->ConversationLost(This);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecoveryInitiatedByLuWork_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRecoveryInitiatedByLu interface
 */
#ifndef __IDtcLuRecoveryInitiatedByLu_INTERFACE_DEFINED__
#define __IDtcLuRecoveryInitiatedByLu_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRecoveryInitiatedByLu, 0x4131e768, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e768-1aea-11d0-944b-00a0c905416e")
IDtcLuRecoveryInitiatedByLu : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetObjectToHandleWorkFromLu(
        IDtcLuRecoveryInitiatedByLuWork **ppWork) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRecoveryInitiatedByLu, 0x4131e768, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRecoveryInitiatedByLuVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRecoveryInitiatedByLu *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRecoveryInitiatedByLu *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRecoveryInitiatedByLu *This);

    /*** IDtcLuRecoveryInitiatedByLu methods ***/
    HRESULT (STDMETHODCALLTYPE *GetObjectToHandleWorkFromLu)(
        IDtcLuRecoveryInitiatedByLu *This,
        IDtcLuRecoveryInitiatedByLuWork **ppWork);

    END_INTERFACE
} IDtcLuRecoveryInitiatedByLuVtbl;

interface IDtcLuRecoveryInitiatedByLu {
    CONST_VTBL IDtcLuRecoveryInitiatedByLuVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRecoveryInitiatedByLu_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRecoveryInitiatedByLu_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRecoveryInitiatedByLu_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRecoveryInitiatedByLu methods ***/
#define IDtcLuRecoveryInitiatedByLu_GetObjectToHandleWorkFromLu(This,ppWork) (This)->lpVtbl->GetObjectToHandleWorkFromLu(This,ppWork)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLu_QueryInterface(IDtcLuRecoveryInitiatedByLu* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByLu_AddRef(IDtcLuRecoveryInitiatedByLu* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRecoveryInitiatedByLu_Release(IDtcLuRecoveryInitiatedByLu* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRecoveryInitiatedByLu methods ***/
static FORCEINLINE HRESULT IDtcLuRecoveryInitiatedByLu_GetObjectToHandleWorkFromLu(IDtcLuRecoveryInitiatedByLu* This,IDtcLuRecoveryInitiatedByLuWork **ppWork) {
    return This->lpVtbl->GetObjectToHandleWorkFromLu(This,ppWork);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRecoveryInitiatedByLu_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRmEnlistment interface
 */
#ifndef __IDtcLuRmEnlistment_INTERFACE_DEFINED__
#define __IDtcLuRmEnlistment_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRmEnlistment, 0x4131e769, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e769-1aea-11d0-944b-00a0c905416e")
IDtcLuRmEnlistment : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Unplug(
        BOOL fConversationLost) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackedOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Committed(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Forget(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestCommit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRmEnlistment, 0x4131e769, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRmEnlistmentVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRmEnlistment *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRmEnlistment *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRmEnlistment *This);

    /*** IDtcLuRmEnlistment methods ***/
    HRESULT (STDMETHODCALLTYPE *Unplug)(
        IDtcLuRmEnlistment *This,
        BOOL fConversationLost);

    HRESULT (STDMETHODCALLTYPE *BackedOut)(
        IDtcLuRmEnlistment *This);

    HRESULT (STDMETHODCALLTYPE *BackOut)(
        IDtcLuRmEnlistment *This);

    HRESULT (STDMETHODCALLTYPE *Committed)(
        IDtcLuRmEnlistment *This);

    HRESULT (STDMETHODCALLTYPE *Forget)(
        IDtcLuRmEnlistment *This);

    HRESULT (STDMETHODCALLTYPE *RequestCommit)(
        IDtcLuRmEnlistment *This);

    END_INTERFACE
} IDtcLuRmEnlistmentVtbl;

interface IDtcLuRmEnlistment {
    CONST_VTBL IDtcLuRmEnlistmentVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRmEnlistment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRmEnlistment_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRmEnlistment_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRmEnlistment methods ***/
#define IDtcLuRmEnlistment_Unplug(This,fConversationLost) (This)->lpVtbl->Unplug(This,fConversationLost)
#define IDtcLuRmEnlistment_BackedOut(This) (This)->lpVtbl->BackedOut(This)
#define IDtcLuRmEnlistment_BackOut(This) (This)->lpVtbl->BackOut(This)
#define IDtcLuRmEnlistment_Committed(This) (This)->lpVtbl->Committed(This)
#define IDtcLuRmEnlistment_Forget(This) (This)->lpVtbl->Forget(This)
#define IDtcLuRmEnlistment_RequestCommit(This) (This)->lpVtbl->RequestCommit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRmEnlistment_QueryInterface(IDtcLuRmEnlistment* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRmEnlistment_AddRef(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRmEnlistment_Release(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRmEnlistment methods ***/
static FORCEINLINE HRESULT IDtcLuRmEnlistment_Unplug(IDtcLuRmEnlistment* This,BOOL fConversationLost) {
    return This->lpVtbl->Unplug(This,fConversationLost);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistment_BackedOut(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->BackedOut(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistment_BackOut(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->BackOut(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistment_Committed(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->Committed(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistment_Forget(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->Forget(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistment_RequestCommit(IDtcLuRmEnlistment* This) {
    return This->lpVtbl->RequestCommit(This);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRmEnlistment_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRmEnlistmentSink interface
 */
#ifndef __IDtcLuRmEnlistmentSink_INTERFACE_DEFINED__
#define __IDtcLuRmEnlistmentSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRmEnlistmentSink, 0x4131e770, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e770-1aea-11d0-944b-00a0c905416e")
IDtcLuRmEnlistmentSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AckUnplug(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE TmDown(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SessionLost(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackedOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Committed(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Forget(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Prepare(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestCommit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRmEnlistmentSink, 0x4131e770, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRmEnlistmentSinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRmEnlistmentSink *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRmEnlistmentSink *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRmEnlistmentSink *This);

    /*** IDtcLuRmEnlistmentSink methods ***/
    HRESULT (STDMETHODCALLTYPE *AckUnplug)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *TmDown)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *SessionLost)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *BackedOut)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *BackOut)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *Committed)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *Forget)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *Prepare)(
        IDtcLuRmEnlistmentSink *This);

    HRESULT (STDMETHODCALLTYPE *RequestCommit)(
        IDtcLuRmEnlistmentSink *This);

    END_INTERFACE
} IDtcLuRmEnlistmentSinkVtbl;

interface IDtcLuRmEnlistmentSink {
    CONST_VTBL IDtcLuRmEnlistmentSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRmEnlistmentSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRmEnlistmentSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRmEnlistmentSink_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRmEnlistmentSink methods ***/
#define IDtcLuRmEnlistmentSink_AckUnplug(This) (This)->lpVtbl->AckUnplug(This)
#define IDtcLuRmEnlistmentSink_TmDown(This) (This)->lpVtbl->TmDown(This)
#define IDtcLuRmEnlistmentSink_SessionLost(This) (This)->lpVtbl->SessionLost(This)
#define IDtcLuRmEnlistmentSink_BackedOut(This) (This)->lpVtbl->BackedOut(This)
#define IDtcLuRmEnlistmentSink_BackOut(This) (This)->lpVtbl->BackOut(This)
#define IDtcLuRmEnlistmentSink_Committed(This) (This)->lpVtbl->Committed(This)
#define IDtcLuRmEnlistmentSink_Forget(This) (This)->lpVtbl->Forget(This)
#define IDtcLuRmEnlistmentSink_Prepare(This) (This)->lpVtbl->Prepare(This)
#define IDtcLuRmEnlistmentSink_RequestCommit(This) (This)->lpVtbl->RequestCommit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_QueryInterface(IDtcLuRmEnlistmentSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRmEnlistmentSink_AddRef(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRmEnlistmentSink_Release(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRmEnlistmentSink methods ***/
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_AckUnplug(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->AckUnplug(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_TmDown(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->TmDown(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_SessionLost(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->SessionLost(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_BackedOut(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->BackedOut(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_BackOut(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->BackOut(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_Committed(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->Committed(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_Forget(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->Forget(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_Prepare(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->Prepare(This);
}
static FORCEINLINE HRESULT IDtcLuRmEnlistmentSink_RequestCommit(IDtcLuRmEnlistmentSink* This) {
    return This->lpVtbl->RequestCommit(This);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRmEnlistmentSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuRmEnlistmentFactory interface
 */
#ifndef __IDtcLuRmEnlistmentFactory_INTERFACE_DEFINED__
#define __IDtcLuRmEnlistmentFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuRmEnlistmentFactory, 0x4131e771, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e771-1aea-11d0-944b-00a0c905416e")
IDtcLuRmEnlistmentFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        unsigned char *pucLuPair,
        DWORD cbLuPair,
        ITransaction *pITransaction,
        unsigned char *pTransId,
        DWORD cbTransId,
        IDtcLuRmEnlistmentSink *pRmEnlistmentSink,
        IDtcLuRmEnlistment **ppRmEnlistment) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuRmEnlistmentFactory, 0x4131e771, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuRmEnlistmentFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuRmEnlistmentFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuRmEnlistmentFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuRmEnlistmentFactory *This);

    /*** IDtcLuRmEnlistmentFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        IDtcLuRmEnlistmentFactory *This,
        unsigned char *pucLuPair,
        DWORD cbLuPair,
        ITransaction *pITransaction,
        unsigned char *pTransId,
        DWORD cbTransId,
        IDtcLuRmEnlistmentSink *pRmEnlistmentSink,
        IDtcLuRmEnlistment **ppRmEnlistment);

    END_INTERFACE
} IDtcLuRmEnlistmentFactoryVtbl;

interface IDtcLuRmEnlistmentFactory {
    CONST_VTBL IDtcLuRmEnlistmentFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuRmEnlistmentFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuRmEnlistmentFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuRmEnlistmentFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuRmEnlistmentFactory methods ***/
#define IDtcLuRmEnlistmentFactory_Create(This,pucLuPair,cbLuPair,pITransaction,pTransId,cbTransId,pRmEnlistmentSink,ppRmEnlistment) (This)->lpVtbl->Create(This,pucLuPair,cbLuPair,pITransaction,pTransId,cbTransId,pRmEnlistmentSink,ppRmEnlistment)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuRmEnlistmentFactory_QueryInterface(IDtcLuRmEnlistmentFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuRmEnlistmentFactory_AddRef(IDtcLuRmEnlistmentFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuRmEnlistmentFactory_Release(IDtcLuRmEnlistmentFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuRmEnlistmentFactory methods ***/
static FORCEINLINE HRESULT IDtcLuRmEnlistmentFactory_Create(IDtcLuRmEnlistmentFactory* This,unsigned char *pucLuPair,DWORD cbLuPair,ITransaction *pITransaction,unsigned char *pTransId,DWORD cbTransId,IDtcLuRmEnlistmentSink *pRmEnlistmentSink,IDtcLuRmEnlistment **ppRmEnlistment) {
    return This->lpVtbl->Create(This,pucLuPair,cbLuPair,pITransaction,pTransId,cbTransId,pRmEnlistmentSink,ppRmEnlistment);
}
#endif
#endif

#endif


#endif  /* __IDtcLuRmEnlistmentFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuSubordinateDtc interface
 */
#ifndef __IDtcLuSubordinateDtc_INTERFACE_DEFINED__
#define __IDtcLuSubordinateDtc_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuSubordinateDtc, 0x4131e773, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e773-1aea-11d0-944b-00a0c905416e")
IDtcLuSubordinateDtc : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Unplug(
        BOOL fConversationLost) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackedOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Committed(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Forget(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Prepare(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestCommit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuSubordinateDtc, 0x4131e773, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuSubordinateDtcVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuSubordinateDtc *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuSubordinateDtc *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuSubordinateDtc *This);

    /*** IDtcLuSubordinateDtc methods ***/
    HRESULT (STDMETHODCALLTYPE *Unplug)(
        IDtcLuSubordinateDtc *This,
        BOOL fConversationLost);

    HRESULT (STDMETHODCALLTYPE *BackedOut)(
        IDtcLuSubordinateDtc *This);

    HRESULT (STDMETHODCALLTYPE *BackOut)(
        IDtcLuSubordinateDtc *This);

    HRESULT (STDMETHODCALLTYPE *Committed)(
        IDtcLuSubordinateDtc *This);

    HRESULT (STDMETHODCALLTYPE *Forget)(
        IDtcLuSubordinateDtc *This);

    HRESULT (STDMETHODCALLTYPE *Prepare)(
        IDtcLuSubordinateDtc *This);

    HRESULT (STDMETHODCALLTYPE *RequestCommit)(
        IDtcLuSubordinateDtc *This);

    END_INTERFACE
} IDtcLuSubordinateDtcVtbl;

interface IDtcLuSubordinateDtc {
    CONST_VTBL IDtcLuSubordinateDtcVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuSubordinateDtc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuSubordinateDtc_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuSubordinateDtc_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuSubordinateDtc methods ***/
#define IDtcLuSubordinateDtc_Unplug(This,fConversationLost) (This)->lpVtbl->Unplug(This,fConversationLost)
#define IDtcLuSubordinateDtc_BackedOut(This) (This)->lpVtbl->BackedOut(This)
#define IDtcLuSubordinateDtc_BackOut(This) (This)->lpVtbl->BackOut(This)
#define IDtcLuSubordinateDtc_Committed(This) (This)->lpVtbl->Committed(This)
#define IDtcLuSubordinateDtc_Forget(This) (This)->lpVtbl->Forget(This)
#define IDtcLuSubordinateDtc_Prepare(This) (This)->lpVtbl->Prepare(This)
#define IDtcLuSubordinateDtc_RequestCommit(This) (This)->lpVtbl->RequestCommit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_QueryInterface(IDtcLuSubordinateDtc* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuSubordinateDtc_AddRef(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuSubordinateDtc_Release(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuSubordinateDtc methods ***/
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_Unplug(IDtcLuSubordinateDtc* This,BOOL fConversationLost) {
    return This->lpVtbl->Unplug(This,fConversationLost);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_BackedOut(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->BackedOut(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_BackOut(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->BackOut(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_Committed(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->Committed(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_Forget(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->Forget(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_Prepare(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->Prepare(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtc_RequestCommit(IDtcLuSubordinateDtc* This) {
    return This->lpVtbl->RequestCommit(This);
}
#endif
#endif

#endif


#endif  /* __IDtcLuSubordinateDtc_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuSubordinateDtcSink interface
 */
#ifndef __IDtcLuSubordinateDtcSink_INTERFACE_DEFINED__
#define __IDtcLuSubordinateDtcSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuSubordinateDtcSink, 0x4131e774, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e774-1aea-11d0-944b-00a0c905416e")
IDtcLuSubordinateDtcSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AckUnplug(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE TmDown(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SessionLost(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackedOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE BackOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Committed(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Forget(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestCommit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuSubordinateDtcSink, 0x4131e774, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuSubordinateDtcSinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuSubordinateDtcSink *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuSubordinateDtcSink *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuSubordinateDtcSink *This);

    /*** IDtcLuSubordinateDtcSink methods ***/
    HRESULT (STDMETHODCALLTYPE *AckUnplug)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *TmDown)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *SessionLost)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *BackedOut)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *BackOut)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *Committed)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *Forget)(
        IDtcLuSubordinateDtcSink *This);

    HRESULT (STDMETHODCALLTYPE *RequestCommit)(
        IDtcLuSubordinateDtcSink *This);

    END_INTERFACE
} IDtcLuSubordinateDtcSinkVtbl;

interface IDtcLuSubordinateDtcSink {
    CONST_VTBL IDtcLuSubordinateDtcSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuSubordinateDtcSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuSubordinateDtcSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuSubordinateDtcSink_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuSubordinateDtcSink methods ***/
#define IDtcLuSubordinateDtcSink_AckUnplug(This) (This)->lpVtbl->AckUnplug(This)
#define IDtcLuSubordinateDtcSink_TmDown(This) (This)->lpVtbl->TmDown(This)
#define IDtcLuSubordinateDtcSink_SessionLost(This) (This)->lpVtbl->SessionLost(This)
#define IDtcLuSubordinateDtcSink_BackedOut(This) (This)->lpVtbl->BackedOut(This)
#define IDtcLuSubordinateDtcSink_BackOut(This) (This)->lpVtbl->BackOut(This)
#define IDtcLuSubordinateDtcSink_Committed(This) (This)->lpVtbl->Committed(This)
#define IDtcLuSubordinateDtcSink_Forget(This) (This)->lpVtbl->Forget(This)
#define IDtcLuSubordinateDtcSink_RequestCommit(This) (This)->lpVtbl->RequestCommit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_QueryInterface(IDtcLuSubordinateDtcSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuSubordinateDtcSink_AddRef(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuSubordinateDtcSink_Release(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuSubordinateDtcSink methods ***/
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_AckUnplug(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->AckUnplug(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_TmDown(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->TmDown(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_SessionLost(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->SessionLost(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_BackedOut(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->BackedOut(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_BackOut(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->BackOut(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_Committed(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->Committed(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_Forget(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->Forget(This);
}
static FORCEINLINE HRESULT IDtcLuSubordinateDtcSink_RequestCommit(IDtcLuSubordinateDtcSink* This) {
    return This->lpVtbl->RequestCommit(This);
}
#endif
#endif

#endif


#endif  /* __IDtcLuSubordinateDtcSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDtcLuSubordinateDtcFactory interface
 */
#ifndef __IDtcLuSubordinateDtcFactory_INTERFACE_DEFINED__
#define __IDtcLuSubordinateDtcFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDtcLuSubordinateDtcFactory, 0x4131e775, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4131e775-1aea-11d0-944b-00a0c905416e")
IDtcLuSubordinateDtcFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Create(
        unsigned char *pucLuPair,
        DWORD cbLuPair,
        IUnknown *punkTransactionOuter,
        ISOLEVEL isoLevel,
        ULONG isoFlags,
        ITransactionOptions *pOptions,
        ITransaction **ppTransaction,
        unsigned char *pTransId,
        DWORD cbTransId,
        IDtcLuSubordinateDtcSink *pSubordinateDtcSink,
        IDtcLuSubordinateDtc **ppSubordinateDtc) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDtcLuSubordinateDtcFactory, 0x4131e775, 0x1aea, 0x11d0, 0x94,0x4b, 0x00,0xa0,0xc9,0x05,0x41,0x6e)
#endif
#else
typedef struct IDtcLuSubordinateDtcFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDtcLuSubordinateDtcFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDtcLuSubordinateDtcFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDtcLuSubordinateDtcFactory *This);

    /*** IDtcLuSubordinateDtcFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *Create)(
        IDtcLuSubordinateDtcFactory *This,
        unsigned char *pucLuPair,
        DWORD cbLuPair,
        IUnknown *punkTransactionOuter,
        ISOLEVEL isoLevel,
        ULONG isoFlags,
        ITransactionOptions *pOptions,
        ITransaction **ppTransaction,
        unsigned char *pTransId,
        DWORD cbTransId,
        IDtcLuSubordinateDtcSink *pSubordinateDtcSink,
        IDtcLuSubordinateDtc **ppSubordinateDtc);

    END_INTERFACE
} IDtcLuSubordinateDtcFactoryVtbl;

interface IDtcLuSubordinateDtcFactory {
    CONST_VTBL IDtcLuSubordinateDtcFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDtcLuSubordinateDtcFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDtcLuSubordinateDtcFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDtcLuSubordinateDtcFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IDtcLuSubordinateDtcFactory methods ***/
#define IDtcLuSubordinateDtcFactory_Create(This,pucLuPair,cbLuPair,punkTransactionOuter,isoLevel,isoFlags,pOptions,ppTransaction,pTransId,cbTransId,pSubordinateDtcSink,ppSubordinateDtc) (This)->lpVtbl->Create(This,pucLuPair,cbLuPair,punkTransactionOuter,isoLevel,isoFlags,pOptions,ppTransaction,pTransId,cbTransId,pSubordinateDtcSink,ppSubordinateDtc)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDtcLuSubordinateDtcFactory_QueryInterface(IDtcLuSubordinateDtcFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDtcLuSubordinateDtcFactory_AddRef(IDtcLuSubordinateDtcFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDtcLuSubordinateDtcFactory_Release(IDtcLuSubordinateDtcFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IDtcLuSubordinateDtcFactory methods ***/
static FORCEINLINE HRESULT IDtcLuSubordinateDtcFactory_Create(IDtcLuSubordinateDtcFactory* This,unsigned char *pucLuPair,DWORD cbLuPair,IUnknown *punkTransactionOuter,ISOLEVEL isoLevel,ULONG isoFlags,ITransactionOptions *pOptions,ITransaction **ppTransaction,unsigned char *pTransId,DWORD cbTransId,IDtcLuSubordinateDtcSink *pSubordinateDtcSink,IDtcLuSubordinateDtc **ppSubordinateDtc) {
    return This->lpVtbl->Create(This,pucLuPair,cbLuPair,punkTransactionOuter,isoLevel,isoFlags,pOptions,ppTransaction,pTransId,cbTransId,pSubordinateDtcSink,ppSubordinateDtc);
}
#endif
#endif

#endif


#endif  /* __IDtcLuSubordinateDtcFactory_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __txdtc_h__ */
