共用方式為


wtypesbase.h (MSHLFLAGS 列舉)

指定封送處理為何要完成。

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;

常數

 
MSHLFLAGS_NORMAL
值: 0
因為介面指標正從一個進程傳遞至另一個進程,所以發生封送處理。 這是一般情況。 封送處理進程所產生的資料封包將會在目的地進程中取消封送處理。 封送處理的資料封包可以取消封送處理一次,或完全無法封存。 如果接收者成功取消封包, CoReleaseMarshalData 函式會自動在資料封包上呼叫,作為未封包程式的一部分。 如果接收者沒有或無法取消封包封包,傳送者必須在資料封包上呼叫 CoReleaseMarshalData
MSHLFLAGS_TABLESTRONG
值: 1
因為資料封包要儲存在可全域存取的資料表中,因此封送處理可能會取消封送處理一或多次,或完全不封存。 資料表中的資料封包存在計數為要封送處理之介面的強式參考,這表示足以讓物件保持運作。 從資料表中移除資料封包時,資料表實作者必須在資料封包上呼叫 CoReleaseMarshalData 函 式。

當將視窗註冊為置放目標時, RegisterDragDrop 函式會使用MSHLFLAGS_TABLESTRONG。 這可讓視窗保持註冊為置放目標,無論終端使用者拖曳視窗的次數為何。 RevokeDragDrop函式會呼叫CoReleaseMarshalData
MSHLFLAGS_TABLEWEAK
值: 2
因為資料封包要儲存在可全域存取的資料表中,因此封送處理可能會取消封送處理一或多次,或完全不封存。 不過,資料表中資料封包的存在可做為要封送處理的介面弱式參考,這表示無法讓物件保持運作。 從資料表中移除資料封包時,資料表實作者必須在資料封包上呼叫 CoReleaseMarshalData 函 式。

在執行中的物件資料表中註冊物件時,通常會使用MSHLFLAGS_TABLEWEAK (ROT) 。 這可防止 ROT 中的物件專案在沒有任何其他連接的情況下讓物件保持運作。 如需詳細資訊,請參閱 IRunningObjectTable::Register
MSHLFLAGS_NOPING
值: 4
將此旗標新增至原始物件封送處理 (,而不是封送處理 Proxy) 將會停用該物件的 ping 通訊協定。
MSHLFLAGS_RESERVED1
值: 8
MSHLFLAGS_RESERVED2
值: 16
MSHLFLAGS_RESERVED3
值: 32
MSHLFLAGS_RESERVED4
值: 64

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
標頭 wtypesbase.h (包含 WTypes.h)

另請參閱

CoGetStandardMarshal

CoMarshalInterface

ICallFrame

IMarshal