From 27e5ef0214a3c6a48741d9c13a727c5f77a6ad05 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Sun, 9 Feb 2025 12:54:01 +0100 Subject: [PATCH] Support Nsi device --- src/windows-emulator/io_device.cpp | 1 + src/windows-emulator/syscalls.cpp | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/windows-emulator/io_device.cpp b/src/windows-emulator/io_device.cpp index 2cc9e87a..e96329a0 100644 --- a/src/windows-emulator/io_device.cpp +++ b/src/windows-emulator/io_device.cpp @@ -16,6 +16,7 @@ namespace std::unique_ptr create_device(const std::u16string_view device) { if (device == u"CNG" // + || device == u"Nsi" // || device == u"KsecDD" // || device == u"PcwDrv" // || device == u"DeviceApi\\CMApi" // diff --git a/src/windows-emulator/syscalls.cpp b/src/windows-emulator/syscalls.cpp index c27f5c98..bc2e25fe 100644 --- a/src/windows-emulator/syscalls.cpp +++ b/src/windows-emulator/syscalls.cpp @@ -2918,9 +2918,22 @@ namespace return filename.substr(device_prefix.size()); } - if (filename.starts_with(u"\\??\\MountPointManager")) + constexpr std::u16string_view unc_prefix = u"\\??\\"; + if (!filename.starts_with(unc_prefix)) { - return u"MountPointManager"; + return std::nullopt; + } + + const auto path = filename.substr(unc_prefix.size()); + + const std::set> devices{ + u"Nsi", + u"MountPointManager", + }; + + if (devices.contains(path)) + { + return path; } return std::nullopt;