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 を含む) |