IMAPIContainer::OpenEntry
适用于:Outlook 2013 | Outlook 2016
在容器中打开对象,返回接口指针以供进一步访问。
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
参数
cbEntryID
[in] lpEntryID 参数指向的条目标识符中的字节计数。
lpEntryID
[in]指向要打开的 对象的条目标识符的指针。 如果 lpEntryID 设置为 NULL,则会打开容器层次结构中的顶级容器。
lpInterface
[in]指向接口标识符的指针 (IID) ,表示用于访问对象的接口。 传递 NULL 会导致返回对象的标准接口的标识符。 对于消息,标准接口为 IMAPIMessageSite: IUnknown;对于文件夹,它是 IMAPIFolder:IMAPIContainer。 通讯簿对象的标准接口是用于通讯组列表的 IDistList : IMAPIContainer 和 IMailUser :消息用户的 IMAPIProp 。
ulFlags
[in]控制对象打开方式的标志的位掩码。 可以设置以下标志:
MAPI_BEST_ACCESS
请求使用用户允许的最大网络权限和客户端应用程序的最大访问权限打开对象。 例如,如果客户端具有读/写权限,则应使用读/写权限打开对象;如果客户端具有只读访问权限,则应使用只读访问权限打开对象。
MAPI_DEFERRED_ERRORS
允许 OpenEntry 成功返回,可能是在对象对调用客户端完全可用之前。 如果该对象不可用,则进行后续对象调用可能会引发错误。
MAPI_MODIFY
请求读/写权限。 默认情况下,使用只读访问权限打开对象,客户端不应假定已授予读/写权限。
SHOW_SOFT_DELETES
显示当前标记为软删除的项目,即它们处于已删除项保留时间阶段。
lpulObjType
[out]指向打开的对象类型的指针。
lppUnk
[out]指向要用于访问打开对象的接口实现的指针的指针。
返回值
S_OK
已成功打开对象。
MAPI_E_NO_ACCESS
用户没有足够的权限打开对象,或者尝试打开具有读/写权限的只读对象。
MAPI_E_NOT_FOUND
lpEntryID 指定的条目标识符不表示 对象。
MAPI_E_UNKNOWN_ENTRYID
lpEntryID 参数中的条目标识符不是容器识别的格式。
备注
IMAPIContainer::OpenEntry 方法在整个容器中打开对象,并返回指向接口实现的指针,用于进一步访问。
给调用方的说明
由于服务提供商不需要返回 lpInterface 参数中接口标识符指定的类型的接口实现,因此检查 lpulObjType 参数指向的值。 如有必要,请将 lppUnk 中返回的指针转换为相应类型的指针。
默认情况下,服务提供程序以只读访问权限打开对象,除非你设置了MAPI_MODIFY或MAPI_BEST_ACCESS标志。 设置其中一个标志后,服务提供程序会尝试返回可修改的对象。 但是,不要假定,因为你请求了打开的对象具有读/写权限的可修改对象。 计划后续修改失败的可能性,或检索对象的 PR_ACCESS_LEVEL 属性,以确定 OpenEntry 授予的访问级别。