Share via


MSHLFLAGS 列挙 (wtypesbase.h)

マーシャリングを実行する理由を指定します。

構文

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;

定数

 
MSHLFLAGS_NORMAL
値: 0
マーシャリングが行われているのは、あるプロセスから別のプロセスにインターフェイス ポインターが渡されているためです。 これは通常のケースです。 マーシャリング プロセスによって生成されたデータ パケットは、宛先プロセスでマーシャリング解除されます。 マーシャリングされたデータ パケットは、1 回だけマーシャリングを解除することも、まったく行わないこともあります。 受信側がデータ パケットのマーシャリングを正常に解除した場合、 CoReleaseMarshalData 関数は、マーシャリング解除プロセスの一環としてデータ パケットに対して自動的に呼び出されます。 受信側がデータ パケットのマーシャリングを解除できない場合、送信側はデータ パケットに対して CoReleaseMarshalData を呼び出す必要があります。
MSHLFLAGS_TABLESTRONG
値: 1
マーシャリングが行われているのは、データ パケットがグローバルにアクセス可能なテーブルに格納され、そこから 1 回以上マーシャリングを解除するか、まったくない場合があるためです。 テーブル内にデータ パケットが存在すると、マーシャリングされるインターフェイスへの厳密な参照としてカウントされます。つまり、オブジェクトを維持するだけで十分です。 データ パケットがテーブルから削除されると、テーブル実装者はデータ パケットに対して CoReleaseMarshalData 関数を呼び出す必要があります。

MSHLFLAGS_TABLESTRONGは、ウィンドウをドロップ ターゲットとして登録するときに RegisterDragDrop 関数によって使用されます。 これにより、エンド ユーザーがウィンドウを何度ドラッグしても、ウィンドウはドロップ ターゲットとして登録されます。 RevokeDragDrop 関数は、CoReleaseMarshalData を呼び出します。
MSHLFLAGS_TABLEWEAK
値: 2
マーシャリングが行われているのは、データ パケットがグローバルにアクセス可能なテーブルに格納され、そこから 1 回以上マーシャリングを解除するか、まったくない場合があるためです。 ただし、テーブル内にデータ パケットが存在することは、マーシャリングされるインターフェイスへの弱い参照として機能します。つまり、オブジェクトを維持するだけでは不十分です。 データ パケットがテーブルから削除されると、テーブル実装者はデータ パケットに対して CoReleaseMarshalData 関数を呼び出す必要があります。

MSHLFLAGS_TABLEWEAKは、通常、実行中のオブジェクト テーブル (ROT) にオブジェクトを登録するときに使用されます。 これにより、ROT 内のオブジェクトのエントリが、他の接続がない場合にオブジェクトを維持できなくなります。 詳細については、「 IRunningObjectTable::Register 」を参照してください。
MSHLFLAGS_NOPING
値: 4
このフラグを元のオブジェクトマーシャリング (プロキシのマーシャリングではなく) に追加すると、そのオブジェクトの ping プロトコルが無効になります。
MSHLFLAGS_RESERVED1
値: 8
MSHLFLAGS_RESERVED2
値: 16
MSHLFLAGS_RESERVED3
値: 32
MSHLFLAGS_RESERVED4
値: 64

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header wtypesbase.h (WTypes.h を含む)

関連項目

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal