Поделиться через


Поддержка извлекаемых устройств

Извлекаемые устройства — это устройства, которые можно вставить в док-станцию и извлечь из док-станции. Как правило, питание шины извлекаемого устройства должно быть отключено, прежде чем устройство может быть удалено.

Если устройство доступно для извлечения, водитель шины устройства должен задать элемент EjectSupported в структуре WDF_DEVICE_PNP_CAPABILITIES устройства.

Когда драйвер автобуса определяет, что одно из перечисленных дочерних устройств должно быть извлечено, он вызывает WdfPdoRequestEject или WdfChildListRequestEject. Например, водитель автобуса может обнаружить, что пользователь нажал кнопку извлечения.

Когда драйвер вызывает WdfChildListRequestChildEject или WdfPdoRequestEject, диспетчер PnP использует сценарий упорядоченного удаления , чтобы сообщить драйверам устройства об удалении устройства. После того как платформа вызовет функцию обратного вызова EvtDeviceReleaseHardware в драйвере шины для шины устройства, платформа вызывает функцию обратного вызова EvtDeviceEject водителя шины, которая выполняет все операции, необходимые для физического извлечения устройства.

Если извлечение устройства приводит к извлечению дополнительных устройств, водитель автобуса может вести список связей выброса. Когда пользователь удаляет устройство, диспетчер PnP информирует драйверы устройств в списке о том, что их устройства также удаляются. Для поддержания списка связей извлечения водитель автобуса может использовать методы WdfPdoAddEjectionRelationsPhysicalDevice, WdfPdoRemoveEjectionRelationsPhysicalDevice и WdfPdoClearEjectionRelationsDevices .

Если устройство может быть заблокировано на док-станции, водитель автобуса должен задать элемент LockSupported в структуре WDF_DEVICE_PNP_CAPABILITIES устройства. Драйвер автобуса также должен предоставить функцию обратного вызова EvtDeviceSetLock , которая блокирует устройство для отключения извлечения или разблокирует устройство для включения извлечения.