Другие примеры маршалинга

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

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

Тип элемента

Описание

Образец

Указатель на функцию

Передает делегат неуправляемой функции, ожидающей указателя функции.

Обратный вызов

HandleRef

Использует структуру HandleRef для предотвращения сборки мусора.

HandleRef

LPARAM

Использует структуру GCHandle для передачи управляемого объекта в неуправляемую функцию, ожидающую тип LPARAM.

GCHandle

Однопотоковое подразделение/многопотоковое подразделение апартамент.

Изменяет параметры подразделений по умолчанию, если неуправляемая функция вызывает CoInitialize.

ActiveDir

void*

Вызывает функцию с заданным параметром void*.

Void

См. также

Основные понятия

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

Маршалинг строк

Маршалинг классов, структур и объединений

Маршалинг массивов типов

Другие ресурсы

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