Организация ввода-вывода. Драйверы WDM. Рощин А.В. - 16 стр.

UptoLike

Составители: 

16
появлении нового устройства на шине. Результатом перечисления, выполняемого
в момент запуска или в момент подключения устройства, является набор объектов
PDO, показанных на рисунке 1.6 (подробнее об объектахв следующем разделе).
(1) Как только драйвер шины обнаруживает факт подключения или
отключения оборудования, он вызывает функцию
IoInvalidateDeviceRelations, сообщая диспетчеру PnP список
дочерних устройств.
(2)
Диспетчер PnP отправляет драйверу пакет IRP, который содержит
основной (MJ) код функции IRP_MJ_PNP и дополнительный
(MN) код функции IRP_MN_QUERY_DEVICE_RELATIONS,
означающие, что диспетчер PnP запрашивает отношения шины
(QUERY DEVICE RELATIONS) – (2) на рисунке. В ответ на этот
запрос драйвер шины возвращает свой список объектов PDO, из
которого диспетчер PnP может определить, какие из
представленных в списке устройств еще
не инициализированы.
(3) Диспетчер PnP посылает драйверу шины пакеты IRP с
дополнительным кодом функции IRP_MN_QUERY_ID,
запрашивающие у драйвера шины идентификаторы. Один из
идентификаторовидентификатор устройстваоднозначно
определяет тип конкретного устройства.
(4) По идентификатору устройства диспетчер PnP ищет сведения об
устройстве в системном реестре. Дальнейшие действия
диспетчера зависят от того, имеется ли в системном
реестре
информация об этом конкретном устройстве. Если такой
информации нет (в системном реестре отсутствует
соответствующий раздел), начинает работать подсистема
установки. Инструкции по установке необходимого для
устройства программного обеспечения хранятся в файлах с
расширением .INF. Каждый такой файл содержит одну или
несколько команд, связывающих идентификаторы устройств с
появлении нового устройства на шине. Результатом перечисления, выполняемого
в момент запуска или в момент подключения устройства, является набор объектов
PDO, показанных на рисунке 1.6 (подробнее об объектах – в следующем разделе).
     (1)      Как только драйвер шины обнаруживает факт подключения или
              отключения         оборудования,         он       вызывает        функцию
              IoInvalidateDeviceRelations, сообщая диспетчеру PnP список
              дочерних устройств.
     (2)      Диспетчер PnP отправляет драйверу пакет IRP, который содержит
              основной (MJ) код функции IRP_MJ_PNP и дополнительный
              (MN) код функции IRP_MN_QUERY_DEVICE_RELATIONS,
              означающие, что диспетчер PnP запрашивает отношения шины
              (QUERY DEVICE RELATIONS) – (2) на рисунке. В ответ на этот
              запрос драйвер шины возвращает свой список объектов PDO, из
              которого     диспетчер      PnP      может      определить,   какие      из
              представленных в списке устройств еще не инициализированы.
     (3)      Диспетчер    PnP    посылает        драйверу    шины     пакеты    IRP    с
              дополнительным            кодом      функции       IRP_MN_QUERY_ID,
              запрашивающие у драйвера шины идентификаторы. Один из
              идентификаторов – идентификатор устройства – однозначно
              определяет тип конкретного устройства.
     (4)      По идентификатору устройства диспетчер PnP ищет сведения об
              устройстве    в    системном         реестре.    Дальнейшие       действия
              диспетчера зависят от того, имеется ли в системном реестре
              информация об этом конкретном устройстве. Если такой
              информации        нет     (в       системном       реестре    отсутствует
              соответствующий         раздел),     начинает      работать   подсистема
              установки.    Инструкции        по     установке     необходимого     для
              устройства программного обеспечения хранятся в файлах с
              расширением .INF. Каждый такой файл содержит одну или
              несколько команд, связывающих идентификаторы устройств с

                                         16