Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда функция обратного вызова EvtDeviceRemoveAddedResources или EvtDevicePrepareHardware получает список ресурсов, она получает две версии этого списка. Одна версия представляет необработанные ресурсы устройства, а другая — переведенные ресурсы устройства. Обе версии представляют один набор аппаратных ресурсов в одном порядке.
Необработанные ресурсы — это ресурсы, определяемые адресами, которые относятся к шине, к которой подключено устройство. Как правило, драйвер, который программирует устройство, предоставляет эти адреса устройству.
Переведённые ресурсы — это ресурсы, которые идентифицируются по системным физическим адресам и используются драйверами для доступа к ресурсам.
Драйвер для устройства шины PCI получает ресурсы, перечисленные в том порядке, в котором они отображаются в базовых регистрах адресов устройства (BAR). Однако дополнительные дескрипторы ресурсов могут быть перемежаться в списке таким образом, что ресурс по индексу X в BAR может не совпадать с ресурсом в списке ресурсов на той же позиции индекса.
Дополнительные сведения о необработанных и переведенных ресурсах см. в описаниях элементов для структуры CM_PARTIAL_RESOURCE_DESCRIPTOR .
Если переведенный список ресурсов устройства содержит ресурс с элементом типа структуры CM_PARTIAL_RESOURCE_DESCRIPTOR, который имеет значение CmResourceTypeMemory, каждый драйвер, обращаюющийся к ресурсу, должен выполнить следующее:
- Функция обратного вызова EvtDevicePrepareHardware драйвера должна вызывать MmMapIoSpace , чтобы сопоставить физические адреса системы с системными виртуальными адресами.
- Функция обратного вызова EvtDeviceReleaseHardware драйвера должна вызывать MmUnmapIoSpace, чтобы отображать адреса.
Дополнительные сведения о сопоставлении относительных адресов шины см. в разделе "Сопоставление адресов Bus-Relative с виртуальными адресами".