IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG 構造体には、論理アロケーターを構成するために必要な情報が含まれています。
この構造体は、作成された [IOMMU_DMA_DOMAIN] にアタッチされた論理アロケーターを作成するために、IOMMU_DOMAIN_CREATE_EX によって使用されます。
構文
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 バディ アロケーターに固有の構成情報を提供します。
BuddyAllocatorConfig.AddressWidth
作成するアロケーターのアドレス幅を提供します。 32 ビット オペレーティング システムの幅は 32 ビットに制限され、64 ビット オペレーティング システムの幅は 63 ビットに制限されます。 ドメインを作成する場合、アドレス幅は、接続されるデバイスの最大アドレス幅に対応している必要があります。
備考
IOMMU_DOMAIN_CREATE_EXでは、呼び出し元は、作成するドメインに論理アロケーターをアタッチすることを選択できます。
このようなドメインと対話する場合、呼び出し元は以前のマッピングを追跡する必要はありません。 代わりに、論理アロケーターは、物理ページを所有ドメインにマッピングするときに使用する論理アドレスを決定する必要があります。 論理アロケーターは、論理アドレスの競合が発生しないように状態を維持する役割も担います。
現在、使用できる論理アロケーターの種類は Buddy Allocator だけです。 このアロケーターは、低い論理アドレスを優先し、4 KB 以上の 2 つの境界の電力で論理アドレスを割り当てます。 アロケーターは、空きアドレス参照のパフォーマンスを向上させるために、空き論理アドレス値のキャッシュでも拡張されます。
Buddy Allocator では、明示的なアドレスの割り当ては許可されません。 BuddyAllocator で作成された [IOMMU_DMA_DOMAIN* に明示的なアドレスを指定して IOMMU_MAP_IDENTITY_RANGE_EX または IOMMU_MAP_LOGICAL_RANGE_EX を呼び出すと失敗します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小サーバー | Windows Server 2022 |
ヘッダー | wdm.h (Wdm.h を含む) |