From adafd6c49de86a1b1df2a13fbd00a309619e6bfc Mon Sep 17 00:00:00 2001 From: Daniel Jelinski Date: Fri, 3 May 2013 15:58:54 +0200 Subject: [PATCH] include: Added transact.idl. --- .gitignore | 1 + dlls/adsiid/adsiid.c | 1 + include/Makefile.in | 1 + include/transact.idl | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 include/transact.idl diff --git a/.gitignore b/.gitignore index b13b6be2196..9cb851bcb91 100644 --- a/.gitignore +++ b/.gitignore @@ -246,6 +246,7 @@ include/structuredquerycondition.h include/textstor.h include/tlogstg.h include/tom.h +include/transact.h include/uiautomationclient.h include/uiautomationcore.h include/unknwn.h diff --git a/dlls/adsiid/adsiid.c b/dlls/adsiid/adsiid.c index e4e85d89b84..fc0b8b1bf4e 100644 --- a/dlls/adsiid/adsiid.c +++ b/dlls/adsiid/adsiid.c @@ -25,3 +25,4 @@ #include "initguid.h" #include "iads.h" +#include "transact.h" diff --git a/include/Makefile.in b/include/Makefile.in index 9589c34b47c..39821d22004 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -98,6 +98,7 @@ PUBLIC_IDL_H_SRCS = \ textstor.idl \ tlogstg.idl \ tom.idl \ + transact.idl \ uiautomationclient.idl \ uiautomationcore.idl \ unknwn.idl \ diff --git a/include/transact.idl b/include/transact.idl new file mode 100644 index 00000000000..c9dbc69b2ae --- /dev/null +++ b/include/transact.idl @@ -0,0 +1,226 @@ +/* + * Copyright (C) 2013 Daniel JeliƄski + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; + +cpp_quote("#include ") + +interface ITransaction; +interface ITransactionCloner; +interface ITransaction2; +interface ITransactionDispenser; +interface ITransactionOptions; +interface ITransactionOutcomeEvents; +interface ITmNodeName; + +typedef struct BOID { + byte rgb[16]; +} BOID; + +cpp_quote("#ifndef MAX_TRAN_DESC_DEFINED") +cpp_quote("#define MAX_TRAN_DESC_DEFINED") +typedef enum TX_MISC_CONSTANTS { + MAX_TRAN_DESC = 40 +} TX_MISC_CONSTANTS; +cpp_quote("#endif") + +typedef BOID XACTUOW; +typedef LONG ISOLEVEL; + +typedef enum ISOLATIONLEVEL { + ISOLATIONLEVEL_UNSPECIFIED = 0xffffffff, + ISOLATIONLEVEL_CHAOS = 0x10, + ISOLATIONLEVEL_READUNCOMMITTED = 0x100, + ISOLATIONLEVEL_BROWSE = 0x100, + ISOLATIONLEVEL_CURSORSTABILITY = 0x1000, + ISOLATIONLEVEL_READCOMMITTED = 0x1000, + ISOLATIONLEVEL_REPEATABLEREAD = 0x10000, + ISOLATIONLEVEL_SERIALIZABLE = 0x100000, + ISOLATIONLEVEL_ISOLATED = 0x100000 +} ISOLATIONLEVEL; + +typedef struct XACTTRANSINFO { + XACTUOW uow; + ISOLEVEL isoLevel; + ULONG isoFlags; + DWORD grfTCSupported; + DWORD grfRMSupported; + DWORD grfTCSupportedRetaining; + DWORD grfRMSupportedRetaining; +} XACTTRANSINFO; + +typedef struct XACTSTATS { + ULONG cOpen; + ULONG cCommitting; + ULONG cCommitted; + ULONG cAborting; + ULONG cAborted; + ULONG cInDoubt; + ULONG cHeuristicDecision; + FILETIME timeTransactionsUp; +} XACTSTATS; + +typedef enum ISOFLAG { + ISOFLAG_RETAIN_COMMIT_DC = 1, + ISOFLAG_RETAIN_COMMIT = 2, + ISOFLAG_RETAIN_COMMIT_NO = 3, + ISOFLAG_RETAIN_ABORT_DC = 4, + ISOFLAG_RETAIN_ABORT = 8, + ISOFLAG_RETAIN_ABORT_NO = 12, + ISOFLAG_RETAIN_DONTCARE = ISOFLAG_RETAIN_COMMIT_DC | ISOFLAG_RETAIN_ABORT_DC, + ISOFLAG_RETAIN_BOTH = ISOFLAG_RETAIN_COMMIT | ISOFLAG_RETAIN_ABORT, + ISOFLAG_RETAIN_NONE = ISOFLAG_RETAIN_COMMIT_NO | ISOFLAG_RETAIN_ABORT_NO, + ISOFLAG_OPTIMISTIC = 16, + ISOFLAG_READONLY = 32 +} ISOFLAG; + +typedef enum XACTTC { + XACTTC_NONE = 0, + XACTTC_SYNC_PHASEONE = 1, + XACTTC_SYNC_PHASETWO = 2, + XACTTC_SYNC = 2, + XACTTC_ASYNC_PHASEONE = 4, + XACTTC_ASYNC = 4 +} XACTTC; + +typedef enum XACTRM { + XACTRM_OPTIMISTICLASTWINS = 1, + XACTRM_NOREADONLYPREPARES +} XACTRM; + +typedef enum XACTCONST { + XACTCONST_TIMEOUTINFINITE +} XACTCONST; + +typedef enum XACTHEURISTIC { + XACTHEURISTIC_ABORT = 1, + XACTHEURISTIC_COMMIT, + XACTHEURISTIC_DAMAGE, + XACTHEURISTIC_DANGER +} XACTHEURISTIC; + +typedef enum XACTSTAT { + XACTSTAT_NONE = 0, + XACTSTAT_OPENNORMAL = 0x1, + XACTSTAT_OPENREFUSED = 0x2, + XACTSTAT_PREPARING = 0x4, + XACTSTAT_PREPARED = 0x8, + XACTSTAT_PREPARERETAINING = 0x10, + XACTSTAT_PREPARERETAINED = 0x20, + XACTSTAT_COMMITTING = 0x40, + XACTSTAT_COMMITRETAINING = 0x80, + XACTSTAT_ABORTING = 0x100, + XACTSTAT_ABORTED = 0x200, + XACTSTAT_COMMITTED = 0x400, + XACTSTAT_HEURISTIC_ABORT = 0x800, + XACTSTAT_HEURISTIC_COMMIT = 0x1000, + XACTSTAT_HEURISTIC_DAMAGE = 0x2000, + XACTSTAT_HEURISTIC_DANGER = 0x4000, + XACTSTAT_FORCED_ABORT = 0x8000, + XACTSTAT_FORCED_COMMIT = 0x10000, + XACTSTAT_INDOUBT = 0x20000, + XACTSTAT_CLOSED = 0x40000, + XACTSTAT_OPEN = 0x3, + XACTSTAT_NOTPREPARED = 0x7ffc3, + XACTSTAT_ALL = 0x7ffff +} XACTSTAT; + +typedef struct XACTOPT { + ULONG ulTimeout; + char szDescription[40 ]; +} XACTOPT; + +[ + object, + uuid(0fb15084-af41-11ce-bd2b-204c4f4f5020) +] +interface ITransaction : IUnknown { + HRESULT Commit([in] BOOL fRetaining, + [in] DWORD grfTC, + [in] DWORD grfRM); + HRESULT Abort([in, unique] BOID *pboidReason, + [in] BOOL fRetaining, + [in] BOOL fAsync); + HRESULT GetTransactionInfo([out] XACTTRANSINFO *pinfo); +}; + +[ + object, + uuid(02656950-2152-11d0-944C-00A0C905416E) +] +interface ITransactionCloner : ITransaction { + HRESULT CloneWithCommitDisabled([out] ITransaction **ppITransaction); +}; + +[ + object, + uuid(34021548-0065-11d3-bac1-00c04f797be2) +] +interface ITransaction2 : ITransactionCloner { + HRESULT GetTransactionInfo2([out] XACTTRANSINFO *pinfo); +}; + +[ + object, + uuid(3A6AD9E1-23B9-11cf-AD60-00AA00A74CCD) +] +interface ITransactionDispenser : IUnknown { + HRESULT GetOptionsObject([out] ITransactionOptions **ppOptions); + HRESULT BeginTransaction([in, unique] IUnknown *punkOuter, + [in] ISOLEVEL isoLevel, + [in] ULONG isoFlags, + [in, unique] ITransactionOptions *pOptions, + [out] ITransaction **ppTransaction); +}; + +[ + object, + uuid(3A6AD9E0-23B9-11cf-AD60-00AA00A74CCD) +] +interface ITransactionOptions : IUnknown { + HRESULT SetOptions([in] XACTOPT *pOptions); + HRESULT GetOptions([in, out] XACTOPT *pOptions); +}; + +[ + object, + uuid(3A6AD9E2-23B9-11cf-AD60-00AA00A74CCD) +] +interface ITransactionOutcomeEvents : IUnknown { + HRESULT Committed([in] BOOL fRetaining, + [in, unique] XACTUOW *pNewUOW, + [in] HRESULT hr); + HRESULT Aborted([in, unique] BOID *pboidReason, + [in] BOOL fRetaining, + [in, unique] XACTUOW *pNewUOW, + [in] HRESULT hr); + HRESULT HeuristicDecision([in] DWORD dwDecision, + [in, unique] BOID *pboidReason, + [in] HRESULT hr); + HRESULT Indoubt(void); +}; + +[ + object, + uuid(30274F88-6EE4-474e-9B95-7807BC9EF8CF) +] +interface ITmNodeName : IUnknown { + HRESULT GetNodeNameSize([out] ULONG *pcbNodeNameSize); + HRESULT GetNodeName([in] ULONG cbNodeNameBufferSize, + [in, out] LPWSTR pNodeNameBuffer); +}; -- 2.11.4.GIT