HrQueryAllRows

适用于:Outlook 2013 | Outlook 2016

检索表的所有行。

属性
标头文件:
Mapiutil.h
实现者:
MAPI
调用者:
客户端应用程序和服务提供商
HRESULT HrQueryAllRows(
  LPMAPITABLE ptable,
  LPSPropTagArray ptaga,
  LPSRestriction pres,
  LPSSortOrderSet psos,
  LONG crowsMax,
  LPSRowSet FAR * pprows
);

参数

ptable

[in]指向从中检索行的 MAPI 表的指针。

ptaga

[in]指向 SPropTagArray 结构的指针,该结构包含指示表列的属性标记数组。 这些标记用于选择要检索的特定列。 如果 ptaga 参数为 NULL,HrQueryAllRows 将检索 在 ptable 参数中传递的当前表视图的整个列集。

压力

[in]指向包含检索限制的 SRestriction 结构的指针。 如果 pres 参数为 NULL, 则 HrQueryAllRows 没有限制。

psos

[in]指向 SSortOrderSet 结构的指针,该结构标识要检索的列的排序顺序。 如果 psos 参数为 NULL,则使用表的默认排序顺序。

crowsMax

[in]要检索的最大行数。 如果 crowsMax 参数的值为零,则不设置检索的行数限制。

pprows

[out]指向返回的 SRowSet 结构的指针的指针的指针,该结构包含指向检索到的表行的指针数组。

返回值

S_OK

调用检索了表的预期行。

MAPI_E_TABLE_TOO_BIG

表中的行数大于为 crowsMax 参数传递的行数。

备注

客户端应用程序或服务提供商无法控制 HrQueryAllRows 尝试检索的行数,除了施加 pres 参数指向的限制。 crowsMax 参数不会将检索限制为一定数量的表行,而是定义可用于保存所有检索到的行的最大内存量。 防止大量内存溢出的唯一保护是通过设置 crowsMax 提供的 stopgap 功能。 错误返回MAPI_E_TABLE_TOO_BIG表示表包含太多行,无法一次性保留在内存中。

通常可以使用 HrQueryAllRows 安全地检索通常较小的表(如消息存储表或提供程序表)。 应使用 IMAPITable::QueryRows 方法在子节中遍历具有非常大风险的表(例如内容表甚至收件人表)。

如果在调用 HrQueryAllRows 时未定义任何表属性,则返回它们的属性类型PT_NULL和属性标识符PROP_ID_NULL