fix(bridge): skip toàn bộ iZotope trong scan + VST2 load — wrapper 0x7E/FastFail hết dialog
This commit is contained in:
@@ -2094,16 +2094,15 @@ int run_scan_dir(const std::string& dirPath) {
|
|||||||
#ifdef HAVE_VST3SDK
|
#ifdef HAVE_VST3SDK
|
||||||
for (const auto& p : vst3Paths) {
|
for (const auto& p : vst3Paths) {
|
||||||
std::vector<ScanEntry> entries;
|
std::vector<ScanEntry> entries;
|
||||||
// Ozone 11 / Ozone Pro (iZotope) tự __fastfail (c0000409, license/
|
// iZotope VST3 (Ozone 11/Pro, Neutron, RX, Nectar...) — wrapper cần
|
||||||
// anti-tamper) khi load trong --scan — không bị SEH chặn → chết cả
|
// companion core riêng, tự __fastfail (c0000409) hoặc MessageBox
|
||||||
// process → mất TOÀN BỘ dir → FX list rỗng. Không load: emit UNKNOWN
|
// "Fatal Error 0x7E" khi load → không bị SEH chặn → chết cả process →
|
||||||
// (giống skip module lỗi). ponytail: SandboxVst3Host (mỗi module 1
|
// mất TOÀN BỘ dir → FX list rỗng. Không load: emit UNKNOWN (giống skip
|
||||||
// process).
|
// module lỗi). ponytail: SandboxVst3Host (mỗi module 1 process).
|
||||||
{
|
{
|
||||||
std::string low = p;
|
std::string low = p;
|
||||||
for (auto& c : low) c = (char)std::tolower((unsigned char)c);
|
for (auto& c : low) c = (char)std::tolower((unsigned char)c);
|
||||||
if (low.find("ozone 11") != std::string::npos ||
|
if (low.find("izotope") != std::string::npos) {
|
||||||
low.find("ozone pro") != std::string::npos) {
|
|
||||||
emit(p, p.substr(p.find_last_of("/\\") + 1), false, false, "VST3");
|
emit(p, p.substr(p.find_last_of("/\\") + 1), false, false, "VST3");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -2126,6 +2125,16 @@ int run_scan_dir(const std::string& dirPath) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
for (const auto& p : vst2Paths) {
|
for (const auto& p : vst2Paths) {
|
||||||
|
// iZotope VST2 wrapper DLL (iZOzonePro.dll, iZTonalBalanceControlPro.dll,
|
||||||
|
// iZNeutronPro.dll...) LoadLibrary companion core theo cơ chế riêng,
|
||||||
|
// không theo PATH → iZotope SDK tự hiện MessageBox "Fatal Error 0x7E"
|
||||||
|
// khi scan/load. Cũng là wrapper trùng VST3 cùng tên → bỏ qua hoàn
|
||||||
|
// toàn (user dùng bản VST3).
|
||||||
|
{
|
||||||
|
std::string low = p;
|
||||||
|
for (auto& c : low) c = (char)std::tolower((unsigned char)c);
|
||||||
|
if (low.find("izotope") != std::string::npos) continue;
|
||||||
|
}
|
||||||
std::string name = p.substr(p.find_last_of("/\\") + 1);
|
std::string name = p.substr(p.find_last_of("/\\") + 1);
|
||||||
emit(p, name, false, true, "VST2");
|
emit(p, name, false, true, "VST2");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -306,7 +306,16 @@ bool Vst2Instrument::loadPlugin(const std::string& path, double sampleRate) {
|
|||||||
// iZotope VST2 wrapper DLL (iZOzonePro.dll...) LoadLibrary companion core
|
// iZotope VST2 wrapper DLL (iZOzonePro.dll...) LoadLibrary companion core
|
||||||
// DLL (iZOzone11Core.dll) ở C:\Program Files\iZotope\<Product>\Cores —
|
// DLL (iZOzone11Core.dll) ở C:\Program Files\iZotope\<Product>\Cores —
|
||||||
// không cạnh wrapper → iZotope SDK tự hiện MessageBox "Fatal Error 0x7E".
|
// không cạnh wrapper → iZotope SDK tự hiện MessageBox "Fatal Error 0x7E".
|
||||||
// Append Cores dirs vào PATH trước khi LoadLibraryA.
|
// vstAddDllSearchPath chỉ giúp loader search PATH; iZotope wrapper dùng cơ
|
||||||
|
// chế riêng → vẫn dialog. Bỏ qua hoàn toàn (wrapper trùng VST3 cùng tên).
|
||||||
|
{
|
||||||
|
std::string low = path;
|
||||||
|
for (auto& c : low) c = (char)std::tolower((unsigned char)c);
|
||||||
|
if (low.find("izotope") != std::string::npos) {
|
||||||
|
std::cerr << "[Vst2Instrument] skip (iZotope wrapper): " << path << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
vstAddDllSearchPath(vstDllSearchExtras());
|
vstAddDllSearchPath(vstDllSearchExtras());
|
||||||
HMODULE h = LoadLibraryA(path.c_str());
|
HMODULE h = LoadLibraryA(path.c_str());
|
||||||
if (!h) {
|
if (!h) {
|
||||||
|
|||||||
Reference in New Issue
Block a user