Функция SwDeviceClose (swdevice.h)
Закрывает дескриптор программного устройства. При закрытии дескриптора, если время существования SwDevice — SWDeviceLifetimeHandle, PnP инициирует процесс "отключения" устройства. Устройство больше не будет называться дочерним по отношению к родительскому устройству.
Синтаксис
void SwDeviceClose(
[in] HSWDEVICE hSwDevice
);
Параметры
[in] hSwDevice
Закрываемый дескриптор HSWDEVICE .
Возвращаемое значение
None
Remarks
После возврата SwDeviceClose операционная система гарантированно не будет вызывать функцию обратного вызова SW_DEVICE_CREATE_CALLBACK , а все вызовы функций API программного устройства, которые выполнялись, гарантированно будут завершены.
SwDeviceClose можно вызвать в любое время, даже если функция обратного вызова еще не была вызвана.
В Windows 8 нельзя вызвать SwDeviceClose внутри функции обратного вызова SW_DEVICE_CREATE_CALLBACK. Это приведет к взаимоблокировки. Будьте осторожны при освобождении объекта ref counted, который будет вызывать SwDeviceClose при выполнении деструктора. В Windows 8.1 это ограничение снимается, и вы можете вызвать SwDeviceClose внутри функции обратного вызова.
Вызывая SwDeviceClose, если время существования SwDevice равно SWDeviceLifetimeHandle, вы инициируете процесс отключения устройства. Это приводит к тому, что устройство больше не будет считаться дочерним по отношению к его родительскому элементу, что приводит к тому, что PnP выдает "неожиданное удаление" устройства. Вызов SwDeviceClose возвращается до завершения удаления. Однако можно безопасно вызвать SwDeviceCreate сразу после SwDeviceClose. Новое создание будет помещено в очередь до завершения предыдущей обработки удаления, а затем устройство будет создано повторно.
При удалении PnP устройство "Отсутствует" и устройство не удаляется. Удаление PnP устройства аналогично отключению USB-устройства, и все сохраняемые свойства устройства останутся. Если вы хотите удалить устройство после вызова SwDeviceClose, см. раздел Удаление устройства.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 |
Минимальная версия сервера | Windows Server 2012 |
Целевая платформа | Универсальное |
Верхняя часть | swdevice.h |
Библиотека | Swdevice.lib; OneCoreUAP.lib в Windows 10 |
DLL | Cfgmgr32.dll |