注意
从 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 。
如果 fCopy 为 FALSE,则使用者不得在未再次调用 SetCommandTree 方法的情况下更改命令树。 任何此类更改的效果都是未定义的。 具体而言,提供程序可以假定命令树在使用树的调用之间没有更改,例如 SetCommandTree、 ICommandPrepare::P repare 和 ICommand::Execute。
返回值
此方法可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
发生了特定于访问接口的错误。 |
|
pRoot 参数为 NULL 指针或 dwCommandReuse 参数无效。 |
|
命令对象上打开了行集。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | cmdtree.h |