MarshalMode Enumeração

Definição

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

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

Campos

Name Valor Description
Default 0

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

ManagedToUnmanagedIn 1

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

ManagedToUnmanagedRef 2

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

ManagedToUnmanagedOut 3

out parâmetros e valores de retorno em cenários de gestão para não gerida, como P/Invoke. O marshaller converte do tipo não gerido para o tipo gerido.

UnmanagedToManagedIn 4

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

UnmanagedToManagedRef 5

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

UnmanagedToManagedOut 6

out parâmetros e valores de retorno em cenários não geridos para geridos, como Reverse P/Invoke. O marshaller converte do tipo gerido para o tipo não gerido.

ElementIn 7

Elementos de arrays passados com in ou por valor em cenários de interoperabilidade.

ElementRef 8

Elementos dos arrays passavam com ref ou passavam por valor com ambos InAttribute e OutAttribute em cenários de interoperabilidade.

ElementOut 9

Elementos dos arrays passavam com out ou passavam por valor com apenas OutAttribute em cenários de interoperabilidade.

Observações

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

  • A direção da chamada (ManagedToUnmanaged ou UnmanagedToManaged) indica que lado inicia a chamada. ManagedToUnmanaged Aplica-se a chamadas P/Invoke. UnmanagedToManaged aplica-se a cenários Reverse P/Invoke ou COM onde código nativo chama para código gerido.
  • O fluxo de dados (In, Out, ou Ref) indica como os dados se movem em relação à chamada. In significa que os dados fluem do chamador para o chamado. Out significa que os dados fluem do chamado para o chamador, incluindo tanto out parâmetros como valores de retorno. Ref significa que os dados fluem em ambas as direções.

Por exemplo, ManagedToUnmanagedOut aplica-se quando o código gerido chama código não gerido (P/Invoke) e os dados regressam ao chamador — isto cobre out parâmetros e valores de retorno. O marshaller deste modo converte do tipo não gerido para o tipo gerido.

Aplica-se a