Поделиться через


Маршалинг данных при вызове неуправляемого кода

Обновлен: Ноябрь 2007

Для вызова функций, экспортируемых из неуправляемой библиотеки, приложению .NET Framework необходим прототип функции в управляемом коде, представляющий собой неуправляемую функцию. Чтобы создать прототип, разрешающий вызов неуправляемого кода для правильного маршалинга данных, нужно выполнить следующие действия.

  • Использовать в управляемом коде атрибут DLLImportAttribute для статической функции или статического метода.

  • Заменить неуправляемые типы данных на управляемые типы данных.

Чтобы создать эквивалентный управляемый прототип, применяя атрибут с соответствующими необязательными полями и заменяя неуправляемые типы данных управляемыми, можно воспользоваться документацией, предоставляемой с неуправляемой функцией. Инструкции по применению атрибута DllImportAttribute см. Использование неуправляемых функций DLL.

Этот раздел содержит примеры, показывающие способы создания прототипов управляемых функций для передачи аргументов в функции и получения значений от функций, экспортируемых из неуправляемых библиотек. В этих примерах также показывается, когда использовать атрибут MarshalAsAttribute и класс Marshal для явного выполнения маршалинга данных.

В этом подразделе

  • Типы данных вызовов неуправляемого кода
    Содержит список управляемых типов данных и соответствующие им неуправляемые типы данных.

  • PinvokeLib.dll
    Содержит программный код, определяющий функции библиотеки, предоставленные файлом Pinvoke.dll.

  • Маршалинг строк
    Описывает способы передачи строк по значению, по ссылке, в структурах, в классах и в массивах.

  • Маршалинг классов, структур и объединений
    Описывает способы передачи различных структур, классов по значению, а также способы передачи объединений со значением и смешанными типами.

  • Маршалинг массивов типов
    Описывает способы передачи многомерных целочисленных массивов по значению, а также способы передачи одномерных массивов по ссылке.

  • Другие примеры маршалинга
    Описывает вопросы сборки мусора и работы с потоками, влияющие на выполнение маршалинга взаимодействия.

Связанные подразделы