mirror of https://github.com/UMSKT/xpmgr.git
487 lines
15 KiB
Plaintext
487 lines
15 KiB
Plaintext
//.-------------------------------------------------------------------------
|
|
//.
|
|
//. Microsoft Windows
|
|
// Copyright (C) 1995-1999 Microsoft Corporation. All rights reserved.
|
|
//.
|
|
//. File: txcoord.idl
|
|
//.
|
|
//. Contents: Transaction types and interfaces related to
|
|
//. transaction coordination.
|
|
//.
|
|
//.--------------------------------------------------------------------------
|
|
|
|
import "transact.idl";
|
|
import "objidl.idl"; // needed for IMoniker
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
interface ITransactionResourceAsync;
|
|
interface ITransactionLastResourceAsync;
|
|
interface ITransactionResource;
|
|
interface ITransactionEnlistmentAsync;
|
|
|
|
interface ITransactionExportFactory;
|
|
interface ITransactionImportWhereabouts;
|
|
interface ITransactionExport;
|
|
interface ITransactionImport;
|
|
|
|
interface ITipTransaction;
|
|
interface ITipHelper;
|
|
interface ITipPullSink;
|
|
|
|
interface IDtcNetworkAccessConfig;
|
|
interface IDtcNetworkAccessConfig2;
|
|
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
#ifndef NO_ITransactionResourceAsync
|
|
|
|
// Implemented by the resource manager.
|
|
|
|
[object,uuid(69E971F0-23CE-11cf-AD60-00AA00A74CCD),pointer_default(unique)]
|
|
interface ITransactionResourceAsync : IUnknown
|
|
{
|
|
HRESULT PrepareRequest
|
|
(
|
|
[in] BOOL fRetaining,
|
|
[in] DWORD grfRM,
|
|
[in] BOOL fWantMoniker,
|
|
[in] BOOL fSinglePhase
|
|
);
|
|
HRESULT CommitRequest
|
|
(
|
|
[in] DWORD grfRM,
|
|
[in, unique] XACTUOW* pNewUOW
|
|
);
|
|
HRESULT AbortRequest
|
|
(
|
|
[in, unique] BOID* pboidReason,
|
|
[in] BOOL fRetaining,
|
|
[in, unique] XACTUOW* pNewUOW
|
|
);
|
|
HRESULT TMDown
|
|
(
|
|
void
|
|
);
|
|
}
|
|
|
|
|
|
[object,uuid(C82BD532-5B30-11d3-8A91-00C04F79EB6D),pointer_default(unique)]
|
|
interface ITransactionLastResourceAsync : IUnknown
|
|
{
|
|
HRESULT DelegateCommit
|
|
(
|
|
[in] DWORD grfRM
|
|
);
|
|
|
|
HRESULT ForgetRequest
|
|
(
|
|
[in] XACTUOW *pNewUOW
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
#ifndef NO_ITransactionResource
|
|
|
|
// Implemented by the resource manager.
|
|
|
|
[object,uuid(EE5FF7B3-4572-11d0-9452-00A0C905416E),pointer_default(unique)]
|
|
interface ITransactionResource : IUnknown
|
|
{
|
|
HRESULT PrepareRequest
|
|
(
|
|
[in] BOOL fRetaining,
|
|
[in] DWORD grfRM,
|
|
[in] BOOL fWantMoniker,
|
|
[in] BOOL fSinglePhase
|
|
);
|
|
HRESULT CommitRequest
|
|
(
|
|
[in] DWORD grfRM,
|
|
[in, unique] XACTUOW* pNewUOW
|
|
);
|
|
HRESULT AbortRequest
|
|
(
|
|
[in, unique] BOID* pboidReason,
|
|
[in] BOOL fRetaining,
|
|
[in, unique] XACTUOW* pNewUOW
|
|
);
|
|
HRESULT TMDown
|
|
(
|
|
void
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
#ifndef NO_ITransactionEnlistmentAsync
|
|
|
|
[object,uuid(0fb15081-af41-11ce-bd2b-204c4f4f5020),pointer_default(unique)]
|
|
interface ITransactionEnlistmentAsync : IUnknown {
|
|
HRESULT PrepareRequestDone
|
|
(
|
|
[in] HRESULT hr,
|
|
[in, unique] IMoniker* pmk,
|
|
[in, unique] BOID* pboidReason
|
|
);
|
|
HRESULT CommitRequestDone
|
|
(
|
|
[in] HRESULT hr
|
|
);
|
|
HRESULT AbortRequestDone
|
|
(
|
|
[in] HRESULT hr
|
|
);
|
|
}
|
|
|
|
[object,uuid(C82BD533-5B30-11d3-8A91-00C04F79EB6D),pointer_default(unique)]
|
|
interface ITransactionLastEnlistmentAsync : IUnknown
|
|
{
|
|
HRESULT TransactionOutcome
|
|
(
|
|
[in] XACTSTAT XactStat,
|
|
[in, unique] BOID* pboidReason
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
//=========================================================================================
|
|
// Interfaces used for passing a transaction by hand from one process / machine to another.
|
|
//=========================================================================================
|
|
//
|
|
|
|
#ifndef NO_ITransactionExportFactory
|
|
|
|
// Used on the client side to associate an export / import object pair with an external connection.
|
|
|
|
[object,uuid(E1CF9B53-8745-11ce-A9BA-00AA006C3706),pointer_default(unique)]
|
|
interface ITransactionExportFactory : IUnknown {
|
|
HRESULT GetRemoteClassId
|
|
(
|
|
[out] CLSID* pclsid
|
|
);
|
|
HRESULT Create
|
|
(
|
|
[in] ULONG cbWhereabouts,
|
|
[in, size_is(cbWhereabouts)]
|
|
byte* rgbWhereabouts,
|
|
[out] ITransactionExport** ppExport
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
#ifndef NO_ITransactionImportWhereabouts
|
|
|
|
// Used on the server side to associate an export / import object pair with an external connection.
|
|
|
|
[object,uuid(0141fda4-8fc0-11ce-bd18-204c4f4f5020),pointer_default(unique)]
|
|
interface ITransactionImportWhereabouts : IUnknown {
|
|
HRESULT GetWhereaboutsSize
|
|
(
|
|
[out] ULONG* pcbWhereabouts
|
|
);
|
|
[local]
|
|
HRESULT GetWhereabouts
|
|
(
|
|
[in] ULONG cbWhereabouts,
|
|
[out, size_is(cbWhereabouts)]
|
|
byte* rgbWhereabouts,
|
|
[out] ULONG* pcbUsed
|
|
);
|
|
[call_as(GetWhereabouts)] // pcbWhereaboutsUsed is optional; error semantics on it
|
|
HRESULT RemoteGetWhereabouts
|
|
(
|
|
[out] ULONG* pcbUsed,
|
|
[in] ULONG cbWhereabouts,
|
|
[out, size_is(cbWhereabouts), length_is(*pcbUsed)]
|
|
byte* rgbWhereabouts
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
// Used to plumb up a particular transaction with an export / import pair.
|
|
|
|
#ifndef NO_ITransactionExport
|
|
|
|
[object,uuid(0141fda5-8fc0-11ce-bd18-204c4f4f5020),pointer_default(unique)]
|
|
interface ITransactionExport : IUnknown {
|
|
HRESULT Export
|
|
(
|
|
[in] IUnknown* punkTransaction,
|
|
[out] ULONG* pcbTransactionCookie
|
|
);
|
|
[local]
|
|
HRESULT GetTransactionCookie
|
|
(
|
|
[in] IUnknown* punkTransaction,
|
|
[in] ULONG cbTransactionCookie,
|
|
[out, size_is(cbTransactionCookie)]
|
|
byte* rgbTransactionCookie,
|
|
[out] ULONG* pcbUsed
|
|
);
|
|
[call_as(GetTransactionCookie)]
|
|
HRESULT RemoteGetTransactionCookie
|
|
(
|
|
[in] IUnknown* punkTransaction,
|
|
[out] ULONG* pcbUsed,
|
|
[in] ULONG cbTransactionCookie,
|
|
[out, size_is(cbTransactionCookie), length_is(*pcbUsed)]
|
|
byte* rgbTransactionCookie
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
// Used to plumb up a particular transaction with an export / import pair.
|
|
|
|
#ifndef NO_ITransactionImport
|
|
|
|
[object,uuid(E1CF9B5A-8745-11ce-A9BA-00AA006C3706),pointer_default(unique)]
|
|
interface ITransactionImport : IUnknown {
|
|
HRESULT Import
|
|
(
|
|
[in] ULONG cbTransactionCookie,
|
|
[in, size_is(cbTransactionCookie)]
|
|
byte* rgbTransactionCookie,
|
|
[in] IID* piid,
|
|
[out, iid_is(piid)]
|
|
void** ppvTransaction
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef NO_ITip
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
// Used to "push" propagate OLE Tx transactions using tip and to get the TIP
|
|
// URL of the transaction
|
|
[object,uuid(17CF72D0-BAC5-11d1-B1BF-00C04FC2F3EF),pointer_default(unique)]
|
|
interface ITipTransaction : IUnknown
|
|
{
|
|
HRESULT Push
|
|
(
|
|
[in] char * i_pszRemoteTmUrl,
|
|
[out] LPSTR* o_ppszRemoteTxUrl
|
|
);
|
|
HRESULT GetTransactionUrl
|
|
(
|
|
[out] LPSTR* o_ppszLocalTxUrl
|
|
);
|
|
}
|
|
|
|
// Used to "pull" propagate OLE Tx transactions using tip and to get the TIP
|
|
// URL of the local TM
|
|
[object,uuid(17CF72D1-BAC5-11d1-B1BF-00C04FC2F3EF),pointer_default(unique)]
|
|
interface ITipHelper : IUnknown
|
|
{
|
|
HRESULT Pull
|
|
(
|
|
[in] char * i_pszTxUrl,
|
|
[out] ITransaction ** o_ppITransaction
|
|
);
|
|
HRESULT PullAsync
|
|
(
|
|
[in] char * i_pszTxUrl,
|
|
[in] ITipPullSink * i_pTipPullSink,
|
|
[out] ITransaction ** o_ppITransaction
|
|
);
|
|
HRESULT GetLocalTmUrl
|
|
(
|
|
[out] char ** o_ppszLocalTmUrl
|
|
);
|
|
}
|
|
|
|
// Pull completion sink
|
|
[object,uuid(17CF72D2-BAC5-11d1-B1BF-00C04FC2F3EF),pointer_default(unique)]
|
|
interface ITipPullSink : IUnknown
|
|
{
|
|
HRESULT PullComplete
|
|
(
|
|
[in] HRESULT i_hrPull
|
|
);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef NO_IDtcNetworkAccessConfig
|
|
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
//
|
|
|
|
// Used to retrieve and modify the NetworkAccess configuration properties of MSDTC.
|
|
|
|
[object,uuid(9797C15D-A428-4291-87B6-0995031A678D),pointer_default(unique)]
|
|
interface IDtcNetworkAccessConfig : IUnknown
|
|
{
|
|
HRESULT GetAnyNetworkAccess
|
|
(
|
|
[out] BOOL* pbAnyNetworkAccess
|
|
);
|
|
HRESULT SetAnyNetworkAccess
|
|
(
|
|
[in] BOOL bAnyNetworkAccess
|
|
);
|
|
|
|
HRESULT GetNetworkAdministrationAccess
|
|
(
|
|
[out] BOOL* pbNetworkAdministrationAccess
|
|
);
|
|
HRESULT SetNetworkAdministrationAccess
|
|
(
|
|
[in] BOOL bNetworkAdministrationAccess
|
|
);
|
|
|
|
HRESULT GetNetworkTransactionAccess
|
|
(
|
|
[out] BOOL* pbNetworkTransactionAccess
|
|
);
|
|
HRESULT SetNetworkTransactionAccess
|
|
(
|
|
[in] BOOL bNetworkTransactionAccess
|
|
);
|
|
|
|
HRESULT GetNetworkClientAccess
|
|
(
|
|
[out] BOOL* pbNetworkClientAccess
|
|
);
|
|
HRESULT SetNetworkClientAccess
|
|
(
|
|
[in] BOOL bNetworkClientAccess
|
|
);
|
|
|
|
HRESULT GetNetworkTIPAccess
|
|
(
|
|
[out] BOOL* pbNetworkTIPAccess
|
|
);
|
|
HRESULT SetNetworkTIPAccess
|
|
(
|
|
[in] BOOL bNetworkTIPAccess
|
|
);
|
|
|
|
HRESULT GetXAAccess
|
|
(
|
|
[out] BOOL* pbXAAccess
|
|
);
|
|
HRESULT SetXAAccess
|
|
(
|
|
[in] BOOL bXAAccess
|
|
);
|
|
|
|
HRESULT RestartDtcService();
|
|
|
|
}
|
|
|
|
typedef enum AUTHENTICATION_LEVEL
|
|
{
|
|
NO_AUTHENTICATION_REQUIRED = 0,
|
|
INCOMING_AUTHENTICATION_REQUIRED = 1,
|
|
MUTUAL_AUTHENTICATION_REQUIRED = 2
|
|
} AUTHENTICATION_LEVEL;
|
|
|
|
[object,uuid(A7AA013B-EB7D-4f42-B41C-B2DEC09AE034),pointer_default(unique)]
|
|
interface IDtcNetworkAccessConfig2 : IDtcNetworkAccessConfig
|
|
{
|
|
HRESULT GetNetworkInboundAccess ([out] BOOL* pbInbound);
|
|
HRESULT GetNetworkOutboundAccess ([out] BOOL* pbOutbound);
|
|
|
|
HRESULT SetNetworkInboundAccess ([in] BOOL bInbound);
|
|
HRESULT SetNetworkOutboundAccess ([in] BOOL bOutbound);
|
|
|
|
HRESULT GetAuthenticationLevel ([out] AUTHENTICATION_LEVEL* pAuthLevel);
|
|
HRESULT SetAuthenticationLevel ([in] AUTHENTICATION_LEVEL AuthLevel);
|
|
}
|
|
|
|
[object,uuid(76E4B4F3-2CA5-466b-89D5-FD218EE75B49),pointer_default(unique)]
|
|
interface IDtcNetworkAccessConfig3 : IDtcNetworkAccessConfig2
|
|
{
|
|
HRESULT GetLUAccess ([out] BOOL* pbLUAccess);
|
|
HRESULT SetLUAccess ([in] BOOL bLUAccess);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
cpp_quote("")
|
|
cpp_quote("")
|
|
cpp_quote("#if _MSC_VER < 1100 || !defined(__cplusplus)")
|
|
cpp_quote("")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionResourceAsync, 0x69E971F0, 0x23CE, 0x11cf, 0xAD, 0x60, 0x00, 0xAA, 0x00, 0xA7, 0x4C, 0xCD);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionLastResourceAsync, 0xC82BD532, 0x5B30, 0x11D3, 0x8A, 0x91, 0x00, 0xC0, 0x4F, 0x79, 0xEB, 0x6D);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionResource, 0xEE5FF7B3, 0x4572, 0x11d0, 0x94, 0x52, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x6E);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionEnlistmentAsync, 0x0fb15081, 0xaf41, 0x11ce, 0xbd, 0x2b, 0x20, 0x4c, 0x4f, 0x4f, 0x50, 0x20);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionLastEnlistmentAsync, 0xC82BD533, 0x5B30, 0x11D3, 0x8A, 0x91, 0x00, 0xC0, 0x4F, 0x79, 0xEB, 0x6D);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionExportFactory, 0xE1CF9B53, 0x8745, 0x11ce, 0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x6C, 0x37, 0x06);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionImportWhereabouts, 0x0141fda4, 0x8fc0, 0x11ce, 0xbd, 0x18, 0x20, 0x4c, 0x4f, 0x4f, 0x50, 0x20);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionExport, 0x0141fda5, 0x8fc0, 0x11ce, 0xbd, 0x18, 0x20, 0x4c, 0x4f, 0x4f, 0x50, 0x20);")
|
|
cpp_quote("DEFINE_GUID(IID_ITransactionImport, 0xE1CF9B5A, 0x8745, 0x11ce, 0xA9, 0xBA, 0x00, 0xAA, 0x00, 0x6C, 0x37, 0x06);")
|
|
cpp_quote("DEFINE_GUID(IID_ITipTransaction, 0x17cf72d0, 0xbac5, 0x11d1, 0xb1, 0xbf, 0x0, 0xc0, 0x4f, 0xc2, 0xf3, 0xef);")
|
|
cpp_quote("DEFINE_GUID(IID_ITipHelper, 0x17cf72d1, 0xbac5, 0x11d1, 0xb1, 0xbf, 0x0, 0xc0, 0x4f, 0xc2, 0xf3, 0xef);")
|
|
cpp_quote("DEFINE_GUID(IID_ITipPullSink, 0x17cf72d2, 0xbac5, 0x11d1, 0xb1, 0xbf, 0x0, 0xc0, 0x4f, 0xc2, 0xf3, 0xef);")
|
|
cpp_quote("DEFINE_GUID(IID_IDtcNetworkAccessConfig, 0x9797c15d, 0xa428, 0x4291, 0x87, 0xb6, 0x9, 0x95, 0x3, 0x1a, 0x67, 0x8d);")
|
|
cpp_quote("DEFINE_GUID(IID_IDtcNetworkAccessConfig2, 0xa7aa013b, 0xeb7d, 0x4f42, 0xb4, 0x1c, 0xb2, 0xde, 0xc0, 0x9a, 0xe0, 0x34);")
|
|
cpp_quote("")
|
|
cpp_quote("#else")
|
|
cpp_quote("")
|
|
cpp_quote("#define IID_ITransactionResourceAsync __uuidof(ITransactionResourceAsync)")
|
|
cpp_quote("#define IID_ITransactionLastResourceAsync __uuidof(ITransactionLastResourceAsync)")
|
|
cpp_quote("#define IID_ITransactionResource __uuidof(ITransactionResource)")
|
|
cpp_quote("#define IID_ITransactionEnlistmentAsync __uuidof(ITransactionEnlistmentAsync)")
|
|
cpp_quote("#define IID_ITransactionLastEnlistmentAsync __uuidof(ITransactionLastEnlistmentAsync)")
|
|
cpp_quote("#define IID_ITransactionExportFactory __uuidof(ITransactionExportFactory)")
|
|
cpp_quote("#define IID_ITransactionImportWhereabouts __uuidof(ITransactionImportWhereabouts)")
|
|
cpp_quote("#define IID_ITransactionExport __uuidof(ITransactionExport)")
|
|
cpp_quote("#define IID_ITransactionImport __uuidof(ITransactionImport)")
|
|
cpp_quote("#define IID_ITipTransaction __uuidof(ITipTransaction)")
|
|
cpp_quote("#define IID_ITipHelper __uuidof(ITipHelper)")
|
|
cpp_quote("#define IID_ITipPullSink __uuidof(ITipPullSink)")
|
|
cpp_quote("#define IID_IDtcNetworkAccessConfig __uuidof(IDtcNetworkAccessConfig)")
|
|
cpp_quote("#define IID_IDtcNetworkAccessConfig2 __uuidof(IDtcNetworkAccessConfig2)")
|
|
cpp_quote("#define IID_IDtcNetworkAccessConfig3 __uuidof(IDtcNetworkAccessConfig3)")
|
|
cpp_quote("")
|
|
cpp_quote("#endif")
|
|
#pragma deprecated (ITipTransaction)
|
|
#pragma deprecated (ITipHelper)
|
|
#pragma deprecated (ITipPullSink)
|
|
|
|
|
|
|