IMsgStore::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]指向要打开的对象或 NULL 的条目标识符的指针。 如果 lpEntryID 设置为 NULL, OpenEntry 将打开消息存储的根文件夹。
lpInterface
[in]指向接口标识符 (IID) 的指针,表示用于访问打开的对象的接口。 传递 NULL 会导致对象的标准接口 (用于文件夹的 IMAPIFolder ,对于返回的消息) IMessage 。
ulFlags
[in]控制对象打开方式的标志的位掩码。 可以使用以下标志:
MAPI_BEST_ACCESS
请求使用用户允许的最大网络权限和最大客户端应用程序访问权限来打开对象。 例如,如果客户端具有读/写权限,则应使用读/写权限打开对象;如果客户端具有只读权限,则应使用只读权限打开对象。
MAPI_DEFERRED_ERRORS
允许 OpenEntry 成功返回,可能在该对象完全可供调用客户端使用之前返回。 如果该对象不可用,则进行后续对象调用可能会引发错误。
MAPI_MODIFY
请求读/写权限。 默认情况下,使用只读权限打开对象,客户端不应采用授予读/写权限的假设。
lpulObjType
[out]指向打开的对象类型的指针。
lppUnk
[out]指向指向已打开对象的指针的指针。
返回值
S_OK
调用成功,并返回了预期值或值。
MAPI_E_NO_ACCESS
尝试修改只读对象或访问用户权限不足的对象。
MAPI_NO_CACHE
在缓存模式下打开存储时,客户端或服务提供商可以调用 IMsgStore::OpenEntry,将MAPI_NO_CACHE标志设置为在远程存储中打开项目或文件夹。 如果在远程服务器上打开带有MDB_ONLINE标志的消息存储,则无需使用MAPI_NO_CACHE标志。
注解
IMsgStore::OpenEntry 方法打开文件夹或消息,并返回指向可用于进一步访问的接口的指针。
重要
在公共存储(如文件夹和消息)上打开文件夹条目时,请使用 IMsgStore::OpenEntry 而不是 IMAPISession::OpenEntry。 这可确保公共文件夹在配置文件中定义多个Exchange帐户时正常运行。
给调用方的说明
除非在 ulFlags 参数中设置MAPI_MODIFY或MAPI_BEST_ACCESS标志,否则文件夹和消息将自动使用只读权限打开。 设置其中一个标志并不能保证特定类型的权限;授予的权限取决于消息存储提供程序、访问级别和对象。 若要确定打开的对象的访问级别,请检索其 PR_ACCESS_LEVEL ( PidTagAccessLevel) 属性。
虽然 IMsgStore::OpenEntry 可用于打开任何文件夹或消息,但如果有权访问要打开的文件夹或消息的父文件夹,则使用 IMAPIContainer::OpenEntry 方法通常更快。
检查 lpulObjType 参数中返回的值,以确定返回的对象类型是否为所需对象类型。 如果对象类型不是预期类型,请将 lppUnk 参数中的指针强制转换为相应类型的指针。 例如,如果要打开文件夹,请将 lppUnk 强制转换为 LPMAPIFOLDER 类型的指针。
MFCMAPI 引用
有关 MFCMAPI 示例代码,请参阅下表。
文件 | 函数 | 备注 |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI 使用 IMsgStore::OpenEntry 方法打开与条目 ID 关联的对象。 |