Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Аппаратные ресурсы — это назначаемые, адресные пути шины, которые позволяют периферийным устройствам и системным процессорам взаимодействовать друг с другом. Аппаратные ресурсы обычно включают адреса портов ввода-вывода, векторы прерываний и блоки адресов относительной памяти шины.
Прежде чем система сможет взаимодействовать с экземпляром устройства, диспетчер PnP должен назначить аппаратные ресурсы экземпляру устройства на основе знаний о доступных ресурсах и о том, какие экземпляр устройства может использовать. Ресурсы назначаются каждому узлу устройства в дереве устройств (при условии, что представленному устройству нужны ресурсы и эти ресурсы доступны). Диспетчер PnP отслеживает аппаратные ресурсы с помощью списков, которые он связывает с узлами устройств. В нем используются два типа списков:
Список требований к ресурсам
Устройства обычно предназначены для работы в пределах диапазона назначений ресурсов. Например, для устройства может потребоваться только один вектор прерывания, но он может использовать любой из диапазонов векторов. Для каждого экземпляра устройства диспетчер PnP поддерживает список требований к ресурсам, указывающий все диапазоны аппаратных ресурсов, в которых устройство может работать. Название списка связано с тем, что менеджер PnP обязан выбирать ресурсы из этого списка при назначении их устройству.
Код в режиме ядра указывает списки требований к ресурсам с помощью структур IO_RESOURCE_REQUIREMENTS_LIST (в качестве входных данных в системные подпрограммы или в ответ на IRPs). Код пользовательского режима указывает списки требований к ресурсам с помощью структур диспетчера конфигурации PnP в качестве входных данных для функций диспетчера конфигурации PnP.
Список ресурсов
Когда диспетчер PnP назначает ресурсы устройству, он отслеживает эти назначения, создавая список назначенных ресурсов для каждого экземпляра устройства. Эти списки можно назвать списками назначений ресурсов, но это имя обычно сокращено до списков ресурсов. Диспетчер PnP может изменить содержимое списка ресурсов при добавлении или удалении устройств из системы и ресурсов, которые впоследствии будут перераспределены. Ресурсы также могут быть назначены BIOS PnP. Кроме того, установка программного обеспечения с помощью INF-файлов или пользовательского ввода может заставить диспетчер PnP назначить устройству конкретные ресурсы.
Код в режиме ядра задает списки ресурсов с помощью структур CM_RESOURCE_LIST (в качестве входных данных в системные подпрограммы или в ответ на IRPs). Код пользовательского режима задает списки ресурсов с помощью структур диспетчера конфигурации PnP в качестве входных данных для функций диспетчера конфигурации PnP.
Диспетчер PnP хранит списки требований к ресурсам и списки ресурсов в реестре, где их можно просмотреть с помощью Regedit.exe. Драйверы могут получить доступ к этим спискам косвенно через подпрограммы Plug and Play и Plug and Play Minor IRPs. Приложения пользовательского режима могут использовать функции диспетчера конфигурации PnP. (Драйверы и приложения не должны напрямую обращаться к этим спискам с помощью функций реестра, так как формат хранилища подлежит изменению в будущем выпуске.)
Логические конфигурации
Списки требований к ресурсам и списки ресурсов содержат одну или несколько логических конфигураций. Каждая логическая конфигурация определяет диапазон допустимых ресурсов или набор определенных ресурсов для конкретного экземпляра устройства. Кроме того, каждая логическая конфигурация для экземпляра устройства принадлежит одному из типов логической конфигурации. Ниже перечислены типы конфигураций. Для каждого экземпляра устройства может быть назначено несколько логических конфигураций одного или разных типов.
Типы логических конфигураций для списков требований к ресурсам
Базовая конфигурация
Список требований к ресурсам, определяющий диапазоны ресурсов, предоставляемые устройством Plug and Play. Драйвер должен вернуть этот список в случае получения IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP. (Базовая конфигурация для устройства, отличного от PnP, может быть описана в INF-файле. В этом случае программное обеспечение установки устройства считывает INF-файл и вызывает функции диспетчера конфигурации PnP для создания списка требований.)
Отфильтрованная конфигурация
Список требований к ресурсам, предоставленный стеку драйверов, возможно, изменен, а затем возвращен стеком драйверов в ответ на IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP. Диспетчер PnP использует полученную отфильтрованную конфигурацию в качестве основы для выделения ресурсов.
Переопределение конфигурации
Список требований к ресурсам, который переопределяет базовые конфигурации. Как правило, установщик устройства создает переопределенную конфигурацию, если INF-файл устройства содержит раздел INF DDInstall.LogConfigOverride. Конфигурация переопределения не удаляется, если устройство физически удалено из системы.
Типы логических конфигураций для списков ресурсов
Конфигурация загрузки
Список ресурсов, определяющий ресурсы, назначенные экземпляру устройства при загрузке системы. (Для устройств PnP это конфигурация, предоставляемая BIOS; для устройств, отличных от PnP, эти ресурсы могут быть выбраны перемычками на карточке.) Драйвер должен вернуть этот список ресурсов при получении IRP_MN_QUERY_RESOURCES IRP. (Конфигурация загрузки может быть частично пуста, если BIOS не может определить все ресурсы, используемые устройством.) Диспетчер PnP может изменить этот список, если устройство удалено или перезапущено. Для устройств, отличных от PnP, этот тип конфигурации можно использовать вместо принудительной конфигурации, в этом случае он имеет более низкий приоритет конфигурации, чем эквивалентная принудительной конфигурации. Для каждого экземпляра устройства может существовать только одна конфигурация загрузки.
Принудительная конфигурация
Список ресурсов, указывающий на ресурсы, которые должен использовать экземпляр устройства. Принудительная конфигурация мешает диспетчеру PnP назначать другие ресурсы экземпляру устройства. Установщик устройства может создать вынужденную конфигурацию на основе сведений, содержащихся в INF или полученных от пользователя. Принудительная конфигурация не удаляется, если устройство физически удалено из системы. Для каждого экземпляра устройства может существовать только одна конфигурация принудительного типа.
Выделенная конфигурация
Список ресурсов, определяющий ресурсы, используемые в настоящее время экземпляром устройства. Для каждого экземпляра устройства может существовать только одна выделенная конфигурация.
Драйверы устройств отвечают за определение базовой конфигурации совместимого с PnP устройства, фильтрованной конфигурации и конфигурации загрузки, а также за возврат этой информации в ответ на IRPs, отправляемые диспетчером PnP. (Для получения дополнительной информации см. раздел «Добавление устройства PnP в запущенную систему».) Программное обеспечение для установки драйверов может создавать конфигурации переопределения, принудительные конфигурации и, для устройств, не являющихся PnP, загрузочные конфигурации. Диспетчер PnP поддерживает выделенную конфигурацию каждого экземпляра устройства.
Приоритет назначается каждой конфигурации при его создании. Если диспетчер PnP обнаруживает, что экземпляру устройства назначено несколько логических конфигураций одного типа, он пытается использовать ту с наивысшим приоритетом в первую очередь. Если эта конфигурация приводит к конфликтам ресурсов, она пытается выполнить настройку со следующим более низким приоритетом. (Список приоритетов конфигурации см. в разделе CM_Add_Empty_Log_Conf.)