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 示例代码,请参阅下表。
文件 | 函数 | Comment |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI 使用 IMsgStore::OpenEntry 方法打开与条目 ID 关联的对象。 |