IMAPISupport::OpenEntry

适用于:Outlook 2013 | Outlook 2016

打开对象并返回接口指针以供进一步访问。

HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulOpenFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);

参数

cbEntryID

[in] lpEntryID 参数指向的条目标识符中的字节计数。

lpEntryID

[in]指向要打开的 对象的条目标识符的指针。

lpInterface

[in]指向接口标识符的指针 (IID) ,表示用于访问对象的接口。 传递 NULL 会导致返回对象的标准接口。 例如,如果要打开的对象是消息,则标准接口为 IMessage;对于文件夹,它是 IMAPIFolder。 通讯簿对象的标准接口是通讯组列表的 IDistList 和消息用户的 IMailUser

ulOpenFlags

[in]控制对象打开方式的标志的位掩码。 可以设置以下标志:

MAPI_BEST_ACCESS

请求使用调用方允许的最大网络权限打开对象。 例如,如果调用方具有读/写权限,则应以读/写的形式打开对象;如果调用方具有只读权限,则应将对象打开为只读。

MAPI_DEFERRED_ERRORS

允许 OpenEntry 在调用方完全访问对象之前成功返回。 如果对象不可访问,则进行后续对象调用可能会导致错误。

MAPI_MODIFY

请求读/写权限。 默认情况下,对象以只读方式打开,调用方不应假定已授予读/写权限。

lpulObjType

[out]指向打开的对象类型的指针。

lppUnk

[out]指向打开对象的指针的指针。

返回值

S_OK

已成功打开对象。

MAPI_E_NO_ACCESS

尝试修改只读对象,或尝试访问用户权限不足的对象。

MAPI_E_NOT_FOUND

没有与 在 lpEntryID 参数中传递的条目标识符关联的 对象。

MAPI_E_UNKNOWN_ENTRYID

在 lpEntryID 参数中传递的条目标识符采用无法识别的格式。 如果包含对象的通讯簿提供程序未打开,则通常返回此值。

备注

为所有服务提供程序支持对象实现 IMAPISupport::OpenEntry 方法。 服务提供程序调用 IMAPISupport::OpenEntry 以检索指向可用于访问特定对象的接口的指针。

给调用方的说明

仅当不知道要打开的对象类型时,才调用 IMAPISupport::OpenEntry 。 如果知道正在打开文件夹或邮件,请改为调用 IMsgStore::OpenEntry 。 如果知道要打开通讯簿容器、消息用户或通讯组列表,请调用 IAddrBook::OpenEntry。 这些更具体的方法比 IMAPISupport::OpenEntry 更快。

IMAPISupport::OpenEntry 将所有对象打开为只读,除非你在 ulFlags 参数中设置了MAPI_MODIFY或MAPI_BEST_ACCESS标志并且你的权限已足够。 设置其中一个标志并不能保证特定类型的访问;授予的权限取决于访问级别、对象和拥有 对象的服务提供程序。 若要确定打开的对象的访问级别, 请检索其PR_ACCESS_LEVEL (PidTagAccessLevel) 属性。

检查 lpulObjType 参数中返回的值,以确定返回的对象类型是否是预期的。 如果对象类型符合预期,请将 lppUnk 参数中的指针强制转换为相应类型的指针。 例如,如果要打开文件夹,请将 lppUnk 强制转换为类型为 LPMAPIFOLDER 的指针。

另请参阅

IMAPISupport : IUnknown