Added windows.networking.connectivity-new-dll patchset

This commit is contained in:
Alistair Leslie-Hughes 2021-06-01 14:09:59 +10:00
parent 356d0d750c
commit 73c8cb1002
10 changed files with 1392 additions and 0 deletions

View File

@ -240,6 +240,7 @@ patch_enable_all ()
enable_version_VerQueryValue="$1"
enable_wbemdisp_ISWbemObject_Invoke="$1"
enable_widl_SLTG_Typelib_Support="$1"
enable_windows_networking_connectivity_new_dll="$1"
enable_windowscodecs_GIF_Encoder="$1"
enable_windowscodecs_TIFF_Support="$1"
enable_wine_inf_Directory_ContextMenuHandlers="$1"
@ -768,6 +769,9 @@ patch_enable ()
widl-SLTG_Typelib_Support)
enable_widl_SLTG_Typelib_Support="$2"
;;
windows.networking.connectivity-new-dll)
enable_windows_networking_connectivity_new_dll="$2"
;;
windowscodecs-GIF_Encoder)
enable_windowscodecs_GIF_Encoder="$2"
;;
@ -3726,6 +3730,10 @@ fi
# Patchset wbemdisp-ISWbemObject-Invoke
# |
# | This patchset fixes the following Wine bugs:
# | * [#51120] wbemdisp: Support DISPATCH_METHOD in ISWbemObject Invoke.
# | * [#39463] vbscript: Support looping of data from WMI
# |
# | Modified files:
# | * dlls/vbscript/interp.c, dlls/vbscript/tests/lang.vbs, dlls/vbscript/tests/run.c, dlls/vbscript/utils.c,
# | dlls/wbemdisp/locator.c, dlls/wbemprox/query.c
@ -3737,6 +3745,28 @@ if test "$enable_wbemdisp_ISWbemObject_Invoke" -eq 1; then
patch_apply wbemdisp-ISWbemObject-Invoke/0004-vbscript-Add-wmi-test.patch
fi
# Patchset windows.networking.connectivity-new-dll
# |
# | This patchset fixes the following Wine bugs:
# | * [#46534] Implement INetworkInformationStatics interface
# |
# | Modified files:
# | * configure.ac, dlls/windows.networking.connectivity/Makefile.in, dlls/windows.networking.connectivity/network.rgs,
# | dlls/windows.networking.connectivity/rsrc.rc, dlls/windows.networking.connectivity/windows.networking.connectivity.spec,
# | dlls/windows.networking.connectivity/windows.networking.connectivity_main.c, include/Makefile.in,
# | include/windows.networking.connectivity.idl, include/windows.networking.idl
# |
if test "$enable_windows_networking_connectivity_new_dll" -eq 1; then
patch_apply windows.networking.connectivity-new-dll/0001-include-Add-windows.networking.connectivity.idl.patch
patch_apply windows.networking.connectivity-new-dll/0002-include-Add-windows.networking.idl.patch
patch_apply windows.networking.connectivity-new-dll/0003-windows.networking.connectivity-Add-stub-dll.patch
patch_apply windows.networking.connectivity-new-dll/0004-windows.networking.connectivity-Implement-IActivatio.patch
patch_apply windows.networking.connectivity-new-dll/0005-windows.networking.connectivity-Implement-INetworkIn.patch
patch_apply windows.networking.connectivity-new-dll/0006-windows.networking.connectivity-Registry-DLL.patch
patch_apply windows.networking.connectivity-new-dll/0007-windows.networking.connectivity-Implement-INetworkIn.patch
patch_apply windows.networking.connectivity-new-dll/0008-windows.networking.connectivity-IConnectionProfile-G.patch
fi
# Patchset windowscodecs-GIF_Encoder
# |
# | Modified files:

View File

@ -0,0 +1,400 @@
From c928a124f0e5a35fe02f27f0d08cfdbc9e6a35e8 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 28 May 2021 12:34:37 +1000
Subject: [PATCH 1/8] include: Add windows.networking.connectivity.idl
---
include/Makefile.in | 1 +
include/windows.networking.connectivity.idl | 368 ++++++++++++++++++++
2 files changed, 369 insertions(+)
create mode 100644 include/windows.networking.connectivity.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index 9822bce6bdd..8e40dfd903f 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -760,6 +760,7 @@ SOURCES = \
windows.h \
windows.media.devices.idl \
windows.media.speechsynthesis.idl \
+ windows.networking.connectivity.idl \
windows.system.idl \
windows.system.userprofile.idl \
windowscontracts.idl \
diff --git a/include/windows.networking.connectivity.idl b/include/windows.networking.connectivity.idl
new file mode 100644
index 00000000000..3ccefca02fa
--- /dev/null
+++ b/include/windows.networking.connectivity.idl
@@ -0,0 +1,368 @@
+/*
+ * Copyright 2021 Alistair Leslie-Hughes
+ *
+ * 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
+ */
+
+#ifdef __WIDL__
+#pragma winrt ns_prefix
+#endif
+
+import "inspectable.idl";
+import "asyncinfo.idl";
+import "eventtoken.idl";
+import "windowscontracts.idl";
+import "windows.foundation.idl";
+
+namespace Windows
+{
+ namespace Foundation
+ {
+ interface IClosable;
+
+ /*runtimeclass Uri;*/
+ }
+}
+
+namespace Windows
+{
+ namespace Networking
+ {
+ /*typedef enum DomainNameType DomainNameType;*/
+
+ /*runtimeclass EndpointPair;*/
+
+ /*runtimeclass HostName;*/
+
+ /*typedef enum HostNameSortOptions HostNameSortOptions;*/
+ }
+}
+
+namespace Windows
+{
+ namespace Networking
+ {
+ namespace Connectivity
+ {
+ runtimeclass ConnectionCost;
+ runtimeclass ConnectionProfile;
+ runtimeclass DataPlanStatus;
+ runtimeclass DataPlanUsage;
+ runtimeclass DataUsage;
+ runtimeclass IPInformation;
+ runtimeclass LanIdentifier;
+ runtimeclass LanIdentifierData;
+ runtimeclass NetworkAdapter;
+ runtimeclass NetworkInformation;
+ runtimeclass NetworkSecuritySettings;
+ runtimeclass ProxyConfiguration;
+
+ typedef enum NetworkConnectivityLevel NetworkConnectivityLevel;
+ typedef enum NetworkCostType NetworkCostType;
+ typedef enum RoamingStates RoamingStates;
+ typedef enum NetworkAuthenticationType NetworkAuthenticationType;
+ typedef enum NetworkEncryptionType NetworkEncryptionType;
+
+ declare
+ {
+ interface Windows.Foundation.Collections.IVectorView<Windows.Networking.Connectivity.ConnectionProfile*>;
+ interface Windows.Foundation.Collections.IVectorView<Windows.Networking.Connectivity.LanIdentifier*>;
+ /*interface Windows.Foundation.Collections.IVectorView<Windows.Networking.HostName*>;*/
+ /*interface Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>;*/
+
+
+ /*interface Windows.Foundation.Collections.IIterable<Windows.Networking.EndpointPair*>;*/
+
+ /*interface Windows.Foundation.IAsyncOperation<Windows.Networking.Connectivity.ProxyConfiguration*>;*/
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ enum NetworkConnectivityLevel
+ {
+ None,
+ LocalAccess,
+ ConstrainedInternetAccess,
+ InternetAccess
+ };
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ enum NetworkCostType
+ {
+ Unknown,
+ Unrestricted,
+ Fixed,
+ Variable
+ };
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [flags]
+ enum RoamingStates
+ {
+ None = 0x0,
+ NotRoaming = 0x1,
+ Roaming = 0x2
+ };
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ enum NetworkAuthenticationType
+ {
+ None,
+ Unknown,
+ Open80211,
+ SharedKey80211,
+ Wpa,
+ WpaPsk,
+ WpaNone,
+ Rsna,
+ RsnaPsk,
+ Ihv
+ };
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ enum NetworkEncryptionType
+ {
+ None,
+ Unknown,
+ Wep,
+ Wep40,
+ Wep104,
+ Tkip,
+ Ccmp,
+ WpaUseGroup,
+ RsnUseGroup,
+ Ihv
+ };
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [uuid(71ba143f-598e-49d0-84eb-8febaedcc195)]
+ delegate HRESULT NetworkStatusChangedEventHandler([in] IInspectable* sender);
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.ConnectionProfile)]
+ [uuid(71ba143c-598e-49d0-84eb-8febaedcc195)]
+ interface IConnectionProfile : IInspectable
+ {
+ [propget] HRESULT ProfileName([out, retval] HSTRING* value);
+ HRESULT GetNetworkConnectivityLevel([out, retval] Windows.Networking.Connectivity.NetworkConnectivityLevel* value);
+ HRESULT GetNetworkNames([out, retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
+ HRESULT GetConnectionCost([out, retval] Windows.Networking.Connectivity.ConnectionCost** value);
+ HRESULT GetDataPlanStatus([out, retval] Windows.Networking.Connectivity.DataPlanStatus** value);
+ [propget] HRESULT NetworkAdapter([out, retval] Windows.Networking.Connectivity.NetworkAdapter** value);
+ HRESULT GetLocalUsage([in] Windows.Foundation.DateTime start, [in] Windows.Foundation.DateTime end,
+ [out, retval] Windows.Networking.Connectivity.DataUsage** value);
+ HRESULT GetLocalUsagePerRoamingStates([in] Windows.Foundation.DateTime start,
+ [in] Windows.Foundation.DateTime end, [in] Windows.Networking.Connectivity.RoamingStates states,
+ [out, retval] Windows.Networking.Connectivity.DataUsage** value);
+ [propget] HRESULT NetworkSecuritySettings([out, retval] Windows.Networking.Connectivity.NetworkSecuritySettings** value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.LanIdentifier)]
+ [uuid(48aa53aa-1108-4546-a6cb-9a74da4b7ba0)]
+ interface ILanIdentifier : IInspectable
+ {
+ [propget] HRESULT InfrastructureId([out, retval] Windows.Networking.Connectivity.LanIdentifierData** value);
+ [propget] HRESULT PortId([out, retval] Windows.Networking.Connectivity.LanIdentifierData** value);
+ [propget] HRESULT NetworkAdapterId([out, retval] GUID* value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.LanIdentifierData)]
+ [uuid(a74e83c3-d639-45be-a36a-c4e4aeaf6d9b)]
+ interface ILanIdentifierData : IInspectable
+ {
+ [propget] HRESULT Type([out, retval] UINT32* value);
+ [propget] HRESULT Value([out,retval] /*Windows.Foundation.Collections.IVectorView<BYTE>** */ BYTE **value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.IPInformation)]
+ [uuid(d85145e0-138f-47d7-9b3a-36bb488cef33)]
+ interface IIPInformation : IInspectable
+ {
+ [propget] HRESULT NetworkAdapter([out, retval] Windows.Networking.Connectivity.NetworkAdapter** value);
+ [propget] HRESULT PrefixLength([out, retval] /*Windows.Foundation.IReference<BYTE>** */ BYTE **value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.NetworkInformation)]
+ [uuid(5074f851-950d-4165-9c15-365619481eea)]
+ interface INetworkInformationStatics : IInspectable
+ {
+ HRESULT GetConnectionProfiles([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.Connectivity.ConnectionProfile*>** value);
+ HRESULT GetInternetConnectionProfile([out, retval] Windows.Networking.Connectivity.ConnectionProfile** value);
+ HRESULT GetLanIdentifiers([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.Connectivity.LanIdentifier*>** value);
+ HRESULT GetHostNames([out, retval] /*Windows.Foundation.Collections.IVectorView<Windows.Networking.HostName*>** */ DWORD **value);
+ HRESULT GetProxyConfigurationAsync(/*[in] Windows.Foundation.Uri* */ char* uri,
+ [out, retval] /*Windows.Foundation.IAsyncOperation<Windows.Networking.Connectivity.ProxyConfiguration*>** */ DWORD **value);
+ HRESULT GetSortedEndpointPairs([in] /* Windows.Foundation.Collections.IIterable<Windows.Networking.EndpointPair*>* */ DWORD *endpoint,
+ [in] /*Windows.Networking.HostNameSortOptions*/ DWORD options,
+ [out, retval] /*Windows.Foundation.Collections.IVectorView<Windows.Networking.EndpointPair*>** */ DWORD **value);
+ [eventadd] HRESULT NetworkStatusChanged([in] Windows.Networking.Connectivity.NetworkStatusChangedEventHandler* handler,
+ [out, retval] EventRegistrationToken* eventCookie);
+ [eventremove] HRESULT NetworkStatusChanged([in] EventRegistrationToken cookie);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.ConnectionCost)]
+ [uuid(bad7d829-3416-4b10-a202-bac0b075bdae)]
+ interface IConnectionCost : IInspectable
+ {
+ [propget] HRESULT NetworkCostType([out, retval] Windows.Networking.Connectivity.NetworkCostType* value);
+ [propget] HRESULT Roaming([out, retval] boolean* value);
+ [propget] HRESULT OverDataLimit([out, retval] boolean* value);
+ [propget] HRESULT ApproachingDataLimit([out, retval] boolean* value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.DataUsage)]
+ [uuid(c1431dd3-b146-4d39-b959-0c69b096c512)]
+ interface IDataUsage : IInspectable
+ {
+ [propget] HRESULT BytesSent([out, retval] UINT64* value);
+ [propget] HRESULT BytesReceived([out, retval] UINT64* value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.NetworkAdapter)]
+ [uuid(3b542e03-5388-496c-a8a3-affd39aec2e6)]
+ interface INetworkAdapter : IInspectable
+ {
+ [propget] HRESULT OutboundMaxBitsPerSecond([out, retval] UINT64* value);
+ [propget] HRESULT InboundMaxBitsPerSecond([out ,retval] UINT64* value);
+ [propget] HRESULT IanaInterfaceType([out, retval] UINT32* value);
+ [propget] HRESULT NetworkItem([out, retval] /*Windows.Networking.Connectivity.NetworkItem** */ DWORD **value);
+ [propget] HRESULT NetworkAdapterId([out, retval] GUID* value);
+ HRESULT GetConnectedProfileAsync([out, retval] /*Windows.Foundation.IAsyncOperation<Windows.Networking.Connectivity.ConnectionProfile*>** */ DWORD **value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.NetworkSecuritySettings)]
+ [uuid(7CA07E8D-917B-4B5F-B84D-28F7A5AC5402)]
+ interface INetworkSecuritySettings : IInspectable
+ {
+ [propget] HRESULT NetworkAuthenticationType([out, retval] Windows.Networking.Connectivity.NetworkAuthenticationType* value);
+ [propget] HRESULT NetworkEncryptionType([out, retval] Windows.Networking.Connectivity.NetworkEncryptionType* value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.DataPlanUsage)]
+ [uuid(b921492d-3b44-47ff-b361-be59e69ed1b0)]
+ interface IDataPlanUsage : IInspectable
+ {
+ [propget] HRESULT MegabytesUsed([out] [retval] UINT32* value);
+ [propget] HRESULT LastSyncTime([out] [retval] Windows.Foundation.DateTime* value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.Connectivity.DataPlanStatus)]
+ [uuid(977a8b8c-3885-40f3-8851-42cd2bd568bb)]
+ interface IDataPlanStatus : IInspectable
+ {
+ [propget] HRESULT DataPlanUsage([out, retval] Windows.Networking.Connectivity.DataPlanUsage** value);
+ [propget] HRESULT DataLimitInMegabytes([out, retval] /*Windows.Foundation.IReference<UINT32>** */ UINT32 **value);
+ [propget] HRESULT InboundBitsPerSecond([out, retval] /* Windows.Foundation.IReference<UINT64>** */ UINT64 **value);
+ [propget] HRESULT OutboundBitsPerSecond([out, retval] /* Windows.Foundation.IReference<UINT64>** */ UINT64 **value);
+ [propget] HRESULT NextBillingCycle([out, retval] /* Windows.Foundation.IReference<Windows.Foundation.DateTime>** */ UINT64 **value);
+ [propget] HRESULT MaxTransferSizeInMegabytes([out, retval] /*Windows.Foundation.IReference<UINT32>** */ UINT32 **value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass DataPlanStatus
+ {
+ [default] interface Windows.Networking.Connectivity.IDataPlanStatus;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass DataUsage
+ {
+ [default] interface Windows.Networking.Connectivity.IDataUsage;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass NetworkAdapter
+ {
+ [default] interface Windows.Networking.Connectivity.INetworkAdapter;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass DataPlanUsage
+ {
+ [default] interface Windows.Networking.Connectivity.IDataPlanUsage;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ [static(Windows.Networking.Connectivity.INetworkInformationStatics, Windows.Foundation.UniversalApiContract, 1.0)]
+ /*[static(Windows.Networking.Connectivity.INetworkInformationStatics2, Windows.Foundation.UniversalApiContract, 1.0)]*/
+ runtimeclass NetworkInformation
+ {
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass IPInformation
+ {
+ [default] interface Windows.Networking.Connectivity.IIPInformation;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass NetworkSecuritySettings
+ {
+ [default] interface Windows.Networking.Connectivity.INetworkSecuritySettings;
+ }
+
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass ConnectionProfile
+ {
+ [default] interface Windows.Networking.Connectivity.IConnectionProfile;
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Connectivity.IConnectionProfile2;
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Connectivity.IConnectionProfile3;
+ [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.Connectivity.IConnectionProfile4;
+ [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Networking.Connectivity.IConnectionProfile5;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass ConnectionCost
+ {
+ [default] interface Windows.Networking.Connectivity.IConnectionCost;
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.Connectivity.IConnectionCost2;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass LanIdentifier
+ {
+ [default] interface Windows.Networking.Connectivity.ILanIdentifier;
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ runtimeclass LanIdentifierData
+ {
+ [default] interface Windows.Networking.Connectivity.ILanIdentifierData;
+ }
+
+ }
+ }
+}
--
2.30.2

View File

@ -0,0 +1,120 @@
From 9bedd90e89affd509fa9e5a3301eda4f4595b9d8 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 1 Jun 2021 10:26:28 +1000
Subject: [PATCH 2/8] include: Add windows.networking.idl
---
include/Makefile.in | 1 +
include/windows.networking.idl | 87 ++++++++++++++++++++++++++++++++++
2 files changed, 88 insertions(+)
create mode 100644 include/windows.networking.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index 8e40dfd903f..c7b186fed44 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -761,6 +761,7 @@ SOURCES = \
windows.media.devices.idl \
windows.media.speechsynthesis.idl \
windows.networking.connectivity.idl \
+ windows.networking.idl \
windows.system.idl \
windows.system.userprofile.idl \
windowscontracts.idl \
diff --git a/include/windows.networking.idl b/include/windows.networking.idl
new file mode 100644
index 00000000000..160cd78e540
--- /dev/null
+++ b/include/windows.networking.idl
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2021 Alistair Leslie-Hughes
+ *
+ * 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
+ */
+
+#ifdef __WIDL__
+#pragma winrt ns_prefix
+#endif
+
+import "inspectable.idl";
+import "asyncinfo.idl";
+import "eventtoken.idl";
+import "windowscontracts.idl";
+import "windows.foundation.idl";
+import "windows.networking.connectivity.idl";
+
+namespace Windows
+{
+ namespace Networking
+ {
+ typedef enum HostNameType HostNameType;
+
+ runtimeclass HostName;
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ enum HostNameType
+ {
+ DomainName,
+ Ipv4,
+ Ipv6,
+ Bluetooth
+ };
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.HostName)]
+ [uuid(bf8ecaad-ed96-49a7-9084-d416cae88dcb)]
+ interface IHostName : IInspectable
+ {
+ [propget] HRESULT IPInformation([out, retval] Windows.Networking.Connectivity.IPInformation** value);
+ [propget] HRESULT RawName([out, retval] HSTRING* value);
+ [propget] HRESULT DisplayName([out, retval] HSTRING* value);
+ [propget] HRESULT CanonicalName([out, retval] HSTRING* value);
+ [propget] HRESULT Type([out, retval] Windows.Networking.HostNameType* value);
+ HRESULT IsEqual([in] Windows.Networking.HostName* hostName, [out, retval] boolean* equal);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.HostName)]
+ [uuid(458c23ed-712f-4576-adf1-c20b2c643558)]
+ interface IHostNameFactory : IInspectable
+ {
+ HRESULT CreateHostName([in] HSTRING hostname, [out, retval] Windows.Networking.HostName** value);
+ }
+
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [exclusiveto(Windows.Networking.HostName)]
+ [uuid(f68cd4bf-a388-4e8b-91ea-54dd6dd901c0)]
+ interface IHostNameStatics : IInspectable
+ {
+ HRESULT Compare([in] HSTRING value1, [in] HSTRING value2, [out, retval] INT32* result);
+ }
+
+ /*[activatable(Windows.Networking.IHostNameFactory, Windows.Foundation.UniversalApiContract, 1.0)]*/
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
+ [marshaling_behavior(agile)]
+ [static(Windows.Networking.IHostNameStatics, Windows.Foundation.UniversalApiContract, 1.0)]
+ [threading(both)]
+ runtimeclass HostName
+ {
+ [default] interface Windows.Networking.IHostName;
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Foundation.IStringable;
+ }
+ }
+}
\ No newline at end of file
--
2.30.2

View File

@ -0,0 +1,97 @@
From a446063a84d5b48ac4c8aa05abca98da8a386467 Mon Sep 17 00:00:00 2001
From: Esdras Tarsis <esdrastarsis@gmail.com>
Date: Wed, 2 Sep 2020 23:41:19 -0300
Subject: [PATCH 3/8] windows.networking.connectivity: Add stub dll.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46534
Signed-off-by: Esdras Tarsis <esdrastarsis@gmail.com>
---
configure.ac | 1 +
.../Makefile.in | 7 ++++
.../windows.networking.connectivity.spec | 3 ++
.../windows.networking.connectivity_main.c | 35 +++++++++++++++++++
4 files changed, 46 insertions(+)
create mode 100644 dlls/windows.networking.connectivity/Makefile.in
create mode 100644 dlls/windows.networking.connectivity/windows.networking.connectivity.spec
create mode 100644 dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
diff --git a/configure.ac b/configure.ac
index 7ea0d824cee..e8d0d8a9023 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3775,6 +3775,7 @@ WINE_CONFIG_MAKEFILE(dlls/windows.media.devices)
WINE_CONFIG_MAKEFILE(dlls/windows.media.devices/tests)
WINE_CONFIG_MAKEFILE(dlls/windows.media.speech)
WINE_CONFIG_MAKEFILE(dlls/windows.media.speech/tests)
+WINE_CONFIG_MAKEFILE(dlls/windows.networking.connectivity)
WINE_CONFIG_MAKEFILE(dlls/windowscodecs)
WINE_CONFIG_MAKEFILE(dlls/windowscodecs/tests)
WINE_CONFIG_MAKEFILE(dlls/windowscodecsext)
diff --git a/dlls/windows.networking.connectivity/Makefile.in b/dlls/windows.networking.connectivity/Makefile.in
new file mode 100644
index 00000000000..6fc24a72feb
--- /dev/null
+++ b/dlls/windows.networking.connectivity/Makefile.in
@@ -0,0 +1,7 @@
+MODULE = windows.networking.connectivity
+IMPORTS = combase uuid
+
+EXTRADLLFLAGS = -mno-cygwin
+
+C_SRCS = \
+ windows.networking.connectivity_main.c
diff --git a/dlls/windows.networking.connectivity/windows.networking.connectivity.spec b/dlls/windows.networking.connectivity/windows.networking.connectivity.spec
new file mode 100644
index 00000000000..4b286869e02
--- /dev/null
+++ b/dlls/windows.networking.connectivity/windows.networking.connectivity.spec
@@ -0,0 +1,3 @@
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetActivationFactory(ptr ptr)
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
\ No newline at end of file
diff --git a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
new file mode 100644
index 00000000000..96ff0ea5af2
--- /dev/null
+++ b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
@@ -0,0 +1,35 @@
+#include <stdarg.h>
+
+#define COBJMACROS
+#include "windef.h"
+#include "winbase.h"
+#include "winstring.h"
+#include "wine/debug.h"
+
+#include "objbase.h"
+#include "initguid.h"
+
+#include "activation.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(network);
+
+static const char *debugstr_hstring(HSTRING hstr)
+{
+ const WCHAR *str;
+ UINT32 len;
+ if (hstr && !((ULONG_PTR)hstr >> 16)) return "(invalid)";
+ str = WindowsGetStringRawBuffer(hstr, &len);
+ return wine_dbgstr_wn(str, len);
+}
+
+HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, LPVOID *object)
+{
+ FIXME("clsid %s, riid %s, object %p stub!\n", debugstr_guid(clsid), debugstr_guid(riid), object);
+ return CLASS_E_CLASSNOTAVAILABLE;
+}
+
+HRESULT WINAPI DllGetActivationFactory(HSTRING classid, IActivationFactory **factory)
+{
+ FIXME("classid %s, factory %p stub!\n", debugstr_hstring(classid), factory);
+ return E_NOINTERFACE;
+}
\ No newline at end of file
--
2.30.2

View File

@ -0,0 +1,136 @@
From 587e8baeef029940518223d13b754b4e6c0352cd Mon Sep 17 00:00:00 2001
From: Esdras Tarsis <esdrastarsis@gmail.com>
Date: Wed, 2 Sep 2020 23:53:28 -0300
Subject: [PATCH 4/8] windows.networking.connectivity: Implement
IActivationFactory stubs.
v2:
Add Proper QueryInterface
Fixed Initial Reference Count value.
---
.../windows.networking.connectivity_main.c | 104 +++++++++++++++++-
1 file changed, 101 insertions(+), 3 deletions(-)
diff --git a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
index 96ff0ea5af2..2463cc2c93c 100644
--- a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
+++ b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
@@ -22,6 +22,102 @@ static const char *debugstr_hstring(HSTRING hstr)
return wine_dbgstr_wn(str, len);
}
+struct windows_networking_connectivity
+{
+ IActivationFactory IActivationFactory_iface;
+ LONG refcount;
+};
+
+static inline struct windows_networking_connectivity *impl_from_IActivationFactory(IActivationFactory *iface)
+{
+ return CONTAINING_RECORD(iface, struct windows_networking_connectivity, IActivationFactory_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_QueryInterface(
+ IActivationFactory *iface, REFIID iid, void **object)
+{
+ TRACE("iface %p, iid %s, object %p stub!\n", iface, debugstr_guid(iid), object);
+
+ if (IsEqualGUID(iid, &IID_IUnknown) ||
+ IsEqualGUID(iid, &IID_IInspectable) ||
+ IsEqualGUID(iid, &IID_IAgileObject) ||
+ IsEqualGUID(iid, &IID_IActivationFactory))
+ {
+ IUnknown_AddRef(iface);
+ *object = &impl->INetworkInformationStatics_iface;
+ return S_OK;
+ }
+
+ FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *object = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE windows_networking_connectivity_AddRef(
+ IActivationFactory *iface)
+{
+ struct windows_networking_connectivity *impl = impl_from_IActivationFactory(iface);
+ ULONG rc = InterlockedIncrement(&impl->refcount);
+ TRACE("%p increasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static ULONG STDMETHODCALLTYPE windows_networking_connectivity_Release(
+ IActivationFactory *iface)
+{
+ struct windows_networking_connectivity *impl = impl_from_IActivationFactory(iface);
+ ULONG rc = InterlockedDecrement(&impl->refcount);
+ TRACE("%p decreasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_GetIids(
+ IActivationFactory *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_GetRuntimeClassName(
+ IActivationFactory *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_GetTrustLevel(
+ IActivationFactory *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_ActivateInstance(
+ IActivationFactory *iface, IInspectable **instance)
+{
+ FIXME("iface %p, instance %p stub!\n", iface, instance);
+ return E_NOTIMPL;
+}
+
+static const struct IActivationFactoryVtbl activation_factory_vtbl =
+{
+ windows_networking_connectivity_QueryInterface,
+ windows_networking_connectivity_AddRef,
+ windows_networking_connectivity_Release,
+ /* IInspectable methods */
+ windows_networking_connectivity_GetIids,
+ windows_networking_connectivity_GetRuntimeClassName,
+ windows_networking_connectivity_GetTrustLevel,
+ /* IActivationFactory methods */
+ windows_networking_connectivity_ActivateInstance,
+};
+
+static struct windows_networking_connectivity windows_networking_connectivity =
+{
+ {&activation_factory_vtbl},
+ 1
+};
+
HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, LPVOID *object)
{
FIXME("clsid %s, riid %s, object %p stub!\n", debugstr_guid(clsid), debugstr_guid(riid), object);
@@ -30,6 +126,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, LPVOID *object)
HRESULT WINAPI DllGetActivationFactory(HSTRING classid, IActivationFactory **factory)
{
- FIXME("classid %s, factory %p stub!\n", debugstr_hstring(classid), factory);
- return E_NOINTERFACE;
-}
\ No newline at end of file
+ TRACE("classid %s, factory %p.\n", debugstr_hstring(classid), factory);
+ *factory = &windows_networking_connectivity.IActivationFactory_iface;
+ IUnknown_AddRef(*factory);
+ return S_OK;
+}
--
2.30.2

View File

@ -0,0 +1,301 @@
From bb14d124f11785e8abd8abdbc0a15854d88848ce Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 1 Jun 2021 11:10:25 +1000
Subject: [PATCH 5/8] windows.networking.connectivity: Implement
INetworkInformationStatics stubs.
v2:
Fixed QueryInterfaces
Based off patch by Esdras Tarsis.
---
.../windows.networking.connectivity_main.c | 242 ++++++++++++++++++
1 file changed, 242 insertions(+)
diff --git a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
index 2463cc2c93c..b96e6c4f0a4 100644
--- a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
+++ b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
@@ -10,6 +10,9 @@
#include "initguid.h"
#include "activation.h"
+#define WIDL_using_Windows_Networking_Connectivity
+#define WIDL_using_Windows_Foundation_Collections
+#include "windows.networking.connectivity.h"
WINE_DEFAULT_DEBUG_CHANNEL(network);
@@ -25,6 +28,8 @@ static const char *debugstr_hstring(HSTRING hstr)
struct windows_networking_connectivity
{
IActivationFactory IActivationFactory_iface;
+ INetworkInformationStatics INetworkInformationStatics_iface;
+ IVectorView_ConnectionProfile IVectorView_iface;
LONG refcount;
};
@@ -33,9 +38,237 @@ static inline struct windows_networking_connectivity *impl_from_IActivationFacto
return CONTAINING_RECORD(iface, struct windows_networking_connectivity, IActivationFactory_iface);
}
+static inline struct windows_networking_connectivity *impl_from_INetworkInformationStatics(INetworkInformationStatics *iface)
+{
+ return CONTAINING_RECORD(iface, struct windows_networking_connectivity, INetworkInformationStatics_iface);
+}
+
+static inline struct windows_networking_connectivity *impl_from_IVectorView_ConnectionProfile(IVectorView_ConnectionProfile *iface)
+{
+ return CONTAINING_RECORD(iface, struct windows_networking_connectivity, IVectorView_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_QueryInterface(IVectorView_ConnectionProfile *iface, REFIID iid, void **object)
+{
+ TRACE("iface %p, iid %s, object %p stub!\n", iface, debugstr_guid(iid), object);
+ IUnknown_AddRef(iface);
+ *object = iface;
+ return S_OK;
+}
+
+static ULONG STDMETHODCALLTYPE vector_view_AddRef(IVectorView_ConnectionProfile *iface)
+{
+ struct windows_networking_connectivity *impl = impl_from_IVectorView_ConnectionProfile(iface);
+ ULONG rc = InterlockedIncrement(&impl->refcount);
+ TRACE("%p increasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static ULONG STDMETHODCALLTYPE vector_view_Release(IVectorView_ConnectionProfile *iface)
+{
+ struct windows_networking_connectivity *impl = impl_from_IVectorView_ConnectionProfile(iface);
+ ULONG rc = InterlockedDecrement(&impl->refcount);
+ TRACE("%p decreasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_GetIids(IVectorView_ConnectionProfile *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_GetRuntimeClassName(IVectorView_ConnectionProfile *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_GetTrustLevel(IVectorView_ConnectionProfile *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_GetAt(IVectorView_ConnectionProfile *iface, ULONG index, IConnectionProfile **out_value)
+{
+ FIXME("iface %p, index %#x, out_value %p stub!\n", iface, index, out_value);
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_get_Size(
+ IVectorView_ConnectionProfile *iface, ULONG *out_value)
+{
+ FIXME("iface %p, out_value %p stub!\n", iface, out_value);
+ *out_value = 0;
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_IndexOf(
+ IVectorView_ConnectionProfile *iface, IConnectionProfile *value, ULONG *index, BOOLEAN *out_value)
+{
+ FIXME("iface %p, value %p, index %p, out_value %p stub!\n", iface, value, index, out_value);
+ *out_value = FALSE;
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE vector_view_GetMany(
+ IVectorView_ConnectionProfile *iface, UINT32 start_index, UINT32 size, IConnectionProfile **items, UINT32 *out_value)
+{
+ FIXME("iface %p, start_index %#x, items %p, out_value %p stub!\n", iface, start_index, items, out_value);
+ *out_value = 0;
+ return S_OK;
+}
+
+static const struct IVectorView_ConnectionProfileVtbl vector_view_vtbl =
+{
+ vector_view_QueryInterface,
+ vector_view_AddRef,
+ vector_view_Release,
+ vector_view_GetIids,
+ vector_view_GetRuntimeClassName,
+ vector_view_GetTrustLevel,
+ vector_view_GetAt,
+ vector_view_get_Size,
+ vector_view_IndexOf,
+ vector_view_GetMany
+};
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_QueryInterface(
+ INetworkInformationStatics *iface, REFIID iid, void **object)
+{
+ TRACE("iface %p, iid %s, object %p stub!\n", iface, debugstr_guid(iid), object);
+
+ if (IsEqualGUID(iid, &IID_IUnknown) ||
+ IsEqualGUID(iid, &IID_IInspectable) ||
+ IsEqualGUID(iid, &IID_IAgileObject) ||
+ IsEqualGUID(iid, &IID_INetworkInformationStatics))
+ {
+ IUnknown_AddRef(iface);
+ *object = iface;
+ return S_OK;
+ }
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *object = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE network_information_statics_AddRef(
+ INetworkInformationStatics *iface)
+{
+ struct windows_networking_connectivity *impl = impl_from_INetworkInformationStatics(iface);
+ ULONG rc = InterlockedIncrement(&impl->refcount);
+ TRACE("%p increasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static ULONG STDMETHODCALLTYPE network_information_statics_Release(
+ INetworkInformationStatics *iface)
+{
+ struct windows_networking_connectivity *impl = impl_from_INetworkInformationStatics(iface);
+ ULONG rc = InterlockedDecrement(&impl->refcount);
+ TRACE("%p decreasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetIids(
+ INetworkInformationStatics *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetRuntimeClassName(
+ INetworkInformationStatics *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetTrustLevel(
+ INetworkInformationStatics *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetConnectionProfiles(INetworkInformationStatics *iface, __FIVectorView_1_Windows__CNetworking__CConnectivity__CConnectionProfile **value)
+{
+ struct windows_networking_connectivity *impl = impl_from_INetworkInformationStatics(iface);
+ FIXME("iface %p, %p stub!\n", iface, value);
+ *value = &impl->IVectorView_iface;
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetInternetConnectionProfile(INetworkInformationStatics *iface, IConnectionProfile **value)
+{
+ FIXME("iface %p, %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetLanIdentifiers(INetworkInformationStatics *iface, __FIVectorView_1_Windows__CNetworking__CConnectivity__CLanIdentifier **value)
+{
+ FIXME("iface %p, %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetHostNames(INetworkInformationStatics *iface, DWORD **value)
+{
+ FIXME("iface %p, %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetProxyConfigurationAsync(INetworkInformationStatics *iface, char *name, DWORD **value)
+{
+ FIXME("iface %p, %p, %p stub!\n", iface, name, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetSortedEndpointPairs(INetworkInformationStatics *iface, DWORD* destinationList, DWORD sortOptions, DWORD **value)
+{
+ FIXME("iface %p, %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_eventadd_NetworkStatusChanged(
+ INetworkInformationStatics *iface, __x_ABI_CWindows_CNetworking_CConnectivity_CINetworkStatusChangedEventHandler *value, EventRegistrationToken* token)
+{
+ FIXME("iface %p, value %p, token %p stub!\n", iface, value, token);
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_eventremove_NetworkStatusChanged(
+ INetworkInformationStatics *iface, EventRegistrationToken token)
+{
+ FIXME("iface %p, token %#I64x stub!\n", iface, token.value);
+ return S_OK;
+}
+
+static const struct INetworkInformationStaticsVtbl network_information_statics_vtbl =
+{
+ network_information_statics_QueryInterface,
+ network_information_statics_AddRef,
+ network_information_statics_Release,
+ /* IInspectable methods */
+ network_information_statics_GetIids,
+ network_information_statics_GetRuntimeClassName,
+ network_information_statics_GetTrustLevel,
+ /* INetworkInformationStatics methods */
+ network_information_statics_GetConnectionProfiles,
+ network_information_statics_GetInternetConnectionProfile,
+ network_information_statics_GetLanIdentifiers,
+ network_information_statics_GetHostNames,
+ network_information_statics_GetProxyConfigurationAsync,
+ network_information_statics_GetSortedEndpointPairs,
+ network_information_statics_eventadd_NetworkStatusChanged,
+ network_information_statics_eventremove_NetworkStatusChanged,
+};
+
static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_QueryInterface(
IActivationFactory *iface, REFIID iid, void **object)
{
+ struct windows_networking_connectivity *impl = impl_from_IActivationFactory(iface);
TRACE("iface %p, iid %s, object %p stub!\n", iface, debugstr_guid(iid), object);
if (IsEqualGUID(iid, &IID_IUnknown) ||
@@ -48,6 +281,13 @@ static HRESULT STDMETHODCALLTYPE windows_networking_connectivity_QueryInterface(
return S_OK;
}
+ if (IsEqualGUID(iid, &IID_INetworkInformationStatics))
+ {
+ IUnknown_AddRef(iface);
+ *object = &impl->INetworkInformationStatics_iface;
+ return S_OK;
+ }
+
FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
*object = NULL;
return E_NOINTERFACE;
@@ -115,6 +355,8 @@ static const struct IActivationFactoryVtbl activation_factory_vtbl =
static struct windows_networking_connectivity windows_networking_connectivity =
{
{&activation_factory_vtbl},
+ {&network_information_statics_vtbl},
+ {&vector_view_vtbl},
1
};
--
2.30.2

View File

@ -0,0 +1,79 @@
From 911464a8aba1d14e5191daf47501e39f78b3c9a1 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 31 May 2021 09:45:56 +1000
Subject: [PATCH 6/8] windows.networking.connectivity: Registry DLL
This is a temp solution until the IDL can used for registration.
---
.../Makefile.in | 3 +++
.../network.rgs | 19 ++++++++++++++++++
dlls/windows.networking.connectivity/rsrc.rc | 20 +++++++++++++++++++
3 files changed, 42 insertions(+)
create mode 100644 dlls/windows.networking.connectivity/network.rgs
create mode 100644 dlls/windows.networking.connectivity/rsrc.rc
diff --git a/dlls/windows.networking.connectivity/Makefile.in b/dlls/windows.networking.connectivity/Makefile.in
index 6fc24a72feb..5785430da2c 100644
--- a/dlls/windows.networking.connectivity/Makefile.in
+++ b/dlls/windows.networking.connectivity/Makefile.in
@@ -5,3 +5,6 @@ EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \
windows.networking.connectivity_main.c
+
+RC_SRCS = rsrc.rc
+
diff --git a/dlls/windows.networking.connectivity/network.rgs b/dlls/windows.networking.connectivity/network.rgs
new file mode 100644
index 00000000000..59d6f739a72
--- /dev/null
+++ b/dlls/windows.networking.connectivity/network.rgs
@@ -0,0 +1,19 @@
+HKLM
+{
+ NoRemove Software
+ {
+ NoRemove Microsoft
+ {
+ NoRemove WindowsRuntime
+ {
+ NoRemove ActivatableClassId
+ {
+ ForceRemove Windows.Networking.Connectivity.NetworkInformation
+ {
+ val 'DllPath' = s '%MODULE%'
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/dlls/windows.networking.connectivity/rsrc.rc b/dlls/windows.networking.connectivity/rsrc.rc
new file mode 100644
index 00000000000..3ebeb3a7000
--- /dev/null
+++ b/dlls/windows.networking.connectivity/rsrc.rc
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2021 Alistair Leslie-Hughes
+ *
+ * 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
+ */
+
+/* @makedep: network.rgs */
+1 WINE_REGISTRY network.rgs
--
2.30.2

View File

@ -0,0 +1,198 @@
From ef41fa79b32aa3d211e1e8b64b9ace89f8fa5876 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 1 Jun 2021 13:13:57 +1000
Subject: [PATCH 7/8] windows.networking.connectivity: Implement
INetworkInformationStatics GetInternetConnectionProfile
---
.../windows.networking.connectivity_main.c | 163 +++++++++++++++++-
1 file changed, 161 insertions(+), 2 deletions(-)
diff --git a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
index b96e6c4f0a4..ba1f5a5401d 100644
--- a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
+++ b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
@@ -5,6 +5,7 @@
#include "winbase.h"
#include "winstring.h"
#include "wine/debug.h"
+#include "wine/heap.h"
#include "objbase.h"
#include "initguid.h"
@@ -201,12 +202,170 @@ static HRESULT STDMETHODCALLTYPE network_information_statics_GetConnectionProfil
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE network_information_statics_GetInternetConnectionProfile(INetworkInformationStatics *iface, IConnectionProfile **value)
+struct connection_profile
{
- FIXME("iface %p, %p stub!\n", iface, value);
+ IConnectionProfile IConnectionProfile_iface;
+ LONG ref;
+};
+
+static inline struct connection_profile *impl_from_IConnectionProfile(IConnectionProfile *iface)
+{
+ return CONTAINING_RECORD(iface, struct connection_profile, IConnectionProfile_iface);
+}
+
+static HRESULT WINAPI connection_profile_QueryInterface(IConnectionProfile *iface, REFIID riid, void **object)
+{
+ TRACE("iface %p, iid %s, object %p stub!\n", iface, debugstr_guid(riid), object);
+
+ if (IsEqualGUID(riid, &IID_IUnknown) ||
+ IsEqualGUID(riid, &IID_IInspectable) ||
+ IsEqualGUID(riid, &IID_IConnectionProfile))
+ {
+ IUnknown_AddRef(iface);
+ *object = iface;
+ return S_OK;
+ }
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
+ *object = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI connection_profile_AddRef(IConnectionProfile *iface)
+{
+ struct connection_profile *impl = impl_from_IConnectionProfile(iface);
+ ULONG rc = InterlockedIncrement(&impl->ref);
+ TRACE("%p increasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static ULONG WINAPI connection_profile_Release(IConnectionProfile *iface)
+{
+ struct connection_profile *impl = impl_from_IConnectionProfile(iface);
+ ULONG rc = InterlockedIncrement(&impl->ref);
+ TRACE("%p increasing refcount to %u.\n", impl, rc);
+ return rc;
+}
+
+static HRESULT WINAPI connection_profile_GetIids(IConnectionProfile *iface, ULONG *iid_count, IID **iids)
+{
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetRuntimeClassName(IConnectionProfile *iface, HSTRING *class_name)
+{
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetTrustLevel(IConnectionProfile *iface, TrustLevel *trust_level)
+{
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_get_ProfileName(IConnectionProfile *iface, HSTRING *value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
return E_NOTIMPL;
}
+static HRESULT WINAPI connection_profile_GetNetworkConnectivityLevel(IConnectionProfile *iface,
+ enum __x_ABI_CWindows_CNetworking_CConnectivity_CNetworkConnectivityLevel *value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetNetworkNames(IConnectionProfile *iface, __FIVectorView_1_HSTRING **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetConnectionCost(IConnectionProfile *iface,
+ __x_ABI_CWindows_CNetworking_CConnectivity_CIConnectionCost **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetDataPlanStatus(IConnectionProfile *iface,
+ __x_ABI_CWindows_CNetworking_CConnectivity_CIDataPlanStatus **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_get_NetworkAdapter(IConnectionProfile *iface,
+ __x_ABI_CWindows_CNetworking_CConnectivity_CINetworkAdapter **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetLocalUsage(IConnectionProfile *iface,
+ struct __x_ABI_CWindows_CFoundation_CDateTime start, struct __x_ABI_CWindows_CFoundation_CDateTime end,
+ __x_ABI_CWindows_CNetworking_CConnectivity_CIDataUsage **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_GetLocalUsagePerRoamingStates(IConnectionProfile *iface,
+ struct __x_ABI_CWindows_CFoundation_CDateTime start, struct __x_ABI_CWindows_CFoundation_CDateTime end,
+ enum __x_ABI_CWindows_CNetworking_CConnectivity_CRoamingStates states,
+ __x_ABI_CWindows_CNetworking_CConnectivity_CIDataUsage **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI connection_profile_get_NetworkSecuritySettings(IConnectionProfile *iface,
+ __x_ABI_CWindows_CNetworking_CConnectivity_CINetworkSecuritySettings **value)
+{
+ FIXME("iface %p, value %p stub!\n", iface, value);
+ return E_NOTIMPL;
+}
+
+struct __x_ABI_CWindows_CNetworking_CConnectivity_CIConnectionProfileVtbl connection_vtbl =
+{
+ connection_profile_QueryInterface,
+ connection_profile_AddRef,
+ connection_profile_Release,
+ connection_profile_GetIids,
+ connection_profile_GetRuntimeClassName,
+ connection_profile_GetTrustLevel,
+ connection_profile_get_ProfileName,
+ connection_profile_GetNetworkConnectivityLevel,
+ connection_profile_GetNetworkNames,
+ connection_profile_GetConnectionCost,
+ connection_profile_GetDataPlanStatus,
+ connection_profile_get_NetworkAdapter,
+ connection_profile_GetLocalUsage,
+ connection_profile_GetLocalUsagePerRoamingStates,
+ connection_profile_get_NetworkSecuritySettings
+};
+
+static HRESULT STDMETHODCALLTYPE network_information_statics_GetInternetConnectionProfile(INetworkInformationStatics *iface, IConnectionProfile **value)
+{
+ struct windows_networking_connectivity *impl = impl_from_INetworkInformationStatics(iface);
+ struct connection_profile *profile;
+
+ FIXME("iface %p, %p stub!\n", impl, value);
+
+ profile = heap_alloc(sizeof(struct connection_profile));
+ if (!profile)
+ return E_OUTOFMEMORY;
+
+ profile->IConnectionProfile_iface.lpVtbl = &connection_vtbl;
+ profile->ref = 1;
+
+ *value = &profile->IConnectionProfile_iface;
+ return S_OK;
+}
+
static HRESULT STDMETHODCALLTYPE network_information_statics_GetLanIdentifiers(INetworkInformationStatics *iface, __FIVectorView_1_Windows__CNetworking__CConnectivity__CLanIdentifier **value)
{
FIXME("iface %p, %p stub!\n", iface, value);
--
2.30.2

View File

@ -0,0 +1,30 @@
From 308cffe2fdf351c360870cd96c04b3384a70bd7a Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 1 Jun 2021 13:24:16 +1000
Subject: [PATCH 8/8] windows.networking.connectivity: IConnectionProfile
GetNetworkConnectivityLevel always return internet access
---
.../windows.networking.connectivity_main.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
index ba1f5a5401d..0e8f4e699f0 100644
--- a/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
+++ b/dlls/windows.networking.connectivity/windows.networking.connectivity_main.c
@@ -274,8 +274,10 @@ static HRESULT WINAPI connection_profile_get_ProfileName(IConnectionProfile *ifa
static HRESULT WINAPI connection_profile_GetNetworkConnectivityLevel(IConnectionProfile *iface,
enum __x_ABI_CWindows_CNetworking_CConnectivity_CNetworkConnectivityLevel *value)
{
- FIXME("iface %p, value %p stub!\n", iface, value);
- return E_NOTIMPL;
+ struct connection_profile *impl = impl_from_IConnectionProfile(iface);
+ FIXME("iface %p, value %p stub!\n", impl, value);
+ *value = NetworkConnectivityLevel_InternetAccess;
+ return S_OK;
}
static HRESULT WINAPI connection_profile_GetNetworkNames(IConnectionProfile *iface, __FIVectorView_1_HSTRING **value)
--
2.30.2

View File

@ -0,0 +1 @@
Fixes: [46534] Implement INetworkInformationStatics interface