IMAPISupport::MakeInvalid

适用于:Outlook 2013 | Outlook 2016

将对象标记为不可用。

HRESULT MakeInvalid(
ULONG ulFlags,
LPVOID lpObject,
ULONG ulRefCount,
ULONG cMethods
);

参数

ulFlags

保留;必须为零。

lpObject

[in]指向要失效的 对象的指针。 对象的 接口必须派生自 IUnknown

ulRefCount

[in]对象的当前引用计数。

cMethods

[in]对象的 vtable 中方法的计数。

返回值

S_OK

对象已成功标记为不可用。

备注

为所有支持对象实现 IMAPISupport::MakeInvalid 方法。 要失效的对象必须派生自 IUnknown 接口或派生自 IUnknown 的接口。

MakeInvalid 通过将对象的 vtable 替换为大小相似的存根 vtable,将对象标记为不可用, IUnknown::AddRefIUnknown::Release 方法按预期执行。 但是,任何其他方法都失败,MAPI_E_INVALID_OBJECT返回值。

给调用方的说明

服务提供商和消息服务通常在关闭时调用 MakeInvalid 。 但是,可以随时调用 MakeInvalid 。 例如,如果客户端释放对象而不释放其某些子对象,则可以立即调用 MakeInvalid 来释放这些子对象。

必须拥有尝试使该对象失效的对象。 它的长度必须至少为 16 个字节,并且其 vtable 中至少有三种方法。

可以调用 MakeInvalid ,然后执行任何关闭工作,例如放弃关联的数据结构,这通常是在释放对象期间完成的。 支持对象的代码无需保留在内存中,因为 MAPI 通过调用 MAPIFreeBuffer 释放内存,然后释放对象。 可以释放资源,调用 MakeInvalid,然后忽略无效的对象。

另请参阅

MAPIAllocateBuffer

IMAPISupport : IUnknown