The ODBC driver implements a new function, and MS DTC implements one new interface. Only the ODBC driver needs to use this new interface.
Typedefs
typedef DWORD XA_SWITCH_FLAGSConstants
#define XA_SWITCH_F_DTC 0x00000001
const XID XID_NULL = {-1, 0, 0, '\0'}Functions
HRESULT GetXaSwitch (
    XA_SWITCH_FLAGS [in] XaSwitchFlags,
    [out] xa_switch_t ** ppXaSwitch
);Interface
interface IDtcToXaMapper : IUnknown
{
STDMETHOD (QueryInterface) (REFIID riid, (void **) ppv) PURE;
STDMETHOD_(ULONG) (AddRef) (void) PURE;
STDMETHOD_(ULONG) (Release) (void) PURE;
STDMETHOD (RequestNewResourceManager) ([in] char pszDSN, [in] char  pszClientDllName, [in-out] DWORD * pdwRMCookie) PURE;
STDMETHOD (TranslateTridToXid) ([in] DWORD * pdwITransaction, [in] DWORD dwRMCookie, 
[in-out] XID * pXid) PURE;
STDMETHOD (EnlistResourceManager) ([in] DWORD dwRMCookie, [in] DWORD * pdwITransaction) PURE;
STDMETHOD (ReleaseResourceManager) ([in] DWORD dwRMCookie) PURE;
};