Подробный обзор вызова неуправляемого кода
Для нахождения экспортируемых функций и маршалинга их аргументов во время выполнения вызов неуправляемого кода использует метаданные. Этот процесс показан на следующем рисунке.
Вызов неуправляемой функции DLL из вызова неуправляемого кода
При вызове неуправляемой функции вызов неуправляемого кода выполняет следующую последовательность действий:
Определяет DLL, содержащей функцию.
Загружает DLL в память.
Находит адрес функции в памяти и помещает ее аргументы в стек, осуществив в случае необходимости маршалинг данных.
Примечание Обнаружение и загрузка DLL, а также определение адреса функции в памяти выполняется только при первом вызове функции.
Передает управление неуправляемой функции.
Вызов неуправляемого кода вызывает исключения, создаваемые неуправляемой функцией, для управляемого вызывающего объекта.