Использование явного вызова Pinvoke в C++ (атрибут DllImport)
Платформа .NET Framework предоставляет явные функции вызова платформы (или PInvoke) с Dllimport
атрибутом, чтобы разрешить управляемым приложениям вызывать неуправляемые функции, упакованные в библиотеки DLL. Явный PInvoke необходим для ситуаций, когда неуправляемые API упаковываются в виде БИБЛИОТЕК DLL и исходный код недоступен. Вызов функций Win32, например, требует PInvoke. В противном случае используйте неявный P{Invoke; дополнительные сведения см. в разделе "Использование взаимодействия C++" (неявное PInvoke).
PInvoke работает с помощью DllImportAttribute. Этот атрибут, который принимает имя библиотеки DLL в качестве первого аргумента, помещается перед объявлением функции для каждой точки входа DLL, которая будет использоваться. Сигнатура функции должна соответствовать имени функции, экспортируемой библиотекой DLL (но преобразование некоторых типов может выполняться неявно путем определения DllImport
объявлений с точки зрения управляемых типов).
Результатом является управляемая точка входа для каждой собственной функции DLL, содержащей необходимый код перехода (или thunk) и простые преобразования данных. Затем управляемые функции могут вызывать библиотеку DLL через эти точки входа. Код, вставленный в модуль в результате PInvoke, полностью управляется.
В этом разделе
Практическое руководство. Вызов неуправляемых библиотек DLL из управляемого кода с помощью PInvoke
Практическое руководство. Маршалинг структур с помощью PInvoke
Практическое руководство. Маршалинг массивов с помощью PInvoke
Практическое руководство. Указатели функций маршалинга, использующие PInvoke
Практическое руководство. Маршалинг внедренных указателей с помощью PInvoke