Zebediah Figura : devenum: Merge factory.c into devenum_main.c.

Alexandre Julliard julliard at winehq.org
Tue Jun 26 15:43:10 CDT 2018


Module: wine
Branch: master
Commit: b371cc5130b2393878733834ed97dcfd784cc7d4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b371cc5130b2393878733834ed97dcfd784cc7d4

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Jun 26 09:05:29 2018 -0500

devenum: Merge factory.c into devenum_main.c.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/devenum/Makefile.in       |   1 -
 dlls/devenum/devenum_main.c    |  74 ++++++++++++++++++++++-
 dlls/devenum/devenum_private.h |  10 ---
 dlls/devenum/factory.c         | 134 -----------------------------------------
 4 files changed, 72 insertions(+), 147 deletions(-)

diff --git a/dlls/devenum/Makefile.in b/dlls/devenum/Makefile.in
index ae138b6..d1407a9 100644
--- a/dlls/devenum/Makefile.in
+++ b/dlls/devenum/Makefile.in
@@ -5,7 +5,6 @@ DELAYIMPORTS = msvfw32
 C_SRCS = \
 	createdevenum.c \
 	devenum_main.c \
-	factory.c \
 	mediacatenum.c \
 	parsedisplayname.c
 
diff --git a/dlls/devenum/devenum_main.c b/dlls/devenum/devenum_main.c
index cb4b454..7bfc593 100644
--- a/dlls/devenum/devenum_main.c
+++ b/dlls/devenum/devenum_main.c
@@ -1,5 +1,5 @@
 /*
- *	exported dll functions for devenum.dll
+ * Device Enumeration
  *
  * Copyright (C) 2002 John K. Hohm
  * Copyright (C) 2002 Robert Shearman
@@ -56,6 +56,76 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
     return TRUE;
 }
 
+static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID iid, void **obj)
+{
+    TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), obj);
+
+    if (IsEqualGUID(iid, &IID_IUnknown) || IsEqualGUID(iid, &IID_IClassFactory))
+    {
+        IClassFactory_AddRef(iface);
+        *obj = iface;
+        return S_OK;
+    }
+
+    *obj = NULL;
+    WARN("no interface for %s\n", debugstr_guid(iid));
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
+{
+    DEVENUM_LockModule();
+    return 2;
+}
+
+static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
+{
+    DEVENUM_UnlockModule();
+    return 1;
+}
+
+static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface,
+    IUnknown *outer, REFIID iid, void **obj)
+{
+    TRACE("(%p, %s, %p)\n", outer, debugstr_guid(iid), obj);
+
+    if (!obj) return E_POINTER;
+
+    if (outer) return CLASS_E_NOAGGREGATION;
+
+    if (IsEqualGUID(&IID_ICreateDevEnum, iid))
+    {
+        *obj = &DEVENUM_CreateDevEnum;
+        return S_OK;
+    }
+    if (IsEqualGUID(&IID_IParseDisplayName, iid))
+    {
+        *obj = &DEVENUM_ParseDisplayName;
+        return S_OK;
+    }
+
+    return CLASS_E_CLASSNOTAVAILABLE;
+}
+
+static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL lock)
+{
+    if (lock)
+        DEVENUM_LockModule();
+    else
+        DEVENUM_UnlockModule();
+    return S_OK;
+}
+
+static const IClassFactoryVtbl ClassFactory_vtbl = {
+    ClassFactory_QueryInterface,
+    ClassFactory_AddRef,
+    ClassFactory_Release,
+    ClassFactory_CreateInstance,
+    ClassFactory_LockServer
+};
+
+static IClassFactory devenum_cf = { &ClassFactory_vtbl };
+
 /***********************************************************************
  *		DllGetClassObject (DEVENUM.@)
  */
@@ -69,7 +139,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
      * Oh well - works just fine as it is */
     if (IsEqualGUID(rclsid, &CLSID_SystemDeviceEnum) ||
         IsEqualGUID(rclsid, &CLSID_CDeviceMoniker))
-        return IClassFactory_QueryInterface(&DEVENUM_ClassFactory.IClassFactory_iface, iid, ppv);
+        return IClassFactory_QueryInterface(&devenum_cf, iid, ppv);
 
     FIXME("CLSID: %s, IID: %s\n", debugstr_guid(rclsid), debugstr_guid(iid));
     return CLASS_E_CLASSNOTAVAILABLE;
diff --git a/dlls/devenum/devenum_private.h b/dlls/devenum/devenum_private.h
index df0080d..ea4e017 100644
--- a/dlls/devenum/devenum_private.h
+++ b/dlls/devenum/devenum_private.h
@@ -51,15 +51,6 @@ extern LONG dll_refs DECLSPEC_HIDDEN;
 static inline void DEVENUM_LockModule(void) { InterlockedIncrement(&dll_refs); }
 static inline void DEVENUM_UnlockModule(void) { InterlockedDecrement(&dll_refs); }
 
-
-/**********************************************************************
- * ClassFactory declaration for devenum.dll
- */
-typedef struct
-{
-    IClassFactory IClassFactory_iface;
-} ClassFactoryImpl;
-
 enum device_type
 {
     DEVICE_FILTER,
@@ -84,7 +75,6 @@ typedef struct
 MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void) DECLSPEC_HIDDEN;
 HRESULT create_EnumMoniker(REFCLSID class, IEnumMoniker **enum_mon) DECLSPEC_HIDDEN;
 
-extern ClassFactoryImpl DEVENUM_ClassFactory DECLSPEC_HIDDEN;
 extern ICreateDevEnum DEVENUM_CreateDevEnum DECLSPEC_HIDDEN;
 extern IParseDisplayName DEVENUM_ParseDisplayName DECLSPEC_HIDDEN;
 
diff --git a/dlls/devenum/factory.c b/dlls/devenum/factory.c
deleted file mode 100644
index c808fa5..0000000
--- a/dlls/devenum/factory.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- *	ClassFactory implementation for DEVENUM.dll
- *
- * Copyright (C) 2002 John K. Hohm
- * Copyright (C) 2002 Robert Shearman
- *
- * 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
- */
-
-#include "devenum_private.h"
-
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(devenum);
-
-/**********************************************************************
- * DEVENUM_IClassFactory_QueryInterface (also IUnknown)
- */
-static HRESULT WINAPI DEVENUM_IClassFactory_QueryInterface(IClassFactory *iface, REFIID riid,
-    void **ppvObj)
-{
-    TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObj);
-
-    if (ppvObj == NULL) return E_POINTER;
-
-    if (IsEqualGUID(riid, &IID_IUnknown) ||
-	IsEqualGUID(riid, &IID_IClassFactory))
-    {
-        *ppvObj = iface;
-	IClassFactory_AddRef(iface);
-	return S_OK;
-    }
-    else if (IsEqualGUID(riid, &IID_IParseDisplayName))
-    {
-        return IClassFactory_CreateInstance(iface, NULL, riid, ppvObj);
-    }
-
-    FIXME("- no interface IID: %s\n", debugstr_guid(riid));
-    return E_NOINTERFACE;
-}
-
-/**********************************************************************
- * DEVENUM_IClassFactory_AddRef (also IUnknown)
- */
-static ULONG WINAPI DEVENUM_IClassFactory_AddRef(IClassFactory *iface)
-{
-    TRACE("\n");
-
-    DEVENUM_LockModule();
-
-    return 2; /* non-heap based object */
-}
-
-/**********************************************************************
- * DEVENUM_IClassFactory_Release (also IUnknown)
- */
-static ULONG WINAPI DEVENUM_IClassFactory_Release(IClassFactory *iface)
-{
-    TRACE("\n");
-
-    DEVENUM_UnlockModule();
-
-    return 1; /* non-heap based object */
-}
-
-/**********************************************************************
- * DEVENUM_IClassFactory_CreateInstance
- */
-static HRESULT WINAPI DEVENUM_IClassFactory_CreateInstance(IClassFactory *iface,
-        IUnknown *pUnkOuter, REFIID riid, void **ppvObj)
-{
-    TRACE("(%p)->(%p, %s, %p)\n", iface, pUnkOuter, debugstr_guid(riid), ppvObj);
-
-    if (ppvObj == NULL) return E_POINTER;
-
-    /* Don't support aggregation (Windows doesn't) */
-    if (pUnkOuter != NULL) return CLASS_E_NOAGGREGATION;
-
-    if (IsEqualGUID(&IID_ICreateDevEnum, riid))
-    {
-        *ppvObj = &DEVENUM_CreateDevEnum;
-        return S_OK;
-    }
-    if (IsEqualGUID(&IID_IParseDisplayName, riid))
-    {
-        *ppvObj = &DEVENUM_ParseDisplayName;
-        return S_OK;
-    }
-
-    return CLASS_E_CLASSNOTAVAILABLE;
-}
-
-/**********************************************************************
- * DEVENUM_IClassFactory_LockServer
- */
-static HRESULT WINAPI DEVENUM_IClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
-{
-    TRACE("\n");
-
-    if (fLock)
-        DEVENUM_LockModule();
-    else
-        DEVENUM_UnlockModule();
-    return S_OK;
-}
-
-/**********************************************************************
- * IClassFactory_Vtbl
- */
-static const IClassFactoryVtbl IClassFactory_Vtbl =
-{
-    DEVENUM_IClassFactory_QueryInterface,
-    DEVENUM_IClassFactory_AddRef,
-    DEVENUM_IClassFactory_Release,
-    DEVENUM_IClassFactory_CreateInstance,
-    DEVENUM_IClassFactory_LockServer
-};
-
-/**********************************************************************
- * static ClassFactory instance
- */
-ClassFactoryImpl DEVENUM_ClassFactory = { { &IClassFactory_Vtbl } };




More information about the wine-cvs mailing list