Сообщение Re[4]: Можно ли сделать переключение контекста библиотеки в от 14.11.2020 19:45
Изменено 14.11.2020 19:54 ononim
Re[4]: Можно ли сделать переключение контекста библиотеки в
O>>Строго говоря промапить файл в АП одного процесса дважды двумя вызовами MapViewOfFile в два отображения по разным адресам — не проблема. Проблема в том что LoadLibrary* так не умеют (в отличии от юниксового dlmopen, например).
A>Это если либа без рантайма и не использует глобальных переменных, создаваемых — инициализируемых и размещаемых этим самым рантаймом.
Ась? Причем тут рантайм, речь о том что dlmopen позволяет загружать одну и ту же библиотеку в процесс в изолированных dynamic-linker namespaces', а винда так не умеет.
Но гипотетически можно предположить LoadLibraryEx с флагом DLL_FORCE_UNIQUE_LOAD которая бы загрузила еще одну копию длл в АП с того же файла. И оно бы работало (более того, когда то я своими кривыми руками такого поведения даже добивался от обычной LoadLibraryEx, но это был у меня баг).
A>Это если либа без рантайма и не использует глобальных переменных, создаваемых — инициализируемых и размещаемых этим самым рантаймом.
Ась? Причем тут рантайм, речь о том что dlmopen позволяет загружать одну и ту же библиотеку в процесс в изолированных dynamic-linker namespaces', а винда так не умеет.
Но гипотетически можно предположить LoadLibraryEx с флагом DLL_FORCE_UNIQUE_LOAD которая бы загрузила еще одну копию длл в АП с того же файла. И оно бы работало (более того, когда то я своими кривыми руками такого поведения даже добивался от обычной LoadLibraryEx, но это был у меня баг).
Re[4]: Можно ли сделать переключение контекста библиотеки в
O>>Строго говоря промапить файл в АП одного процесса дважды двумя вызовами MapViewOfFile в два отображения по разным адресам — не проблема. Проблема в том что LoadLibrary* так не умеют (в отличии от юниксового dlmopen, например).
A>Это если либа без рантайма и не использует глобальных переменных, создаваемых — инициализируемых и размещаемых этим самым рантаймом.
Ась? Причем тут рантайм, речь о том что dlmopen позволяет загружать одну и ту же библиотеку в процесс в изолированных dynamic-linker namespaces', а винда так не умеет.
Но гипотетически можно предположить LoadLibraryEx с флагом DLL_FORCE_UNIQUE_LOAD которая бы загрузила еще одну копию длл в АП с того же файла, но по новому адресу. И оно бы работало (более того, когда то я своими кривыми руками такого поведения даже добивался от обычной LoadLibraryEx, но это был у меня баг).
A>Это если либа без рантайма и не использует глобальных переменных, создаваемых — инициализируемых и размещаемых этим самым рантаймом.
Ась? Причем тут рантайм, речь о том что dlmopen позволяет загружать одну и ту же библиотеку в процесс в изолированных dynamic-linker namespaces', а винда так не умеет.
Но гипотетически можно предположить LoadLibraryEx с флагом DLL_FORCE_UNIQUE_LOAD которая бы загрузила еще одну копию длл в АП с того же файла, но по новому адресу. И оно бы работало (более того, когда то я своими кривыми руками такого поведения даже добивался от обычной LoadLibraryEx, но это был у меня баг).