MSHLFLAGS-Enumeration (wtypesbase.h)

Gibt an, warum das Marshalling durchgeführt werden soll.

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;

Konstanten

 
MSHLFLAGS_NORMAL
Wert: 0
Das Marshallen erfolgt, weil ein Schnittstellenzeiger von einem Prozess an einen anderen übergeben wird. Dies ist der Normalfall. Das vom Marshallvorgang erzeugte Datenpaket wird im Zielprozess entmarshaliert. Das gemarselte Datenpaket kann nur einmal oder gar nicht entmarsmet werden. Wenn der Empfänger das Datenpaket erfolgreich entmarshaliert, wird die CoReleaseMarshalData-Funktion im Rahmen des Entmarsshalings automatisch für das Datenpaket aufgerufen. Wenn der Empfänger das Datenpaket nicht entmarsen kann oder kann, muss der Absender CoReleaseMarshalData für das Datenpaket aufrufen.
MSHLFLAGS_TABLESTRONG
Wert: 1
Das Marshalling erfolgt, weil das Datenpaket in einer global zugänglichen Tabelle gespeichert werden soll, aus der es ein oder mehrere Male oder gar nicht getrennt werden kann. Das Vorhandensein des Datenpakets in der Tabelle gilt als starker Verweis auf die zu marshallende Schnittstelle, was bedeutet, dass es ausreicht, um das Objekt am Leben zu halten. Wenn das Datenpaket aus der Tabelle entfernt wird, muss der Tabellenimplementierer die CoReleaseMarshalData-Funktion für das Datenpaket aufrufen.

MSHLFLAGS_TABLESTRONG wird von der RegisterDragDrop-Funktion verwendet, wenn ein Fenster als Ablageziel registriert wird. Dadurch bleibt das Fenster als Ablageziel registriert, unabhängig davon, wie oft der Endbenutzer über das Fenster zieht. Die RevokeDragDrop-Funktion ruft CoReleaseMarshalData auf.
MSHLFLAGS_TABLEWEAK
Wert: 2
Das Marshalling erfolgt, weil das Datenpaket in einer global zugänglichen Tabelle gespeichert werden soll, aus der es ein oder mehrere Male oder gar nicht getrennt werden kann. Das Vorhandensein des Datenpakets in der Tabelle fungiert jedoch als schwacher Verweis auf die zu marshallende Schnittstelle, was bedeutet, dass es nicht ausreicht, das Objekt am Leben zu halten. Wenn das Datenpaket aus der Tabelle entfernt wird, muss der Tabellenimplementierer die CoReleaseMarshalData-Funktion für das Datenpaket aufrufen.

MSHLFLAGS_TABLEWEAK wird in der Regel beim Registrieren eines Objekts in der ausgeführten Objekttabelle (ROT) verwendet. Dadurch wird verhindert, dass der Eintrag des Objekts in die ROT das Objekt ohne andere Verbindungen am Leben hält. Weitere Informationen finden Sie unter IRunningObjectTable::Register .
MSHLFLAGS_NOPING
Wert: 4
Durch das Hinzufügen dieses Flags zu einem ursprünglichen Objekt marshalling (im Gegensatz zum Marshallen eines Proxys) wird das Pingprotokoll für dieses Objekt deaktiviert.
MSHLFLAGS_RESERVED1
Wert: 8
MSHLFLAGS_RESERVED2
Wert: 16
MSHLFLAGS_RESERVED3
Wert: 32
MSHLFLAGS_RESERVED4
Wert: 64

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile wtypesbase.h (einschließen von WTypes.h)

Weitere Informationen

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal