mirror of
https://github.com/valinet/ExplorerPatcher.git
synced 2024-11-23 23:21:08 +01:00
All: Preliminary ARM64 support
This commit is contained in:
parent
016214a381
commit
992b3a60cd
53
.github/workflows/build.yml
vendored
53
.github/workflows/build.yml
vendored
@ -94,16 +94,45 @@ jobs:
|
|||||||
latest: true
|
latest: true
|
||||||
out-file-path: build/Release
|
out-file-path: build/Release
|
||||||
|
|
||||||
- name: Build funchook
|
# build/Release/ep_taskbar.*.amd64.dll -> build/Release/x64/ep_taskbar.*.dll
|
||||||
|
# build/Release/ep_taskbar.*.arm64.dll -> build/Release/ARM64/ep_taskbar.*.dll
|
||||||
|
- name: Move ep_taskbar
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if ls build/Release/ep_taskbar.*.amd64.dll 1> /dev/null 2>&1; then
|
||||||
|
mkdir -p build/Release/x64
|
||||||
|
for file in build/Release/ep_taskbar.*.amd64.dll; do
|
||||||
|
cp "$file" "build/Release/x64/$(basename "$file" .amd64.dll).dll"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if ls build/Release/ep_taskbar.*.arm64.dll 1> /dev/null 2>&1; then
|
||||||
|
# mkdir -p build/Release/ARM64
|
||||||
|
# for file in build/Release/ep_taskbar.*.arm64.dll; do
|
||||||
|
# cp "$file" "build/Release/ARM64/$(basename "$file" .arm64.dll).dll"
|
||||||
|
# done
|
||||||
|
# fi
|
||||||
|
|
||||||
|
- name: Build funchook amd64
|
||||||
shell: powershell
|
shell: powershell
|
||||||
run: |
|
run: |
|
||||||
cd libs/funchook
|
cd libs/funchook
|
||||||
md build
|
md build
|
||||||
cd build
|
cd build
|
||||||
cmake -G "Visual Studio 17 2022" -A x64 ..
|
cmake -G "Visual Studio 17 2022" -A x64 -DFUNCHOOK_CPU=x86 ..
|
||||||
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
|
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
|
||||||
cmake --build . --config Release
|
cmake --build . --config Release
|
||||||
|
|
||||||
|
# - name: Build funchook arm64
|
||||||
|
# shell: powershell
|
||||||
|
# run: |
|
||||||
|
# cd libs/funchook
|
||||||
|
# md build-arm64
|
||||||
|
# cd build-arm64
|
||||||
|
# cmake -G "Visual Studio 17 2022" -A ARM64 -DFUNCHOOK_CPU=arm64 -DFUNCHOOK_DISASM=capstone -DFUNCHOOK_BUILD_TESTS=OFF ..
|
||||||
|
# (gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
|
||||||
|
# cmake --build . --config Release
|
||||||
|
|
||||||
- name: Build EP IA-32
|
- name: Build EP IA-32
|
||||||
if: github.event.inputs.config == ''
|
if: github.event.inputs.config == ''
|
||||||
working-directory: ${{env.GITHUB_WORKSPACE}}
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
||||||
@ -116,6 +145,12 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=amd64 ${{env.SOLUTION_FILE_PATH}}
|
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=amd64 ${{env.SOLUTION_FILE_PATH}}
|
||||||
|
|
||||||
|
# - name: Build EP arm64
|
||||||
|
# if: github.event.inputs.config == ''
|
||||||
|
# working-directory: ${{env.GITHUB_WORKSPACE}}
|
||||||
|
# run: |
|
||||||
|
# msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=arm64 ${{env.SOLUTION_FILE_PATH}}
|
||||||
|
|
||||||
- name: Build EP custom
|
- name: Build EP custom
|
||||||
if: github.event.inputs.config != ''
|
if: github.event.inputs.config != ''
|
||||||
working-directory: ${{env.GITHUB_WORKSPACE}}
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
||||||
@ -131,13 +166,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate dxgi.dll
|
- name: Generate dxgi.dll
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: build/Release
|
|
||||||
run: |
|
run: |
|
||||||
if [[ -f "ExplorerPatcher.amd64.dll" ]]; then cp ExplorerPatcher.amd64.dll dxgi.dll; fi
|
if [[ -f "build/Release/x64/ExplorerPatcher.amd64.dll" ]]; then cp build/Release/x64/ExplorerPatcher.dll build/Release/x64/dxgi.dll; fi
|
||||||
|
if [[ -f "build/Release/ARM64/ExplorerPatcher.arm64.dll" ]]; then cp build/Release/ARM64/ExplorerPatcher.dll build/Release/ARM64/dxgi.dll; fi
|
||||||
|
|
||||||
- name: Patch setup
|
- name: Patch setup
|
||||||
shell: cmd
|
shell: cmd
|
||||||
working-directory: build/Release
|
working-directory: build/Release/x64
|
||||||
run: |
|
run: |
|
||||||
ep_setup_patch.exe
|
ep_setup_patch.exe
|
||||||
exit /b 0
|
exit /b 0
|
||||||
@ -151,7 +186,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate release name
|
- name: Generate release name
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: build/Release
|
working-directory: build/Release/x64
|
||||||
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
|
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
|
||||||
run: |
|
run: |
|
||||||
echo "data=$(./ep_generate_release_name.exe)" >> $GITHUB_OUTPUT
|
echo "data=$(./ep_generate_release_name.exe)" >> $GITHUB_OUTPUT
|
||||||
@ -159,7 +194,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate release notes
|
- name: Generate release notes
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: build/Release
|
working-directory: build/Release/x64
|
||||||
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
|
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
|
||||||
run: |
|
run: |
|
||||||
echo "data<<EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
|
echo "data<<EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
|
||||||
@ -178,7 +213,7 @@ jobs:
|
|||||||
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
|
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
|
||||||
body: ${{ steps.release_description.outputs.data }}
|
body: ${{ steps.release_description.outputs.data }}
|
||||||
files: |
|
files: |
|
||||||
./build/Release/ep_setup.exe
|
build/Release/x64/ep_setup.exe
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.PAT }}
|
GITHUB_TOKEN: ${{ secrets.PAT }}
|
||||||
|
|
||||||
@ -193,6 +228,6 @@ jobs:
|
|||||||
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
|
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
|
||||||
body: ${{ steps.release_description.outputs.data }}
|
body: ${{ steps.release_description.outputs.data }}
|
||||||
files: |
|
files: |
|
||||||
./build/Release/ep_setup.exe
|
build/Release/x64/ep_setup.exe
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -54,84 +54,124 @@ EndProject
|
|||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|amd64 = Debug|amd64
|
Debug|amd64 = Debug|amd64
|
||||||
|
Debug|arm64 = Debug|arm64
|
||||||
Debug|IA-32 = Debug|IA-32
|
Debug|IA-32 = Debug|IA-32
|
||||||
Release|amd64 = Release|amd64
|
Release|amd64 = Release|amd64
|
||||||
|
Release|arm64 = Release|arm64
|
||||||
Release|IA-32 = Release|IA-32
|
Release|IA-32 = Release|IA-32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|amd64.ActiveCfg = Debug|x64
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|amd64.Build.0 = Debug|x64
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|IA-32.Build.0 = Debug|Win32
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Debug|IA-32.Build.0 = Debug|Win32
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|amd64.ActiveCfg = Release|x64
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|amd64.Build.0 = Release|x64
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|IA-32.ActiveCfg = Release|Win32
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|IA-32.Build.0 = Release|Win32
|
{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}.Release|IA-32.Build.0 = Release|Win32
|
||||||
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|amd64.ActiveCfg = Debug|x64
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|amd64.Build.0 = Debug|x64
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|amd64.ActiveCfg = Release|x64
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|amd64.Build.0 = Release|x64
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|IA-32.ActiveCfg = Release|Win32
|
{C362CFBE-7C6B-4457-8D01-839818D42ECB}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|amd64.ActiveCfg = Debug|x64
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|amd64.Build.0 = Debug|x64
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|amd64.ActiveCfg = Release|x64
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|amd64.Build.0 = Release|x64
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|IA-32.ActiveCfg = Release|Win32
|
{78D0C3CF-25C0-41D4-9359-0E9AB72B9874}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|amd64.ActiveCfg = Debug|x64
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|amd64.Build.0 = Debug|x64
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|amd64.ActiveCfg = Release|x64
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|amd64.Build.0 = Release|x64
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|IA-32.ActiveCfg = Release|Win32
|
{2FD40B09-F224-4E9A-B2FE-A22B50B2DEBF}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|amd64.ActiveCfg = Debug|x64
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|amd64.Build.0 = Debug|x64
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|amd64.ActiveCfg = Release|x64
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|amd64.Build.0 = Release|x64
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|IA-32.ActiveCfg = Release|Win32
|
{0C13E5F3-106B-4836-A7C2-8E5808A6ED78}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|amd64.ActiveCfg = Debug|x64
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|amd64.Build.0 = Debug|x64
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|amd64.ActiveCfg = Release|x64
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|amd64.Build.0 = Release|x64
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|IA-32.ActiveCfg = Release|Win32
|
{1ECCAB38-61B6-4C85-BBB5-2E2232DA3A87}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|amd64.ActiveCfg = Debug|x64
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|amd64.Build.0 = Debug|x64
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|amd64.ActiveCfg = Release|x64
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|amd64.Build.0 = Release|x64
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|IA-32.ActiveCfg = Release|Win32
|
{314A50C1-F0A0-4D0C-89E1-AD8F3951043E}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|amd64.ActiveCfg = Debug|x64
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|amd64.Build.0 = Debug|x64
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|amd64.ActiveCfg = Release|x64
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|amd64.Build.0 = Release|x64
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|IA-32.ActiveCfg = Release|Win32
|
{AF02ABAC-EAEB-471C-9957-73D430B8B4DE}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|amd64.ActiveCfg = Debug|x64
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|amd64.Build.0 = Debug|x64
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|amd64.ActiveCfg = Release|x64
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|amd64.Build.0 = Release|x64
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|IA-32.ActiveCfg = Release|Win32
|
{6BF03EEA-200A-4698-9555-057DD52B0C78}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|amd64.ActiveCfg = Debug|x64
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|amd64.Build.0 = Debug|x64
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|amd64.ActiveCfg = Release|x64
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|amd64.Build.0 = Release|x64
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|IA-32.ActiveCfg = Release|Win32
|
{93FA47CC-7753-4F86-B583-69048F51C5AB}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|amd64.ActiveCfg = Debug|x64
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|amd64.Build.0 = Debug|x64
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|IA-32.ActiveCfg = Debug|Win32
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Debug|IA-32.ActiveCfg = Debug|Win32
|
||||||
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|amd64.ActiveCfg = Release|x64
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|amd64.Build.0 = Release|x64
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|IA-32.ActiveCfg = Release|Win32
|
{A66C5F27-DBF8-45A4-BDF3-BA54D8D82D0F}.Release|IA-32.ActiveCfg = Release|Win32
|
||||||
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|amd64.ActiveCfg = Debug|x64
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|amd64.ActiveCfg = Debug|x64
|
||||||
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|amd64.Build.0 = Debug|x64
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|amd64.Build.0 = Debug|x64
|
||||||
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||||
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|arm64.Build.0 = Debug|ARM64
|
||||||
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|IA-32.ActiveCfg = Debug|x64
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Debug|IA-32.ActiveCfg = Debug|x64
|
||||||
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|amd64.ActiveCfg = Release|x64
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|amd64.ActiveCfg = Release|x64
|
||||||
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|amd64.Build.0 = Release|x64
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|amd64.Build.0 = Release|x64
|
||||||
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|arm64.ActiveCfg = Release|ARM64
|
||||||
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|arm64.Build.0 = Release|ARM64
|
||||||
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|IA-32.ActiveCfg = Release|x64
|
{2351A0DF-782C-4D74-85B7-0847D245D6B4}.Release|IA-32.ActiveCfg = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
@ -5,18 +5,26 @@
|
|||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
<Platform>Win32</Platform>
|
<Platform>Win32</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>Win32</Platform>
|
<Platform>Win32</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Release|x64">
|
<ProjectConfiguration Include="Release|x64">
|
||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<VCProjectVersion>16.0</VCProjectVersion>
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
@ -26,13 +34,20 @@
|
|||||||
<ProjectName>ExplorerPatcher</ProjectName>
|
<ProjectName>ExplorerPatcher</ProjectName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
@ -45,7 +60,13 @@
|
|||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
@ -57,157 +78,111 @@
|
|||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="Shared">
|
<ImportGroup Label="Shared">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>ExplorerPatcher.amd64</TargetName>
|
<TargetName>ExplorerPatcher.IA-32</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>ExplorerPatcher.IA-32</TargetName>
|
<TargetName>ExplorerPatcher.IA-32</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>ExplorerPatcher.amd64</TargetName>
|
<TargetName>ExplorerPatcher.amd64</TargetName>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
<TargetName>ExplorerPatcher.amd64</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<TargetName>ExplorerPatcher.IA-32</TargetName>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<TargetName>ExplorerPatcher.arm64</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
<TargetName>ExplorerPatcher.arm64</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;WINRT_NO_SOURCE_LOCATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)libs\funchook\include;$(SolutionDir)libs\libvalinet;$(SolutionDir)libs\funchook\distorm\include;$(SolutionDir)libs\Detours\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\funchook\include;$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
||||||
<CallingConvention>Cdecl</CallingConvention>
|
|
||||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||||
<UseFullPaths>false</UseFullPaths>
|
<UseFullPaths>false</UseFullPaths>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;$(SolutionDir)libs\Detours\lib.X64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<DelayLoadDLLs>Winmm.dll</DelayLoadDLLs>
|
<DelayLoadDLLs>Winmm.dll</DelayLoadDLLs>
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<ForcedIncludeFiles>$(SolutionDir)debug.h</ForcedIncludeFiles>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<PreprocessorDefinitions>NDEBUG;WINRT_NO_SOURCE_LOCATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;WINRT_NO_SOURCE_LOCATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)libs\funchook\include;$(SolutionDir)libs\libvalinet;$(SolutionDir)libs\funchook\distorm\include;$(SolutionDir)libs\Detours\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<CallingConvention>StdCall</CallingConvention>
|
|
||||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;$(SolutionDir)libs\Detours\lib.X64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<DelayLoadDLLs>Winmm.dll</DelayLoadDLLs>
|
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)libs\funchook\include;$(SolutionDir)libs\libvalinet;$(SolutionDir)libs\funchook\distorm\include;$(SolutionDir)libs\Detours\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
|
||||||
<CallingConvention>Cdecl</CallingConvention>
|
|
||||||
<ForcedIncludeFiles>$(SolutionDir)debug.h</ForcedIncludeFiles>
|
|
||||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;$(SolutionDir)libs\Detours\lib.X64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<DelayLoadDLLs>Winmm.dll</DelayLoadDLLs>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<ConformanceMode>true</ConformanceMode>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)libs\funchook\include;$(SolutionDir)libs\libvalinet;$(SolutionDir)libs\funchook\distorm\include;$(SolutionDir)libs\Detours\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
|
||||||
<CallingConvention>StdCall</CallingConvention>
|
<CallingConvention>StdCall</CallingConvention>
|
||||||
<ForcedIncludeFiles>$(SolutionDir)debug.h</ForcedIncludeFiles>
|
</ClCompile>
|
||||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<CallingConvention>Cdecl</CallingConvention>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
</Link>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;$(SolutionDir)libs\Detours\lib.X64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
</ItemDefinitionGroup>
|
||||||
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
|
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
|
||||||
<DelayLoadDLLs>Winmm.dll</DelayLoadDLLs>
|
<ClCompile>
|
||||||
|
<CallingConvention>Cdecl</CallingConvention>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build-arm64\Release\;$(SolutionDir)libs\funchook\build-arm64\_deps\capstone-build\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
<PreBuildEvent>
|
|
||||||
<Command>
|
|
||||||
</Command>
|
|
||||||
</PreBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_error.c">
|
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_error.c">
|
||||||
@ -231,10 +206,8 @@
|
|||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_window.c">
|
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_window.c">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowHelpers.c">
|
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowHelpers.c">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
@ -295,17 +268,11 @@
|
|||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="TaskbarCenter.c">
|
<ClCompile Include="TaskbarCenter.c">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="updates.c">
|
<ClCompile Include="updates.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="utility.c">
|
<ClCompile Include="utility.c">
|
||||||
|
@ -1177,14 +1177,30 @@ HRESULT PatchUnifiedTilePinUnpinProvider(HMODULE hModule)
|
|||||||
MODULEINFO mi;
|
MODULEINFO mi;
|
||||||
RETURN_IF_WIN32_BOOL_FALSE(GetModuleInformation(GetCurrentProcess(), hModule, &mi, sizeof(mi)));
|
RETURN_IF_WIN32_BOOL_FALSE(GetModuleInformation(GetCurrentProcess(), hModule, &mi, sizeof(mi)));
|
||||||
|
|
||||||
|
#if defined(_M_X64)
|
||||||
// 40 55 53 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ?? 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 45 FF 49 8B ?? 4D 8B ?? 48 8B ?? 4C 8B ?? 4C 89 4D
|
// 40 55 53 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ?? 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 45 FF 49 8B ?? 4D 8B ?? 48 8B ?? 4C 8B ?? 4C 89 4D
|
||||||
// Ref: WindowsInternal::Shell::UnifiedTile::Private::UnifiedTilePinUnpinVerbProvider::GetVerbs()
|
|
||||||
PBYTE match = (PBYTE)FindPattern(
|
PBYTE match = (PBYTE)FindPattern(
|
||||||
hModule,
|
hModule,
|
||||||
mi.SizeOfImage,
|
mi.SizeOfImage,
|
||||||
"\x40\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x00\x48\x81\xEC\x00\x00\x00\x00\x48\x8B\x05\x00\x00\x00\x00\x48\x33\xC4\x48\x89\x45\xFF\x49\x8B\x00\x4D\x8B\x00\x48\x8B\x00\x4C\x8B\x00\x4C\x89\x4D",
|
"\x40\x55\x53\x56\x57\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C\x24\x00\x48\x81\xEC\x00\x00\x00\x00\x48\x8B\x05\x00\x00\x00\x00\x48\x33\xC4\x48\x89\x45\xFF\x49\x8B\x00\x4D\x8B\x00\x48\x8B\x00\x4C\x8B\x00\x4C\x89\x4D",
|
||||||
"xxxxxxxxxxxxxxxxx?xxx????xxx????xxxxxxxxx?xx?xx?xx?xxx"
|
"xxxxxxxxxxxxxxxxx?xxx????xxx????xxxxxxxxx?xx?xx?xx?xxx"
|
||||||
);
|
);
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// E4 06 40 F9 E3 03 15 AA E2 0E 40 F9 E1 03 19 AA E0 03 16 AA ?? ?? ?? ?? E3 03 00 2A
|
||||||
|
// ^^^^^^^^^^^
|
||||||
|
// Ref: WindowsInternal::Shell::UnifiedTile::Private::UnifiedTilePinUnpinVerbProvider::GetVerbs()
|
||||||
|
PBYTE match = (PBYTE)FindPattern(
|
||||||
|
hModule,
|
||||||
|
mi.SizeOfImage,
|
||||||
|
"\xE4\x06\x40\xF9\xE3\x03\x15\xAA\xE2\x0E\x40\xF9\xE1\x03\x19\xAA\xE0\x03\x16\xAA\x00\x00\x00\x00\xE3\x03\x00\x2A",
|
||||||
|
"xxxxxxxxxxxxxxxxxxxx????xxxx"
|
||||||
|
);
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
|
match += 20;
|
||||||
|
match = (PBYTE)ARM64_FollowBL((DWORD*)match);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int rv = -1;
|
int rv = -1;
|
||||||
if (match)
|
if (match)
|
||||||
|
@ -1975,6 +1975,8 @@ void ForceEnableXamlSounds(HMODULE hWindowsUIXaml)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Patch DirectUI::ElementSoundPlayerService::ShouldPlaySound() to disregard XboxUtility::IsOnXbox() check
|
// Patch DirectUI::ElementSoundPlayerService::ShouldPlaySound() to disregard XboxUtility::IsOnXbox() check
|
||||||
|
|
||||||
|
#if defined(_M_X64)
|
||||||
// 74 ?? 39 59 ?? 75 ?? E8 ?? ?? ?? ?? 84 C0 75
|
// 74 ?? 39 59 ?? 75 ?? E8 ?? ?? ?? ?? 84 C0 75
|
||||||
// ^^ change jnz to jmp
|
// ^^ change jnz to jmp
|
||||||
PBYTE match = FindPattern(
|
PBYTE match = FindPattern(
|
||||||
@ -1993,6 +1995,35 @@ void ForceEnableXamlSounds(HMODULE hWindowsUIXaml)
|
|||||||
VirtualProtect(jnz, 1, flOldProtect, &flOldProtect);
|
VirtualProtect(jnz, 1, flOldProtect, &flOldProtect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// 1F 09 00 71 ?? ?? ?? 54 ?? 00 00 35 ?? ?? ?? ?? 08 1C 00 53 ?? ?? ?? ??
|
||||||
|
// ^^^^^^^^^^^ CBNZ -> B, CBZ -> NOP
|
||||||
|
PBYTE match = FindPattern(
|
||||||
|
mi.lpBaseOfDll,
|
||||||
|
mi.SizeOfImage,
|
||||||
|
"\x1F\x09\x00\x71\x00\x00\x00\x54\x00\x00\x00\x35\x00\x00\x00\x00\x08\x1C\x00\x53",
|
||||||
|
"xxxx???x?xxx????xxxx"
|
||||||
|
);
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
|
match += 20;
|
||||||
|
DWORD currentInsn = *(DWORD*)match;
|
||||||
|
DWORD newInsn = ARM64_CBNZWToB(currentInsn);
|
||||||
|
if (!newInsn && ARM64_IsCBZW(currentInsn))
|
||||||
|
{
|
||||||
|
newInsn = 0xD503201F; // NOP
|
||||||
|
}
|
||||||
|
if (newInsn)
|
||||||
|
{
|
||||||
|
DWORD flOldProtect = 0;
|
||||||
|
if (VirtualProtect(match, 4, PAGE_EXECUTE_READWRITE, &flOldProtect))
|
||||||
|
{
|
||||||
|
*(DWORD*)match = newInsn;
|
||||||
|
VirtualProtect(match, 4, flOldProtect, &flOldProtect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL IsXamlSoundsEnabled()
|
BOOL IsXamlSoundsEnabled()
|
||||||
@ -10738,6 +10769,19 @@ inline BOOL FollowJnz(PBYTE pJnz, PBYTE* pTarget, DWORD* pJnzSize)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT_PTR FileOffsetToRVA(PBYTE pBase, UINT_PTR offset)
|
||||||
|
{
|
||||||
|
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)pBase;
|
||||||
|
PIMAGE_NT_HEADERS pNtHeaders = (PIMAGE_NT_HEADERS)(pBase + pDosHeader->e_lfanew);
|
||||||
|
PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pNtHeaders);
|
||||||
|
for (int i = 0; i < pNtHeaders->FileHeader.NumberOfSections; i++, pSection++)
|
||||||
|
{
|
||||||
|
if (offset >= pSection->PointerToRawData && offset < pSection->PointerToRawData + pSection->SizeOfRawData)
|
||||||
|
return offset - pSection->PointerToRawData + pSection->VirtualAddress;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void TryToFindExplorerOffsets(HANDLE hExplorer, MODULEINFO* pmiExplorer, DWORD* pOffsets)
|
void TryToFindExplorerOffsets(HANDLE hExplorer, MODULEINFO* pmiExplorer, DWORD* pOffsets)
|
||||||
{
|
{
|
||||||
if (!pOffsets[0] || pOffsets[0] == 0xFFFFFFFF)
|
if (!pOffsets[0] || pOffsets[0] == 0xFFFFFFFF)
|
||||||
@ -11032,6 +11076,7 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
|
|||||||
}
|
}
|
||||||
if (!pOffsets[7] || pOffsets[7] == 0xFFFFFFFF)
|
if (!pOffsets[7] || pOffsets[7] == 0xFFFFFFFF)
|
||||||
{
|
{
|
||||||
|
#if defined(_M_X64)
|
||||||
// Ref: CMultitaskingViewManager::_CreateMTVHost()
|
// Ref: CMultitaskingViewManager::_CreateMTVHost()
|
||||||
// Inlined GetMTVHostKind()
|
// Inlined GetMTVHostKind()
|
||||||
// 4C 89 74 24 ?? ?? 8B ?? ?? 8B ?? 8B D7 48 8B CE E8 ?? ?? ?? ?? 8B
|
// 4C 89 74 24 ?? ?? 8B ?? ?? 8B ?? 8B D7 48 8B CE E8 ?? ?? ?? ?? 8B
|
||||||
@ -11071,9 +11116,23 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// F3 53 BE A9 F5 5B 01 A9 FD 7B ?? A9 FD 03 00 91 30 00 80 92 F5 03 04 AA B0 ?? 00 F9 F3 03 00 AA BF 02 00 F9 68 2E 40 F9 F6 03 03 AA B3 23 02 A9 ?? ?? 00 B5
|
||||||
|
PBYTE match = FindPattern(
|
||||||
|
pFile, dwSize,
|
||||||
|
"\xF3\x53\xBE\xA9\xF5\x5B\x01\xA9\xFD\x7B\x00\xA9\xFD\x03\x00\x91\x30\x00\x80\x92\xF5\x03\x04\xAA\xB0\x00\x00\xF9\xF3\x03\x00\xAA\xBF\x02\x00\xF9\x68\x2E\x40\xF9\xF6\x03\x03\xAA\xB3\x23\x02\xA9\x00\x00\x00\xB5",
|
||||||
|
"xxxxxxxxxx?xxxxxxxxxxxxxx?xxxxxxxxxxxxxxxxxxxxxx??xx"
|
||||||
|
);
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
|
pOffsets[7] = FileOffsetToRVA(pFile, match - 4 - pFile);
|
||||||
|
printf("CMultitaskingViewManager::_CreateXamlMTVHost() = %lX\n", pOffsets[7]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (!pOffsets[8] || pOffsets[8] == 0xFFFFFFFF)
|
if (!pOffsets[8] || pOffsets[8] == 0xFFFFFFFF)
|
||||||
{
|
{
|
||||||
|
#if defined(_M_X64)
|
||||||
// Ref: CMultitaskingViewManager::_CreateMTVHost()
|
// Ref: CMultitaskingViewManager::_CreateMTVHost()
|
||||||
// Inlined GetMTVHostKind()
|
// Inlined GetMTVHostKind()
|
||||||
// 4C 89 74 24 ?? ?? 8B ?? ?? 8B ?? 8B D7 48 8B CE E8 ?? ?? ?? ?? 90
|
// 4C 89 74 24 ?? ?? 8B ?? ?? 8B ?? 8B D7 48 8B CE E8 ?? ?? ?? ?? 90
|
||||||
@ -11109,6 +11168,19 @@ void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// F3 53 BC A9 F5 5B 01 A9 F7 13 00 F9 F9 17 00 F9 FB 1B 00 F9 FD 7B BC A9 FD 03 00 91 FF ?? 00 D1 30 00 80 92 FB 03 04 AA
|
||||||
|
PBYTE match = FindPattern(
|
||||||
|
pFile, dwSize,
|
||||||
|
"\xF3\x53\xBC\xA9\xF5\x5B\x01\xA9\xF7\x13\x00\xF9\xF9\x17\x00\xF9\xFB\x1B\x00\xF9\xFD\x7B\xBC\xA9\xFD\x03\x00\x91\xFF\x00\x00\xD1\x30\x00\x80\x92\xFB\x03\x04\xAA",
|
||||||
|
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xxxxxxxxxx"
|
||||||
|
);
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
|
pOffsets[8] = FileOffsetToRVA(pFile, match - 4 - pFile);
|
||||||
|
printf("CMultitaskingViewManager::_CreateDCompMTVHost() = %lX\n", pOffsets[8]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11338,6 +11410,7 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
g_SMAnimationPatchOffsets.startExperienceManager_SingleViewShellExperienceEventHandler = 0x60;
|
g_SMAnimationPatchOffsets.startExperienceManager_SingleViewShellExperienceEventHandler = 0x60;
|
||||||
|
|
||||||
// ### CStartExperienceManager::`vftable'{for `SingleViewShellExperienceEventHandler'}
|
// ### CStartExperienceManager::`vftable'{for `SingleViewShellExperienceEventHandler'}
|
||||||
|
#if defined(_M_X64)
|
||||||
// ```
|
// ```
|
||||||
// 48 89 46 48 48 8D 05 ?? ?? ?? ?? 48 89 46 60 48 8D 4E 68 E8
|
// 48 89 46 48 48 8D 05 ?? ?? ?? ?? 48 89 46 60 48 8D 4E 68 E8
|
||||||
// ^^^^^^^^^^^
|
// ^^^^^^^^^^^
|
||||||
@ -11353,48 +11426,132 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
{
|
{
|
||||||
matchVtable += 4;
|
matchVtable += 4;
|
||||||
matchVtable += 7 + *(int*)(matchVtable + 3);
|
matchVtable += 7 + *(int*)(matchVtable + 3);
|
||||||
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// ```
|
||||||
|
// 69 22 04 A9 ?? ?? 00 ?? 08 81 ?? 91 60 A2 01 91 68 32 00 F9
|
||||||
|
// ^^^^^^^^^^^+^^^^^^^^^^^
|
||||||
|
PBYTE matchVtable = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\x69\x22\x04\xA9\x00\x00\x00\x00\x08\x81\x00\x91\x60\xA2\x01\x91\x68\x32\x00\xF9",
|
||||||
|
"xxxx??x?xx?xxxxxxxxx"
|
||||||
|
);
|
||||||
|
if (matchVtable)
|
||||||
|
{
|
||||||
|
matchVtable += 4;
|
||||||
|
matchVtable = ARM64_DecodeADRL((DWORD*)matchVtable, (DWORD*)(matchVtable + 4));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (matchVtable)
|
||||||
|
{
|
||||||
printf("[SMA] matchVtable = %llX\n", matchVtable - (PBYTE)mi->lpBaseOfDll);
|
printf("[SMA] matchVtable = %llX\n", matchVtable - (PBYTE)mi->lpBaseOfDll);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### Offset of SingleViewShellExperience instance and its event handler
|
// ### Offset of SingleViewShellExperience instance and its event handler
|
||||||
|
#if defined(_M_X64)
|
||||||
// ```
|
// ```
|
||||||
// 48 8D 8E ?? ?? ?? ?? 44 8D 45 ?? 48 8D 56 60 E8
|
// 48 8D 8E ?? ?? ?? ?? 44 8D 45 41 48 8D 56 60 E8
|
||||||
// ^^^^^^^^^^^ SVSE ^^ SVSEEH (hardcoded to 0x60, included in pattern for sanity check)
|
// ^^^^^^^^^^^ SVSE ^^ SVSEEH (hardcoded to 0x60, included in pattern for sanity check)
|
||||||
// ```
|
// ```
|
||||||
// Ref: CStartExperienceManager::CStartExperienceManager()
|
// Ref: CStartExperienceManager::CStartExperienceManager()
|
||||||
PBYTE matchSingleViewShellExperienceFields = FindPattern(
|
PBYTE matchSingleViewShellExperienceFields = FindPattern(
|
||||||
mi->lpBaseOfDll,
|
mi->lpBaseOfDll,
|
||||||
mi->SizeOfImage,
|
mi->SizeOfImage,
|
||||||
"\x48\x8D\x8E\x00\x00\x00\x00\x44\x8D\x45\x00\x48\x8D\x56\x60\xE8",
|
"\x48\x8D\x8E\x00\x00\x00\x00\x44\x8D\x45\x41\x48\x8D\x56\x60\xE8",
|
||||||
"xxx????xxx?xxxxx"
|
"xxx????xxxxxxxxx"
|
||||||
);
|
);
|
||||||
if (matchSingleViewShellExperienceFields)
|
if (matchSingleViewShellExperienceFields)
|
||||||
{
|
{
|
||||||
g_SMAnimationPatchOffsets.startExperienceManager_singleViewShellExperience = *(int*)(matchSingleViewShellExperienceFields + 3);
|
g_SMAnimationPatchOffsets.startExperienceManager_singleViewShellExperience = *(int*)(matchSingleViewShellExperienceFields + 3);
|
||||||
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// ```
|
||||||
|
// 22 08 80 52 61 82 01 91 60 ?? ?? 91 ?? ?? ?? ?? 1F 20 03 D5
|
||||||
|
// ^^^SVSEEH^^ ^^^^^^^^^^^ SVSE
|
||||||
|
// ```
|
||||||
|
// Ref: CStartExperienceManager::CStartExperienceManager()
|
||||||
|
PBYTE matchSingleViewShellExperienceFields = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\x22\x08\x80\x52\x61\x82\x01\x91\x60\x00\x00\x91\x00\x00\x00\x00\x1F\x20\x03\xD5",
|
||||||
|
"xxxxxxxxx??x????xxxx"
|
||||||
|
);
|
||||||
|
if (matchSingleViewShellExperienceFields)
|
||||||
|
{
|
||||||
|
g_SMAnimationPatchOffsets.startExperienceManager_singleViewShellExperience = (int)ARM64_DecodeADD(*(DWORD*)(matchSingleViewShellExperienceFields + 8));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (matchSingleViewShellExperienceFields)
|
||||||
|
{
|
||||||
printf("[SMA] matchSingleViewShellExperienceFields = %llX\n", matchSingleViewShellExperienceFields - (PBYTE)mi->lpBaseOfDll);
|
printf("[SMA] matchSingleViewShellExperienceFields = %llX\n", matchSingleViewShellExperienceFields - (PBYTE)mi->lpBaseOfDll);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### Offsets of Animation Helpers
|
// ### Offsets of Animation Helpers
|
||||||
|
PBYTE matchAnimationHelperFields = NULL;
|
||||||
|
#if defined(_M_X64)
|
||||||
// ```
|
// ```
|
||||||
// 40 88 AE ?? ?? ?? ?? C7 86 ?? ?? ?? ?? 38 00 00 00
|
// 40 88 AE ?? ?? ?? ?? C7 86 ?? ?? ?? ?? 38 00 00 00
|
||||||
// ^^^^^^^^^^^ AH1
|
// ^^^^^^^^^^^ AH1
|
||||||
// ```
|
// ```
|
||||||
// Ref: CStartExperienceManager::CStartExperienceManager()
|
// Ref: CStartExperienceManager::CStartExperienceManager()
|
||||||
// AH2 is located right after AH1. AH is 32 bytes
|
// AH2 is located right after AH1. AH is 32 bytes
|
||||||
PBYTE matchAnimationHelperFields = FindPattern(
|
if (matchSingleViewShellExperienceFields)
|
||||||
mi->lpBaseOfDll,
|
{
|
||||||
mi->SizeOfImage,
|
matchAnimationHelperFields = FindPattern(
|
||||||
|
matchSingleViewShellExperienceFields + 16,
|
||||||
|
128,
|
||||||
"\x40\x88\xAE\x00\x00\x00\x00\xC7\x86\x00\x00\x00\x00\x38\x00\x00\x00",
|
"\x40\x88\xAE\x00\x00\x00\x00\xC7\x86\x00\x00\x00\x00\x38\x00\x00\x00",
|
||||||
"xxx????xx????xxxx"
|
"xxx????xx????xxxx"
|
||||||
);
|
);
|
||||||
|
}
|
||||||
if (matchAnimationHelperFields)
|
if (matchAnimationHelperFields)
|
||||||
{
|
{
|
||||||
g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation = *(int*)(matchAnimationHelperFields + 3);
|
g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation = *(int*)(matchAnimationHelperFields + 3);
|
||||||
g_SMAnimationPatchOffsets.startExperienceManager_closingAnimation = g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation + 32;
|
g_SMAnimationPatchOffsets.startExperienceManager_closingAnimation = g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation + 32;
|
||||||
printf("[SMA] matchAnimationHelperFields = %llX\n", matchAnimationHelperFields - (PBYTE)mi->lpBaseOfDll);
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// ```
|
||||||
|
// 08 07 80 52 7F ?? ?? 39 68 ?? ?? B9
|
||||||
|
// ^^^^^^^^^^^ AH1
|
||||||
|
// ```
|
||||||
|
// Ref: CStartExperienceManager::CStartExperienceManager()
|
||||||
|
// AH2 is located right after AH1. AH is 32 bytes
|
||||||
|
if (matchSingleViewShellExperienceFields)
|
||||||
|
{
|
||||||
|
matchAnimationHelperFields = FindPattern(
|
||||||
|
matchSingleViewShellExperienceFields + 20,
|
||||||
|
128,
|
||||||
|
"\x08\x07\x80\x52\x7F\x00\x00\x39\x68\x00\x00\xB9",
|
||||||
|
"xxxxx??xx??x"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (matchAnimationHelperFields)
|
||||||
|
{
|
||||||
|
int openingAnimation = (int)ARM64_DecodeSTRBIMM(*(DWORD*)(matchAnimationHelperFields + 4));
|
||||||
|
if (openingAnimation != -1)
|
||||||
|
{
|
||||||
|
g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation = openingAnimation;
|
||||||
|
g_SMAnimationPatchOffsets.startExperienceManager_closingAnimation = g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation + 32;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
matchAnimationHelperFields = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (matchAnimationHelperFields)
|
||||||
|
{
|
||||||
|
printf(
|
||||||
|
"[SMA] matchAnimationHelperFields = %llX, +0x%X, +0x%X\n",
|
||||||
|
matchAnimationHelperFields - (PBYTE)mi->lpBaseOfDll,
|
||||||
|
g_SMAnimationPatchOffsets.startExperienceManager_openingAnimation,
|
||||||
|
g_SMAnimationPatchOffsets.startExperienceManager_closingAnimation
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### Offset of bTransitioningToCortana
|
// ### Offset of bTransitioningToCortana
|
||||||
|
#if defined(_M_X64)
|
||||||
// ```
|
// ```
|
||||||
// 80 B9 ?? ?? ?? ?? 00 75 ?? 48 83 C1 D8
|
// 80 B9 ?? ?? ?? ?? 00 75 ?? 48 83 C1 D8
|
||||||
// ^^^^^^^^^^^ bTransitioningToCortana
|
// ^^^^^^^^^^^ bTransitioningToCortana
|
||||||
@ -11409,10 +11566,39 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
if (matchTransitioningToCortanaField)
|
if (matchTransitioningToCortanaField)
|
||||||
{
|
{
|
||||||
g_SMAnimationPatchOffsets.startExperienceManager_bTransitioningToCortana = g_SMAnimationPatchOffsets.startExperienceManager_IStartExperienceManager + *(int*)(matchTransitioningToCortanaField + 2);
|
g_SMAnimationPatchOffsets.startExperienceManager_bTransitioningToCortana = g_SMAnimationPatchOffsets.startExperienceManager_IStartExperienceManager + *(int*)(matchTransitioningToCortanaField + 2);
|
||||||
printf("[SMA] matchTransitioningToCortanaField = %llX\n", matchTransitioningToCortanaField - (PBYTE)mi->lpBaseOfDll);
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// ```
|
||||||
|
// ?? ?? ?? 39 E8 00 00 35 ?? ?? ?? ?? 01 ?? ?? 91 22 00 80 52
|
||||||
|
// ^^^^^^^^^^^ bTransitioningToCortana
|
||||||
|
// ```
|
||||||
|
// Ref: CStartExperienceManager::DimStart()
|
||||||
|
PBYTE matchTransitioningToCortanaField = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\x39\xE8\x00\x00\x35\x00\x00\x00\x00\x01\x00\x00\x91\x22\x00\x80\x52",
|
||||||
|
"xxxxx????x??xxxxx"
|
||||||
|
);
|
||||||
|
if (matchTransitioningToCortanaField)
|
||||||
|
{
|
||||||
|
int off = (int)ARM64_DecodeLDRBIMM(*(DWORD*)(matchTransitioningToCortanaField - 3));
|
||||||
|
if (off != -1)
|
||||||
|
{
|
||||||
|
g_SMAnimationPatchOffsets.startExperienceManager_bTransitioningToCortana = g_SMAnimationPatchOffsets.startExperienceManager_IStartExperienceManager + off;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
matchTransitioningToCortanaField = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (matchTransitioningToCortanaField)
|
||||||
|
{
|
||||||
|
printf("[SMA] matchTransitioningToCortanaField = %llX, +0x%X\n", matchTransitioningToCortanaField - (PBYTE)mi->lpBaseOfDll, g_SMAnimationPatchOffsets.startExperienceManager_bTransitioningToCortana);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### Offset of CStartExperienceManager::GetMonitorInformation()
|
// ### Offset of CStartExperienceManager::GetMonitorInformation()
|
||||||
|
#if defined(_M_X64)
|
||||||
// ```
|
// ```
|
||||||
// 48 8B ?? E8 ?? ?? ?? ?? 8B ?? 85 C0 0F 88 ?? ?? ?? ?? C6 44 24 ?? 01
|
// 48 8B ?? E8 ?? ?? ?? ?? 8B ?? 85 C0 0F 88 ?? ?? ?? ?? C6 44 24 ?? 01
|
||||||
// ^^^^^^^^^^^
|
// ^^^^^^^^^^^
|
||||||
@ -11428,11 +11614,35 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
{
|
{
|
||||||
matchGetMonitorInformation += 3;
|
matchGetMonitorInformation += 3;
|
||||||
matchGetMonitorInformation += 5 + *(int*)(matchGetMonitorInformation + 1);
|
matchGetMonitorInformation += 5 + *(int*)(matchGetMonitorInformation + 1);
|
||||||
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// * Pattern for 261xx:
|
||||||
|
// ```
|
||||||
|
// E2 82 00 91 E1 03 13 AA E0 03 14 AA ?? ?? ?? ??
|
||||||
|
// ^^^^^^^^^^^
|
||||||
|
// ```
|
||||||
|
// * Different patterns needed for 226xx and 262xx+
|
||||||
|
// Ref: CStartExperienceManager::PositionMenu()
|
||||||
|
PBYTE matchGetMonitorInformation = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\xE2\x82\x00\x91\xE1\x03\x13\xAA\xE0\x03\x14\xAA",
|
||||||
|
"xxxxxxxxxxxx"
|
||||||
|
);
|
||||||
|
if (matchGetMonitorInformation)
|
||||||
|
{
|
||||||
|
matchGetMonitorInformation += 12;
|
||||||
|
matchGetMonitorInformation = (PBYTE)ARM64_FollowBL((DWORD*)matchGetMonitorInformation);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (matchGetMonitorInformation)
|
||||||
|
{
|
||||||
CStartExperienceManager_GetMonitorInformationFunc = matchGetMonitorInformation;
|
CStartExperienceManager_GetMonitorInformationFunc = matchGetMonitorInformation;
|
||||||
printf("[SMA] CStartExperienceManager::GetMonitorInformation() = %llX\n", matchGetMonitorInformation - (PBYTE)mi->lpBaseOfDll);
|
printf("[SMA] CStartExperienceManager::GetMonitorInformation() = %llX\n", matchGetMonitorInformation - (PBYTE)mi->lpBaseOfDll);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### Offset of CExperienceManagerAnimationHelper::Begin()
|
// ### Offset of CExperienceManagerAnimationHelper::Begin()
|
||||||
|
#if defined(_M_X64)
|
||||||
// * Pattern 1, used when all arguments are available:
|
// * Pattern 1, used when all arguments are available:
|
||||||
// ```
|
// ```
|
||||||
// 44 8B C7 E8 ?? ?? ?? ?? 85 C0 79 19
|
// 44 8B C7 E8 ?? ?? ?? ?? 85 C0 79 19
|
||||||
@ -11469,6 +11679,30 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
matchAnimationBegin += 5 + *(int*)(matchAnimationBegin + 1);
|
matchAnimationBegin += 5 + *(int*)(matchAnimationBegin + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// * Pattern 1, used when all arguments are available:
|
||||||
|
// ```
|
||||||
|
// Not implemented
|
||||||
|
//
|
||||||
|
// ```
|
||||||
|
// * Pattern 2, used when a4, a5, and a6 are optimized out (e.g. 26020, 26058):
|
||||||
|
// ```
|
||||||
|
// 82 02 0B 32 67 ?? ?? 91 60 ?? ?? 91 ?? ?? ?? ?? E3 03 00 2A
|
||||||
|
// ^^^^^^^^^^^
|
||||||
|
// ```
|
||||||
|
// Ref: CJumpViewExperienceManager::OnViewUncloaking()
|
||||||
|
PBYTE matchAnimationBegin = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\x82\x02\x0B\x32\x67\x00\x00\x91\x60\x00\x00\x91\x00\x00\x00\x00\xE3\x03\x00\x2A",
|
||||||
|
"xxxxx??xx??x????xxxx"
|
||||||
|
);
|
||||||
|
if (matchAnimationBegin)
|
||||||
|
{
|
||||||
|
matchAnimationBegin += 12;
|
||||||
|
matchAnimationBegin = (PBYTE)ARM64_FollowBL((DWORD*)matchAnimationBegin);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (matchAnimationBegin)
|
if (matchAnimationBegin)
|
||||||
{
|
{
|
||||||
CExperienceManagerAnimationHelper_BeginFunc = matchAnimationBegin;
|
CExperienceManagerAnimationHelper_BeginFunc = matchAnimationBegin;
|
||||||
@ -11476,6 +11710,7 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ### Offset of CExperienceManagerAnimationHelper::End()
|
// ### Offset of CExperienceManagerAnimationHelper::End()
|
||||||
|
#ifdef _M_X64
|
||||||
// ```
|
// ```
|
||||||
// 40 53 48 83 EC 20 80 39 00 74
|
// 40 53 48 83 EC 20 80 39 00 74
|
||||||
// ```
|
// ```
|
||||||
@ -11485,6 +11720,22 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
"\x40\x53\x48\x83\xEC\x20\x80\x39\x00\x74",
|
"\x40\x53\x48\x83\xEC\x20\x80\x39\x00\x74",
|
||||||
"xxxxxxxxxx"
|
"xxxxxxxxxx"
|
||||||
);
|
);
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// ```
|
||||||
|
// 7F 23 03 D5 F3 0F 1F F8 FD 7B BF A9 FD 03 00 91 08 00 40 39
|
||||||
|
// ----------- PACIBSP, don't scan for this because it's everywhere
|
||||||
|
// ```
|
||||||
|
PBYTE matchAnimationEnd = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\xF3\x0F\x1F\xF8\xFD\x7B\xBF\xA9\xFD\x03\x00\x91\x08\x00\x40\x39",
|
||||||
|
"xxxxxxxxxxxxxxxx"
|
||||||
|
);
|
||||||
|
if (matchAnimationEnd)
|
||||||
|
{
|
||||||
|
matchAnimationEnd -= 4;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (matchAnimationEnd)
|
if (matchAnimationEnd)
|
||||||
{
|
{
|
||||||
CExperienceManagerAnimationHelper_EndFunc = matchAnimationEnd;
|
CExperienceManagerAnimationHelper_EndFunc = matchAnimationEnd;
|
||||||
@ -11492,6 +11743,7 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ### CStartExperienceManager::Hide()
|
// ### CStartExperienceManager::Hide()
|
||||||
|
#ifdef _M_X64
|
||||||
// * Pattern 1, mov [rbx+2A3h], r12b:
|
// * Pattern 1, mov [rbx+2A3h], r12b:
|
||||||
// ```
|
// ```
|
||||||
// 74 ?? ?? 03 00 00 00 44 88
|
// 74 ?? ?? 03 00 00 00 44 88
|
||||||
@ -11549,6 +11801,36 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// ```
|
||||||
|
// ?? ?? ?? 34 ?? 00 80 52 ?? 8E 0A 39
|
||||||
|
// ^^^^^^^^^^^ Turn CBZ into B
|
||||||
|
// ```
|
||||||
|
// Perform on exactly two matches
|
||||||
|
PBYTE matchHideA = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\x34\x00\x00\x80\x52\x00\x8E\x0A\x39",
|
||||||
|
"x?xxx?xxx"
|
||||||
|
);
|
||||||
|
PBYTE matchHideB = NULL;
|
||||||
|
if (matchHideA)
|
||||||
|
{
|
||||||
|
matchHideA -= 3;
|
||||||
|
printf("[SMA] matchHideA in CStartExperienceManager::Hide() = %llX\n", matchHideA - (PBYTE)mi->lpBaseOfDll);
|
||||||
|
matchHideB = FindPattern(
|
||||||
|
matchHideA + 12,
|
||||||
|
mi->SizeOfImage - (matchHideA + 12 - (PBYTE)mi->lpBaseOfDll),
|
||||||
|
"\x34\x00\x00\x80\x52\x00\x8E\x0A\x39",
|
||||||
|
"x?xxx?xxx"
|
||||||
|
);
|
||||||
|
if (matchHideB)
|
||||||
|
{
|
||||||
|
matchHideB -= 3;
|
||||||
|
printf("[SMA] matchHideB in CStartExperienceManager::Hide() = %llX\n", matchHideB - (PBYTE)mi->lpBaseOfDll);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!matchVtable
|
if (!matchVtable
|
||||||
|| !matchSingleViewShellExperienceFields
|
|| !matchSingleViewShellExperienceFields
|
||||||
@ -11616,18 +11898,37 @@ BOOL FixStartMenuAnimation(LPMODULEINFO mi)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (VirtualProtect(matchHideA + 11, 1, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
#if defined(_M_X64)
|
||||||
|
if (VirtualProtect(matchHideA, 1, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
||||||
{
|
{
|
||||||
matchHideA[0] = 0xEB;
|
matchHideA[0] = 0xEB;
|
||||||
VirtualProtect(matchHideA + 11, 1, dwOldProtect, &dwOldProtect);
|
VirtualProtect(matchHideA, 1, dwOldProtect, &dwOldProtect);
|
||||||
|
|
||||||
dwOldProtect = 0;
|
dwOldProtect = 0;
|
||||||
if (VirtualProtect(matchHideB + 11, 1, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
if (VirtualProtect(matchHideB, 1, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
||||||
{
|
{
|
||||||
matchHideB[0] = 0xEB;
|
matchHideB[0] = 0xEB;
|
||||||
VirtualProtect(matchHideB + 11, 1, dwOldProtect, &dwOldProtect);
|
VirtualProtect(matchHideB, 1, dwOldProtect, &dwOldProtect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
if (VirtualProtect(matchHideA, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
||||||
|
{
|
||||||
|
DWORD newInsn = ARM64_CBZWToB(*(DWORD*)matchHideA);
|
||||||
|
if (newInsn)
|
||||||
|
*(DWORD*)matchHideA = newInsn;
|
||||||
|
VirtualProtect(matchHideA, 4, dwOldProtect, &dwOldProtect);
|
||||||
|
|
||||||
|
dwOldProtect = 0;
|
||||||
|
if (VirtualProtect(matchHideB, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
||||||
|
{
|
||||||
|
newInsn = ARM64_CBZWToB(*(DWORD*)matchHideB);
|
||||||
|
if (newInsn)
|
||||||
|
*(DWORD*)matchHideB = newInsn;
|
||||||
|
VirtualProtect(matchHideB, 4, dwOldProtect, &dwOldProtect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -13431,7 +13732,7 @@ void StartMenu_LoadSettings(BOOL bRestartIfChanged)
|
|||||||
&dwVal,
|
&dwVal,
|
||||||
&dwSize
|
&dwSize
|
||||||
);
|
);
|
||||||
if (InterlockedExchange64(&dwTaskbarAl, dwVal) != dwVal)
|
if (InterlockedExchange(&dwTaskbarAl, dwVal) != dwVal)
|
||||||
{
|
{
|
||||||
StartUI_EnableRoundedCornersApply = TRUE;
|
StartUI_EnableRoundedCornersApply = TRUE;
|
||||||
StartDocked_DisableRecommendedSectionApply = TRUE;
|
StartDocked_DisableRecommendedSectionApply = TRUE;
|
||||||
@ -13647,6 +13948,7 @@ static BOOL StartMenu_FixContextMenuXbfHijackMethod()
|
|||||||
if (!StartMenu_FillParserBuffer(&g_EmptyRefreshedStylesXbfBuffer, IDR_REFRESHEDSTYLES_XBF))
|
if (!StartMenu_FillParserBuffer(&g_EmptyRefreshedStylesXbfBuffer, IDR_REFRESHEDSTYLES_XBF))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
#if defined(_M_X64)
|
||||||
// 49 89 43 C8 E8 ?? ?? ?? ?? 85 C0
|
// 49 89 43 C8 E8 ?? ?? ?? ?? 85 C0
|
||||||
// ^^^^^^^^^^^
|
// ^^^^^^^^^^^
|
||||||
// Ref: CCoreServices::LoadXamlResource()
|
// Ref: CCoreServices::LoadXamlResource()
|
||||||
@ -13661,6 +13963,25 @@ static BOOL StartMenu_FixContextMenuXbfHijackMethod()
|
|||||||
|
|
||||||
match += 4;
|
match += 4;
|
||||||
match += 5 + *(int*)(match + 1);
|
match += 5 + *(int*)(match + 1);
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// E1 0B 40 F9 05 00 80 D2 04 00 80 D2 E3 03 ?? AA E2 03 ?? AA E0 03 ?? AA ?? ?? ?? 97
|
||||||
|
// ^^^^^^^^^^^
|
||||||
|
// Ref: CoreServices_TryGetApplicationResource()
|
||||||
|
PBYTE match = FindPattern(
|
||||||
|
mi.lpBaseOfDll,
|
||||||
|
mi.SizeOfImage,
|
||||||
|
"\xE1\x0B\x40\xF9\x05\x00\x80\xD2\x04\x00\x80\xD2\xE3\x03\x00\xAA\xE2\x03\x00\xAA\xE0\x03\x00\xAA\x00\x00\x00\x97",
|
||||||
|
"xxxxxxxxxxxxxx?xxx?xxx?x???x"
|
||||||
|
);
|
||||||
|
if (!match)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
match += 24;
|
||||||
|
match = (PBYTE)ARM64_FollowBL((DWORD*)match);
|
||||||
|
if (!match)
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
CCoreServices_TryLoadXamlResourceHelperFunc = match;
|
CCoreServices_TryLoadXamlResourceHelperFunc = match;
|
||||||
funchook_prepare(
|
funchook_prepare(
|
||||||
funchook,
|
funchook,
|
||||||
@ -13685,6 +14006,7 @@ void StartUI_UserTileView_AppendMenuFlyoutItemCommandHook(void* _this, void* men
|
|||||||
|
|
||||||
static void StartMenu_FixUserTileMenu(MODULEINFO* mi)
|
static void StartMenu_FixUserTileMenu(MODULEINFO* mi)
|
||||||
{
|
{
|
||||||
|
#if defined(_M_X64)
|
||||||
// 41 B9 03 00 00 00 4D 8B C4 ?? 8B D6 49 8B CD E8 ?? ?? ?? ??
|
// 41 B9 03 00 00 00 4D 8B C4 ?? 8B D6 49 8B CD E8 ?? ?? ?? ??
|
||||||
// ^^^^^^^^^^^
|
// ^^^^^^^^^^^
|
||||||
// Ref: <lambda_3a9b433356e31b02e54fffbca0ecf3fa>::operator()
|
// Ref: <lambda_3a9b433356e31b02e54fffbca0ecf3fa>::operator()
|
||||||
@ -13698,6 +14020,26 @@ static void StartMenu_FixUserTileMenu(MODULEINFO* mi)
|
|||||||
{
|
{
|
||||||
match += 15;
|
match += 15;
|
||||||
match += 5 + *(int*)(match + 1);
|
match += 5 + *(int*)(match + 1);
|
||||||
|
}
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// 63 00 80 52 E2 03 1B AA E1 03 14 AA E0 03 19 AA ?? ?? ?? 94
|
||||||
|
// ^^^^^^^^^^^
|
||||||
|
// Ref: <lambda_3a9b433356e31b02e54fffbca0ecf3fa>::operator()
|
||||||
|
PBYTE match = FindPattern(
|
||||||
|
mi->lpBaseOfDll,
|
||||||
|
mi->SizeOfImage,
|
||||||
|
"\x63\x00\x80\x52\xE2\x03\x1B\xAA\xE1\x03\x14\xAA\xE0\x03\x19\xAA\x00\x00\x00\x94",
|
||||||
|
"xxxxxxxxxxxxxxxx???x"
|
||||||
|
);
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
|
match += 16;
|
||||||
|
match = (PBYTE)ARM64_FollowBL((DWORD*)match);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (match)
|
||||||
|
{
|
||||||
StartUI_UserTileView_AppendMenuFlyoutItemCommandFunc = match;
|
StartUI_UserTileView_AppendMenuFlyoutItemCommandFunc = match;
|
||||||
funchook_prepare(
|
funchook_prepare(
|
||||||
funchook,
|
funchook,
|
||||||
|
@ -9,15 +9,14 @@
|
|||||||
|
|
||||||
#if HOW_TO_HOOK == HOOK_WITH_FUNCHOOK
|
#if HOW_TO_HOOK == HOOK_WITH_FUNCHOOK
|
||||||
|
|
||||||
#ifdef _M_ARM64
|
|
||||||
#error Cannot compile for ARM64 using funchook. Change the source to hook with Detours and try again. Compilation aborted.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <funchook.h>
|
#include <funchook.h>
|
||||||
#include <distorm.h>
|
|
||||||
#pragma comment(lib, "funchook.lib")
|
#pragma comment(lib, "funchook.lib")
|
||||||
#pragma comment(lib, "Psapi.lib") // required by funchook
|
#pragma comment(lib, "Psapi.lib") // required by funchook
|
||||||
|
#if defined(_M_IX86) || defined(_M_X64)
|
||||||
#pragma comment(lib, "distorm.lib")
|
#pragma comment(lib, "distorm.lib")
|
||||||
|
#else
|
||||||
|
#pragma comment(lib, "capstone.lib")
|
||||||
|
#endif
|
||||||
|
|
||||||
#elif HOW_TO_HOOK == HOOK_WITH_DETOURS
|
#elif HOW_TO_HOOK == HOOK_WITH_DETOURS
|
||||||
|
|
||||||
|
@ -579,6 +579,114 @@ inline BOOL IncrementDLLReferenceCount(HINSTANCE hinst)
|
|||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask);
|
PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask);
|
||||||
|
|
||||||
|
#if _M_ARM64
|
||||||
|
__forceinline DWORD ARM64_ReadBits(DWORD value, int h, int l)
|
||||||
|
{
|
||||||
|
return (value >> l) & ((1 << (h - l + 1)) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline int ARM64_SignExtend(DWORD value, int numBits)
|
||||||
|
{
|
||||||
|
DWORD mask = 1 << (numBits - 1);
|
||||||
|
if (value & mask)
|
||||||
|
value |= ~((1 << numBits) - 1);
|
||||||
|
return (int)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline int ARM64_ReadBitsSignExtend(DWORD insn, int h, int l)
|
||||||
|
{
|
||||||
|
return ARM64_SignExtend(ARM64_ReadBits(insn, h, l), h - l + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline BOOL ARM64_IsInRange(int value, int bitCount)
|
||||||
|
{
|
||||||
|
int minVal = -(1 << (bitCount - 1));
|
||||||
|
int maxVal = (1 << (bitCount - 1)) - 1;
|
||||||
|
return value >= minVal && value <= maxVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline UINT_PTR ARM64_Align(UINT_PTR value, UINT_PTR alignment)
|
||||||
|
{
|
||||||
|
return value & ~(alignment - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline BOOL ARM64_IsCBZW(DWORD insn) { return ARM64_ReadBits(insn, 31, 24) == 0b00110100; }
|
||||||
|
__forceinline BOOL ARM64_IsCBNZW(DWORD insn) { return ARM64_ReadBits(insn, 31, 24) == 0b00110101; }
|
||||||
|
__forceinline BOOL ARM64_IsBL(DWORD insn) { return ARM64_ReadBits(insn, 31, 26) == 0b100101; }
|
||||||
|
__forceinline BOOL ARM64_IsADRP(DWORD insn) { return (ARM64_ReadBits(insn, 31, 24) & ~0b01100000) == 0b10010000; }
|
||||||
|
|
||||||
|
__forceinline DWORD* ARM64_FollowBL(DWORD* pInsnBL)
|
||||||
|
{
|
||||||
|
DWORD insnBL = *pInsnBL;
|
||||||
|
if (!ARM64_IsBL(insnBL))
|
||||||
|
return NULL;
|
||||||
|
int imm26 = ARM64_ReadBitsSignExtend(insnBL, 25, 0);
|
||||||
|
return pInsnBL + imm26; // offset = imm26 * 4
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline DWORD ARM64_MakeB(int imm26)
|
||||||
|
{
|
||||||
|
if (!ARM64_IsInRange(imm26, 26))
|
||||||
|
return 0;
|
||||||
|
return 0b000101 << 26 | imm26 & (1 << 26) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline DWORD ARM64_CBZWToB(DWORD insnCBZW)
|
||||||
|
{
|
||||||
|
if (!ARM64_IsCBZW(insnCBZW))
|
||||||
|
return 0;
|
||||||
|
int imm19 = ARM64_ReadBitsSignExtend(insnCBZW, 23, 5);
|
||||||
|
return ARM64_MakeB(imm19);
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline DWORD ARM64_CBNZWToB(DWORD insnCBNZW)
|
||||||
|
{
|
||||||
|
if (!ARM64_IsCBNZW(insnCBNZW))
|
||||||
|
return 0;
|
||||||
|
int imm19 = ARM64_ReadBitsSignExtend(insnCBNZW, 23, 5);
|
||||||
|
return ARM64_MakeB(imm19);
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline DWORD ARM64_DecodeADD(DWORD insnADD)
|
||||||
|
{
|
||||||
|
DWORD imm12 = ARM64_ReadBits(insnADD, 21, 10);
|
||||||
|
DWORD shift = ARM64_ReadBits(insnADD, 22, 22);
|
||||||
|
return imm12 << (shift * 12);
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline DWORD ARM64_DecodeSTRBIMM(DWORD insnSTRBIMM)
|
||||||
|
{
|
||||||
|
if (ARM64_ReadBits(insnSTRBIMM, 31, 22) != 0b0011100100)
|
||||||
|
return (DWORD)-1;
|
||||||
|
DWORD imm12 = ARM64_ReadBits(insnSTRBIMM, 21, 10);
|
||||||
|
return imm12;
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline DWORD ARM64_DecodeLDRBIMM(DWORD insnLDRBIMM)
|
||||||
|
{
|
||||||
|
if (ARM64_ReadBits(insnLDRBIMM, 31, 22) != 0b0011100101)
|
||||||
|
return (DWORD)-1;
|
||||||
|
DWORD imm12 = ARM64_ReadBits(insnLDRBIMM, 21, 10);
|
||||||
|
return imm12;
|
||||||
|
}
|
||||||
|
|
||||||
|
__forceinline void* ARM64_DecodeADRL(DWORD* pInsnADRP, DWORD* pInsnADD)
|
||||||
|
{
|
||||||
|
if (!ARM64_IsADRP(*pInsnADRP))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
UINT_PTR page = ARM64_Align((UINT_PTR)pInsnADRP, 0x1000);
|
||||||
|
|
||||||
|
DWORD adrp_immlo = ARM64_ReadBits(*pInsnADRP, 30, 29);
|
||||||
|
DWORD adrp_immhi = ARM64_ReadBits(*pInsnADRP, 23, 5);
|
||||||
|
DWORD adrp_imm = ((adrp_immhi << 2) | adrp_immlo) << 12;
|
||||||
|
|
||||||
|
DWORD add_imm = ARM64_DecodeADD(*pInsnADD);
|
||||||
|
|
||||||
|
return (void*)(page + adrp_imm + add_imm);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound)
|
inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound)
|
||||||
{
|
{
|
||||||
// huge thanks to @Simplestas: https://github.com/valinet/ExplorerPatcher/issues/598
|
// huge thanks to @Simplestas: https://github.com/valinet/ExplorerPatcher/issues/598
|
||||||
@ -589,6 +697,7 @@ inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound)
|
|||||||
MODULEINFO mi;
|
MODULEINFO mi;
|
||||||
GetModuleInformation(GetCurrentProcess(), hInputSwitch, &mi, sizeof(mi));
|
GetModuleInformation(GetCurrentProcess(), hInputSwitch, &mi, sizeof(mi));
|
||||||
|
|
||||||
|
#if defined(_M_X64)
|
||||||
// 44 38 ?? ?? 74 ?? ?? 8B CE E8 ?? ?? ?? ?? 85 C0
|
// 44 38 ?? ?? 74 ?? ?? 8B CE E8 ?? ?? ?? ?? 85 C0
|
||||||
// ^^ Change jz into jmp
|
// ^^ Change jz into jmp
|
||||||
PBYTE match = (PBYTE)FindPattern(
|
PBYTE match = (PBYTE)FindPattern(
|
||||||
@ -609,6 +718,34 @@ inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound)
|
|||||||
VirtualProtect(match + 4, 1, dwOldProtect, &dwOldProtect);
|
VirtualProtect(match + 4, 1, dwOldProtect, &dwOldProtect);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
// A8 43 40 39 C8 04 00 34 E0 03 14 AA
|
||||||
|
// ^^^^^^^^^^^ Change CBZ to B
|
||||||
|
PBYTE match = (PBYTE)FindPattern(
|
||||||
|
hInputSwitch,
|
||||||
|
mi.SizeOfImage,
|
||||||
|
"\xA8\x43\x40\x39\xC8\x04\x00\x34\xE0\x03\x14\xAA",
|
||||||
|
"xxxxxxxxxxxx"
|
||||||
|
);
|
||||||
|
if (!match)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
match += 4;
|
||||||
|
|
||||||
|
DWORD newInsn = ARM64_CBZWToB(*(DWORD*)match);
|
||||||
|
if (!newInsn)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
DWORD dwOldProtect;
|
||||||
|
if (!VirtualProtect(match, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
*(DWORD*)match = newInsn;
|
||||||
|
|
||||||
|
VirtualProtect(match, 4, dwOldProtect, &dwOldProtect);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -73,19 +73,19 @@
|
|||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -71,16 +71,16 @@
|
|||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -72,19 +72,19 @@
|
|||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -72,19 +72,19 @@
|
|||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
12
ep_gui/GUI.c
12
ep_gui/GUI.c
@ -175,6 +175,8 @@ LONG NTAPI OnVex(PEXCEPTION_POINTERS ExceptionInfo)
|
|||||||
Eip
|
Eip
|
||||||
#elif defined (_AMD64_)
|
#elif defined (_AMD64_)
|
||||||
Rip
|
Rip
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
Pc
|
||||||
#else
|
#else
|
||||||
#error not implemented
|
#error not implemented
|
||||||
#endif
|
#endif
|
||||||
@ -1818,6 +1820,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
RegSetKeyValueW(HKEY_CURRENT_USER, _T(REGPATH), L"OldTaskbar", REG_DWORD, &dwOldTaskbar, sizeof(DWORD));
|
RegSetKeyValueW(HKEY_CURRENT_USER, _T(REGPATH), L"OldTaskbar", REG_DWORD, &dwOldTaskbar, sizeof(DWORD));
|
||||||
|
|
||||||
DWORD dwError = 0;
|
DWORD dwError = 0;
|
||||||
|
#ifdef _M_X64
|
||||||
// https://stackoverflow.com/questions/50298722/win32-launching-a-highestavailable-child-process-as-a-normal-user-process
|
// https://stackoverflow.com/questions/50298722/win32-launching-a-highestavailable-child-process-as-a-normal-user-process
|
||||||
if (pvRtlQueryElevationFlags = GetProcAddress(GetModuleHandleW(L"ntdll"), "RtlQueryElevationFlags"))
|
if (pvRtlQueryElevationFlags = GetProcAddress(GetModuleHandleW(L"ntdll"), "RtlQueryElevationFlags"))
|
||||||
{
|
{
|
||||||
@ -1832,6 +1835,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
|
|
||||||
if (SetThreadContext(GetCurrentThread(), &ctx))
|
if (SetThreadContext(GetCurrentThread(), &ctx))
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
WCHAR wszExec[MAX_PATH * 2];
|
WCHAR wszExec[MAX_PATH * 2];
|
||||||
ZeroMemory(wszExec, MAX_PATH * 2 * sizeof(WCHAR));
|
ZeroMemory(wszExec, MAX_PATH * 2 * sizeof(WCHAR));
|
||||||
wszExec[0] = L'"';
|
wszExec[0] = L'"';
|
||||||
@ -1854,7 +1858,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
{
|
{
|
||||||
dwError = GetLastError();
|
dwError = GetLastError();
|
||||||
}
|
}
|
||||||
|
#ifdef _M_X64
|
||||||
ctx.Dr7 = 0x400;
|
ctx.Dr7 = 0x400;
|
||||||
ctx.Dr1 = 0;
|
ctx.Dr1 = 0;
|
||||||
SetThreadContext(GetCurrentThread(), &ctx);
|
SetThreadContext(GetCurrentThread(), &ctx);
|
||||||
@ -1882,6 +1886,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
{
|
{
|
||||||
dwError = GetLastError();
|
dwError = GetLastError();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
dwSize = sizeof(DWORD);
|
dwSize = sizeof(DWORD);
|
||||||
RegGetValueW(HKEY_CURRENT_USER, _T(REGPATH), L"OldTaskbar", RRF_RT_DWORD, NULL, &dwOldTaskbar, &dwSize);
|
RegGetValueW(HKEY_CURRENT_USER, _T(REGPATH), L"OldTaskbar", RRF_RT_DWORD, NULL, &dwOldTaskbar, &dwSize);
|
||||||
@ -2091,6 +2096,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
RegDeleteKeyValueW(HKEY_CURRENT_USER, _T(REGPATH), L"ImportOK");
|
RegDeleteKeyValueW(HKEY_CURRENT_USER, _T(REGPATH), L"ImportOK");
|
||||||
|
|
||||||
DWORD dwError = 0;
|
DWORD dwError = 0;
|
||||||
|
#ifdef _M_X64
|
||||||
// https://stackoverflow.com/questions/50298722/win32-launching-a-highestavailable-child-process-as-a-normal-user-process
|
// https://stackoverflow.com/questions/50298722/win32-launching-a-highestavailable-child-process-as-a-normal-user-process
|
||||||
if (pvRtlQueryElevationFlags = GetProcAddress(GetModuleHandleW(L"ntdll"), "RtlQueryElevationFlags"))
|
if (pvRtlQueryElevationFlags = GetProcAddress(GetModuleHandleW(L"ntdll"), "RtlQueryElevationFlags"))
|
||||||
{
|
{
|
||||||
@ -2105,6 +2111,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
|
|
||||||
if (SetThreadContext(GetCurrentThread(), &ctx))
|
if (SetThreadContext(GetCurrentThread(), &ctx))
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
WCHAR wszExec[MAX_PATH * 2];
|
WCHAR wszExec[MAX_PATH * 2];
|
||||||
ZeroMemory(wszExec, MAX_PATH * 2 * sizeof(WCHAR));
|
ZeroMemory(wszExec, MAX_PATH * 2 * sizeof(WCHAR));
|
||||||
wszExec[0] = L'"';
|
wszExec[0] = L'"';
|
||||||
@ -2127,7 +2134,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
{
|
{
|
||||||
dwError = GetLastError();
|
dwError = GetLastError();
|
||||||
}
|
}
|
||||||
|
#ifdef _M_X64
|
||||||
ctx.Dr7 = 0x400;
|
ctx.Dr7 = 0x400;
|
||||||
ctx.Dr1 = 0;
|
ctx.Dr1 = 0;
|
||||||
SetThreadContext(GetCurrentThread(), &ctx);
|
SetThreadContext(GetCurrentThread(), &ctx);
|
||||||
@ -2155,6 +2162,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
|||||||
{
|
{
|
||||||
dwError = GetLastError();
|
dwError = GetLastError();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
DWORD dwData = 0, dwSize = sizeof(DWORD);
|
DWORD dwData = 0, dwSize = sizeof(DWORD);
|
||||||
RegGetValueW(HKEY_CURRENT_USER, _T(REGPATH), L"ImportOK", RRF_RT_DWORD, NULL, &dwData, &dwSize);
|
RegGetValueW(HKEY_CURRENT_USER, _T(REGPATH), L"ImportOK", RRF_RT_DWORD, NULL, &dwData, &dwSize);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.props')" />
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
<Configuration>Debug</Configuration>
|
<Configuration>Debug</Configuration>
|
||||||
@ -9,6 +10,14 @@
|
|||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<VCProjectVersion>17.0</VCProjectVersion>
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
@ -16,7 +25,6 @@
|
|||||||
<ProjectGuid>{2351a0df-782c-4d74-85b7-0847d245d6b4}</ProjectGuid>
|
<ProjectGuid>{2351a0df-782c-4d74-85b7-0847d245d6b4}</ProjectGuid>
|
||||||
<RootNamespace>epgui</RootNamespace>
|
<RootNamespace>epgui</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
<WithAltTaskbarImpl>0</WithAltTaskbarImpl>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
@ -32,10 +40,24 @@
|
|||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="Shared">
|
<ImportGroup Label="Shared">
|
||||||
|
<Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.targets')" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
@ -43,14 +65,28 @@
|
|||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -58,27 +94,21 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;$(SolutionDir)libs\funchook\include;$(SolutionDir)libs\funchook\distorm\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;$(SolutionDir)libs\funchook\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(WithAltTaskbarImpl)'=='1'">
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>WITH_ALT_TASKBAR_IMPL=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
@ -90,6 +120,16 @@
|
|||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
|
||||||
|
<Link>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
|
||||||
|
<Link>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)libs\funchook\build-arm64\Release\;$(SolutionDir)libs\funchook\build-arm64\_deps\capstone-build\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\ExplorerPatcher\fmemopen.c" />
|
<ClCompile Include="..\ExplorerPatcher\fmemopen.c" />
|
||||||
<ClCompile Include="..\ExplorerPatcher\getline.c" />
|
<ClCompile Include="..\ExplorerPatcher\getline.c" />
|
||||||
@ -111,6 +151,7 @@
|
|||||||
<ResourceCompile Include="..\ExplorerPatcher-L10N\resources\lang\ep_gui.*.rc" Condition="Exists('..\ExplorerPatcher-L10N\resources\lang')" />
|
<ResourceCompile Include="..\ExplorerPatcher-L10N\resources\lang\ep_gui.*.rc" Condition="Exists('..\ExplorerPatcher-L10N\resources\lang')" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
<None Include="resources\settings.reg" />
|
<None Include="resources\settings.reg" />
|
||||||
<None Include="resources\settings10.reg" />
|
<None Include="resources\settings10.reg" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -129,5 +170,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.props'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Windows.CppWinRT.2.0.240405.15\build\native\Microsoft.Windows.CppWinRT.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
@ -195,7 +195,11 @@ BOOL SetupUninstallEntry(BOOL bInstall, WCHAR* wszPath)
|
|||||||
if (!dwLastError)
|
if (!dwLastError)
|
||||||
{
|
{
|
||||||
PathRemoveFileSpecW(wszPath + 1);
|
PathRemoveFileSpecW(wszPath + 1);
|
||||||
|
#if defined(_M_X64)
|
||||||
wcscat_s(wszPath + 1, MAX_PATH - 2, L"\\" _T(PRODUCT_NAME) L".amd64.dll");
|
wcscat_s(wszPath + 1, MAX_PATH - 2, L"\\" _T(PRODUCT_NAME) L".amd64.dll");
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
wcscat_s(wszPath + 1, MAX_PATH - 2, L"\\" _T(PRODUCT_NAME) L".arm64.dll");
|
||||||
|
#endif
|
||||||
HMODULE hEP = LoadLibraryExW(wszPath + 1, NULL, LOAD_LIBRARY_AS_DATAFILE);
|
HMODULE hEP = LoadLibraryExW(wszPath + 1, NULL, LOAD_LIBRARY_AS_DATAFILE);
|
||||||
if (hEP)
|
if (hEP)
|
||||||
{
|
{
|
||||||
@ -499,6 +503,7 @@ int WINAPI wWinMain(
|
|||||||
}
|
}
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_IA32, wszPath, _T(PRODUCT_NAME) L".IA-32.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_IA32, wszPath, _T(PRODUCT_NAME) L".IA-32.dll");
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, _T(PRODUCT_NAME) L".amd64.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, _T(PRODUCT_NAME) L".amd64.dll");
|
||||||
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_ARM64, wszPath, _T(PRODUCT_NAME) L".arm64.dll");
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_DWM, wszPath, L"ep_dwm.exe");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_DWM, wszPath, L"ep_dwm.exe");
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_WEATHER, wszPath, L"ep_weather_host.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_WEATHER, wszPath, L"ep_weather_host.dll");
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_WEATHER_STUB, wszPath, L"ep_weather_host_stub.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_WEATHER_STUB, wszPath, L"ep_weather_host_stub.dll");
|
||||||
@ -815,7 +820,11 @@ int WINAPI wWinMain(
|
|||||||
wszArgs[2] = L' ';
|
wszArgs[2] = L' ';
|
||||||
wszArgs[3] = L'"';
|
wszArgs[3] = L'"';
|
||||||
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszArgs + 4);
|
SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszArgs + 4);
|
||||||
|
#if defined(_M_X64)
|
||||||
wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".amd64.dll\"");
|
wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".amd64.dll\"");
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".arm64.dll\"");
|
||||||
|
#endif
|
||||||
wprintf(L"%s\n", wszArgs);
|
wprintf(L"%s\n", wszArgs);
|
||||||
WCHAR wszApp[MAX_PATH * 2];
|
WCHAR wszApp[MAX_PATH * 2];
|
||||||
GetSystemDirectoryW(wszApp, MAX_PATH * 2);
|
GetSystemDirectoryW(wszApp, MAX_PATH * 2);
|
||||||
@ -845,6 +854,9 @@ int WINAPI wWinMain(
|
|||||||
}
|
}
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_IA32, wszPath, _T(PRODUCT_NAME) L".IA-32.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_IA32, wszPath, _T(PRODUCT_NAME) L".IA-32.dll");
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, _T(PRODUCT_NAME) L".amd64.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, _T(PRODUCT_NAME) L".amd64.dll");
|
||||||
|
#ifdef _M_ARM64
|
||||||
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_ARM64, wszPath, _T(PRODUCT_NAME) L".arm64.dll");
|
||||||
|
#endif
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_GUI, wszPath, L"ep_gui.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_GUI, wszPath, L"ep_gui.dll");
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_DWM, wszPath, L"ep_dwm.exe");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_DWM, wszPath, L"ep_dwm.exe");
|
||||||
if (bInstall)
|
if (bInstall)
|
||||||
@ -860,7 +872,11 @@ int WINAPI wWinMain(
|
|||||||
// C:\Windows
|
// C:\Windows
|
||||||
// + dxgi.dll
|
// + dxgi.dll
|
||||||
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH);
|
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH);
|
||||||
|
#ifdef _M_X64
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, L"dxgi.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, L"dxgi.dll");
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_ARM64, wszPath, L"dxgi.dll");
|
||||||
|
#endif
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -875,7 +891,11 @@ int WINAPI wWinMain(
|
|||||||
// - pris2\Windows.UI.ShellCommon.en-US.pri
|
// - pris2\Windows.UI.ShellCommon.en-US.pri
|
||||||
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH);
|
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH);
|
||||||
if (bOk) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy");
|
if (bOk) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy");
|
||||||
|
#ifdef _M_X64
|
||||||
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, L"dxgi.dll");
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, L"dxgi.dll");
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
if (bOk) bOk = InstallResource(bInstall, hInstance, IDR_EP_ARM64, wszPath, L"dxgi.dll");
|
||||||
|
#endif
|
||||||
if (bOk) bOk = InstallResource(bInstall && IsWindows11(), hInstance, IDR_EP_STARTMENU, wszPath, L"wincorlib.dll");
|
if (bOk) bOk = InstallResource(bInstall && IsWindows11(), hInstance, IDR_EP_STARTMENU, wszPath, L"wincorlib.dll");
|
||||||
if (bOk) bOk = DeleteResource(wszPath, L"wincorlib_orig.dll");
|
if (bOk) bOk = DeleteResource(wszPath, L"wincorlib_orig.dll");
|
||||||
if (bOk && IsWindows11() && bInstall)
|
if (bOk && IsWindows11() && bInstall)
|
||||||
@ -930,7 +950,11 @@ int WINAPI wWinMain(
|
|||||||
// + dxgi.dll
|
// + dxgi.dll
|
||||||
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH);
|
if (bOk) GetWindowsDirectoryW(wszPath, MAX_PATH);
|
||||||
if (bOk) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\ShellExperienceHost_cw5n1h2txyewy");
|
if (bOk) wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\ShellExperienceHost_cw5n1h2txyewy");
|
||||||
|
#ifdef _M_X64
|
||||||
if (bOk && IsWindows11()) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, L"dxgi.dll");
|
if (bOk && IsWindows11()) bOk = InstallResource(bInstall, hInstance, IDR_EP_AMD64, wszPath, L"dxgi.dll");
|
||||||
|
#elif defined(_M_ARM64)
|
||||||
|
if (bOk && IsWindows11()) bOk = InstallResource(bInstall, hInstance, IDR_EP_ARM64, wszPath, L"dxgi.dll");
|
||||||
|
#endif
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -17,6 +17,14 @@
|
|||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<VCProjectVersion>16.0</VCProjectVersion>
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
@ -52,6 +60,19 @@
|
|||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
@ -69,22 +90,36 @@
|
|||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -150,26 +185,68 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\ep_taskbar.2.dll')">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.2.dll')">
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>EP_TASKBAR_2_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>EP_TASKBAR_2_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\ep_taskbar.3.dll')">
|
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.3.dll')">
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>EP_TASKBAR_3_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>EP_TASKBAR_3_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\ep_taskbar.4.dll')">
|
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.4.dll')">
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>EP_TASKBAR_4_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>EP_TASKBAR_4_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\ep_taskbar.5.dll')">
|
<ItemDefinitionGroup Condition="Exists('..\build\$(Configuration)\$(Platform)\ep_taskbar.5.dll')">
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<PreprocessorDefinitions>EP_TASKBAR_5_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>EP_TASKBAR_5_EXISTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>PLATFORM_AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>PLATFORM_ARM64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\ExplorerPatcher\utility.c" />
|
<ClCompile Include="..\ExplorerPatcher\utility.c" />
|
||||||
<ClCompile Include="ep_setup.c" />
|
<ClCompile Include="ep_setup.c" />
|
||||||
@ -180,60 +257,44 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="resources\ep_setup.rc">
|
<ResourceCompile Include="resources\ep_setup.rc">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<ResourceCompile Include="resources\ep_setup_debug.rc">
|
<ResourceCompile Include="resources\ep_setup_debug.rc">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Release'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<ResourceCompile Include="resources\lang\ep_setup.*.rc" />
|
<ResourceCompile Include="resources\lang\ep_setup.*.rc" />
|
||||||
<ResourceCompile Include="..\ExplorerPatcher-L10N\resources\lang\ep_setup.*.rc" Condition="Exists('..\ExplorerPatcher-L10N\resources\lang')" />
|
<ResourceCompile Include="..\ExplorerPatcher-L10N\resources\lang\ep_setup.*.rc" Condition="Exists('..\ExplorerPatcher-L10N\resources\lang')" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\build\Debug\ep_dwm.exe">
|
<None Include="..\build\Debug\ep_dwm.exe">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Release'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Debug\ep_weather_host.dll">
|
<None Include="..\build\Debug\ep_weather_host.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Release'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Debug\ep_weather_host_stub.dll">
|
<None Include="..\build\Debug\ep_weather_host_stub.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Release'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Debug\ExplorerPatcher.amd64.dll">
|
<None Include="..\build\Debug\ExplorerPatcher.amd64.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Release'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Debug\ExplorerPatcher.IA-32.dll">
|
<None Include="..\build\Debug\ExplorerPatcher.IA-32.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Release'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Release\ep_dwm.exe">
|
<None Include="..\build\Release\ep_dwm.exe">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Release\ep_weather_host.dll">
|
<None Include="..\build\Release\ep_weather_host.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Release\ep_weather_host_stub.dll">
|
<None Include="..\build\Release\ep_weather_host_stub.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Release\ExplorerPatcher.amd64.dll">
|
<None Include="..\build\Release\ExplorerPatcher.amd64.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\build\Release\ExplorerPatcher.IA-32.dll">
|
<None Include="..\build\Release\ExplorerPatcher.IA-32.dll">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)'=='Debug'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="applicat.bin" />
|
<None Include="applicat.bin" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -90,36 +90,74 @@ END
|
|||||||
// RCDATA
|
// RCDATA
|
||||||
//
|
//
|
||||||
|
|
||||||
IDR_EP_AMD64 RCDATA "..\\build\\Release\\ExplorerPatcher.amd64.dll"
|
IDR_EP_AMD64 RCDATA "..\\build\\Release\\x64\\ExplorerPatcher.amd64.dll"
|
||||||
|
|
||||||
IDR_EP_IA32 RCDATA "..\\build\\Release\\ExplorerPatcher.IA-32.dll"
|
IDR_EP_IA32 RCDATA "..\\build\\Release\\Win32\\ExplorerPatcher.IA-32.dll"
|
||||||
|
|
||||||
IDR_EP_DWM RCDATA "..\\build\\Release\\ep_dwm.exe"
|
#ifdef PLATFORM_ARM64
|
||||||
|
IDR_EP_ARM64 RCDATA "..\\build\\Release\\ARM64\\ExplorerPatcher.arm64.dll"
|
||||||
|
#endif
|
||||||
|
|
||||||
IDR_EP_WEATHER RCDATA "..\\build\\Release\\ep_weather_host.dll"
|
#if defined(PLATFORM_AMD64)
|
||||||
|
|
||||||
IDR_EP_WEATHER_STUB RCDATA "..\\build\\Release\\ep_weather_host_stub.dll"
|
IDR_EP_DWM RCDATA "..\\build\\Release\\x64\\ep_dwm.exe"
|
||||||
|
|
||||||
IDR_MS_WEBVIEW2_LOADER RCDATA "..\\build\\Release\\WebView2Loader.dll"
|
IDR_EP_WEATHER RCDATA "..\\build\\Release\\x64\\ep_weather_host.dll"
|
||||||
|
|
||||||
IDR_EP_STARTMENU RCDATA "..\\build\\Release\\ep_startmenu.dll"
|
IDR_EP_WEATHER_STUB RCDATA "..\\build\\Release\\x64\\ep_weather_host_stub.dll"
|
||||||
|
|
||||||
IDR_EP_GUI RCDATA "..\\build\\Release\\ep_gui.dll"
|
IDR_MS_WEBVIEW2_LOADER RCDATA "..\\build\\Release\\x64\\WebView2Loader.dll"
|
||||||
|
|
||||||
|
IDR_EP_STARTMENU RCDATA "..\\build\\Release\\x64\\ep_startmenu.dll"
|
||||||
|
|
||||||
|
IDR_EP_GUI RCDATA "..\\build\\Release\\x64\\ep_gui.dll"
|
||||||
|
|
||||||
#if EP_TASKBAR_2_EXISTS
|
#if EP_TASKBAR_2_EXISTS
|
||||||
IDR_EP_TASKBAR_2 RCDATA "..\\build\\Release\\ep_taskbar.2.dll"
|
IDR_EP_TASKBAR_2 RCDATA "..\\build\\Release\\x64\\ep_taskbar.2.dll"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EP_TASKBAR_3_EXISTS
|
#if EP_TASKBAR_3_EXISTS
|
||||||
IDR_EP_TASKBAR_3 RCDATA "..\\build\\Release\\ep_taskbar.3.dll"
|
IDR_EP_TASKBAR_3 RCDATA "..\\build\\Release\\x64\\ep_taskbar.3.dll"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EP_TASKBAR_4_EXISTS
|
#if EP_TASKBAR_4_EXISTS
|
||||||
IDR_EP_TASKBAR_4 RCDATA "..\\build\\Release\\ep_taskbar.4.dll"
|
IDR_EP_TASKBAR_4 RCDATA "..\\build\\Release\\x64\\ep_taskbar.4.dll"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EP_TASKBAR_5_EXISTS
|
#if EP_TASKBAR_5_EXISTS
|
||||||
IDR_EP_TASKBAR_5 RCDATA "..\\build\\Release\\ep_taskbar.5.dll"
|
IDR_EP_TASKBAR_5 RCDATA "..\\build\\Release\\x64\\ep_taskbar.5.dll"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif defined(PLATFORM_ARM64)
|
||||||
|
|
||||||
|
IDR_EP_DWM RCDATA "..\\build\\Release\\ARM64\\ep_dwm.exe"
|
||||||
|
|
||||||
|
IDR_EP_WEATHER RCDATA "..\\build\\Release\\ARM64\\ep_weather_host.dll"
|
||||||
|
|
||||||
|
IDR_EP_WEATHER_STUB RCDATA "..\\build\\Release\\ARM64\\ep_weather_host_stub.dll"
|
||||||
|
|
||||||
|
IDR_MS_WEBVIEW2_LOADER RCDATA "..\\build\\Release\\ARM64\\WebView2Loader.dll"
|
||||||
|
|
||||||
|
IDR_EP_STARTMENU RCDATA "..\\build\\Release\\ARM64\\ep_startmenu.dll"
|
||||||
|
|
||||||
|
IDR_EP_GUI RCDATA "..\\build\\Release\\ARM64\\ep_gui.dll"
|
||||||
|
|
||||||
|
#if EP_TASKBAR_2_EXISTS
|
||||||
|
IDR_EP_TASKBAR_2 RCDATA "..\\build\\Release\\ARM64\\ep_taskbar.2.dll"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if EP_TASKBAR_3_EXISTS
|
||||||
|
IDR_EP_TASKBAR_3 RCDATA "..\\build\\Release\\ARM64\\ep_taskbar.3.dll"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if EP_TASKBAR_4_EXISTS
|
||||||
|
IDR_EP_TASKBAR_4 RCDATA "..\\build\\Release\\ARM64\\ep_taskbar.4.dll"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if EP_TASKBAR_5_EXISTS
|
||||||
|
IDR_EP_TASKBAR_5 RCDATA "..\\build\\Release\\ARM64\\ep_taskbar.5.dll"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // English (United States) resources
|
#endif // English (United States) resources
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
//
|
//
|
||||||
#define IDR_EP_AMD64 103
|
#define IDR_EP_AMD64 103
|
||||||
#define IDR_EP_IA32 104
|
#define IDR_EP_IA32 104
|
||||||
|
#define IDR_EP_ARM64 114
|
||||||
#define IDR_EP_DWM 105
|
#define IDR_EP_DWM 105
|
||||||
#define IDR_EP_WEATHER 106
|
#define IDR_EP_WEATHER 106
|
||||||
#define IDR_EP_WEATHER_STUB 107
|
#define IDR_EP_WEATHER_STUB 107
|
||||||
|
@ -72,19 +72,19 @@
|
|||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -17,6 +17,14 @@
|
|||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<VCProjectVersion>16.0</VCProjectVersion>
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
@ -52,6 +60,19 @@
|
|||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
@ -69,25 +90,41 @@
|
|||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
<TargetName>$(ProjectName)</TargetName>
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
@ -154,6 +191,38 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="ep_sm_forwards.h" />
|
<ClInclude Include="ep_sm_forwards.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
#include "ep_weather_provider_google_script.h"
|
#include "ep_weather_provider_google_script.h"
|
||||||
#include "ep_weather_error_html.h"
|
#include "ep_weather_error_html.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
RTL_OSVERSIONINFOW global_rovi;
|
RTL_OSVERSIONINFOW global_rovi;
|
||||||
DWORD32 global_ubr;
|
DWORD32 global_ubr;
|
||||||
SYSTEMTIME stLastUpdate;
|
SYSTEMTIME stLastUpdate;
|
||||||
|
@ -17,6 +17,14 @@
|
|||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<VCProjectVersion>16.0</VCProjectVersion>
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
@ -52,6 +60,19 @@
|
|||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
@ -69,22 +90,36 @@
|
|||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -152,6 +187,39 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<ForcedIncludeFiles>$(SolutionDir)debug.h</ForcedIncludeFiles>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="ep_weather.c" />
|
<ClCompile Include="ep_weather.c" />
|
||||||
<ClCompile Include="ep_weather_factory.c" />
|
<ClCompile Include="ep_weather_factory.c" />
|
||||||
|
@ -17,6 +17,14 @@
|
|||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
</ProjectConfiguration>
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<VCProjectVersion>16.0</VCProjectVersion>
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
@ -52,6 +60,19 @@
|
|||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
@ -69,22 +90,36 @@
|
|||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<OutDir>$(SolutionDir)\build\$(Configuration)\</OutDir>
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -154,22 +189,50 @@
|
|||||||
<ModuleDefinitionFile>ep_weather_host_stub.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>ep_weather_host_stub.def</ModuleDefinitionFile>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>RpcRT4.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<ModuleDefinitionFile>ep_weather_host_stub.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>RpcRT4.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<ModuleDefinitionFile>ep_weather_host_stub.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Midl Include="ep_weather_host.idl" />
|
<Midl Include="ep_weather_host.idl" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="dlldata.c">
|
<ClCompile Include="dlldata.c">
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="ep_weather_host_i.c" />
|
<ClCompile Include="ep_weather_host_i.c" />
|
||||||
<ClCompile Include="ep_weather_host_p.c">
|
<ClCompile Include="ep_weather_host_p.c">
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">REGISTER_PROXY_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit f3928f99f5ec77bf750c8c7ebaec44e44ba34257
|
Subproject commit 2aca28efeb2a3b00c696e1c3e05b44581e118580
|
Loading…
Reference in New Issue
Block a user