GetXaSwitch
Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista
This function must be implemented and exported by the RM proxy. The DTC transaction manager calls this function to obtain the address of the XA switch data structure implemented by the RM Proxy. The MSDTC also functions as an RM Proxy and exposes the GetXaSwitch
entry point so that other XA-based transaction managers or applications can communicate with the MSDTC by using the XA functions.
Implemented by: | RM proxy |
Object | This is a helper function, not a method on an object. |
Interface Source | N/A |
Called by: | DTC transaction manager. |
Syntax
HRESULT __cdecl GetXaSwitch ( DWORD XaSwitchFlags, xa_switch_t ** ppXaSwitch);
Parameters
XaSwitchFlags
[in] Flags that provide information about the transaction manager making the call. Currently XA_SWITCH_F_DTC is the only defined flag.
#define XA_SWITCH_F_DTC 0x00000001
ppXaSwitch
[out] Pointer to the pointer to the xa_switch_t data structure implemented by the RM proxy. This structure is defined in txdtc.h as shown in the following example.
#define RMNAMESIZE 32
struct xa_switch_t {
CHAR name[RMNAMESIZE];
LONG flags;
LONG version; /* must be 0 */
INT (__cdecl *xa_open_entry)(char *, int, long);
INT (__cdecl *xa_close_entry)(char *, int, long);
INT (__cdecl *xa_start_entry)(XID *, int, long);
INT (__cdecl *xa_end_entry)(XID *, int, long);
INT (__cdecl *xa_rollback_entry)(XID *, int, long);
INT (__cdecl *xa_prepare_entry)(XID *, int, long);
INT (__cdecl *xa_commit_entry)(XID *, int, long);
INT (__cdecl *xa_recover_entry)(XID *, long, int, long);
INT (__cdecl *xa_forget_entry)(XID *, int, long);
INT (__cdecl *xa_complete_entry)(int *, int *, int, long);
};
Return Values
S_OK
Success.
E_FAIL
Unable to provide the address of the XA switch function.
Remarks
All XA compliant resource managers must provide an XA switch. This XA switch makes it possible for transaction managers to call the resource managers xa_ routines. The format of the XA switch is described in the X/Open specification xa_switch_t structure. The XA switch contains the resource manager’s name, non-null pointers to the resource manager’s xa_ entry points, a flag, and a version number.
When the DTC transaction manager loads the RM proxy DLL, it calls GetProcAddress to obtain the address of the GetXaSwitch function. The DTC transaction manager then calls the GetXaSwitch
function to obtain the address of the resource manager’s xa_switch_t structure. The RM proxy must implement both the GetXaSwitch function and the XA Switch structure, and both must be implemented using the __cdecl calling convention.
Requirements
For an explanation of the requirement values, see Requirements (Component Services).
Platforms: Windows Server 2016, Windows 10, Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 8, Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista
Header: Declared in oletx2xa.h
Library: Included as a resource in mtxoci.dll
See Also
xa_open
xa_close
xa_start
xa_end
xa_rollback
xa_prepare
xa_commit
xa_recover
xa_forget
xa_complete