Partager via


MarshalMode Énumération

Définition

Représente les différents modes de marshaling utilisés pour CustomMarshallerAttribute indiquer quand un marshaller s’applique.

public enum class MarshalMode
public enum MarshalMode
type MarshalMode = 
Public Enum MarshalMode
Héritage
MarshalMode

Champs

Nom Valeur Description
Default 0

Tous les modes. Un marshaller spécifié avec ce mode sera utilisé s’il n’existe aucun marshaller spécifique pour un mode d’utilisation donné.

ManagedToUnmanagedIn 1

Par valeur et in paramètres dans les scénarios managés à non managés, tels que P/Invoke.

ManagedToUnmanagedRef 2

ref paramètres dans des scénarios managés à non managés, tels que P/Invoke.

ManagedToUnmanagedOut 3

out paramètres et valeurs de retour dans des scénarios managés à non managés, tels que P/Invoke. Le marshaller convertit du type non managé en type managé.

UnmanagedToManagedIn 4

Par valeur et in paramètres dans des scénarios non managés à managés, tels que P/Invoke inversés.

UnmanagedToManagedRef 5

ref paramètres dans des scénarios non managés, tels que P/Invoke inversés.

UnmanagedToManagedOut 6

out paramètres et valeurs de retour dans des scénarios non managés à managés, tels que P/Invoke inverse. Le marshaller convertit du type managé en type non managé.

ElementIn 7

Éléments des tableaux passés avec in ou par valeur dans les scénarios d’interopérabilité.

ElementRef 8

Éléments des tableaux passés avec ref ou transmis par valeur à la fois InAttribute et OutAttribute dans les scénarios d’interopérabilité.

ElementOut 9

Éléments des tableaux passés avec out ou transmis par valeur uniquement OutAttribute dans les scénarios d’interopérabilité.

Remarques

Chaque nom de membre suit le modèle {CallDirection}{DataFlow}:

  • Le sens de l’appel (ManagedToUnmanaged ou UnmanagedToManaged) indique quel côté lance l’appel. ManagedToUnmanaged s’applique aux appels P/Invoke. UnmanagedToManaged s’applique aux scénarios P/Invoke inverses ou COM dans lesquels le code natif appelle du code managé.
  • Le flux de données (In, Outou Ref) indique comment les données se déplacent par rapport à l’appel. In signifie que les flux de données entre l’appelant et l’appelé. Out signifie que les flux de données de l’appelé à l’appelant, qui incluent à la fois out des paramètres et des valeurs de retour. Ref signifie que les flux de données sont dans les deux sens.

Par exemple, ManagedToUnmanagedOut s’applique lorsque le code managé appelle du code non managé (P/Invoke) et que les données revient à l’appelant, ce qui couvre les out paramètres et les valeurs de retour. Le marshaller pour ce mode se convertit du type non managé au type managé.

S’applique à