[2/8] xolehlp: implement IResourceManagerFactory2

Daniel Jeliński djelinski1 at gmail.com
Tue May 28 15:04:03 CDT 2013


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20130528/c9322eb6/attachment.html>
-------------- next part --------------
From 6301668a1d2478a9a0aa1386fe8d0fdb12d292dc 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 IResourceManagerFactory2

---
 dlls/xolehlp/xolehlp.c |   55 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/dlls/xolehlp/xolehlp.c b/dlls/xolehlp/xolehlp.c
index 2d686cc..2ebc395 100644
--- a/dlls/xolehlp/xolehlp.c
+++ b/dlls/xolehlp/xolehlp.c
@@ -21,6 +21,7 @@
 #include "windef.h"
 #include "winbase.h"
 #include "transact.h"
+#include "txdtc.h"
 #include "wine/unicode.h"
 #include "wine/debug.h"
 
@@ -29,6 +30,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(xolehlp);
 typedef struct {
     ITransactionDispenser ITransactionDispenser_iface;
     LONG ref;
+    IResourceManagerFactory2 IResourceManagerFactory2_iface;
 } TransactionManager;
 
 static inline TransactionManager *impl_from_ITransactionDispenser(ITransactionDispenser *iface)
@@ -49,6 +51,11 @@ static HRESULT WINAPI TransactionDispenser_QueryInterface(ITransactionDispenser
     {
         *ppv = &This->ITransactionDispenser_iface;
     }
+    else if (IsEqualIID(&IID_IResourceManagerFactory, iid) ||
+        IsEqualIID(&IID_IResourceManagerFactory2, iid))
+    {
+        *ppv = &This->IResourceManagerFactory2_iface;
+    }
     else
     {
         FIXME("(%s): not implemented\n", debugstr_guid(iid));
@@ -116,6 +123,53 @@ static const ITransactionDispenserVtbl TransactionDispenser_Vtbl = {
     TransactionDispenser_BeginTransaction
 };
 
+static inline TransactionManager *impl_from_IResourceManagerFactory2(IResourceManagerFactory2 *iface)
+{
+    return CONTAINING_RECORD(iface, TransactionManager, IResourceManagerFactory2_iface);
+}
+
+static HRESULT WINAPI ResourceManagerFactory2_QueryInterface(IResourceManagerFactory2 *iface, REFIID iid,
+    void **ppv)
+{
+    TransactionManager *This = impl_from_IResourceManagerFactory2(iface);
+    return TransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, iid, ppv);
+}
+
+static ULONG WINAPI ResourceManagerFactory2_AddRef(IResourceManagerFactory2 *iface)
+{
+    TransactionManager *This = impl_from_IResourceManagerFactory2(iface);
+    return TransactionDispenser_AddRef(&This->ITransactionDispenser_iface);
+}
+
+static ULONG WINAPI ResourceManagerFactory2_Release(IResourceManagerFactory2 *iface)
+{
+    TransactionManager *This = impl_from_IResourceManagerFactory2(iface);
+    return TransactionDispenser_Release(&This->ITransactionDispenser_iface);
+}
+static HRESULT WINAPI ResourceManagerFactory2_Create(IResourceManagerFactory2 *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 HRESULT WINAPI ResourceManagerFactory2_CreateEx(IResourceManagerFactory2 *iface,
+        GUID *pguidRM, CHAR *pszRMName, IResourceManagerSink *pIResMgrSink, REFIID riidRequested, void **ppResMgr)
+{
+    FIXME("(%p, %s, %s, %p, %s, %p): stub\n", iface, debugstr_guid(pguidRM),
+        debugstr_a(pszRMName), pIResMgrSink, debugstr_guid(riidRequested), ppResMgr);
+
+    return E_NOTIMPL;
+}
+static const IResourceManagerFactory2Vtbl ResourceManagerFactory2_Vtbl = {
+    ResourceManagerFactory2_QueryInterface,
+    ResourceManagerFactory2_AddRef,
+    ResourceManagerFactory2_Release,
+    ResourceManagerFactory2_Create,
+    ResourceManagerFactory2_CreateEx
+};
+
 static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
 {
     TransactionManager *This;
@@ -125,6 +179,7 @@ static HRESULT TransactionManager_Create(REFIID riid, void **ppv)
     if (!This) return E_OUTOFMEMORY;
 
     This->ITransactionDispenser_iface.lpVtbl = &TransactionDispenser_Vtbl;
+    This->IResourceManagerFactory2_iface.lpVtbl = &ResourceManagerFactory2_Vtbl;
     This->ref = 1;
 
     ret = ITransactionDispenser_QueryInterface(&This->ITransactionDispenser_iface, riid, ppv);
-- 
1.7.5.4


More information about the wine-patches mailing list