Он загружается полностью, как было указано.Особая часть не в том, что вы не можете запустить DLL, а в том, что страницы памяти DLL обычно распределяются через границы процесса.
Если процесс попытается записать страницукопия этой страницы берется, и копия видна только этому процессу (это называется копирование при записи).
DLL-файлы - это PE-файлы (то есть такие же, как драйверы NT или программы Win32).Они загружаются аналогично файлам .exe в файлы с отображением в памяти (MMF или «разделы» на языке ядра).Это означает, что файл DLL поддерживает MMF, представляющий загруженную DLL.Это то же самое, что и при передаче действительного дескриптора файла (не INVALID_HANDLE_VALUE
) в CreateFileMapping, и это также (часть) причина, по которой вы не можете удалить DLL, когда она используется .
Кроме того, есть некоторые библиотеки DLL, которые вообще не содержат кода.Такая DLL может затем быть загружена в процесс, который не был создан для того же процессора.Например, библиотека ресурсов x86 прекрасно загружается в приложение x64.