I made the changes here
https://github.com/aserdean/ovs/commit/8c7508715bc7f8d4a7c51813ee463a543274b386
will propose a series by EoD.
On 3/9/2025 11:17 AM, Frank Wagner wrote:
Totally agree to drop Win8 support, that would make it a lot more
straightforward.
_NT_TARGET_VERSION is indeed optional, but prevents that the SDK has
to be selected explicitly for Win10 in the future, as it will target
lowest SDK features automatically, at least in theory.
Gesendet von Outlook für Android <https://aka.ms/AAb9ysg>
------------------------------------------------------------------------
*From:* Alin Serdean <alinserd...@gmail.com>
*Sent:* Saturday, March 8, 2025 11:58:45 AM
*To:* Frank Wagner <frank.wag...@dbosoft.eu>
*Cc:* d...@openvswitch.org <d...@openvswitch.org>
*Subject:* Re: [ovs-dev] [PATCH 1/2] windows: Fix Win10 build with
VS2022.
Thank you for bringing this up and working on it!
I had a similar patch posted on the ML but did not follow-up on it
since I wanted to make more changes.
I would propose the following:
- drop targets for 8/8.1 since support for them has ben EOL for quite
some time.
- lets drop the function OvsAllocateAlignedMemory altogether since its
not used
Will propose a patch which encloses the above.
Not sure if we need:
_NT_TARGET_VERSION and to set the target version for Windows10
On Sat, Mar 1, 2025 at 1:39 PM Frank Wagner <frank.wag...@dbosoft.eu>
wrote:
This patch fixes some issues when building for Windows
on Visual Studio 2022 (only supports target version 10)
and current driver SDKs.
The build is currently failing due to missing variables in
msbuild properties and fails in driver verification.
Tested with VS 2022 and --with-vstudiotargetver=win10 and tested
if it still works for VS2019 / Win8/8.1/10 using the ci build scripts.
Tested for VS 2019 with same SDKs/WDKs installed in appveyor 2019 VM,
as documented here:
https://www.appveyor.com/docs/windows-images-software/
Remarks: It is getting more and more difficult to build for Win8
these
days - so dropping support for Win8 in the near future is something
that should be considered. Currently, installing an SDK above the
Windows 11 SDK/WDK (build 10.0.22000.1) will break the Win8 build
regardless of whether it is installed for VS 2022 or VS 2019.
datapath-windows/automake / build script
-----------------------------------------------
VS2022 requires Version to be passed to StampInf, added version
to Windows10 make datapath_*.
Splitted datapath_windows_analyze for win8 and win10,
so this is now datapath_windows_analyze_win10 and
datapath_windows_analyze_win8, both are called from build script.
The ci build script will continue to work only with VS 2019 as it
requires to build Win8 for install.
msbuild configuration for Win10
-----------------------------------
- Fixed missing TargetVersion Windows10 which works currently
for but building but is inconsistent set between build and package.
In package it fails without TargetVersion as inf stamping requires
a valid target version and target platform.
- Set DriverTargetPlatform to Universal, which is recommended here
https://learn.microsoft.com/en-us/windows-hardware/drivers/develop/get-started-developing-windows-drivers
if supported (see inf file updates).
- Set _NT_TARGET_VERSION=0x0A00 to target minimal Win 10/
Server 2016 version, see also
https://techcommunity.microsoft.com/blog/windowsdriverdev/building-drivers-for-previous-os-releases-using-the-latest-windows-driver-kit-wd/4374910
datapath-windows/ovsext/Util.c
-----------------------------------
ExAllocatePoolWithTagPriority is deprecated and fails
in Win10 driver verification.
Replaced ExAllocatePoolWithTagPriority with
ExAllocatePoolPriorityUninitialized.
The function OvsAllocateAlignedMemory seems to be unused,
so a alternative may be to remove entire function.
datapath-windows/ovsext/ovsext.inf
----------------------------------------
The inf file was minimally fixed in this patch for driver
verification.
In second patch - as it is optional - I will add an updated
inf file that supports running from driver store on supporting OS
versions.
Signed-off-by: Frank Wagner <frank.wag...@dbosoft.eu>
---
.ci/windows-build.sh | 3 ++-
datapath-windows/Package/package.VcxProj | 15 ++++++++-------
datapath-windows/automake.mk <http://automake.mk> | 11
+++++++----
datapath-windows/ovsext/Util.c | 8 ++++----
datapath-windows/ovsext/ovsext.inf | 1 +
datapath-windows/ovsext/ovsext.vcxproj | 17 +++++++++--------
6 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/.ci/windows-build.sh b/.ci/windows-build.sh
index e54fbacf4..26701000d 100644
--- a/.ci/windows-build.sh
+++ b/.ci/windows-build.sh
@@ -12,6 +12,7 @@ CONFIGURATION=$1
--with-vstudiotarget="${CONFIGURATION}" || (cat config.log &&
exit 1)
make -j4
-make datapath_windows_analyze
+make datapath_windows_analyze_win10
+make datapath_windows_analyze_win8
make install
make windows_installer
diff --git a/datapath-windows/Package/package.VcxProj
b/datapath-windows/Package/package.VcxProj
index 994c34dc2..f41bc0b14 100644
--- a/datapath-windows/Package/package.VcxProj
+++ b/datapath-windows/Package/package.VcxProj
@@ -68,19 +68,20 @@
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
</PropertyGroup>
<PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'"
Label="Configuration">
- <TargetVersion>
- </TargetVersion>
+ <TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolsetVer Condition="'$(PlatformToolsetVer)' ==
''">10.0</PlatformToolsetVer>
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
- <DriverTargetPlatform>Desktop</DriverTargetPlatform>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <_NT_TARGET_VERSION>0x0A00</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='Win10Analyze|x64'"
Label="Configuration">
- <TargetVersion />
+ <TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolsetVer Condition="'$(PlatformToolsetVer)' ==
''">10.0</PlatformToolsetVer>
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
- <DriverTargetPlatform>Desktop</DriverTargetPlatform>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <_NT_TARGET_VERSION>0x0A00</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8
Debug|x64'" Label="Configuration">
<TargetVersion>Windows8</TargetVersion>
@@ -95,12 +96,12 @@
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
</PropertyGroup>
<PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'"
Label="Configuration">
- <TargetVersion>
- </TargetVersion>
+ <TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolsetVer Condition="'$(PlatformToolsetVer)' ==
''">10.0</PlatformToolsetVer>
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
<DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <_NT_TARGET_VERSION>0x0A00</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup Label="Configuration"
Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
<TargetVersion>WindowsV6.3</TargetVersion>
diff --git a/datapath-windows/automake.mk <http://automake.mk>
b/datapath-windows/automake.mk <http://automake.mk>
index ea320e732..3c7d34b16 100644
--- a/datapath-windows/automake.mk <http://automake.mk>
+++ b/datapath-windows/automake.mk <http://automake.mk>
@@ -90,11 +90,14 @@ EXTRA_DIST += \
datapath-windows/ovsext/precompsrc.c \
datapath-windows/ovsext/resource.h
-datapath_windows_analyze: all
- MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win10Analyze"
+datapath_windows_analyze_win10: all
+ MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win10Analyze"
/property:Version="$(PACKAGE_VERSION)"
+
+datapath_windows_analyze_win8: all
MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win8.1Analyze"
MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win8Analyze"
+
datapath_windows: all
- MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win10Debug"
- MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win10Release"
+ MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win10Debug"
/property:Version="$(PACKAGE_VERSION)"
+ MSBuild.exe //nologo //maxcpucount
datapath-windows/ovsext.sln /target:Build
/property:Configuration="Win10Release"
/property:Version="$(PACKAGE_VERSION)"
diff --git a/datapath-windows/ovsext/Util.c
b/datapath-windows/ovsext/Util.c
index d703b2468..0e70993f0 100644
--- a/datapath-windows/ovsext/Util.c
+++ b/datapath-windows/ovsext/Util.c
@@ -59,9 +59,9 @@ OvsAllocateAlignedMemory(size_t size, UINT16 align)
* XXX: NdisAllocateMemory*() functions don't talk
anything about
* alignment. Hence using ExAllocatePool*();
*/
- return (VOID
*)ExAllocatePoolWithTagPriority(NonPagedPoolNx, size,
- OVS_MEMORY_TAG,
- NormalPoolPriority);
+ return (VOID
*)ExAllocatePoolPriorityUninitialized(NonPagedPoolNx, size,
+ OVS_MEMORY_TAG,
+ NormalPoolPriority);
}
/* Invalid user input. */
@@ -179,4 +179,4 @@ OvsIpv6AddressToString(struct in6_addr
ipv6Addr, char* ip6String)
returnedIpv6Str = RtlIpv6AddressToStringA((&ipv6Addr),
ip6String);
return returnedIpv6Str;
-}
\ No newline at end of file
+}
diff --git a/datapath-windows/ovsext/ovsext.inf
b/datapath-windows/ovsext/ovsext.inf
index e68b94a36..59ae5304b 100644
--- a/datapath-windows/ovsext/ovsext.inf
+++ b/datapath-windows/ovsext/ovsext.inf
@@ -9,6 +9,7 @@ ClassGUID = {4D36E974-E325-11CE-BFC1-08002BE10318}
Provider = %OVS%
CatalogFile = ovsext.cat <http://ovsext.cat>
DriverVer = 10/10/2013,1.0
+PnpLockdown = 1
[Manufacturer]
%OVS%=OVS,NTx86,NTia64,NTamd64
diff --git a/datapath-windows/ovsext/ovsext.vcxproj
b/datapath-windows/ovsext/ovsext.vcxproj
index 8ee56aa00..a3fc5e7b1 100644
--- a/datapath-windows/ovsext/ovsext.vcxproj
+++ b/datapath-windows/ovsext/ovsext.vcxproj
@@ -68,19 +68,20 @@
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
</PropertyGroup>
<PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'"
Label="Configuration">
- <TargetVersion>
- </TargetVersion>
+ <TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>True</UseDebugLibraries>
<PlatformToolsetVer Condition="'$(PlatformToolsetVer)' ==
''">10.0</PlatformToolsetVer>
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
- <DriverTargetPlatform>Desktop</DriverTargetPlatform>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <_NT_TARGET_VERSION>0x0A00</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='Win10Analyze|x64'"
Label="Configuration">
- <TargetVersion />
+ <TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>True</UseDebugLibraries>
<PlatformToolsetVer Condition="'$(PlatformToolsetVer)' ==
''">10.0</PlatformToolsetVer>
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
- <DriverTargetPlatform>Desktop</DriverTargetPlatform>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <_NT_TARGET_VERSION>0x0A00</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup Label="Configuration"
Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
<TargetVersion>Windows8</TargetVersion>
@@ -101,12 +102,12 @@
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
</PropertyGroup>
<PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'"
Label="Configuration">
- <TargetVersion>
- </TargetVersion>
+ <TargetVersion>Windows10</TargetVersion>
<UseDebugLibraries>False</UseDebugLibraries>
<PlatformToolsetVer Condition="'$(PlatformToolsetVer)' ==
''">10.0</PlatformToolsetVer>
<PlatformToolset>WindowsKernelModeDriver$(PlatformToolsetVer)</PlatformToolset>
- <DriverTargetPlatform>Desktop</DriverTargetPlatform>
+ <DriverTargetPlatform>Universal</DriverTargetPlatform>
+ <_NT_TARGET_VERSION>0x0A00</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup Label="Configuration"
Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
<TargetVersion>Windows8</TargetVersion>
--
2.48.1
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev