注意
从 Windows XP 开始,索引服务不再受支持,并且自Windows 8起无法使用。 请改用 Windows 搜索 进行客户端搜索,使用 Microsoft Search Server Express 进行服务器端搜索。
ICommandTree::GetCommandTree 方法将当前命令作为树回显,包括已添加的所有后期处理操作。
语法
HRESULT GetCommandTree(
[out] DBCOMMANDTREE **ppRoot
);
参数
[out] ppRoot
命令对象为命令树分配内存,并将地址返回到此内存;当使用者不再需要命令树时,使用 IMalloc::Free 释放此内存,一次一个节点。 如果发生错误,提供程序会将 ppRoot 设置为 null 指针。
返回值
此方法可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
提供程序在生成命令树时在先前由 ICommandText::SetCommandText 设置的命令文本中发现了非致命错误。 |
|
发生了特定于访问接口的错误。 |
|
ppRoot 参数为 null 指针。 |
|
提供程序无法分配足够的内存来返回命令树。 |
|
提供程序不能将以前由 ICommandText::SetCommandText 设置的命令文本表示为树。 |
注解
返回的树完全反映最后一次调用 ICommandTree::SetCommandTree 或 ICommandText::SetCommandText::SetCommandText 的命令集,该命令由后续调用 IQuery::AddPostProcessing 修改。 如果命令存储为树,则返回的树是命令对象中存储的树的副本。 如果树节点是随文本一起传递的,则它也会作为文本进行回显。 如果命令存储为文本,则提供程序应返回文本的“可导航”命令树表示形式,这不一定是优化格式的。 如果提供程序无法创建完整表示形式,则命令树可以包含单个文本节点。 例如,如果树可以表示为DBOP_SQL_select节点,并且提供程序支持该节点,则必须以该格式返回该节点。 但是,如果树不能表示为DBOP_SQL_select节点,但可以在非平凡命令树 (即DBOP_text_command) 以外的类型中表示,则提供程序必须将它作为非平凡树返回。 如果它是它支持的唯一命令节点,则提供程序只能将树作为普通DBOP_text_command节点返回。 否则,如果文本不能在此类树中表示,则它必须返回有效的非普通导航树或返回DB_E_CANTTRANSLATE。 目前,提供程序不应进行任何不必要的验证(如绑定),但如果在分析提供程序的过程中发现生成树时出现非致命错误,则应将错误信息放入树中并返回DB_S_ERRORSINTREE。
此方法不会显示提供程序的内部优化转换 (这可能不同于 DBCOMMANDTREE 结构,) 文本 (非文本) 树操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | cmdtree.h |