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 | 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 b/datapath-windows/automake.mk > index ea320e732..3c7d34b16 100644 > --- a/datapath-windows/automake.mk > +++ b/datapath-windows/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 > 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