Рекомендации по проектированию драйверов PnP
Plug and Play предоставляет:
Автоматическое и динамическое распознавание установленного оборудования
Выделение ресурсов оборудования (и перераспределение)
Загрузка соответствующих драйверов
Интерфейс для взаимодействия драйверов с системой PnP
Механизмы для изучения драйверов и приложений об изменениях в аппаратной среде
Для поддержки PnP драйвер должен следовать следующим рекомендациям:
Он должен содержать подпрограмму DispatchPnP .
Эта подпрограмма диспетчеризации должна обрабатывать запросы IRP_MJ_PNP и связанные с ними вспомогательные коды функций. Дополнительные сведения см. в разделе Подпрограммы DispatchPnP.
Он не должен искать оборудование.
Менеджер PnP отвечает за определение наличия аппаратных устройств. Когда диспетчер PnP обнаруживает устройство, он уведомляет драйвер, вызывая его процедуру AddDevice . Оборудование может быть обнаружено при загрузке системы или в любой момент, когда пользователь добавляет устройство в запущенную систему или удаляет его из нее.
Он не должен выделять аппаратные ресурсы.
Драйвер PnP должен предоставить диспетчеру PnP списки ресурсов, которые устройство может использовать. Диспетчер PnP отвечает за назначение ресурсов каждому устройству и уведомление драйвера о назначениях каждого устройства при отправке запроса IRP_MN_START_DEVICE . Таким образом, драйвер должен быть способен работать с различными конфигурациями аппаратных ресурсов.
Некоторые драйверы изолированы от деталей PnP и управления питанием с помощью предоставляемых системой портов или драйверов класса. Например, драйвер порта SCSI изолирует драйвер мини-порта SCSI от многих деталей систем питания и PnP, поэтому драйверу минипорта SCSI не нужно напрямую обрабатывать питание и PnP IRP. Сведения о требуемой поддержке PnP см. в документации по драйверам.