"Plug and Play" - это термин, специфичный для Windows, который первоначально означал метод, который позже ISA, а затем устройства PCI позволяли операционной системе выбирать ресурсы, которые они использовали. BIOS может сделать это и для DOS, или отойти в сторону и позволить Windows полностью это сделать.
Ресурсы: A) адреса памяти, B) адреса ввода / вывода, C) IRQ и / или D) каналы DMA. Каждое, несколько или все из них могут использоваться устройством для связи с процессором.
Поэтому изначально драйвер "Plug and Play" был драйвером, который мог понять, как инициализировать устройство, то есть настроить его так, чтобы он брал ресурсы, которые не использовалось ни одним другим устройством.
Еще одна важная часть Plug and Play - это стандартный метод идентификации устройства. PCI (и, возможно, ISAPNP) предусматривают, чтобы у каждого устройства был уникальный поставщик и идентификатор устройства. Это перенесено на USB. Таким образом, операционная система хоста может выяснить, что представляет собой устройство, и загрузить соответствующий драйвер.
Теперь, когда мы переходим к устройствам, которые предназначены для "горячей замены", это немного отличается, но, очевидно, термин "Plug and Play" все еще используется для его описания. Большинство устройств с возможностью "горячей" замены "размещаются" на устройствах без возможности "горячей" замены. Устройства USB "размещаются" на контроллере USB, который сам по себе является устройством PCI, потребляющим один или несколько ресурсов, обычно назначаемых через Plug and Play. Общение с устройствами через шину USB подразумевает прохождение через USB-контроллер. Аналогичная ситуация существует для устройств SCSI, IDE и SATA.
Таким образом, для работы с возможностью "горячей" замены драйверу «хост-контроллера» необходим механизм, который сообщает драйверам, представляющим устройства "выше", о том, что происходит, то есть драйверу контроллера USB нужен способ сообщить драйверу запоминающего устройства USB, что устройство было отключено. "Верхний" драйвер должен иметь код, который может корректно завершаться, когда его просят удалить, вместо того, чтобы ожидать, что он останется резидентом до перезагрузки.
Большинство типов шин, таких как USB, SCSI, SATA, регулируются стандартами, которые драйверы должны распознавать и реализовывать.
На аппаратном уровне большинство устройств с возможностью «горячей» замены спроектированы так, что часть разъема разряжает статическое электричество, а контакты, на которых подается питание, подключаются за доли секунды до контактов, на которых передаются данные. Посмотрите внимательно на контакты USB и SATA разъема; Вот почему некоторые из них длиннее других. Разъемы IDE НЕ делают этого и НЕ безопасны для горячего подключения.