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


Power-Down и последовательность удаления для драйвера шины

На следующем рисунке показан порядок, в котором платформа вызывает функции обратного вызова событий водителя шины KMDF при выключении питания и удалении устройства, подключенного к шине. Последовательность начинается в верхней части рисунка с рабочим устройством, которое находится в рабочем состоянии питания (D0):

Блок-схема, иллюстрирующая последовательность выключения и удаления для драйвера шины KMDF, начиная с рабочего устройства в рабочем состоянии питания (D0).

Платформа не удаляет PDO, пока устройство не будет физически удалено из системы. Например, если пользователь отключает устройство в диспетчер устройств или останавливает его в служебной программе Безопасное удаление оборудования, но физически не удаляет устройство, платформа сохраняет PDO. Если позже устройство будет повторно включено, платформа использует тот же PDO и начинает последовательность запуска путем вызова обратного вызова EvtDevicePrepareHardware , как показано в разделе Последовательность включения для физического объекта устройства.

Примечание. Как правило, платформа вызывает функцию обратного вызова EvtDeviceReleaseHardware водителя шины после вызова функции EvtDeviceReleaseHardware для всех дочерних устройств, которые перечисляет драйвер. В случае сбоя питания или выключения питания родительского устройства платформа может вызвать evtDeviceReleaseHardware драйвера, прежде чем вызывать функции EvtDeviceReleaseHardware для всех дочерних устройств. Рассмотрите возможность вызова WdfDeviceInitSetReleaseHardwareOrderOnFailure , чтобы платформа вызывала обратный вызов EvtDeviceReleaseHardware водителя шины только после удаления всех дочерних устройств.