Маршалинг данных при вызове неуправляемого кода
Для вызова функций, экспортируемых из неуправляемой библиотеки, приложению .NET Framework необходим прототип функции в управляемом коде, представляющий собой неуправляемую функцию. Чтобы создать прототип, разрешающий вызов неуправляемого кода для правильного маршалинга данных, нужно выполнить следующие действия.
Использовать в управляемом коде атрибут DLLImportAttribute для статической функции или статического метода.
Заменить неуправляемые типы данных на управляемые типы данных.
Чтобы создать эквивалентный управляемый прототип, применяя атрибут с соответствующими необязательными полями и заменяя неуправляемые типы данных управляемыми, можно воспользоваться документацией, предоставляемой с неуправляемой функцией. Инструкции по применению атрибута DllImportAttribute см. Использование неуправляемых функций DLL.
Этот раздел содержит примеры, показывающие способы создания прототипов управляемых функций для передачи аргументов в функции и получения значений от функций, экспортируемых из неуправляемых библиотек. В этих примерах также показывается, когда использовать атрибут MarshalAsAttribute и класс Marshal для явного выполнения маршалинга данных.
В этом подразделе
Типы данных вызовов неуправляемого кода
Содержит список управляемых типов данных и соответствующие им неуправляемые типы данных.PinvokeLib.dll
Содержит программный код, определяющий функции библиотеки, предоставленные файлом Pinvoke.dll.Маршалинг строк
Описывает способы передачи строк по значению, по ссылке, в структурах, в классах и в массивах.Маршалинг классов, структур и объединений
Описывает способы передачи различных структур, классов по значению, а также способы передачи объединений со значением и смешанными типами.Маршалинг массивов типов
Описывает способы передачи многомерных целочисленных массивов по значению, а также способы передачи одномерных массивов по ссылке.Другие примеры маршалинга
Описывает вопросы сборки мусора и работы с потоками, влияющие на выполнение маршалинга взаимодействия.
Связанные подразделы
Маршалинг взаимодействия
Описывает маршалинг для COM-взаимодействия и вызовов неуправляемого кода.Поведение маршалинга по умолчанию
Описывает правила, используемые службами маршалинга взаимодействия, для выполнения маршалинга данных.Использование неуправляемых функций DLL
Описывает способ вызова неуправляемых функций DLL с помощью вызова неуправляемого кода.