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 发生封送处理是因为接口指针从一个进程传递到另一个进程。 这是正常情况。 封送处理过程生成的数据包将在目标进程中取消封送。 封送数据包只能取消封送一次,也可以完全取消封送。 如果接收方成功取消数据包的封存,则作为取消封送过程的一部分,会自动对数据包调用 CoReleaseMarshalData 函数。 如果接收方未或无法取消数据包的封存,则发送方必须对数据包调用 CoReleaseMarshalData 。 |
MSHLFLAGS_TABLESTRONG 值:1 之所以发生封送处理,是因为数据包将存储在全局可访问的表中,该表可以从该表中取消封送一次或多次,或者根本不可以取消封送。 表中是否存在数据包算作对要封送的接口的强引用,这意味着足以使对象保持活动状态。 从表中删除数据包时,表实现者必须对数据包调用 CoReleaseMarshalData 函数。 MSHLFLAGS_TABLESTRONG由 RegisterDragDrop 函数在将窗口注册为放置目标时使用。 无论最终用户在窗口中拖动多少次,这都会使窗口注册为放置目标。 RevokeDragDrop 函数调用 CoReleaseMarshalData。 |
MSHLFLAGS_TABLEWEAK 值: 2 之所以发生封送处理,是因为数据包将存储在全局可访问的表中,该表可以从该表中取消封送一次或多次,或者根本不可以取消封送。 但是,表中存在的数据包充当对要封送的接口的弱引用,这意味着不足以使对象保持活动状态。 从表中删除数据包时,表实现者必须对数据包调用 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 [仅限桌面应用] |
标头 | wtypesbase.h (包括 WTypes.h) |