CM_Query_And_Remove_SubTree_ExW 函数 (cfgmgr32.h)
[从 Windows 8 和 Windows Server 2012 开始,此函数已弃用。 请改用 CM_Query_And_Remove_SubTree 。]
CM_Query_And_Remove_SubTree_Ex 函数检查是否可以删除设备实例及其子级,如果是,则删除它们。
语法
CMAPI CONFIGRET CM_Query_And_Remove_SubTree_ExW(
[in] DEVINST dnAncestor,
[out, optional] PPNP_VETO_TYPE pVetoType,
[out, optional] LPWSTR pszVetoName,
[in] ULONG ulNameLength,
[in] ULONG ulFlags,
[in, optional] HMACHINE hMachine
);
参数
[in] dnAncestor
要删除的子树根上的设备的调用方提供的设备实例句柄。 此设备实例句柄绑定到 hMachine 提供的计算机句柄。
[out, optional] pVetoType
(可选) 如果调用方未传递 NULL 且删除请求被否决 (即,则函数返回CR_REMOVE_VETOED) ,在返回时,它指向指示否决原因 的PNP_VETO_TYPE类型值。
[out, optional] pszVetoName
(可选) 如果调用方未传递 NULL 且删除请求 (即被否决,则函数在返回时返回CR_REMOVE_VETOED) ,这指向与否决类型关联的文本字符串。 此字符串提供的信息类型取决于 pVetoType 接收的值。 有关这些字符串的信息,请参阅 PNP_VETO_TYPE。
[in] ulNameLength
(Optional.) 调用方提供的值,表示 pszVetoName 提供的字符串缓冲区) 长度 (字符数。 这应设置为 MAX_PATH。
[in] ulFlags
“备注”部分中介绍的调用方提供的标志常量按位 OR。
[in, optional] hMachine
调用方提供的计算机句柄,调用方提供的设备实例句柄绑定到该句柄。
返回值
如果操作成功,函数将返回CR_SUCCESS。 否则,它将返回 Cfgmgr32.h 中定义的CR_前缀错误代码之一。
注解
CM_Query_And_Remove_SubTree_Ex函数的目的是允许应用程序准备设备,以便从远程计算机安全删除。 仅当驱动程序未设置 DEVICE_CAPABILITIES 的 SurpriseRemovalOK 成员时,才使用此函数删除设备。 如果驱动程序已设置 SurpriseRemovalOK,则应用程序应调用 CM_Request_Device_Eject_Ex 而不是 CM_Query_And_Remove_SubTree_Ex。
CM_Query_And_Remove_SubTree_Ex 支持使用以下两个标志之一设置 flags 参数 ulFlags :仅当 Windows 或安装程序否决删除设备时,这些标志才适用:
从 Windows XP 开始, CM_Query_And_Remove_SubTree_Ex 还支持设置以下附加标志:仅当函数成功删除设备实例时,此标志才适用:
不需要低级别操作CM_Query_And_Remove_SubTree_Ex的设备安装应用程序应使用DIF_PROPERTYCHANGE请求来禁用设备,而不是使用CM_Query_And_Remove_SubTree_Ex删除设备。 DIF_PROPERTYCHANGE请求可用于启用、禁用、重启、停止或更改设备的属性。
此函数的调用方必须具有 SeLoadDriverPrivilege。 Microsoft Windows SDK 文档中介绍了 (特权。)
有关使用绑定到本地或远程计算机的设备实例句柄的信息,请参阅 CM_Get_Child_Ex。
Windows 8 和 Windows Server 2012 及更高版本的操作系统中删除了访问远程计算机的功能,因此在这些版本的 Windows 上运行时,无法访问远程计算机。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Microsoft Windows 2000 及更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | cfgmgr32.h (包括 Cfgmgr32.h) |
Library | Cfgmgr32.lib |