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

调用方提供的计算机句柄,调用方提供的设备实例句柄绑定到该句柄。

注意从Windows 8和Windows Server 2012开始,不支持使用此函数访问远程计算机,因为此功能已被删除。
 

返回值

如果操作成功,函数将返回CR_SUCCESS。 否则,它将返回 Cfgmgr32.h 中定义的CR_前缀错误代码之一。

注解

CM_Query_And_Remove_SubTree_Ex函数的目的是允许应用程序准备设备,以便从远程计算机安全删除。 仅当驱动程序未设置 DEVICE_CAPABILITIESSurpriseRemovalOK 成员时,才使用此函数删除设备。 如果驱动程序已设置 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

另请参阅

CM_Get_Child_Ex

CM_Query_And_Remove_SubTree

CM_Reenumerate_DevNode

CM_Request_Device_Eject_Ex

CM_Setup_DevNode

DIF_PROPERTYCHANGE