diff --git a/appveyor.yml b/appveyor.yml
index f6c356d..c81b690 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -18,6 +18,7 @@ install:
- ps: iwr "https://download.microsoft.com/download/c/f/8/cf80b955-d578-4635-825c-2801911f9d79/wdk/wdksetup.exe" -OutFile wdksetup.exe
- cmd: .\wdksetup.exe /features + /q /norestart
- cmd: git submodule -q update --init
+- cmd: git apply --directory="C:\projects\DMF" "%APPVEYOR_BUILD_FOLDER%\patches\dmf-optimizations.diff
- cmd: git clone -q https://github.com/microsoft/DMF.git C:\projects\DMF 2> nul || set ERRORLEVEL=0
- cmd: |
cd "C:\projects\DMF"
diff --git a/patches/dmf-optimizations.diff b/patches/dmf-optimizations.diff
new file mode 100644
index 0000000..a5481be
--- /dev/null
+++ b/patches/dmf-optimizations.diff
@@ -0,0 +1,285 @@
+ Dmf/Solution/DmfK/DmfK.vcxproj | 8 ++++++++
+ Dmf/Solution/DmfKFramework/DmfKFramework.vcxproj | 8 ++++++++
+ .../DmfKModules.Library/DmfKModules.Library.vcxproj | 8 ++++++++
+ .../DmfKModules.Template/DmfKModules.Template.vcxproj | 16 ++++++++++++----
+ Dmf/Solution/DmfU/DmfU.vcxproj | 8 ++++++++
+ Dmf/Solution/DmfUFramework/DmfUFramework.vcxproj | 8 ++++++++
+ .../DmfUModules.Library/DmfUModules.Library.vcxproj | 8 ++++++++
+ .../DmfUModules.Library.vcxproj.filters | 10 +++++-----
+ .../DmfUModules.Template/DmfUModules.Template.vcxproj | 12 ++++++++++--
+ 9 files changed, 75 insertions(+), 11 deletions(-)
+
+diff --git a/Dmf/Solution/DmfK/DmfK.vcxproj b/Dmf/Solution/DmfK/DmfK.vcxproj
+index 738397c..e791a99 100644
+--- a/Dmf/Solution/DmfK/DmfK.vcxproj
++++ b/Dmf/Solution/DmfK/DmfK.vcxproj
+@@ -199,6 +199,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -228,6 +231,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -258,6 +264,8 @@
+ .c.C.cpp.CPP.h.H
+ true
+ /d2guardsignret %(AdditionalOptions)
++ MaxSpeed
++ Speed
+
+
+ %(AdditionalLibraryDirectories)
+diff --git a/Dmf/Solution/DmfKFramework/DmfKFramework.vcxproj b/Dmf/Solution/DmfKFramework/DmfKFramework.vcxproj
+index 13d2475..8b8680b 100644
+--- a/Dmf/Solution/DmfKFramework/DmfKFramework.vcxproj
++++ b/Dmf/Solution/DmfKFramework/DmfKFramework.vcxproj
+@@ -230,6 +230,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -257,6 +260,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -285,6 +291,8 @@
+ .c.C.cpp.CPP.h.H
+ true
+ /d2guardsignret %(AdditionalOptions)
++ MaxSpeed
++ Speed
+
+
+ %(AdditionalLibraryDirectories)
+diff --git a/Dmf/Solution/DmfKModules.Library/DmfKModules.Library.vcxproj b/Dmf/Solution/DmfKModules.Library/DmfKModules.Library.vcxproj
+index 1ba20c5..d5426d7 100644
+--- a/Dmf/Solution/DmfKModules.Library/DmfKModules.Library.vcxproj
++++ b/Dmf/Solution/DmfKModules.Library/DmfKModules.Library.vcxproj
+@@ -323,6 +323,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -352,6 +355,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -382,6 +388,8 @@
+ .c.C.cpp.CPP.h.H
+ true
+ /d2guardsignret %(AdditionalOptions)
++ MaxSpeed
++ Speed
+
+
+ %(AdditionalLibraryDirectories)
+diff --git a/Dmf/Solution/DmfKModules.Template/DmfKModules.Template.vcxproj b/Dmf/Solution/DmfKModules.Template/DmfKModules.Template.vcxproj
+index 0d0ef4c..dab8874 100644
+--- a/Dmf/Solution/DmfKModules.Template/DmfKModules.Template.vcxproj
++++ b/Dmf/Solution/DmfKModules.Template/DmfKModules.Template.vcxproj
+@@ -132,13 +132,13 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
+- /d2guardsignret %(AdditionalOptions)
++ /d2guardsignret %(AdditionalOptions)
+
+
+ %(AdditionalLibraryDirectories)
+ %(AdditionalDependencies);setupapi.lib;cfgmgr32.lib;wpprecorder.lib;
+ true
+- /guard:delayloadsignret %(AdditionalOptions)
++ /guard:delayloadsignret %(AdditionalOptions)
+
+
+ false
+@@ -158,6 +158,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -182,6 +185,9 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
++ MaxSpeed
++ Speed
++ true
+
+
+ %(AdditionalLibraryDirectories)
+@@ -206,13 +212,15 @@
+ OldStyle
+ .c.C.cpp.CPP.h.H
+ true
+- /d2guardsignret %(AdditionalOptions)
++ /d2guardsignret %(AdditionalOptions)
++ MaxSpeed
++ Speed
+
+
+ %(AdditionalLibraryDirectories)
+ %(AdditionalDependencies);setupapi.lib;cfgmgr32.lib;wpprecorder.lib;
+ true
+- /guard:delayloadsignret %(AdditionalOptions)
++ /guard:delayloadsignret %(AdditionalOptions)
+
+
+ false
+diff --git a/Dmf/Solution/DmfU/DmfU.vcxproj b/Dmf/Solution/DmfU/DmfU.vcxproj
+index 9b9dd48..9357ae2 100644
+--- a/Dmf/Solution/DmfU/DmfU.vcxproj
++++ b/Dmf/Solution/DmfU/DmfU.vcxproj
+@@ -83,6 +83,14 @@
+ .c.C.cpp.CPP.h.H
+ %(AdditionalIncludeDirectories);..\..;
+ true
++ MaxSpeed
++ Speed
++ MaxSpeed
++ Speed
++ true
++ MaxSpeed
++ Speed
++ true
+
+
+ /d2guardsignret %(AdditionalOptions)
+diff --git a/Dmf/Solution/DmfUFramework/DmfUFramework.vcxproj b/Dmf/Solution/DmfUFramework/DmfUFramework.vcxproj
+index 7ba02d9..bc700b8 100644
+--- a/Dmf/Solution/DmfUFramework/DmfUFramework.vcxproj
++++ b/Dmf/Solution/DmfUFramework/DmfUFramework.vcxproj
+@@ -125,6 +125,14 @@
+ %(AdditionalIncludeDirectories);..\..\Framework;..\..\Framework\Modules.Core
+ true
+ true
++ MaxSpeed
++ Speed
++ MaxSpeed
++ Speed
++ true
++ MaxSpeed
++ Speed
++ true
+
+
+ /d2guardsignret %(AdditionalOptions)
+diff --git a/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj b/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj
+index 214e8bb..6930f30 100644
+--- a/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj
++++ b/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj
+@@ -141,6 +141,14 @@
+ stdcpp17
+ stdcpp17
+ stdcpp17
++ MaxSpeed
++ Speed
++ MaxSpeed
++ Speed
++ true
++ MaxSpeed
++ Speed
++ true
+
+
+ /d2guardsignret %(AdditionalOptions)
+diff --git a/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj.filters b/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj.filters
+index b0a085b..c6ce5b1 100644
+--- a/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj.filters
++++ b/Dmf/Solution/DmfUModules.Library/DmfUModules.Library.vcxproj.filters
+@@ -389,11 +389,8 @@
+
+ Modules\Targets
+
+-
+-
+-
+- Documentation\Modules\Targets
+-
++
++
+
+
+
+@@ -519,5 +516,8 @@
+
+ Documentation\Modules\Targets
+
++
++
++
+
+
+\ No newline at end of file
+diff --git a/Dmf/Solution/DmfUModules.Template/DmfUModules.Template.vcxproj b/Dmf/Solution/DmfUModules.Template/DmfUModules.Template.vcxproj
+index 7c285cc..ca4455e 100644
+--- a/Dmf/Solution/DmfUModules.Template/DmfUModules.Template.vcxproj
++++ b/Dmf/Solution/DmfUModules.Template/DmfUModules.Template.vcxproj
+@@ -84,9 +84,17 @@
+ true
+ true
+ stdcpp17
++ MaxSpeed
++ Speed
++ MaxSpeed
++ Speed
++ true
++ MaxSpeed
++ Speed
++ true
+
+
+- /d2guardsignret %(AdditionalOptions)
++ /d2guardsignret %(AdditionalOptions)
+
+
+ %(AdditionalDependencies);hid.lib;setupapi.lib;cfgmgr32.lib;
+@@ -94,7 +102,7 @@
+
+
+
+- /guard:delayloadsignret %(AdditionalOptions)
++ /guard:delayloadsignret %(AdditionalOptions)
+
+
+