Daniel JeliĆski djelinski1@gmail.com writes:
+import "unknwn.idl";
+interface ITransaction; +interface ITransactionDispenser; +interface ITransactionOptions; +interface ITransactionOutcomeEvents; +interface ITransactionCompletionEvents;
+/*==========================================================================
- Transaction related types
- *==========================================================================*/
+[local,pointer_default(unique)] +interface BasicTransactionTypes
- {
- typedef struct BOID {
byte rgb[16];} BOID;- cpp_quote("#define BOID_NULL (*((BOID*)(&IID_NULL)))")
- /* change the following two line together */
- cpp_quote("#ifndef MAX_TRAN_DESC_DEFINED") /* conflicts with uimsg.h. This is temporary work around */
- cpp_quote("#define MAX_TRAN_DESC_DEFINED")
- typedef enum TX_MISC_CONSTANTS
{MAX_TRAN_DESC = 40} TX_MISC_CONSTANTS;- cpp_quote("#endif")
- /* Unit Of Work. */
- typedef BOID XACTUOW;
- /* Data type for isolation level values. */
- typedef LONG ISOLEVEL;
- /* Constants that specifiy isolation level of a transaction. */
- typedef enum ISOLATIONLEVEL {
ISOLATIONLEVEL_UNSPECIFIED = 0xFFFFFFFF,ISOLATIONLEVEL_CHAOS = 0x00000010,ISOLATIONLEVEL_READUNCOMMITTED = 0x00000100,ISOLATIONLEVEL_BROWSE = 0x00000100, /* Synonym for _READUNCOMITTED */ISOLATIONLEVEL_CURSORSTABILITY = 0x00001000,ISOLATIONLEVEL_READCOMMITTED = 0x00001000, /* Synonym for _CURSORSTABILITY */ISOLATIONLEVEL_REPEATABLEREAD = 0x00010000,ISOLATIONLEVEL_SERIALIZABLE = 0x00100000,ISOLATIONLEVEL_ISOLATED = 0x00100000, /* Synonym for _SERIALIZABLE */} ISOLATIONLEVEL;- /* Transaction information structure, used in ITransaction */
- typedef struct XACTTRANSINFO {
XACTUOW uow; /* The current unit of work */ISOLEVEL isoLevel; /* The isolation level for the current UOW */ULONG isoFlags; /* Values from ISOFLAG enumeration */DWORD grfTCSupported; /* Flags indicating capabilities */DWORD grfRMSupported; /* ... of this transaction wrt */DWORD grfTCSupportedRetaining; /* ... parameters to Commit */DWORD grfRMSupportedRetaining; /* ... */} XACTTRANSINFO;- typedef struct XACTSTATS {
ULONG cOpen; /* The number of currently extant transactions. */ULONG cCommitting; /* The number of transactions which are proceding towards committing. */ULONG cCommitted; /* The number of transactions that are have been committed. */ULONG cAborting; /* The number of transactions which are in the process of aborting. */ULONG cAborted; /* The number of transactions that are have been aborted. */ULONG cInDoubt; /* The number of transactions which are presently in doubt. */ULONG cHeuristicDecision; /* The number of transactions that have completed by heuristic decision. */FILETIME timeTransactionsUp; /* The amount of time that this transaction service has been up. */} XACTSTATS;
This is clearly a straight copy of the SDK header. You can't do that.