[4/6] xolehlp: implement IResourceManagerFactory
Daniel Jeliński
djelinski1 at gmail.com
Wed May 1 16:20:15 CDT 2013
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20130501/8249f34f/attachment.html>
-------------- next part --------------
From 439f159bc01984eab0492cfcc20637f879511bf7 Mon Sep 17 00:00:00 2001
From: Daniel Jelinski <djelinski1 at gmail.com>
Date: Wed, 1 May 2013 21:22:10 +0200
Subject: xolehlp: implement IResourceManagerFactory
---
dlls/xolehlp/xolehlp.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/dlls/xolehlp/xolehlp.c b/dlls/xolehlp/xolehlp.c
index 76565dd..b172196 100644
--- a/dlls/xolehlp/xolehlp.c
+++ b/dlls/xolehlp/xolehlp.c
@@ -24,12 +24,14 @@
#define COBJMACROS
#include "transact.h"
+#include "txdtc.h"
WINE_DEFAULT_DEBUG_CHANNEL(xolehlp);
typedef struct {
ITransactionDispenser ITransactionDispenser_iface;
LONG ref;
+ IResourceManagerFactory IResourceManagerFactory_iface;
} TransactionManager;
static inline TransactionManager *impl_from_ITransactionDispenser(ITransactionDispenser *iface)
@@ -50,6 +52,10 @@ static HRESULT WINAPI TransactionDispenser_QueryInterface(ITransactionDispenser
{
*ppv = &This->ITransactionDispenser_iface;
}
+ else if (IsEqualIID(&IID_IResourceManagerFactory, iid))
+ {
+ *ppv = &This->IResourceManagerFactory_iface;
+ }
else
{
FIXME("(%s): not implemented\n", debugstr_guid(iid));
@@ -117,6 +123,44 @@ static const ITransactionDispenserVtbl TransactionDispenser_Vtbl = {
TransactionDispenser_BeginTransaction
};
+static inline TransactionManager *impl_from_IResourceManagerFactory(IResourceManagerFactory *iface)
+{
+ return CONTAINING_RECORD(iface, TransactionManager, IResourceManagerFactory_iface);
+}
+
+static HRESULT WINAPI ResourceManagerFactory_QueryInterface(IResourceManagerFactory *iface, REFIID iid,
+ void **ppv)
+{
+ TransactionManager *This = impl_from_IResourceManagerFactory(iface);
+ return TransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, iid, ppv);
+}
+
+static ULONG WINAPI ResourceManagerFactory_AddRef(IResourceManagerFactory *iface)
+{
+ TransactionManager *This = impl_from_IResourceManagerFactory(iface);
+ return TransactionDispenser_AddRef(&This->ITransactionDispenser_iface);
+}
+
+static ULONG WINAPI ResourceManagerFactory_Release(IResourceManagerFactory *iface)
+{
+ TransactionManager *This = impl_from_IResourceManagerFactory(iface);
+ return TransactionDispenser_Release(&This->ITransactionDispenser_iface);
+}
+static HRESULT WINAPI ResourceManagerFactory_Create(IResourceManagerFactory *iface,
+ GUID *pguidRM, CHAR *pszRMName, IResourceManagerSink *pIResMgrSink, IResourceManager **ppResMgr)
+{
+ FIXME("(%p, %s, %s, %p, %p): stub\n", iface, debugstr_guid(pguidRM),
+ debugstr_a(pszRMName), pIResMgrSink, ppResMgr);
+
+ return E_NOTIMPL;
+}
+static const IResourceManagerFactoryVtbl ResourceManagerFactory_Vtbl = {
+ ResourceManagerFactory_QueryInterface,
+ ResourceManagerFactory_AddRef,
+ ResourceManagerFactory_Release,
+ ResourceManagerFactory_Create
+};
+
static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
{
TransactionManager *This;
@@ -126,6 +170,7 @@ static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
if (!This) return E_OUTOFMEMORY;
This->ITransactionDispenser_iface.lpVtbl = &TransactionDispenser_Vtbl;
+ This->IResourceManagerFactory_iface.lpVtbl = &ResourceManagerFactory_Vtbl;
This->ref = 1;
ret = ITransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, riid, ppv);
--
1.7.5.4
More information about the wine-patches
mailing list