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。 這樣做會導致死結。 請小心釋放 ref counted 物件,以在解構函式執行時呼叫 SwDeviceClose 。 在 Windows 8.1 中,此限制會隨即解除,您可以在回呼函式內呼叫 SwDeviceClose。
藉由呼叫 SwDeviceClose,如果 SwDevice 的存留期是 SWDeviceLifetimeHandle,您就會起始裝置「解除叢集」的程式。 這會導致裝置不再回報為其父系的子系,導致 PnP 發出裝置的「意外移除」。 對 SwDeviceClose 的呼叫會在完成此移除之前傳回。 不過,您可以在 SwDeviceClose 之後安全地呼叫 SwDeviceCreate。 新的建立會排入佇列,直到先前的移除處理完成為止,然後重新建立裝置。
PnP 移除會讓裝置「不存在」,且不會卸載裝置。 拿掉裝置的 PnP 與取消叢集 USB 裝置相同,且裝置的所有持續性屬性狀態都會保留。 如果您想要在呼叫 SwDeviceClose 之後卸載裝置,請參閱 卸載裝置。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 |
最低支援的伺服器 | Windows Server 2012 |
目標平台 | Universal |
標頭 | swdevice.h |
程式庫 | Swdevice.lib;Windows 10 上的 OneCoreUAP.lib |
Dll | Cfgmgr32.dll |