структура IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG (wdm.h)
Структура IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG содержит сведения, необходимые для настройки логического распределителя.
Эта структура используется IOMMU_DOMAIN_CREATE_EX для создания логического распределителя, присоединенного к созданному [IOMMU_DMA_DOMAIN].
Синтаксис
typedef struct _IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG {
IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE LogicalAllocatorType;
union {
struct {
ULONG AddressWidth;
} BuddyAllocatorConfig;
};
} IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG, *PIOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG;
Члены
LogicalAllocatorType
Значение IOMMU_DMA_LOGICAL_ALLOCATOR_TYPE , указывающее тип создаваемого логического распределителя.
BuddyAllocatorConfig
Предоставляет сведения о конфигурации, относящиеся к HAL Buddy Allocator.
BuddyAllocatorConfig.AddressWidth
Предоставляет ширину адреса для создаваемого распределителя. Ширина 32-разрядных операционных систем ограничена 32 битами, а для 64-разрядных операционных систем — 63 бита. При создании домена ширина адреса должна соответствовать максимальной ширине адреса для устройств, которые должны быть присоединены.
Комментарии
При IOMMU_DOMAIN_CREATE_EX вызывающий объект может подключить логический распределитель к создаваемому домену.
При взаимодействии с таким доменом вызывающий объект не должен отслеживать предыдущие сопоставления. Вместо этого логический распределител берет на себя ответственность за определение логического адреса, который будет использоваться при сопоставлении физических страниц с доменом-владельцем. Логический распределител также отвечает за поддержание состояния, чтобы гарантировать отсутствие конфликтов логических адресов.
В настоящее время единственным доступным типом логического распределителя является Buddy Allocator. Этот распределителя предпочитает низкие логические адреса и будет выделять логические адреса на двух границах размером не более 4 КБ. Распределителе также дополнен кэшем значений свободных логических адресов для повышения производительности поиска свободных адресов.
Buddy Allocator не допускает явное выделение адресов. Вызов IOMMU_MAP_IDENTITY_RANGE_EX или IOMMU_MAP_LOGICAL_RANGE_EX с явным адресом, указанным в [IOMMU_DMA_DOMAIN*, созданном с помощью BuddyAllocator, завершится ошибкой.
Требования
Требование | Значение |
---|---|
Минимальная версия сервера | Windows Server 2022 |
Верхняя часть | wdm.h (включая Wdm.h) |