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


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

При вызове неуправляемого кода происходит копирование строковых параметров, а затем, при необходимости, выполняется их преобразование из формата .NET Framework (Юникод) в неуправляемый формат (ANSI). В силу того, что управляемые строки являются неизменяемыми, при вызове неуправляемого кода они не копируются из неуправляемой памяти в управляемую во время возврата из функции.

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

Строка

Описание

Пример

По значению.

Передача строк как параметров In.

MsgBox

Как результат.

Возврат строк из неуправляемого кода.

Строки

По ссылке.

Передача строк как параметров In/Out с помощью StringBuilder.

Буферы

В структуре по значению.

Передача строк в структуре как параметра In.

Структуры

В структуре по ссылке (char*).

Передача строк в структуре, являющейся параметром In/Out. Неуправляемая функция ожидает указатель на символьный буфер, размер буфера является членом структуры.

Строки

В структуре по ссылке (char[]).

Передача строк в структуре, являющейся параметром In/Out. Неуправляемая функция ожидает вложенный символьный буфер.

OSInfo

В классе по значению (char*).

Передача строк в классе (класс представляет собой параметр In/Out). Неуправляемая функция ожидает указатель на символьный буфер.

OpenFileDlg

В классе по значению (char[]).

Передача строк в классе (класс представляет собой параметр In/Out). Неуправляемая функция ожидает вложенный символьный буфер.

OSInfo

Как массив строк по значению.

Создание массива строк, передаваемого по значению.

массивов,

Как массив структур, содержащий строки по значению.

Создание массива структур, содержащего строки. Массив передается по значению.

массивов,

См. также

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

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

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

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

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

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

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