Partilhar via


MarshalMode Enumeração

Definição

Representa os diferentes modos de marshalling usados para CustomMarshallerAttribute indicar quando um marshaller se aplica.

public enum class MarshalMode
public enum MarshalMode
type MarshalMode = 
Public Enum MarshalMode
Herança
MarshalMode

Campos

Nome Valor Description
Default 0

Todos os modos. Um marshaller especificado com esse modo será usado se não houver um marshaller específico para um determinado modo de uso.

ManagedToUnmanagedIn 1

Por valor e in parâmetros em cenários gerenciados para não gerenciados, como P/Invoke.

ManagedToUnmanagedRef 2

ref parâmetros em cenários gerenciados para não gerenciados, como P/Invoke.

ManagedToUnmanagedOut 3

out parâmetros e valores retornados em cenários gerenciados para não gerenciados, como P/Invoke. O marshaller converte do tipo não gerenciado para o tipo gerenciado.

UnmanagedToManagedIn 4

Por valor e in parâmetros em cenários não gerenciados para gerenciados, como p/invoke reverso.

UnmanagedToManagedRef 5

ref parâmetros em cenários não gerenciados para gerenciados, como Inverso P/Invoke.

UnmanagedToManagedOut 6

out parâmetros e valores retornados em cenários não gerenciados para gerenciados, como Inverso P/Invoke. O marshaller converte do tipo gerenciado para o tipo não gerenciado.

ElementIn 7

Elementos de matrizes passadas com in ou por valor em cenários de interoperabilidade.

ElementRef 8

Elementos de matrizes passados com ref ou passados por valor com cenários InAttribute de interoperabilidade e OutAttribute em cenários de interoperabilidade.

ElementOut 9

Elementos de matrizes passados com out ou passados por valor apenas OutAttribute em cenários de interoperabilidade.

Comentários

Cada nome de membro segue o padrão {CallDirection}{DataFlow}:

  • A direção da chamada (ManagedToUnmanaged ou UnmanagedToManaged) indica qual lado inicia a chamada. ManagedToUnmanaged aplica-se a chamadas P/Invoke. UnmanagedToManaged aplica-se a cenários de P/Invoke reverso ou COM em que o código nativo chama o código gerenciado.
  • O fluxo de dados (Inou RefOut) indica como os dados se movem em relação à chamada. In significa fluxos de dados de chamador para destinatário. Out significa fluxos de dados do destinatário do chamador para o chamador, o que inclui parâmetros out e valores retornados. Ref significa fluxos de dados em ambas as direções.

Por exemplo, ManagedToUnmanagedOut aplica-se quando o código gerenciado chama código não gerenciado (P/Invoke) e os dados fluem de volta para o chamador , isso abrange out parâmetros e valores retornados. O marshaller para esse modo converte do tipo não gerenciado para o tipo gerenciado.

Aplica-se a