SwDeviceClose 函数 (swdevice.h)

关闭软件设备句柄。 关闭句柄时,如果 SwDevice 的生存期为 SWDeviceLifetimeHandle,PnP 将启动“拔出”设备的过程。 设备将不再报告为其父设备的子级。

语法

void SwDeviceClose(
  [in] HSWDEVICE hSwDevice
);

参数

[in] hSwDevice

要关闭的 HSWDEVICE 句柄。

返回值

备注

SwDeviceClose 返回后,操作系统保证不会调用 SW_DEVICE_CREATE_CALLBACK 回调函数,并且保证已完成对正在进行的软件设备 API 函数的任何调用。

即使尚未调用回调函数,也可以随时调用 SwDeviceClose

在 Windows 8 中,不能在 SW_DEVICE_CREATE_CALLBACK 回调函数中调用 SwDeviceClose。 这样做会导致死锁。 请注意释放引用计数对象,该对象在析构函数运行时将调用 SwDeviceClose 。 在 Windows 8.1 中,此限制被取消,你可以在回调函数内调用 SwDeviceClose

通过调用 SwDeviceClose,如果 SwDevice 的生存期为 SWDeviceLifetimeHandle,则启动“拔出”设备的过程。 这会导致设备不再报告为其父级的子级,从而导致 PnP 发出“意外删除”设备。 在此删除完成之前,将返回对 SwDeviceClose 的调用。 但是,可以在 SwDeviceClose 之后立即安全地调用 SwDeviceCreate。 新创建将排队,直到上一个删除处理完成,然后重新创建设备。

删除 PnP 会使设备“不存在”,并且不会卸载设备。 删除设备的 PnP 与拔下 USB 设备相同,设备的所有持久化属性状态都将保留。 如果要在调用 SwDeviceClose 后卸载设备,请参阅 卸载设备

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
目标平台 通用
标头 swdevice.h
Library Swdevice.lib;Windows 10 上的 OneCoreUAP.lib
DLL Cfgmgr32.dll

另请参阅

SwDeviceCreate