[2/5] netprofm: Add a stub implementation of INetworkListManager.
Hans Leidekker
hans at codeweavers.com
Mon Apr 7 07:57:34 CDT 2014
---
dlls/netprofm/Makefile.in | 1 +
dlls/netprofm/list.c | 230 +++++++++++++++++++++++++++++++++++++++
dlls/netprofm/netprofm_private.h | 19 ++++
include/Makefile.in | 1 +
include/netlistmgr.idl | 85 +++++++++++++++
5 files changed, 336 insertions(+)
create mode 100644 dlls/netprofm/list.c
create mode 100644 dlls/netprofm/netprofm_private.h
create mode 100644 include/netlistmgr.idl
diff --git a/dlls/netprofm/Makefile.in b/dlls/netprofm/Makefile.in
index 0368b86..133b82a 100644
--- a/dlls/netprofm/Makefile.in
+++ b/dlls/netprofm/Makefile.in
@@ -1,4 +1,5 @@
MODULE = netprofm.dll
C_SRCS = \
+ list.c \
main.c
diff --git a/dlls/netprofm/list.c b/dlls/netprofm/list.c
new file mode 100644
index 0000000..3ea70c4
--- /dev/null
+++ b/dlls/netprofm/list.c
@@ -0,0 +1,230 @@
+/*
+ * Copyright 2014 Hans Leidekker for CodeWeavers
+ *
+ * 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 "config.h"
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+#define COBJMACROS
+#include "initguid.h"
+#include "objbase.h"
+#include "netlistmgr.h"
+
+#include "wine/debug.h"
+#include "netprofm_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(netprofm);
+
+struct list_manager
+{
+ const INetworkListManagerVtbl *vtbl;
+ LONG refs;
+};
+
+static inline struct list_manager *impl_from_INetworkListManager(
+ INetworkListManager *iface )
+{
+ return (struct list_manager *)((char *)iface - FIELD_OFFSET( struct list_manager, vtbl ));
+}
+
+static ULONG WINAPI list_manager_AddRef(
+ INetworkListManager *iface )
+{
+ struct list_manager *mgr = impl_from_INetworkListManager( iface );
+ return InterlockedIncrement( &mgr->refs );
+}
+
+static ULONG WINAPI list_manager_Release(
+ INetworkListManager *iface )
+{
+ struct list_manager *mgr = impl_from_INetworkListManager( iface );
+ LONG refs = InterlockedDecrement( &mgr->refs );
+ if (!refs)
+ {
+ TRACE( "destroying %p\n", mgr );
+ HeapFree( GetProcessHeap(), 0, mgr );
+ }
+ return refs;
+}
+
+static HRESULT WINAPI list_manager_QueryInterface(
+ INetworkListManager *iface,
+ REFIID riid,
+ void **obj )
+{
+ struct list_manager *mgr = impl_from_INetworkListManager( iface );
+
+ TRACE( "%p, %s, %p\n", mgr, debugstr_guid(riid), obj );
+
+ if (IsEqualGUID( riid, &IID_INetworkListManager ) ||
+ IsEqualGUID( riid, &IID_IUnknown ))
+ {
+ *obj = iface;
+ }
+ else
+ {
+ FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
+ return E_NOINTERFACE;
+ }
+ INetworkListManager_AddRef( iface );
+ return S_OK;
+}
+
+static HRESULT WINAPI list_manager_GetTypeInfoCount(
+ INetworkListManager *iface,
+ UINT *count )
+{
+ FIXME("\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_GetTypeInfo(
+ INetworkListManager *iface,
+ UINT index,
+ LCID lcid,
+ ITypeInfo **info )
+{
+ FIXME("\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_GetIDsOfNames(
+ INetworkListManager *iface,
+ REFIID riid,
+ LPOLESTR *names,
+ UINT count,
+ LCID lcid,
+ DISPID *dispid )
+{
+ FIXME("\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_Invoke(
+ INetworkListManager *iface,
+ DISPID member,
+ REFIID riid,
+ LCID lcid,
+ WORD flags,
+ DISPPARAMS *params,
+ VARIANT *result,
+ EXCEPINFO *excep_info,
+ UINT *arg_err )
+{
+ FIXME("\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_GetNetworks(
+ INetworkListManager *iface,
+ NLM_ENUM_NETWORK Flags,
+ IEnumNetworks **ppEnumNetwork )
+{
+ FIXME( "%p, %x, %p\n", iface, Flags, ppEnumNetwork );
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_GetNetwork(
+ INetworkListManager *iface,
+ GUID gdNetworkId,
+ INetwork **ppNetwork )
+{
+ FIXME( "%p, %s, %p\n", iface, debugstr_guid(&gdNetworkId), ppNetwork );
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_GetNetworkConnections(
+ INetworkListManager *iface,
+ IEnumNetworkConnections **ppEnum )
+{
+ FIXME( "%p, %p\n", iface, ppEnum );
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_GetNetworkConnection(
+ INetworkListManager *iface,
+ GUID gdNetworkConnectionId,
+ INetworkConnection **ppNetworkConnection )
+{
+ FIXME( "%p, %s, %p\n", iface, debugstr_guid(&gdNetworkConnectionId),
+ ppNetworkConnection );
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI list_manager_IsConnectedToInternet(
+ INetworkListManager *iface,
+ VARIANT_BOOL *pbIsConnected )
+{
+ FIXME( "%p, %p\n", iface, pbIsConnected );
+
+ *pbIsConnected = VARIANT_TRUE;
+ return S_OK;
+}
+
+static HRESULT WINAPI list_manager_IsConnected(
+ INetworkListManager *iface,
+ VARIANT_BOOL *pbIsConnected )
+{
+ FIXME( "%p, %p\n", iface, pbIsConnected );
+
+ *pbIsConnected = VARIANT_TRUE;
+ return S_OK;
+}
+
+static HRESULT WINAPI list_manager_GetConnectivity(
+ INetworkListManager *iface,
+ NLM_CONNECTIVITY *pConnectivity )
+{
+ FIXME( "%p, %p\n", iface, pConnectivity );
+
+ *pConnectivity = NLM_CONNECTIVITY_IPV4_INTERNET;
+ return S_OK;
+}
+
+static const INetworkListManagerVtbl list_manager_vtbl =
+{
+ list_manager_QueryInterface,
+ list_manager_AddRef,
+ list_manager_Release,
+ list_manager_GetTypeInfoCount,
+ list_manager_GetTypeInfo,
+ list_manager_GetIDsOfNames,
+ list_manager_Invoke,
+ list_manager_GetNetworks,
+ list_manager_GetNetwork,
+ list_manager_GetNetworkConnections,
+ list_manager_GetNetworkConnection,
+ list_manager_IsConnectedToInternet,
+ list_manager_IsConnected,
+ list_manager_GetConnectivity
+};
+
+HRESULT list_manager_create( void **obj )
+{
+ struct list_manager *mgr;
+
+ TRACE( "%p\n", obj );
+
+ if (!(mgr = HeapAlloc( GetProcessHeap(), 0, sizeof(*mgr) ))) return E_OUTOFMEMORY;
+ mgr->vtbl = &list_manager_vtbl;
+ mgr->refs = 1;
+
+ *obj = &mgr->vtbl;
+ TRACE( "returning iface %p\n", *obj );
+ return S_OK;
+}
diff --git a/dlls/netprofm/netprofm_private.h b/dlls/netprofm/netprofm_private.h
new file mode 100644
index 0000000..5e863c4
--- /dev/null
+++ b/dlls/netprofm/netprofm_private.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2014 Hans Leidekker for CodeWeavers
+ *
+ * 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
+ */
+
+HRESULT list_manager_create(void **) DECLSPEC_HIDDEN;
diff --git a/include/Makefile.in b/include/Makefile.in
index 5c6a1c6..a47e26e 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -79,6 +79,7 @@ PUBLIC_IDL_H_SRCS = \
netcfgx.idl \
netcon.idl \
netfw.idl \
+ netlistmgr.idl \
oaidl.idl \
objectarray.idl \
objidl.idl \
diff --git a/include/netlistmgr.idl b/include/netlistmgr.idl
new file mode 100644
index 0000000..51393b9
--- /dev/null
+++ b/include/netlistmgr.idl
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2014 Hans Leidekker for CodeWeavers
+ *
+ * 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
+ */
+
+import "oaidl.idl";
+import "objidl.idl";
+
+interface IEnumNetworks;
+interface IEnumNetworkConnections;
+interface INetwork;
+interface INetworkConnection;
+interface INetworkListManager;
+
+typedef [v1_enum] enum NLM_CONNECTIVITY
+{
+ NLM_CONNECTIVITY_DISCONNECTED = 0x0000,
+ NLM_CONNECTIVITY_IPV4_NOTRAFFIC = 0x0001,
+ NLM_CONNECTIVITY_IPV6_NOTRAFFIC = 0x0002,
+ NLM_CONNECTIVITY_IPV4_SUBNET = 0x0010,
+ NLM_CONNECTIVITY_IPV4_LOCALNETWORK = 0x0020,
+ NLM_CONNECTIVITY_IPV4_INTERNET = 0x0040,
+ NLM_CONNECTIVITY_IPV6_SUBNET = 0x0100,
+ NLM_CONNECTIVITY_IPV6_LOCALNETWORK = 0x0200,
+ NLM_CONNECTIVITY_IPV6_INTERNET = 0x0400
+} NLM_CONNECTIVITY;
+
+typedef [v1_enum] enum NLM_ENUM_NETWORK
+{
+ NLM_ENUM_NETWORK_CONNECTED = 0x01,
+ NLM_ENUM_NETWORK_DISCONNECTED = 0x02,
+ NLM_ENUM_NETWORK_ALL = 0x03
+} NLM_ENUM_NETWORK;
+
+[
+ dual,
+ object,
+ oleautomation,
+ pointer_default(unique),
+ uuid(dcb00000-570f-4a9b-8d69-199fdba5723b)
+]
+interface INetworkListManager : IDispatch
+{
+ HRESULT GetNetworks(
+ [in] NLM_ENUM_NETWORK Flags,
+ [out, retval] IEnumNetworks **ppEnumNetwork);
+
+ HRESULT GetNetwork(
+ [in] GUID gdNetworkId,
+ [out, retval] INetwork **ppNetwork);
+
+ HRESULT GetNetworkConnections(
+ [out, retval] IEnumNetworkConnections **ppEnum);
+
+ HRESULT GetNetworkConnection(
+ [in] GUID gdNetworkConnectionId,
+ [out, retval] INetworkConnection **ppNetworkConnection);
+
+ HRESULT IsConnectedToInternet(
+ [out, retval] VARIANT_BOOL *pbIsConnected);
+
+ HRESULT IsConnected(
+ [out, retval] VARIANT_BOOL *pbIsConnected);
+
+ HRESULT GetConnectivity(
+ [out, retval] NLM_CONNECTIVITY *pConnectivity);
+}
+
+[
+ uuid(dcb00c01-570f-4a9b-8d69-199fdba5723b)
+]
+coclass NetworkListManager { interface INetworkListManager; }
--
1.9.1
More information about the wine-patches
mailing list