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


MarshalMode Перечисление

Определение

Представляет различные режимы маршаллинга, используемые для CustomMarshallerAttribute указания того, когда применяется маршаллизатор.

public enum class MarshalMode
public enum MarshalMode
type MarshalMode = 
Public Enum MarshalMode
Наследование
MarshalMode

Поля

Имя Значение Описание
Default 0

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

ManagedToUnmanagedIn 1

По значению и in параметрам в управляемых неуправляемых сценариях, таких как P/Invoke.

ManagedToUnmanagedRef 2

ref параметры в управляемых сценариях, таких как P/Invoke.

ManagedToUnmanagedOut 3

out параметры и возвращаемые значения в управляемых неуправляемых сценариях, таких как P/Invoke. Маршаллизатор преобразуется из неуправляемого типа в управляемый тип.

UnmanagedToManagedIn 4

По значению и in параметрам в неуправляемых сценариях, таких как обратный P/Invoke.

UnmanagedToManagedRef 5

ref параметры в неуправляемых сценариях, таких как обратный P/Invoke.

UnmanagedToManagedOut 6

out параметры и возвращаемые значения в неуправляемых сценариях, таких как обратный P/Invoke. Маршаллизатор преобразуется из управляемого типа в неуправляемый тип.

ElementIn 7

Элементы массивов, передаваемые с in или по значению в сценариях взаимодействия.

ElementRef 8

Элементы массивов, передаваемые или передаваемые по значению, с ref обоими InAttributeOutAttribute и в сценариях взаимодействия.

ElementOut 9

Элементы массивов, переданные или out передаваемые по значению, только OutAttribute в сценариях взаимодействия.

Комментарии

Каждое имя члена следует шаблону {CallDirection}{DataFlow}:

  • Направление вызова (ManagedToUnmanaged или UnmanagedToManaged) указывает, какая сторона инициирует вызов. ManagedToUnmanaged применяется к вызовам P/Invoke. UnmanagedToManaged Применяется к сценариям обратного P/Invoke или COM, в которых машинный код вызывает управляемый код.
  • Поток данных (InилиOutRef) указывает, как данные перемещаются относительно вызова. In означает потоки данных от вызываемого абонента. Out означает потоки данных от вызываемого абонента, который включает как параметры, так out и возвращаемые значения. Ref означает потоки данных в обоих направлениях.

Например, применяется, ManagedToUnmanagedOut когда управляемый код вызывает неуправляемый код (P/Invoke) и потоки данных обратно вызывающей стороне— это охватывает out параметры и возвращаемые значения. Маршализатор для этого режима преобразуется из неуправляемого типа в управляемый тип.

Применяется к