Использование неуправляемых функций DLL
Обновлен: Ноябрь 2007
Вызов неуправляемого кода — это служба, которая позволяет управляемому программному коду вызывать неуправляемые функции, реализованные в библиотеках динамической компоновки (DLL), например, функции библиотек Win32 API. Вызов неуправляемого кода обнаруживает и вызывает экспортируемую функцию и при необходимости выполняет маршалинг ее аргументов (целых чисел, строк, массивов, структур и так далее) через границы взаимодействия. Дополнительные сведения об этой службе см. в разделе Подробное рассмотрение вызова неуправляемого кода.
В этом разделе представлено несколько задач, связанных с использованием неуправляемых функций DLL. Кроме следующих задач, имеются общие аспекты и ссылка, указывающая на дополнительные сведения и примеры.
Применение экспортированных функций DLL
Идентифицируйте функции в DLL.
Как минимум, должно быть указано имя функции и имя библиотеки DLL, содержащей функцию.
Создайте класс для хранения функций DLL.
Можно использовать существующий класс, создать отдельный класс для каждой неуправляемой функции либо создать один класс для всего набора связанных неуправляемых функций.
Создайте прототипы в управляемом коде.
[Visual Basic] Используйте инструкцию Declare с ключевыми словами Function и Lib. В некоторых редких случаях можно использовать класс DllImportAttribute с ключевыми словами Shared Function. Эти случаи объясняются далее в этом разделе.
[C#] Чтобы идентифицировать DLL и функцию, используйте класс DllImportAttribute. Пометьте метод модификаторами static и extern.
[C++] Чтобы идентифицировать DLL и функцию, используйте класс DllImportAttribute. Пометьте метод или функцию оболочки модификатором extern "C".
-
Вызовите метод созданного управляемого класса так же, как любой другой управляемый метод. Особыми случаями являются передача структур и реализация функций обратного вызова.
Примеры, в которых показывается способ создания объявлений на основе .NET, предназначенных для использования с вызовом неуправляемого кода, см. в разделе Маршалинг данных с вызовом неуправляемого кода.
См. также
Основные понятия
Подробный обзор вызова неуправляемого кода
Примеры вызовов неуправляемого кода