CM_Reenumerate_DevNode_Ex函数 (cfgmgr32.h)

[从 Windows 8 和 Windows Server 2012 开始,此函数已弃用。 请改用 CM_Reenumerate_DevNode

CM_Reenumerate_DevNode_Ex函数枚举由指定设备节点及其所有子节点标识的设备。

语法

CMAPI CONFIGRET CM_Reenumerate_DevNode_Ex(
  [in]           DEVINST  dnDevInst,
  [in]           ULONG    ulFlags,
  [in, optional] HMACHINE hMachine
);

参数

[in] dnDevInst

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

[in] ulFlags

调用方提供的标志,用于指定应如何进行恢复。 此参数可以设置为以下标志的组合,如前所述:

CM_REENUMERATE_ASYNCHRONOUS

应异步进行恢复。 对此函数的调用在 PnP 管理器收到恢复请求后立即返回。 如果设置了此标志,则不应同时设置CM_REENUMERATE_SYNCHRONOUS标志。

CM_REENUMERATE_NORMAL

指定默认的恢复行为,在该行为中同步进行恢复。 此标志当前等效于CM_REENUMERATE_SYNCHRONOUS。

CM_REENUMERATE_RETRY_INSTALLATION

指定即插即用应再次尝试在检测到但尚未配置但尚未配置的指定子树中安装任何设备,或者标记为需要重新安装,或者必须完成安装。 可以将此 标志与CM_REENUMERATE_SYNCHRONOUS 标志 CM_REENUMERATE_ASYNCHRONOUS标志一起设置。

此标志必须谨慎使用,因为它可能导致 PnP 管理器提示用户执行任何此类设备的安装。 目前,只有设备管理器和硬件向导等组件使用此标志,以允许用户重试可能已检测到但当前未安装的设备安装。

CM_REENUMERATE_SYNCHRONOUS

应同步进行恢复。 当指定设备的子树中的所有设备已向其发送了恢复请求并且这些请求已由设备堆栈完成时,对此函数的调用将返回。 这不能保证这些设备的设备堆栈中的驱动程序已重新扫描其总线并报告更新。 也不保证报告的任何新设备都处于启动状态。 如果设置了此标志,则不应同时设置CM_REENUMERATE_ASYNCHRONOUS标志。 此标志在功能上等效于CM_REENUMERATE_NORMAL。

[in, optional] hMachine

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

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

返回值

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

注解

如果指定的设备节点表示硬件或软件总线设备,则 PnP 管理器会查询设备的驱动程序以获取子级列表,然后尝试配置和启动以前未配置的任何子设备。 PnP 管理器还启动意外删除不再存在的设备(请参阅 IRP_MN_SURPRISE_REMOVAL)。 但是,驱动程序可以选择更新它们正在向 PnP 管理器报告重新调用请求的总线关系,因此当恢复作完成时,新设备的外观和删除不再存在的设备可能无法完成。

此函数的调用方必须具有 SeLoadDriverPrivilege。 (Microsoft Windows SDK 文档中介绍了特权。

有关使用绑定到本地或远程计算机的设备实例句柄的信息,请参阅 CM_Get_Child_Ex

在 Windows 8 和 Windows Server 2012 及更高版本中删除了访问远程计算机的功能,因此在这些版本的 Windows 上运行时,无法访问远程计算机。

要求

要求 价值
最低支持的客户端 Microsoft Windows 2000 及更高版本的 Windows 中可用。
目标平台 桌面
标头 cfgmgr32.h (包括 Cfgmgr32.h)
图书馆 Cfgmgr32.lib
DLL Cfgmgr32.dll

另请参阅

CM_Get_Child_Ex

CM_Reenumerate_DevNode