OLFI

适用于:Outlook 2013 | Outlook 2016

个人文件夹文件 (PST) 存储提供程序使用的长期 ID 结构队列,以在脱机模式下为新邮件或文件夹分配条目 ID。

快速信息

typedef struct { 
    ULONG    ulVersion; 
    MAPIUID  muidReserved; 
    ULONG    ulReserved; 
    DWORD    dwAlloc; 
    DWORD    dwNextAlloc; 
    LTID     ltidAlloc; 
    LTID     ltidNextAlloc; 
} OLFI, *POLFI;

Members

ulVersion

  • 结构的版本号。

muidReserved

  • 此成员保留供 Outlook 内部使用,不受支持。

ulReserved

  • 此成员保留供 Outlook 内部使用,不受支持。

dwAlloc

  • 可用于分配的条目数。 这些条目 (GUID) 共享相同的全局唯一标识符。

dwNextAlloc

  • 接下来可供分配的条目数。 这些条目共享相同的 GUID。

ltidAlloc

  • 长期 ID 结构 LTID,标识当前可用于分配的条目。 长期 ID 结构包含 GUID 和标识存储中的对象的索引。 GUID 和索引可以共同构成对象的唯一条目 ID。

ltidNextAlloc

  • 标识下一个可用条目的长期 ID 结构。

备注

条目 ID 是文件夹或邮件的 4 字节 MAPI 条目标识符。 有关详细信息,请参阅 ENTRYID

当 PST 存储提供程序将条目 ID 分配给新对象时,它首先需要一个标识服务器的 GUID,以及一个标识存储区中对象的索引。 即使 GUID 在所有条目 ID 中并不唯一,但 GUID 和索引组合可提供唯一的条目。 此 GUID 和索引对由长期 ID 结构 LTID 跟踪,该结构是 OLFI 结构的一部分。

PST 存储提供程序不会在 OLFI 中为每个 GUID 索引对保留 LTID 结构。 它为当前第一个可用的 GUID 索引对保留一个 LTID 结构 ltidAlloc;共享此相同 GUID 的可用条目数的计数 (dwAlloc);以及另一个 LTID 结构 ltidNextAlloc,用于具有不同 GUID 的下一个可用 GUID 索引对。 PST 存储提供程序使用 OLFI 结构来跟踪它分发的 GUID 和索引。在虚拟级别,提供程序保留一些准备分配的 LTID 结构的保留。 dwAlloc 维护可用 LTID 结构的计数。

入口 ID 的请求以块为单位。 当存在块请求时,PST 存储提供商通过将请求的大小与 dwAlloc 进行比较来检查手头是否有足够的保留。 如果有足够的保留,它将返回 ltidAlloc 中用于分配的 GUID 和索引。 然后,它会按请求的大小减小 dwAlloc ,并按请求的大小递增 ltidAlloc 中的索引。 这将准备 PST 存储提供程序,以便在下一个请求中为另一个入口 ID 块分配 ltidAlloc 。 请注意,对于下一个请求,GUID 保持不变。

如果请求的大小大于 dwAlloc,则 PST 存储提供程序会尝试使用其下一个保留的内容,如 dwNextAllocltidNextAlloc 所指定。 它将 dwNextAllocltidNextAlloc 分别复制到 dwAllocltidAlloc ,并将 dwNextAllocltidNextAlloc 设置为 NULL。

包装 PST 存储提供程序的提供程序应定期检查 ltidNextAlloc,以查看它是否为 NULL。 如果是,提供程序应使用新的 GUID 填充它,并重置 dwNextAlloc ,以便可以分配更多条目 ID。

另请参阅

关于复制 API关于复制状态机LTID