iCommandTree::SetCommandTree 方法 (cmdtree.h)

注意

从 Windows XP 开始,索引服务不再受支持,并且自 Windows 8 起不可用。 请改用 Windows 搜索 进行客户端搜索,使用 Microsoft Search Server Express 进行服务器端搜索。

ICommandTree::SetCommandTree 方法设置命令对象的命令树,替换现有的命令树或替换使用 ICommandText 接口指定的文本命令。 提供的命令树将复制到命令对象或将其传输到命令对象(具体取决于 fCopy 参数)。 因此,使用者可以在不影响命令对象的情况下删除原始树或文本。 大多数错误检查延迟到验证方法之一、优化 (请参阅 ICommandPrepare) ,或调用 ICommand::Execute 方法。 此方法仅验证命令树是否确实可以复制到命令对象的空间中。

语法

HRESULT SetCommandTree(
  [in] DBCOMMANDTREE  **ppRoot,
  [in] DBCOMMANDREUSE dwCommandReuse,
  [in] BOOL           fCopy
);

参数

[in] ppRoot

指向命令树根地址的指针。

[in] dwCommandReuse

DBCOMMANDREUSEENUM 枚举中的 DBCOMMANDREUSE 类型掩码,指定是否保留上一命令的状态。 如果之前未指定的状态标记为重复使用,则会忽略该标志,并且不会发生错误。 目前仅支持DBCOMMANDREUSE_NONE。

[in] fCopy

如果 为 TRUE,则复制命令树,并且调用方保留命令树内存的所有权。 如果 为 FALSE,则提供程序获取整个树,而不复制,并将调用方根指针设置为 NULL 指针。 当命令对象需要解除分配树时,它将为树中的每个节点调用 一次 IMalloc::Free

如果 fCopyFALSE,则使用者不得在未再次调用 SetCommandTree 方法的情况下更改命令树。 任何此类更改的效果都是未定义的。 具体而言,提供程序可以假定命令树在使用树的调用之间没有更改,例如 SetCommandTreeICommandPrepare::P repareICommand::Execute

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK
方法成功。
E_FAIL
发生了特定于访问接口的错误。
E_INVALIDARG
pRoot 参数为 NULL 指针或 dwCommandReuse 参数无效。
DB_E_OBJECTOPEN
命令对象上打开了行集。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 cmdtree.h

另请参阅

ICommandTree