[6/8] xolehlp: implement ITransactionImport
Daniel Jeliński
djelinski1 at gmail.com
Tue May 28 15:06:12 CDT 2013
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20130528/e8c2bdf8/attachment.html>
-------------- next part --------------
From 6b5ea085b5385d43db3585226dc67b79e3fc9f69 Mon Sep 17 00:00:00 2001
From: Daniel Jelinski <djelinski1 at gmail.com>
Date: Sat, 4 May 2013 20:09:34 +0200
Subject: xolehlp: implement ITransactionImport
with this patch SQL Server part starts working fine, instead the client fails.
---
dlls/xolehlp/xolehlp.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/dlls/xolehlp/xolehlp.c b/dlls/xolehlp/xolehlp.c
index dfd92de..cc86671 100644
--- a/dlls/xolehlp/xolehlp.c
+++ b/dlls/xolehlp/xolehlp.c
@@ -152,6 +152,7 @@ typedef struct {
LONG ref;
IResourceManagerFactory2 IResourceManagerFactory2_iface;
ITransactionImportWhereabouts ITransactionImportWhereabouts_iface;
+ ITransactionImport ITransactionImport_iface;
} TransactionManager;
static inline TransactionManager *impl_from_ITransactionDispenser(ITransactionDispenser *iface)
@@ -181,6 +182,10 @@ static HRESULT WINAPI TransactionDispenser_QueryInterface(ITransactionDispenser
{
*ppv = &This->ITransactionImportWhereabouts_iface;
}
+ else if (IsEqualIID(&IID_ITransactionImport, iid))
+ {
+ *ppv = &This->ITransactionImport_iface;
+ }
else
{
FIXME("(%s): not implemented\n", debugstr_guid(iid));
@@ -344,6 +349,44 @@ static const ITransactionImportWhereaboutsVtbl TransactionImportWhereabouts_Vtbl
TransactionImportWhereabouts_GetWhereabouts
};
+static inline TransactionManager *impl_from_ITransactionImport(ITransactionImport *iface)
+{
+ return CONTAINING_RECORD(iface, TransactionManager, ITransactionImport_iface);
+}
+
+static HRESULT WINAPI TransactionImport_QueryInterface(ITransactionImport *iface, REFIID iid,
+ void **ppv)
+{
+ TransactionManager *This = impl_from_ITransactionImport(iface);
+ return TransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, iid, ppv);
+}
+
+static ULONG WINAPI TransactionImport_AddRef(ITransactionImport *iface)
+{
+ TransactionManager *This = impl_from_ITransactionImport(iface);
+ return TransactionDispenser_AddRef(&This->ITransactionDispenser_iface);
+}
+
+static ULONG WINAPI TransactionImport_Release(ITransactionImport *iface)
+{
+ TransactionManager *This = impl_from_ITransactionImport(iface);
+ return TransactionDispenser_Release(&This->ITransactionDispenser_iface);
+}
+static HRESULT WINAPI TransactionImport_Import(ITransactionImport *iface,
+ ULONG cbTransactionCookie, byte *rgbTransactionCookie, IID *piid, void **ppvTransaction)
+{
+ FIXME("(%p, %u, %p, %s, %p): stub\n", iface, cbTransactionCookie, rgbTransactionCookie, debugstr_guid(piid), ppvTransaction);
+
+ if (!rgbTransactionCookie || !piid || !ppvTransaction) return E_INVALIDARG;
+ return E_NOTIMPL;
+}
+static const ITransactionImportVtbl TransactionImport_Vtbl = {
+ TransactionImport_QueryInterface,
+ TransactionImport_AddRef,
+ TransactionImport_Release,
+ TransactionImport_Import
+};
+
static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
{
TransactionManager *This;
@@ -355,6 +398,7 @@ static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
This->ITransactionDispenser_iface.lpVtbl = &TransactionDispenser_Vtbl;
This->IResourceManagerFactory2_iface.lpVtbl = &ResourceManagerFactory2_Vtbl;
This->ITransactionImportWhereabouts_iface.lpVtbl = &TransactionImportWhereabouts_Vtbl;
+ This->ITransactionImport_iface.lpVtbl = &TransactionImport_Vtbl;
This->ref = 1;
ret = ITransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, riid, ppv);
--
1.7.5.4
More information about the wine-patches
mailing list