Nikolay Sivov : netprofm: Added IConnectionPointContainer stub for INetworkListManager.

Alexandre Julliard julliard at winehq.org
Tue May 20 14:36:24 CDT 2014


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon May 19 18:51:15 2014 +0400

netprofm: Added IConnectionPointContainer stub for INetworkListManager.

---

 dlls/netprofm/list.c       |   59 +++++++++++++++++++++++++++++++++++++++++++-
 dlls/netprofm/tests/list.c |    6 +++++
 2 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/dlls/netprofm/list.c b/dlls/netprofm/list.c
index d5940f4..b9ab1cc 100644
--- a/dlls/netprofm/list.c
+++ b/dlls/netprofm/list.c
@@ -16,13 +16,15 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#define COBJMACROS
+
 #include "config.h"
 #include <stdarg.h>
 #include "windef.h"
 #include "winbase.h"
-#define COBJMACROS
 #include "initguid.h"
 #include "objbase.h"
+#include "ocidl.h"
 #include "netlistmgr.h"
 
 #include "wine/debug.h"
@@ -34,9 +36,15 @@ struct list_manager
 {
     INetworkListManager INetworkListManager_iface;
     INetworkCostManager INetworkCostManager_iface;
+    IConnectionPointContainer IConnectionPointContainer_iface;
     LONG                refs;
 };
 
+static inline struct list_manager *impl_from_IConnectionPointContainer(IConnectionPointContainer *iface)
+{
+    return CONTAINING_RECORD(iface, struct list_manager, IConnectionPointContainer_iface);
+}
+
 static inline struct list_manager *impl_from_INetworkCostManager(
     INetworkCostManager *iface )
 {
@@ -147,6 +155,10 @@ static HRESULT WINAPI list_manager_QueryInterface(
     {
         *obj = &mgr->INetworkCostManager_iface;
     }
+    else if (IsEqualGUID( riid, &IID_IConnectionPointContainer ))
+    {
+        *obj = &mgr->IConnectionPointContainer_iface;
+    }
     else
     {
         FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
@@ -285,6 +297,50 @@ static const INetworkListManagerVtbl list_manager_vtbl =
     list_manager_GetConnectivity
 };
 
+static HRESULT WINAPI ConnectionPointContainer_QueryInterface(IConnectionPointContainer *iface,
+                                                              REFIID riid, void **ppv)
+{
+    struct list_manager *This = impl_from_IConnectionPointContainer( iface );
+    return INetworkListManager_QueryInterface(&This->INetworkListManager_iface, riid, ppv);
+}
+
+static ULONG WINAPI ConnectionPointContainer_AddRef(IConnectionPointContainer *iface)
+{
+    struct list_manager *This = impl_from_IConnectionPointContainer( iface );
+    return INetworkListManager_AddRef(&This->INetworkListManager_iface);
+}
+
+static ULONG WINAPI ConnectionPointContainer_Release(IConnectionPointContainer *iface)
+{
+    struct list_manager *This = impl_from_IConnectionPointContainer( iface );
+    return INetworkListManager_Release(&This->INetworkListManager_iface);
+}
+
+static HRESULT WINAPI ConnectionPointContainer_EnumConnectionPoints(IConnectionPointContainer *iface,
+        IEnumConnectionPoints **ppEnum)
+{
+    struct list_manager *This = impl_from_IConnectionPointContainer( iface );
+    FIXME("(%p)->(%p): stub\n", This, ppEnum);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPointContainer *iface,
+        REFIID riid, IConnectionPoint **cp)
+{
+    struct list_manager *This = impl_from_IConnectionPointContainer( iface );
+    FIXME("(%p)->(%s %p): stub\n", This, debugstr_guid(riid), cp);
+    return E_NOTIMPL;
+}
+
+static const struct IConnectionPointContainerVtbl cpc_vtbl =
+{
+    ConnectionPointContainer_QueryInterface,
+    ConnectionPointContainer_AddRef,
+    ConnectionPointContainer_Release,
+    ConnectionPointContainer_EnumConnectionPoints,
+    ConnectionPointContainer_FindConnectionPoint
+};
+
 HRESULT list_manager_create( void **obj )
 {
     struct list_manager *mgr;
@@ -294,6 +350,7 @@ HRESULT list_manager_create( void **obj )
     if (!(mgr = HeapAlloc( GetProcessHeap(), 0, sizeof(*mgr) ))) return E_OUTOFMEMORY;
     mgr->INetworkListManager_iface.lpVtbl = &list_manager_vtbl;
     mgr->INetworkCostManager_iface.lpVtbl = &cost_manager_vtbl;
+    mgr->IConnectionPointContainer_iface.lpVtbl = &cpc_vtbl;
     mgr->refs = 1;
 
     *obj = &mgr->INetworkListManager_iface;
diff --git a/dlls/netprofm/tests/list.c b/dlls/netprofm/tests/list.c
index 1619d06..ce4891a 100644
--- a/dlls/netprofm/tests/list.c
+++ b/dlls/netprofm/tests/list.c
@@ -21,11 +21,13 @@
 #define COBJMACROS
 #include "initguid.h"
 #include "objbase.h"
+#include "ocidl.h"
 #include "netlistmgr.h"
 #include "wine/test.h"
 
 static void test_INetworkListManager( void )
 {
+    IConnectionPointContainer *cpc;
     INetworkListManager *mgr;
     INetworkCostManager *cost_mgr;
     NLM_CONNECTIVITY connectivity;
@@ -74,6 +76,10 @@ static void test_INetworkListManager( void )
         INetworkCostManager_Release( cost_mgr );
     }
 
+    hr = INetworkListManager_QueryInterface( mgr, &IID_IConnectionPointContainer, (void**)&cpc );
+    ok( hr == S_OK, "got %08x\n", hr );
+    IConnectionPointContainer_Release( cpc );
+
     INetworkListManager_Release( mgr );
 }
 




More information about the wine-cvs mailing list