Énumération MSHLFLAGS (wtypesbase.h)

Spécifie la raison pour laquelle le marshaling doit être effectué.

Syntax

typedef enum tagMSHLFLAGS {
  MSHLFLAGS_NORMAL = 0,
  MSHLFLAGS_TABLESTRONG = 1,
  MSHLFLAGS_TABLEWEAK = 2,
  MSHLFLAGS_NOPING = 4,
  MSHLFLAGS_RESERVED1 = 8,
  MSHLFLAGS_RESERVED2 = 16,
  MSHLFLAGS_RESERVED3 = 32,
  MSHLFLAGS_RESERVED4 = 64
} MSHLFLAGS;

Constantes

 
MSHLFLAGS_NORMAL
Valeur : 0
Le marshaling se produit parce qu’un pointeur d’interface est passé d’un processus à un autre. C’est le cas normal. Le paquet de données produit par le processus de marshaling sera démarshalé dans le processus de destination. Le paquet de données marshalé peut être démarshalé une seule fois, ou pas du tout. Si le récepteur démarshale correctement le paquet de données, la fonction CoReleaseMarshalData est automatiquement appelée sur le paquet de données dans le cadre du processus de démarshalation. Si le récepteur ne parvient pas ou ne peut pas démarshaler le paquet de données, l’expéditeur doit appeler CoReleaseMarshalData sur le paquet de données.
MSHLFLAGS_TABLESTRONG
Valeur : 1
Le marshaling se produit parce que le paquet de données doit être stocké dans une table accessible globalement à partir de laquelle il peut être démarshalé une ou plusieurs fois, ou pas du tout. La présence du paquet de données dans la table est une référence forte à l’interface marshalée, ce qui signifie qu’il suffit de maintenir l’objet actif. Lorsque le paquet de données est supprimé de la table, l’implémenteur de table doit appeler la fonction CoReleaseMarshalData sur le paquet de données.

MSHLFLAGS_TABLESTRONG est utilisé par la fonction RegisterDragDrop lors de l’inscription d’une fenêtre en tant que cible de déplacement. Cela maintient la fenêtre inscrite en tant que cible de déplacement, quel que soit le nombre de fois que l’utilisateur final fait glisser sur la fenêtre. La fonction RevokeDragDrop appelle CoReleaseMarshalData.
MSHLFLAGS_TABLEWEAK
Valeur : 2
Le marshaling se produit parce que le paquet de données doit être stocké dans une table accessible globalement à partir de laquelle il peut être démarshalé une ou plusieurs fois, ou pas du tout. Toutefois, la présence du paquet de données dans la table agit comme une référence faible à l’interface marshalée, ce qui signifie qu’il n’est pas suffisant pour maintenir l’objet actif. Lorsque le paquet de données est supprimé de la table, l’implémenteur de table doit appeler la fonction CoReleaseMarshalData sur le paquet de données.

MSHLFLAGS_TABLEWEAK est généralement utilisé lors de l’inscription d’un objet dans la table d’objets en cours d’exécution (ROT). Cela empêche l’entrée de l’objet dans le ROT de maintenir l’objet actif en l’absence d’autres connexions. Pour plus d’informations, consultez IRunningObjectTable::Register .
MSHLFLAGS_NOPING
Valeur : 4
L’ajout de cet indicateur à un marshaling d’objet d’origine (par opposition au marshaling d’un proxy) désactive le protocole ping pour cet objet.
MSHLFLAGS_RESERVED1
Valeur : 8
MSHLFLAGS_RESERVED2
Valeur : 16
MSHLFLAGS_RESERVED3
Valeur : 32
MSHLFLAGS_RESERVED4
Valeur : 64

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête wtypesbase.h (inclure WTypes.h)

Voir aussi

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal