Изменение списка требований к ресурсам
После того как диспетчер PnP убедился, что все драйверы подключенного устройства загружены, он отправляет список требований к оборудованию устройства в стек драйверов устройства.
По мере перемещения списка вниз по стеку платформа вызывает каждую функцию и фильтрует функцию обратного вызова EvtDeviceFilterRemoveResourceRequirements , передавая список требований к оборудованию в качестве входного аргумента. Эта функция обратного вызова может удалять аппаратные ресурсы из списка требований к оборудованию, указанного драйвером шины, но который, по определению драйвера функции, не требуется для работы устройства.
Например, драйвер шины PCI может в соответствии со спецификацией PCI реплицировать ресурс пространства ввода-вывода в памяти. Если устройство может работать без использования ресурса пространства ввода-вывода, драйвер функции устройства может удалить ресурс пространства ввода-вывода из списка требований к оборудованию.
Чтобы удалить элементы из списка требований, драйвер может сделать следующее:
- Вызовите следующие методы, чтобы изменить логические конфигурации в списке требований к ресурсам:
- WdfIoResourceRequirementsListGetCount для получения количества логических конфигураций.
- WdfIoResourceRequirementsListGetIoResList для получения доступа к логической конфигурации.
- WdfIoResourceRequirementsListRemove и WdfIoRequirementsListRemoveByIoResList, чтобы удалить логическую конфигурацию.
- Вызовите следующие методы для изменения дескрипторов ресурсов в логической конфигурации:
- WdfIoResourceListGetCount для получения количества дескрипторов ресурсов.
- WdfIoResourceListGetDescriptor, чтобы получить доступ к дескриптору ресурса.
- WdfIoResourceListRemove и WdfIoResourceListRemoveByDescriptor, чтобы удалить дескриптор ресурса.
По мере перемещения списка в резервную копию стека драйверов платформа вызывает каждую функцию и фильтрует функцию обратного вызова EvtDeviceFilterAddResourceRequirements , передавая список требований к оборудованию в качестве входного аргумента. Эта функция обратного вызова может добавлять дополнительные аппаратные ресурсы, необходимые драйверу функции для обеспечения работоспособности устройства.
Чтобы добавить элементы в список требований к оборудованию, драйвер может сделать следующее:
- Вызовите следующие методы, чтобы изменить логические конфигурации в списке требований к ресурсам:
- WdfIoResourceRequirementsListGetCount для получения количества логических конфигураций.
- WdfIoResourceRequirementsListGetIoResList для получения доступа к логической конфигурации.
- WdfIoResourceListCreate, чтобы создать логическую конфигурацию.
- WdfIoResourceRequirementsListAppendIoResList или WdfIoRequirementsListInsertIoResList, чтобы добавить новую логическую конфигурацию.
- Вызовите следующие методы для изменения дескрипторов ресурсов в логической конфигурации:
- WdfIoResourceListGetCount для получения количества дескрипторов ресурсов.
- WdfIoResourceListGetDescriptor, чтобы получить доступ к дескриптору ресурса.
- WdfIoResourceListAppendDescriptor или WdfIoResourceListInsertDescriptor, чтобы добавить дескриптор ресурса.