CChkSGFiles.ErrCheckDbPages 函数

适用于:Exchange Server 2003 |Exchange Server 2007 |Exchange Server 2010 |2013 Exchange Server

验证指定数据库中的页范围。

Vitual ERRErrCheckDbPages  
(
    Const ULONGiDb,
    Const VOID  * const pvPageBuffer,
    Const ULONGcbPageBuffer,
    PAGE_INFOrgPageInfo[],
    Const ULONGcPageInfo,
    Const ULONGulFlags = NO_FLAGS
);

参数

iDb

输入参数。 ErrInit 函数的 rgwszDb[] 参数中指定的数据库数组的索引。 将检查由此参数编制索引的数据库。

pvPageBuffer

输入参数。 指向包含要检查的一个或多个数据库页的缓冲区的指针。 缓冲区的大小必须是数据库页大小的倍数,如 ErrCheckDbHeaders 函数在dbPageSize 参数中返回的那样。 在调用 ErrCheckDbPages 之前,调用应用程序必须使用数据库页内容填充缓冲区。

cbPageBuffer

输入参数。 pvPageBuffer 参数的大小(以字节为单位)。 此值必须是数据库页面大小的倍数,如 ErrCheckDbHeaders 函数在dbPageSize 参数中返回的那样。

rgPageInfo[]

输入/输出参数。 ErrCheckDbPages 使用检查的每个数据库页的详细结果填充的PAGE_INFO结构的数组。 对于在 pvPageBuffer 参数中传递的每个数据库页,数组必须有一个元素,并且每个PAGE_INFO结构中的 ulPgno 字段必须设置为对应于数据库页的逻辑页码。 有关详细信息,请参阅本主题后面的“备注”。

cPageInfo

输入参数。 rgPageInfo[] 数组中的条目数。 此值必须等于 pvPageBuffer 参数中传递的数据库页数。

ulFlags

可选输入参数。 此值保留供将来使用。 此参数中传递的值应为 0 (零) 。

返回值

ERR 枚举中的错误代码。

备注

请注意,需要在传递给 ErrInit 函数的数据库数组中指定数据库。 此外,必须在 ErrCheckDbPages 之前调用 ErrCheckDbHeaders

调用应用程序必须分配一个足够大的内存缓冲区,以容纳要检查的数据库页。 应用程序负责使用一个或多个此类数据库页的内容填充缓冲区。

调用应用程序必须在调用 ErrCheckDbPages 之前调用 ErrCheckDbHeaders。 可以根据需要多次调用此函数,以覆盖要检查的所有数据库文件中的所有页面。

rgPageInfo[] 参数中,返回的每个元素都包含 PAGE_INFO 结构中有关数据库页的信息。 如果 ErrCheckDbPages 函数返回错误,则应用程序应检查每个 PAGE_INFO 结构,以确定在哪个页面上找到了错误。 例如,比较 checksumActualchecksumExpected 值将指示是否在该数据库页上检测到校验和错误。

如果 ErrCheckDbPages 检测到数据库内容中的任何错误,它将创建 Windows 错误事件日志条目。

CChkSGFiles 对象确定是否实际检查了向 ErrInit 函数注册的所有数据库。 具体而言, CChkSGFiles 使用 ErrCheckDbPages 函数来确定是否实际验证了 ErrCheckDbHeaders 指示的相同数量的数据库页。 如果未成功检查每个数据库中正确的页数, 则 ErrTerm 函数将返回错误。

如果在多线程应用程序中使用 CHKSGFILES,则可以在应用程序的多线程部分调用 ErrCheckDbPages 函数。 请注意, ErrCheckDbPages 通常针对检查的每个数据库多次调用。

要求

Exchange 2013 仅包含 64 位版本的 CHKSGFILES API。

运行应用程序的帐户必须对要检查的数据库和日志文件具有读取权限。