2 * Copyright (C) 2013 Daniel JeliĆski
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 interface IXATransLookup
;
22 interface IXATransLookup2
;
23 interface IResourceManagerSink
;
24 interface IResourceManager
;
25 interface ILastResourceManager
;
26 interface IResourceManager2
;
28 /*interface IRMHelper;
29 interface IXAObtainRMInfo;*/
30 interface IResourceManagerFactory
;
31 interface IResourceManagerFactory2
;
32 interface IPrepareInfo
;
33 interface IPrepareInfo2
;
34 interface IGetDispenser
;
35 interface ITransactionVoterBallotAsync2
;
36 interface ITransactionVoterNotifyAsync2
;
37 interface ITransactionVoterFactory2
;
38 interface ITransactionPhase0EnlistmentAsync
;
39 interface ITransactionPhase0NotifyAsync
;
40 interface ITransactionPhase0Factory
;
41 interface ITransactionTransmitter
;
42 interface ITransactionTransmitterFactory
;
43 interface ITransactionReceiver
;
44 interface ITransactionReceiverFactory
;
45 interface IDtcLuConfigure
;
46 interface IDtcLuRecovery
;
47 interface IDtcLuRecoveryFactory
;
48 interface IDtcLuRecoveryInitiatedByDtcTransWork
;
49 interface IDtcLuRecoveryInitiatedByDtcStatusWork
;
50 interface IDtcLuRecoveryInitiatedByDtc
;
51 interface IDtcLuRecoveryInitiatedByLuWork
;
52 interface IDtcLuRecoveryInitiatedByLu
;
53 interface IDtcLuRmEnlistment
;
54 interface IDtcLuRmEnlistmentSink
;
55 interface IDtcLuRmEnlistmentFactory
;
56 interface IDtcLuSubordinateDtc
;
57 interface IDtcLuSubordinateDtcSink
;
58 interface IDtcLuSubordinateDtcFactory
;
60 cpp_quote
("#define XACTTOMSG(dwXact) (dwXact-0x00040000+0x40000000)")
61 typedef enum XACT_DTC_CONSTANTS
{
62 XACT_E_CONNECTION_REQUEST_DENIED
= 0x8004d100,
63 XACT_E_TOOMANY_ENLISTMENTS
= 0x8004d101,
64 XACT_E_DUPLICATE_GUID
= 0x8004d102,
65 XACT_E_NOTSINGLEPHASE
= 0x8004d103,
66 XACT_E_RECOVERYALREADYDONE
= 0x8004d104,
67 XACT_E_PROTOCOL
= 0x8004d105,
68 XACT_E_RM_FAILURE
= 0x8004d106,
69 XACT_E_RECOVERY_FAILED
= 0x8004d107,
70 XACT_E_LU_NOT_FOUND
= 0x8004d108,
71 XACT_E_DUPLICATE_LU
= 0x8004d109,
72 XACT_E_LU_NOT_CONNECTED
= 0x8004d10a,
73 XACT_E_DUPLICATE_TRANSID
= 0x8004d10b,
74 XACT_E_LU_BUSY
= 0x8004d10c,
75 XACT_E_LU_NO_RECOVERY_PROCESS
= 0x8004d10d,
76 XACT_E_LU_DOWN
= 0x8004d10e,
77 XACT_E_LU_RECOVERING
= 0x8004d10f,
78 XACT_E_LU_RECOVERY_MISMATCH
= 0x8004d110,
79 XACT_E_RM_UNAVAILABLE
= 0x8004d111,
80 XACT_E_LRMRECOVERYALREADYDONE
= 0x8004d112,
81 XACT_E_NOLASTRESOURCEINTERFACE
= 0x8004d113,
82 XACT_S_NONOTIFY
= 0x4d100,
83 XACT_OK_NONOTIFY
= 0x4d101,
84 dwUSER_MS_SQLSERVER
= 0xffff
87 cpp_quote
("#ifndef _XID_T_DEFINED")
88 cpp_quote
("#define _XID_T_DEFINED")
89 typedef struct xid_t
{
96 /* idl doesn't like this type
97 cpp_quote("#ifndef _XA_SWITCH_T_DEFINED")
98 cpp_quote("#define _XA_SWITCH_T_DEFINED")
99 typedef struct xa_switch_t {
103 int (__cdecl *xa_open_entry)(char *__MIDL_0004,int __MIDL_0005,LONG32 __MIDL_0006);
104 int (__cdecl *xa_close_entry)(char *__MIDL_0008,int __MIDL_0009,LONG32 __MIDL_0010);
105 int (__cdecl *xa_start_entry)(XID *__MIDL_0012,int __MIDL_0013,LONG32 __MIDL_0014);
106 int (__cdecl *xa_end_entry)(XID *__MIDL_0016,int __MIDL_0017,LONG32 __MIDL_0018);
107 int (__cdecl *xa_rollback_entry)(XID *__MIDL_0020,int __MIDL_0021,LONG32 __MIDL_0022);
108 int (__cdecl *xa_prepare_entry)(XID *__MIDL_0024,int __MIDL_0025,LONG32 __MIDL_0026);
109 int (__cdecl *xa_commit_entry)(XID *__MIDL_0028,int __MIDL_0029,LONG32 __MIDL_0030);
110 int (__cdecl *xa_recover_entry)(XID *__MIDL_0032,LONG32 __MIDL_0033,int __MIDL_0034,LONG32 __MIDL_0035);
111 int (__cdecl *xa_forget_entry)(XID *__MIDL_0037,int __MIDL_0038,LONG32 __MIDL_0039);
112 int (__cdecl *xa_complete_entry)(int *__MIDL_0041,int *__MIDL_0042,int __MIDL_0043,LONG32 __MIDL_0044);
118 uuid(f3b1f131
-eeda
-11ce
-aed4
-00aa0051e2c4
)
120 interface IXATransLookup
: IUnknown
{
121 HRESULT Lookup
([out]ITransaction
**ppTransaction
);
125 uuid(bf193c85
-0d1a
-4290-b88f
-d2cb8873d1e7
)
127 interface IXATransLookup2
: IUnknown
{
128 HRESULT Lookup
([in]XID
*pXID
,[out]ITransaction
**ppTransaction
);
132 uuid(0d563181
-defb
-11ce
-aed1
-00aa0051e2c4
)
134 interface IResourceManagerSink
: IUnknown
{
135 HRESULT TMDown
(void);
139 uuid(13741d21
-87eb
-11ce
-8081-0080c758527e
)
141 interface IResourceManager
: IUnknown
{
142 HRESULT Enlist
([in]ITransaction
*pTransaction
,[in]ITransactionResourceAsync
*pRes
,[out]XACTUOW
*pUOW
,[out]LONG *pisoLevel
,[out]ITransactionEnlistmentAsync
**ppEnlist
);
143 HRESULT Reenlist
([in]byte *pPrepInfo
,[in]ULONG cbPrepInfo
,[in]DWORD lTimeout
,[out]XACTSTAT
*pXactStat
);
144 HRESULT ReenlistmentComplete
(void);
145 HRESULT GetDistributedTransactionManager
([in]REFIID iid
,[out,iid_is(iid
)]void **ppvObject
);
149 uuid(4d964ad4
-5b33
-11d3
-8a91
-00c04f79eb6d
)
151 interface ILastResourceManager
: IUnknown
{
152 HRESULT TransactionCommitted
([in]byte *pPrepInfo
,[in]ULONG cbPrepInfo
);
153 HRESULT RecoveryDone
(void);
157 uuid(d136c69a
-f749
-11d1
-8f47
-00c04f8ee57d
)
159 interface IResourceManager2
: IResourceManager
{
160 HRESULT Enlist2
([in]ITransaction
*pTransaction
,[in]ITransactionResourceAsync
*pResAsync
,[out]XACTUOW
*pUOW
,[out]LONG *pisoLevel
,[out]XID
*pXid
,[out]ITransactionEnlistmentAsync
**ppEnlist
);
161 HRESULT Reenlist2
([in]XID
*pXid
,[in]DWORD dwTimeout
,[out]XACTSTAT
*pXactStat
);
165 uuid(c8a6e3a1
-9a8c
-11cf
-a308
-00a0c905416e
)
167 interface IXAConfig
: IUnknown
{
168 HRESULT Initialize
([in]GUID clsidHelperDll
);
169 HRESULT Terminate
(void);
171 /* commented out because idl doesn't accept xa_switch_t type
174 uuid(E793F6D1-F53D-11cf-A60D-00A0C905416E)
176 interface IRMHelper : IUnknown {
177 HRESULT RMCount([in]DWORD dwcTotalNumberOfRMs);
178 HRESULT RMInfo([in]xa_switch_t *pXa_Switch,[in]BOOL fCDeclCallingConv,[in]char *pszOpenString,[in]char *pszCloseString,[in]GUID guidRMRecovery);
182 uuid(E793F6D2-F53D-11cf-A60D-00A0C905416E)
184 interface IXAObtainRMInfo : IUnknown {
185 HRESULT ObtainRMInfo([in]IRMHelper *pIRMHelper);
189 uuid(13741d20
-87eb
-11ce
-8081-0080c758527e
)
191 interface IResourceManagerFactory
: IUnknown
{
192 HRESULT Create
([in]GUID
*pguidRM
,[in]CHAR *pszRMName
,[in]IResourceManagerSink
*pIResMgrSink
,[out]IResourceManager
**ppResMgr
);
196 uuid(6b369c21
-fbd2
-11d1
-8f47
-00c04f8ee57d
)
198 interface IResourceManagerFactory2
: IResourceManagerFactory
{
199 HRESULT CreateEx
([in]GUID
*pguidRM
,[in]CHAR *pszRMName
,[in]IResourceManagerSink
*pIResMgrSink
,[in]REFIID riidRequested
,[out, iid_is(riidRequested
)]void **ppvResMgr
);
204 uuid(80c7bfd0
-87ee
-11ce
-8081-0080c758527e
)
206 interface IPrepareInfo
: IUnknown
{
207 HRESULT GetPrepareInfoSize
([out]ULONG
*pcbPrepInfo
);
208 HRESULT GetPrepareInfo
([out]byte *pPrepInfo
);
212 uuid(5fab2547
-9779-11d1
-b886
-00c04fb9618a
)
214 interface IPrepareInfo2
: IUnknown
{
215 HRESULT GetPrepareInfoSize
([out]ULONG
*pcbPrepInfo
);
216 HRESULT GetPrepareInfo
([in]ULONG cbPrepareInfo
,[out]byte *pPrepInfo
);
220 uuid(c23cc370
-87ef
-11ce
-8081-0080c758527e
)
222 interface IGetDispenser
: IUnknown
{
223 HRESULT GetDispenser
([in]REFIID iid
,[out,iid_is(iid
)]void **ppvObject
);
227 uuid(5433376c
-414d
-11d3
-b206
-00c04fc2f3ef
)
229 interface ITransactionVoterBallotAsync2
: IUnknown
{
230 HRESULT VoteRequestDone
([in]HRESULT hr
,[in]BOID
*pboidReason
);
234 uuid(5433376b
-414d
-11d3
-b206
-00c04fc2f3ef
)
236 interface ITransactionVoterNotifyAsync2
: ITransactionOutcomeEvents
{
237 HRESULT VoteRequest
(void);
241 uuid(5433376a
-414d
-11d3
-b206
-00c04fc2f3ef
)
243 interface ITransactionVoterFactory2
: IUnknown
{
244 HRESULT Create
([in]ITransaction
*pTransaction
,[in]ITransactionVoterNotifyAsync2
*pVoterNotify
,[out]ITransactionVoterBallotAsync2
**ppVoterBallot
);
248 uuid(82dc88e1
-a954
-11d1
-8f88
-00600895e7d5
)
250 interface ITransactionPhase0EnlistmentAsync
: IUnknown
{
251 HRESULT Enable
(void);
252 HRESULT WaitForEnlistment
(void);
253 HRESULT Phase0Done
(void);
254 HRESULT Unenlist
(void);
255 HRESULT GetTransaction
([out]ITransaction
**ppITransaction
);
259 uuid(ef081809
-0c76
-11d2
-87a6
-00c04f990f34
)
261 interface ITransactionPhase0NotifyAsync
: IUnknown
{
262 HRESULT Phase0Request
([in]BOOL fAbortingHint
);
263 HRESULT EnlistCompleted
([in]HRESULT status
);
267 uuid(82dc88e0
-a954
-11d1
-8f88
-00600895e7d5
)
269 interface ITransactionPhase0Factory
: IUnknown
{
270 HRESULT Create
([in]ITransactionPhase0NotifyAsync
*pPhase0Notify
,[out]ITransactionPhase0EnlistmentAsync
**ppPhase0Enlistment
);
274 uuid(59313e01
-b36c
-11cf
-a539
-00aa006887c3
)
276 interface ITransactionTransmitter
: IUnknown
{
277 HRESULT Set
([in]ITransaction
*pTransaction
);
278 HRESULT GetPropagationTokenSize
([out]ULONG
*pcbToken
);
279 HRESULT MarshalPropagationToken
([in]ULONG cbToken
,[out]byte *rgbToken
,[out]ULONG
*pcbUsed
);
280 HRESULT UnmarshalReturnToken
([in]ULONG cbReturnToken
,[in]byte *rgbReturnToken
);
285 uuid(59313e00
-b36c
-11cf
-a539
-00aa006887c3
)
287 interface ITransactionTransmitterFactory
: IUnknown
{
288 HRESULT Create
([out]ITransactionTransmitter
**ppTransmitter
);
292 uuid(59313e03
-b36c
-11cf
-a539
-00aa006887c3
)
294 interface ITransactionReceiver
: IUnknown
{
295 HRESULT UnmarshalPropagationToken
([in]ULONG cbToken
,[in]byte *rgbToken
,[out]ITransaction
**ppTransaction
);
296 HRESULT GetReturnTokenSize
([out]ULONG
*pcbReturnToken
);
297 HRESULT MarshalReturnToken
([in]ULONG cbReturnToken
,[out]byte *rgbReturnToken
,[out]ULONG
*pcbUsed
);
302 uuid(59313e02
-b36c
-11cf
-a539
-00aa006887c3
)
304 interface ITransactionReceiverFactory
: IUnknown
{
305 HRESULT Create
([out]ITransactionReceiver
**ppReceiver
);
308 typedef struct _ProxyConfigParams
{
310 } PROXY_CONFIG_PARAMS
;
314 uuid(4131e760
-1aea
-11d0
-944b
-00a0c905416e
)
316 interface IDtcLuConfigure
: IUnknown
{
317 HRESULT Add
([in]byte *pucLuPair
,[in]DWORD cbLuPair
);
318 HRESULT Delete
([in]byte *pucLuPair
,[in]DWORD cbLuPair
);
322 uuid(ac2b8ad2
-d6f0
-11d0
-b386
-00a0c9083365
)
324 interface IDtcLuRecovery
: IUnknown
{
328 uuid(4131e762
-1aea
-11d0
-944b
-00a0c905416e
)
330 interface IDtcLuRecoveryFactory
: IUnknown
{
331 HRESULT Create
([in]byte *pucLuPair
,[in]DWORD cbLuPair
,[out]IDtcLuRecovery
**ppRecovery
);
334 typedef enum _DtcLu_LocalRecovery_Work
{
335 DTCINITIATEDRECOVERYWORK_CHECKLUSTATUS
= 1,
336 DTCINITIATEDRECOVERYWORK_TRANS
,
337 DTCINITIATEDRECOVERYWORK_TMDOWN
338 } DTCINITIATEDRECOVERYWORK
;
340 typedef enum _DtcLu_Xln
{
345 typedef enum _DtcLu_Xln_Confirmation
{
346 DTCLUXLNCONFIRMATION_CONFIRM
= 1,
347 DTCLUXLNCONFIRMATION_LOGNAMEMISMATCH
,
348 DTCLUXLNCONFIRMATION_COLDWARMMISMATCH
,
349 DTCLUXLNCONFIRMATION_OBSOLETE
350 } DTCLUXLNCONFIRMATION
;
352 typedef enum _DtcLu_Xln_Response
{
353 DTCLUXLNRESPONSE_OK_SENDOURXLNBACK
= 1,
354 DTCLUXLNRESPONSE_OK_SENDCONFIRMATION
,
355 DTCLUXLNRESPONSE_LOGNAMEMISMATCH
,
356 DTCLUXLNRESPONSE_COLDWARMMISMATCH
359 typedef enum _DtcLu_Xln_Error
{
360 DTCLUXLNERROR_PROTOCOL
= 1,
361 DTCLUXLNERROR_LOGNAMEMISMATCH
,
362 DTCLUXLNERROR_COLDWARMMISMATCH
365 typedef enum _DtcLu_CompareState
{
366 DTCLUCOMPARESTATE_COMMITTED
= 1,
367 DTCLUCOMPARESTATE_HEURISTICCOMMITTED
,
368 DTCLUCOMPARESTATE_HEURISTICMIXED
,
369 DTCLUCOMPARESTATE_HEURISTICRESET
,
370 DTCLUCOMPARESTATE_INDOUBT
,
371 DTCLUCOMPARESTATE_RESET
374 typedef enum _DtcLu_CompareStates_Confirmation
{
375 DTCLUCOMPARESTATESCONFIRMATION_CONFIRM
= 1,
376 DTCLUCOMPARESTATESCONFIRMATION_PROTOCOL
377 } DTCLUCOMPARESTATESCONFIRMATION
;
379 typedef enum _DtcLu_CompareStates_Error
{
380 DTCLUCOMPARESTATESERROR_PROTOCOL
= 1
381 } DTCLUCOMPARESTATESERROR
;
383 typedef enum _DtcLu_CompareStates_Response
{
384 DTCLUCOMPARESTATESRESPONSE_OK
= 1,
385 DTCLUCOMPARESTATESRESPONSE_PROTOCOL
386 } DTCLUCOMPARESTATESRESPONSE
;
390 uuid(4131e765
-1aea
-11d0
-944b
-00a0c905416e
)
392 interface IDtcLuRecoveryInitiatedByDtcTransWork
: IUnknown
{
393 HRESULT GetLogNameSizes
([out]DWORD
*pcbOurLogName
,[out]DWORD
*pcbRemoteLogName
);
394 HRESULT GetOurXln
([out]DTCLUXLN
*pXln
,[in,out]unsigned char *pOurLogName
,[in,out]unsigned char *pRemoteLogName
,[out]DWORD
*pdwProtocol
);
395 HRESULT HandleConfirmationFromOurXln
([in]DTCLUXLNCONFIRMATION Confirmation
);
396 HRESULT HandleTheirXlnResponse
([in]DTCLUXLN Xln
,[in]unsigned char *pRemoteLogName
,[in]DWORD cbRemoteLogName
,[in]DWORD dwProtocol
,[out]DTCLUXLNCONFIRMATION
*pConfirmation
);
397 HRESULT HandleErrorFromOurXln
([in]DTCLUXLNERROR Error
);
398 HRESULT CheckForCompareStates
([out]BOOL
*fCompareStates
);
399 HRESULT GetOurTransIdSize
([in,out]DWORD
*pcbOurTransId
);
400 HRESULT GetOurCompareStates
([in,out]unsigned char *pOurTransId
,[out]DTCLUCOMPARESTATE
*pCompareState
);
401 HRESULT HandleTheirCompareStatesResponse
([in]DTCLUCOMPARESTATE CompareState
,[out]DTCLUCOMPARESTATESCONFIRMATION
*pConfirmation
);
402 HRESULT HandleErrorFromOurCompareStates
([in]DTCLUCOMPARESTATESERROR Error
);
403 HRESULT ConversationLost
(void);
404 HRESULT GetRecoverySeqNum
([out]LONG *plRecoverySeqNum
);
405 HRESULT ObsoleteRecoverySeqNum
([in]LONG lNewRecoverySeqNum
);
409 uuid(4131e766
-1aea
-11d0
-944b
-00a0c905416e
)
411 interface IDtcLuRecoveryInitiatedByDtcStatusWork
: IUnknown
{
412 HRESULT HandleCheckLuStatus
([in]LONG lRecoverySeqNum
);
416 uuid(4131e764
-1aea
-11d0
-944b
-00a0c905416e
)
418 [local] interface IDtcLuRecoveryInitiatedByDtc
: IUnknown
{
419 HRESULT GetWork
([in,out]DTCINITIATEDRECOVERYWORK
*pWork
,[in,out]void **ppv
);
423 uuid(ac2b8ad1
-d6f0
-11d0
-b386
-00a0c9083365
)
425 interface IDtcLuRecoveryInitiatedByLuWork
: IUnknown
{
426 HRESULT HandleTheirXln
([in]LONG lRecoverySeqNum
,[in]DTCLUXLN Xln
,[in]unsigned char *pRemoteLogName
,[in]DWORD cbRemoteLogName
,[in]unsigned char *pOurLogName
,[in]DWORD cbOurLogName
,[in]DWORD dwProtocol
,[out]DTCLUXLNRESPONSE
*pResponse
);
427 HRESULT GetOurLogNameSize
([in,out]DWORD
*pcbOurLogName
);
428 HRESULT GetOurXln
([out]DTCLUXLN
*pXln
,[in,out]unsigned char *pOurLogName
,[out]DWORD
*pdwProtocol
);
429 HRESULT HandleConfirmationOfOurXln
([in]DTCLUXLNCONFIRMATION Confirmation
);
430 HRESULT HandleTheirCompareStates
([in,out]unsigned char *pRemoteTransId
,[in]DWORD cbRemoteTransId
,[in]DTCLUCOMPARESTATE CompareState
,[out]DTCLUCOMPARESTATESRESPONSE
*pResponse
,[out]DTCLUCOMPARESTATE
*pCompareState
);
431 HRESULT HandleConfirmationOfOurCompareStates
([in]DTCLUCOMPARESTATESCONFIRMATION Confirmation
);
432 HRESULT HandleErrorFromOurCompareStates
([in]DTCLUCOMPARESTATESERROR Error
);
433 HRESULT ConversationLost
(void);
437 uuid(4131e768
-1aea
-11d0
-944b
-00a0c905416e
)
439 interface IDtcLuRecoveryInitiatedByLu
: IUnknown
{
440 HRESULT GetObjectToHandleWorkFromLu
([out]IDtcLuRecoveryInitiatedByLuWork
**ppWork
);
444 uuid(4131e769
-1aea
-11d0
-944b
-00a0c905416e
)
446 interface IDtcLuRmEnlistment
: IUnknown
{
447 HRESULT Unplug
([in]BOOL fConversationLost
);
448 HRESULT BackedOut
(void);
449 HRESULT BackOut
(void);
450 HRESULT Committed
(void);
451 HRESULT Forget
(void);
452 HRESULT RequestCommit
(void);
456 uuid(4131e770
-1aea
-11d0
-944b
-00a0c905416e
)
458 interface IDtcLuRmEnlistmentSink
: IUnknown
{
459 HRESULT AckUnplug
(void);
460 HRESULT TmDown
(void);
461 HRESULT SessionLost
(void);
462 HRESULT BackedOut
(void);
463 HRESULT BackOut
(void);
464 HRESULT Committed
(void);
465 HRESULT Forget
(void);
466 HRESULT Prepare
(void);
467 HRESULT RequestCommit
(void);
471 uuid(4131e771
-1aea
-11d0
-944b
-00a0c905416e
)
473 interface IDtcLuRmEnlistmentFactory
: IUnknown
{
474 HRESULT Create
([in]unsigned char *pucLuPair
,[in]DWORD cbLuPair
,[in]ITransaction
*pITransaction
,[in]unsigned char *pTransId
,[in]DWORD cbTransId
,[in]IDtcLuRmEnlistmentSink
*pRmEnlistmentSink
,[in,out]IDtcLuRmEnlistment
**ppRmEnlistment
);
478 uuid(4131e773
-1aea
-11d0
-944b
-00a0c905416e
)
480 interface IDtcLuSubordinateDtc
: IUnknown
{
481 HRESULT Unplug
([in]BOOL fConversationLost
);
482 HRESULT BackedOut
(void);
483 HRESULT BackOut
(void);
484 HRESULT Committed
(void);
485 HRESULT Forget
(void);
486 HRESULT Prepare
(void);
487 HRESULT RequestCommit
(void);
491 uuid(4131e774
-1aea
-11d0
-944b
-00a0c905416e
)
493 interface IDtcLuSubordinateDtcSink
: IUnknown
{
494 HRESULT AckUnplug
(void);
495 HRESULT TmDown
(void);
496 HRESULT SessionLost
(void);
497 HRESULT BackedOut
(void);
498 HRESULT BackOut
(void);
499 HRESULT Committed
(void);
500 HRESULT Forget
(void);
501 HRESULT RequestCommit
(void);
505 uuid(4131e775
-1aea
-11d0
-944b
-00a0c905416e
)
507 interface IDtcLuSubordinateDtcFactory
: IUnknown
{
508 HRESULT Create
([in]unsigned char *pucLuPair
,[in]DWORD cbLuPair
,[in]IUnknown
*punkTransactionOuter
,[in]ISOLEVEL isoLevel
,[in]ULONG isoFlags
,[in]ITransactionOptions
*pOptions
,[out]ITransaction
**ppTransaction
,[in]unsigned char *pTransId
,[in]DWORD cbTransId
,[in]IDtcLuSubordinateDtcSink
*pSubordinateDtcSink
,[in,out]IDtcLuSubordinateDtc
**ppSubordinateDtc
);
511 /* these GUIDs were found in mingw header, but without corresponding interface definitions
512 DEFINE_GUID(IID_IXAResourceManager,0x4131e751,0x1aea,0x11d0,0x94,0x4b,0x00,0xa0,0xc9,0x05,0x41,0x6e);
513 DEFINE_GUID(IID_IXAResourceManagerFactory,0x4131e750,0x1aea,0x11d0,0x94,0x4b,0x00,0xa0,0xc9,0x05,0x41,0x6e);
514 DEFINE_GUID(IID_IXATransaction,0x4131e752,0x1aea,0x11d0,0x94,0x4b,0x00,0xa0,0xc9,0x05,0x41,0x6e);