マーシャリングを実行する理由を指定します。
構文
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 を含む) |