x64 / ntdllntoskrnl /

_DMA_IOMMU_INTERFACE_V4

← first 1 build latest →
struct _DMA_IOMMU_INTERFACE_V4 {
long (*DeleteDomain)(struct _IOMMU_DMA_DOMAIN*);/* 0x8 8 */
long (*AttachDeviceEx)(struct _IOMMU_DMA_DOMAIN*, struct _IOMMU_DMA_DEVICE*);/* 0x10 8 */
long (*DetachDeviceEx)(struct _IOMMU_DMA_DEVICE*);/* 0x18 8 */
long (*FlushDomain)(struct _IOMMU_DMA_DOMAIN*);/* 0x20 8 */
long (*FlushDomainByVaList)(struct _IOMMU_DMA_DOMAIN*, unsigned char, unsigned long, void*);/* 0x28 8 */
long (*QueryInputMappings)(struct _DEVICE_OBJECT*, struct _INPUT_MAPPING_ELEMENT*, unsigned long, unsigned long*);/* 0x30 8 */
long (*MapLogicalRangeEx)(struct _IOMMU_DMA_DOMAIN*, unsigned long, struct _IOMMU_MAP_PHYSICAL_ADDRESS*, unsigned __int64*, unsigned __int64*, unsigned __int64*, unsigned __int64*);/* 0x38 8 */
/* ── cacheline 1 boundary (64 bytes) ── */
long (*UnmapLogicalRange)(struct _IOMMU_DMA_DOMAIN*, unsigned __int64, unsigned __int64);/* 0x40 8 */
long (*MapIdentityRangeEx)(struct _IOMMU_DMA_DOMAIN*, unsigned long, struct _IOMMU_MAP_PHYSICAL_ADDRESS*);/* 0x48 8 */
long (*UnmapIdentityRangeEx)(struct _IOMMU_DMA_DOMAIN*, struct _IOMMU_MAP_PHYSICAL_ADDRESS*);/* 0x50 8 */
long (*SetDeviceFaultReportingEx)(struct _IOMMU_DMA_DEVICE*, unsigned long, unsigned char, struct _DEVICE_FAULT_CONFIGURATION*);/* 0x58 8 */
long (*ConfigureDomain)(struct _IOMMU_DMA_DOMAIN*, struct _DOMAIN_CONFIGURATION*);/* 0x60 8 */
void (*QueryAvailableDomainTypes)(struct _IOMMU_DMA_DEVICE*, unsigned long*);/* 0x68 8 */
long (*RegisterInterfaceStateChangeCallback)(void (*)(struct _IOMMU_INTERFACE_STATE_CHANGE*, void*), void*, struct _IOMMU_DMA_DEVICE*, union _IOMMU_INTERFACE_STATE_CHANGE_FIELDS*);/* 0x70 8 */
long (*UnregisterInterfaceStateChangeCallback)(void (*)(struct _IOMMU_INTERFACE_STATE_CHANGE*, void*), struct _IOMMU_DMA_DEVICE*);/* 0x78 8 */
/* ── cacheline 2 boundary (128 bytes) ── */
long (*ReserveLogicalAddressRange)(struct _IOMMU_DMA_DOMAIN*, unsigned __int64, unsigned __int64*, unsigned __int64*, unsigned __int64*, struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN**);/* 0x80 8 */
long (*FreeReservedLogicalAddressRange)(struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN*);/* 0x88 8 */
long (*MapReservedLogicalRange)(struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN*, unsigned __int64, unsigned long, struct _IOMMU_MAP_PHYSICAL_ADDRESS*, struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT*);/* 0x90 8 */
long (*UnmapReservedLogicalRange)(struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT*);/* 0x98 8 */
long (*CreateDevice)(struct _DEVICE_OBJECT*, struct _IOMMU_DEVICE_CREATION_CONFIGURATION*, struct _IOMMU_DMA_DEVICE**);/* 0xa0 8 */
long (*DeleteDevice)(struct _IOMMU_DMA_DEVICE*);/* 0xa8 8 */
long (*CreatePasidDevice)(struct _IOMMU_DMA_DEVICE*, struct _IOMMU_DMA_PASID_DEVICE**, unsigned long*);/* 0xb0 8 */
long (*DeletePasidDevice)(struct _IOMMU_DMA_PASID_DEVICE*);/* 0xb8 8 */
/* ── cacheline 3 boundary (192 bytes) ── */
long (*AttachPasidDevice)(struct _IOMMU_DMA_DOMAIN*, struct _IOMMU_DMA_PASID_DEVICE*);/* 0xc0 8 */
long (*DetachPasidDevice)(struct _IOMMU_DMA_PASID_DEVICE*);/* 0xc8 8 */
long (*QueryDeviceInfo)(struct _IOMMU_DMA_DEVICE*, unsigned long, unsigned long*, struct _IOMMU_DMA_DEVICE_INFORMATION*);/* 0xd0 8 */
long (*QueryDomainInfo)(struct _IOMMU_DMA_DOMAIN*, unsigned long, unsigned long*, struct _IOMMU_DMA_DOMAIN_INFORMATION*);/* 0xd8 8 */
};
size 224 (0xe0)28 members0 holespadding 04 cachelines
Used in (1)