diff --git a/ViGEmBus.sln b/ViGEmBus.sln
index c5427cf..1359167 100644
--- a/ViGEmBus.sln
+++ b/ViGEmBus.sln
@@ -19,113 +19,169 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.cspr
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug_DLL|ARM64 = Debug_DLL|ARM64
Debug_DLL|x64 = Debug_DLL|x64
Debug_DLL|x86 = Debug_DLL|x86
+ Debug_LIB|ARM64 = Debug_LIB|ARM64
Debug_LIB|x64 = Debug_LIB|x64
Debug_LIB|x86 = Debug_LIB|x86
+ Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ Release_DLL|ARM64 = Release_DLL|ARM64
Release_DLL|x64 = Release_DLL|x64
Release_DLL|x86 = Release_DLL|x86
+ Release_LIB|ARM64 = Release_LIB|ARM64
Release_LIB|x64 = Release_LIB|x64
Release_LIB|x86 = Release_LIB|x86
+ Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|ARM64.ActiveCfg = Debug|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|ARM64.Build.0 = Debug|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|ARM64.Deploy.0 = Debug|ARM64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|x64.ActiveCfg = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|x64.Build.0 = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|x64.Deploy.0 = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|x86.ActiveCfg = Debug|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|x86.Build.0 = Debug|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_DLL|x86.Deploy.0 = Debug|Win32
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|ARM64.ActiveCfg = Debug|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|ARM64.Build.0 = Debug|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|ARM64.Deploy.0 = Debug|ARM64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|x64.ActiveCfg = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|x64.Build.0 = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|x64.Deploy.0 = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|x86.ActiveCfg = Debug|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|x86.Build.0 = Debug|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug_LIB|x86.Deploy.0 = Debug|Win32
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|ARM64.Build.0 = Debug|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|ARM64.Deploy.0 = Debug|ARM64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|x64.ActiveCfg = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|x64.Build.0 = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|x64.Deploy.0 = Debug|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|x86.ActiveCfg = Debug|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|x86.Build.0 = Debug|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Debug|x86.Deploy.0 = Debug|Win32
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|ARM64.ActiveCfg = Release|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|ARM64.Build.0 = Release|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|ARM64.Deploy.0 = Release|ARM64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|x64.ActiveCfg = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|x64.Build.0 = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|x64.Deploy.0 = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|x86.ActiveCfg = Release|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|x86.Build.0 = Release|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_DLL|x86.Deploy.0 = Release|Win32
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|ARM64.ActiveCfg = Release|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|ARM64.Build.0 = Release|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|ARM64.Deploy.0 = Release|ARM64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|x64.ActiveCfg = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|x64.Build.0 = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|x64.Deploy.0 = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|x86.ActiveCfg = Release|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|x86.Build.0 = Release|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release_LIB|x86.Deploy.0 = Release|Win32
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|ARM64.ActiveCfg = Release|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|ARM64.Build.0 = Release|ARM64
+ {040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|ARM64.Deploy.0 = Release|ARM64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|x64.ActiveCfg = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|x64.Build.0 = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|x64.Deploy.0 = Release|x64
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|x86.ActiveCfg = Release|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|x86.Build.0 = Release|Win32
{040101B0-EE5C-4EF1-99EE-9F81C795C001}.Release|x86.Deploy.0 = Release|Win32
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_DLL|ARM64.ActiveCfg = Debug_DLL|ARM64
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_DLL|ARM64.Build.0 = Debug_DLL|ARM64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_DLL|x64.ActiveCfg = Debug_DLL|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_DLL|x64.Build.0 = Debug_DLL|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_DLL|x86.ActiveCfg = Debug_DLL|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_DLL|x86.Build.0 = Debug_DLL|Win32
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_LIB|ARM64.ActiveCfg = Debug_LIB|ARM64
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_LIB|ARM64.Build.0 = Debug_LIB|ARM64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_LIB|x64.ActiveCfg = Debug_LIB|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_LIB|x64.Build.0 = Debug_LIB|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_LIB|x86.ActiveCfg = Debug_LIB|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug_LIB|x86.Build.0 = Debug_LIB|Win32
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug|ARM64.ActiveCfg = Debug_LIB|ARM64
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug|ARM64.Build.0 = Debug_LIB|ARM64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug|x64.ActiveCfg = Debug_DLL|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug|x64.Build.0 = Debug_DLL|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug|x86.ActiveCfg = Debug_LIB|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Debug|x86.Build.0 = Debug_LIB|Win32
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_DLL|ARM64.ActiveCfg = Release_DLL|ARM64
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_DLL|ARM64.Build.0 = Release_DLL|ARM64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_DLL|x64.ActiveCfg = Release_DLL|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_DLL|x64.Build.0 = Release_DLL|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_DLL|x86.ActiveCfg = Release_DLL|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_DLL|x86.Build.0 = Release_DLL|Win32
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_LIB|ARM64.ActiveCfg = Release_LIB|ARM64
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_LIB|ARM64.Build.0 = Release_LIB|ARM64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_LIB|x64.ActiveCfg = Release_LIB|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_LIB|x64.Build.0 = Release_LIB|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_LIB|x86.ActiveCfg = Release_LIB|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release_LIB|x86.Build.0 = Release_LIB|Win32
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|ARM64.ActiveCfg = Release_DLL|ARM64
+ {7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|ARM64.Build.0 = Release_DLL|ARM64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x64.ActiveCfg = Release_LIB|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x64.Build.0 = Release_LIB|x64
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x86.ActiveCfg = Release_DLL|Win32
{7DB06674-1F4F-464B-8E1C-172E9587F9DC}.Release|x86.Build.0 = Release_DLL|Win32
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_DLL|ARM64.ActiveCfg = Debug|x64
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_DLL|ARM64.Build.0 = Debug|x64
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_DLL|x64.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_DLL|x64.Build.0 = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_DLL|x86.ActiveCfg = Debug|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_DLL|x86.Build.0 = Debug|x86
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_LIB|ARM64.ActiveCfg = Debug|x64
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_LIB|ARM64.Build.0 = Debug|x64
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_LIB|x64.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_LIB|x64.Build.0 = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_LIB|x86.ActiveCfg = Debug|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug_LIB|x86.Build.0 = Debug|x86
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug|ARM64.ActiveCfg = Debug|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug|x64.ActiveCfg = Debug|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug|x86.ActiveCfg = Debug|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Debug|x86.Build.0 = Debug|x86
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_DLL|ARM64.ActiveCfg = Debug|x64
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_DLL|ARM64.Build.0 = Debug|x64
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_DLL|x64.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_DLL|x64.Build.0 = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_DLL|x86.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_DLL|x86.Build.0 = Release|x86
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_LIB|ARM64.ActiveCfg = Debug|x64
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_LIB|ARM64.Build.0 = Debug|x64
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_LIB|x64.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_LIB|x64.Build.0 = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_LIB|x86.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release_LIB|x86.Build.0 = Release|x86
+ {C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release|ARM64.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release|x64.ActiveCfg = Release|x64
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release|x64.Build.0 = Release|x64
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release|x86.ActiveCfg = Release|x86
{C722B85E-FC7D-475F-A518-C8E13ECDB201}.Release|x86.Build.0 = Release|x86
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_DLL|ARM64.ActiveCfg = Debug|ARM64
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_DLL|ARM64.Build.0 = Debug|ARM64
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_DLL|x64.ActiveCfg = Debug|Any CPU
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_DLL|x86.ActiveCfg = Debug|Any CPU
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_LIB|ARM64.ActiveCfg = Debug|ARM64
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_LIB|ARM64.Build.0 = Debug|ARM64
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_LIB|x64.ActiveCfg = Debug|Any CPU
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug_LIB|x86.ActiveCfg = Debug|Any CPU
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug|x64.ActiveCfg = Debug|Any CPU
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_DLL|ARM64.ActiveCfg = Release|ARM64
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_DLL|ARM64.Build.0 = Release|ARM64
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_DLL|x64.ActiveCfg = Release|Any CPU
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_DLL|x86.ActiveCfg = Release|Any CPU
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_LIB|ARM64.ActiveCfg = Release|ARM64
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_LIB|ARM64.Build.0 = Release|ARM64
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_LIB|x64.ActiveCfg = Release|Any CPU
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release_LIB|x86.ActiveCfg = Release|Any CPU
+ {C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release|ARM64.ActiveCfg = Release|ARM64
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release|x64.ActiveCfg = Release|Any CPU
{C2BA387E-D491-4FB7-8BEE-99D77E8949E7}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
diff --git a/build/_build.csproj b/build/_build.csproj
index 9202421..81150f0 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -7,6 +7,7 @@
CS0649;CS0169
..
..
+ AnyCPU;ARM64
diff --git a/sdk/src/ViGEmClient.vcxproj b/sdk/src/ViGEmClient.vcxproj
index 8784dbd..1617ed0 100644
--- a/sdk/src/ViGEmClient.vcxproj
+++ b/sdk/src/ViGEmClient.vcxproj
@@ -1,6 +1,10 @@
+
+ Debug_DLL
+ ARM64
+
Debug_DLL
Win32
@@ -9,10 +13,18 @@
Debug_DLL
x64
+
+ Debug_LIB
+ ARM64
+
Debug_LIB
Win32
+
+ Release_DLL
+ ARM64
+
Release_DLL
Win32
@@ -21,6 +33,10 @@
Release_DLL
x64
+
+ Release_LIB
+ ARM64
+
Release_LIB
Win32
@@ -78,12 +94,24 @@
v142
Unicode
+
+ StaticLibrary
+ true
+ v142
+ Unicode
+
DynamicLibrary
true
v142
Unicode
+
+ DynamicLibrary
+ true
+ v142
+ Unicode
+
StaticLibrary
false
@@ -91,6 +119,13 @@
true
Unicode
+
+ StaticLibrary
+ false
+ v142
+ true
+ Unicode
+
DynamicLibrary
false
@@ -98,6 +133,13 @@
true
Unicode
+
+ DynamicLibrary
+ false
+ v142
+ true
+ Unicode
+
@@ -118,15 +160,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
$(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
@@ -148,18 +202,30 @@
$(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
$(SolutionDir)lib\debug\$(PlatformShortName)\
+
+ $(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
+
$(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
$(SolutionDir)bin\debug\$(PlatformShortName)\
+
+ $(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
+
$(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
$(SolutionDir)lib\release\$(PlatformShortName)\
+
+ $(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
+
$(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
$(SolutionDir)bin\release\$(PlatformShortName)\
+
+ $(ProjectDir)../include;$(VC_IncludePath);$(WindowsSDK_IncludePath);
+
@@ -206,6 +272,20 @@
Windows
+
+
+
+
+ Level3
+ Disabled
+ WIN32_LEAN_AND_MEAN;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+
+
+ Windows
+
+
@@ -221,6 +301,21 @@
setupapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+
+
+ Level3
+ Disabled
+ WIN32_LEAN_AND_MEAN;VIGEM_DYNAMIC;VIGEM_EXPORTS;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+
+
+ Windows
+ setupapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
Level3
@@ -279,6 +374,24 @@
true
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32_LEAN_AND_MEAN;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreaded
+
+
+ Windows
+ true
+ true
+
+
Level3
@@ -298,6 +411,25 @@
setupapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32_LEAN_AND_MEAN;VIGEM_DYNAMIC;VIGEM_EXPORTS;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreaded
+
+
+ Windows
+ true
+ true
+ setupapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+
+
diff --git a/stage0.ps1 b/stage0.ps1
new file mode 100644
index 0000000..4263a3a
--- /dev/null
+++ b/stage0.ps1
@@ -0,0 +1,123 @@
+Param(
+ [Parameter(Mandatory=$true)]
+ [string]$BuildVersion,
+ [Parameter(Mandatory=$true)]
+ [string]$Token,
+ [Parameter(Mandatory=$false)]
+ [string]$Path = "./artifacts",
+ [Parameter(Mandatory=$false)]
+ [Switch]$NoSigning
+) #end param
+
+$signTool = "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe"
+$timestampUrl = "http://timestamp.digicert.com"
+$certName = "Nefarius Software Solutions e.U."
+
+function Get-AppVeyorArtifacts
+{
+ [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'Low')]
+ param(
+ #The name of the account you wish to download artifacts from
+ [parameter(Mandatory = $true)]
+ [string]$Account,
+ #The name of the project you wish to download artifacts from
+ [parameter(Mandatory = $true)]
+ [string]$Project,
+ #Where to save the downloaded artifacts. Defaults to current directory.
+ [alias("DownloadDirectory")][string]$Path = '.',
+ [string]$Token,
+ #Filter to a specific branch or project directory. You can specify Branch as either branch name ("master") or build version ("0.1.29")
+ [string]$Branch,
+ #If you have multiple build jobs, specify which job you wish to retrieve the artifacts from
+ [string]$JobName,
+ #Download all files into a single directory, do not preserve any hierarchy that might exist in the artifacts
+ [switch]$Flat,
+ [string]$Proxy,
+ [switch]$ProxyUseDefaultCredentials,
+ #URL of Appveyor API. You normally shouldn't need to change this.
+ $apiUrl = 'https://ci.appveyor.com/api'
+ )
+
+ $headers = @{
+ 'Content-type' = 'application/json'
+ }
+
+ if ($Token) {$headers.'Authorization' = "Bearer $token"}
+
+ # Prepare proxy args to splat to Invoke-RestMethod
+ $proxyArgs = @{}
+ if (-not [string]::IsNullOrEmpty($proxy)) {
+ $proxyArgs.Add('Proxy', $proxy)
+ }
+ if ($proxyUseDefaultCredentials.IsPresent) {
+ $proxyArgs.Add('ProxyUseDefaultCredentials', $proxyUseDefaultCredentials)
+ }
+
+ $errorActionPreference = 'Stop'
+ $projectURI = "$apiUrl/projects/$account/$project"
+ if ($Branch) {$projectURI = $projectURI + "/build/$Branch"}
+
+ $projectObject = Invoke-RestMethod -Method Get -Uri $projectURI `
+ -Headers $headers @proxyArgs
+
+ if (-not $projectObject.build.jobs) {throw "No jobs found for this project or the project and/or account name was incorrectly specified"}
+
+ if (($projectObject.build.jobs.count -gt 1) -and -not $jobName) {
+ throw "Multiple Jobs found for the latest build. Please specify the -JobName paramter to select which job you want the artifacts for"
+ }
+
+ if ($JobName) {
+ $jobid = ($projectObject.build.jobs | Where-Object name -eq "$JobName" | Select-Object -first 1).jobid
+ if (-not $jobId) {throw "Unable to find a job named $JobName within the latest specified build. Did you spell it correctly?"}
+ } else {
+ $jobid = $projectObject.build.jobs[0].jobid
+ }
+
+ $artifacts = Invoke-RestMethod -Method Get -Uri "$apiUrl/buildjobs/$jobId/artifacts" `
+ -Headers $headers @proxyArgs
+ $artifacts `
+ | ? { $psCmdlet.ShouldProcess($_.fileName) } `
+ | % {
+
+ $type = $_.type
+
+ $localArtifactPath = $_.fileName -split '/' | % { [Uri]::UnescapeDataString($_) }
+ if ($flat.IsPresent) {
+ $localArtifactPath = ($localArtifactPath | select -Last 1)
+ } else {
+ $localArtifactPath = $localArtifactPath -join [IO.Path]::DirectorySeparatorChar
+ }
+ $localArtifactPath = Join-Path $path $localArtifactPath
+
+ $artifactUrl = "$apiUrl/buildjobs/$jobId/artifacts/$($_.fileName)"
+ Write-Verbose "Downloading $artifactUrl to $localArtifactPath"
+
+ New-Item -ItemType Directory -Force -Path (Split-Path -Path $localArtifactPath) | Out-Null
+
+ Invoke-RestMethod -Method Get -Uri $artifactUrl -OutFile $localArtifactPath -Headers $headers @proxyArgs
+
+ New-Object PSObject -Property @{
+ 'Source' = $artifactUrl
+ 'Type' = $type
+ 'Target' = $localArtifactPath
+ }
+ }
+}
+
+# Download x64 binaries
+Get-AppVeyorArtifacts -Account "nefarius" -Project "ViGemBus" -Path $Path -Token $Token -Branch $BuildVersion -JobName "Platform: x64"
+
+# Download x86 binaries
+Get-AppVeyorArtifacts -Account "nefarius" -Project "ViGemBus" -Path $Path -Token $Token -Branch $BuildVersion -JobName "Platform: x86"
+
+# List of files to sign
+$files = "`".\artifacts\disk1\*.cab`" "
+
+if ($NoSigning -eq $false) {
+ # sign with only one certificate
+ Invoke-Expression "& `"$signTool`" sign /v /as /n `"$certName`" /tr $timestampUrl /fd sha256 /td sha256 $files"
+}
+
+# Print helper job names for sign portal
+"ViGemBus x86 v$BuildVersion $(Get-Date -Format "dd.MM.yyyy")"
+"ViGemBus x64 v$BuildVersion $(Get-Date -Format "dd.MM.yyyy")"
diff --git a/sys/Dmf.props b/sys/Dmf.props
new file mode 100644
index 0000000..e010b1d
--- /dev/null
+++ b/sys/Dmf.props
@@ -0,0 +1,20 @@
+
+
+
+
+
+ <_PropertySheetDisplayName>Driver Module Framework
+
+ $(SolutionDir)..\
+
+
+
+ $(DmfRootPath)\DMF\Modules.Library;$(DmfRootPath)\DMF\Modules.Template;$(DmfRootPath)\DMF\Modules.Library.Tests;$(DmfRootPath)\DMF\Framework;$(IntDir);%(AdditionalIncludeDirectories)
+
+
+ $(DmfRootPath)\$(Configuration)\$(PlatformName)\lib\DmfK\DmfK.lib;$(DmfRootPath)\$(Configuration)\$(PlatformName)\individual_libs\DmfKModules.Template\DmfKModules.Template.lib;%(AdditionalDependencies);
+ $(DmfRootPath)\$(Configuration)\$(PlatformName)\lib\DmfU\DmfU.lib;$(DmfRootPath)\$(Configuration)\$(PlatformName)\individual_libs\DmfUModules.Template\DmfUModules.Template.lib;%(AdditionalDependencies);
+
+
+
+
diff --git a/sys/ViGEmBus.inf b/sys/ViGEmBus.inf
index 0d90220..7395265 100644
--- a/sys/ViGEmBus.inf
+++ b/sys/ViGEmBus.inf
@@ -56,7 +56,7 @@ WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll = 1
;*****************************************
[Manufacturer]
-%ManufacturerName%=Standard,NTamd64,NTx86
+%ManufacturerName%=Standard,NTamd64,NTx86,NTARM64
[Standard.NTamd64]
%ViGEmBus.DeviceDesc%=ViGEmBus_Device, Nefarius\ViGEmBus\Gen1
@@ -64,6 +64,9 @@ WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll = 1
[Standard.NTx86]
%ViGEmBus.DeviceDesc%=ViGEmBus_Device, Nefarius\ViGEmBus\Gen1
+[Standard.NTARM64]
+%ViGEmBus.DeviceDesc%=ViGEmBus_Device, Nefarius\ViGEmBus\Gen1
+
[ViGEmBus_Device.NT]
CopyFiles=Drivers_Dir
diff --git a/sys/ViGEmBus.vcxproj b/sys/ViGEmBus.vcxproj
index ba47578..2a399db 100644
--- a/sys/ViGEmBus.vcxproj
+++ b/sys/ViGEmBus.vcxproj
@@ -158,16 +158,19 @@
Windows10
true
+ Spectre
Windows10
false
+ Spectre
+
@@ -211,10 +214,10 @@
true
_X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions)
stdcpp17
- ..\..\DMF\DMF\Modules.Library;..\..\DMF\DMF\Framework;$(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
- ..\..\DMF\Debug\Win32\lib\DmfK\DmfK.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
+ $(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
@@ -225,10 +228,10 @@
true
_X86_=1;i386=1;STD_CALL;%(PreprocessorDefinitions)
stdcpp17
- ..\..\DMF\DMF\Modules.Library;..\..\DMF\DMF\Framework;$(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
- ..\..\DMF\Release\Win32\lib\DmfK\DmfK.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
+ $(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
1.0.0.0
@@ -242,10 +245,10 @@
true
_WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions)
stdcpp17
- ..\..\DMF\DMF\Modules.Library;..\..\DMF\DMF\Framework;$(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
- ..\..\DMF\Debug\x64\lib\DmfK\DmfK.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
+ $(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
@@ -256,10 +259,10 @@
true
_WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions)
stdcpp17
- ..\..\DMF\DMF\Modules.Library;..\..\DMF\DMF\Framework;$(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
- ..\..\DMF\Release\x64\lib\DmfK\DmfK.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
+ $(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
1.0.0.0
@@ -271,6 +274,7 @@
true
trace.h
true
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
%(AdditionalDependencies);ntstrsafe.lib
@@ -282,6 +286,7 @@
true
trace.h
true
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
%(AdditionalDependencies);ntstrsafe.lib
@@ -293,9 +298,12 @@
true
trace.h
true
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
+ stdcpp17
+ 5040;4064;4627;4627;4366;%(DisableSpecificWarnings)
- %(AdditionalDependencies);ntstrsafe.lib
+ %(AdditionalDependencies);ntstrsafe.lib;usbdex.lib
@@ -304,9 +312,12 @@
true
trace.h
true
+ $(SolutionDir)include;$(SolutionDir)sdk\include;$(IntDir);%(AdditionalIncludeDirectories)
+ stdcpp17
+ 5040;4064;4627;4627;4366;%(DisableSpecificWarnings)
- %(AdditionalDependencies);ntstrsafe.lib
+ %(AdditionalDependencies);ntstrsafe.lib;usbdex.lib