DMA_IOMMU_INTERFACE_V3 구조체에는 IOMMU 버전 3(V3) 함수 집합이 포함되어 있습니다.
문법
typedef struct _DMA_IOMMU_INTERFACE_V3 {
PIOMMU_DOMAIN_CREATE_EX CreateDomainEx;
PIOMMU_DOMAIN_DELETE DeleteDomain;
PIOMMU_DOMAIN_ATTACH_DEVICE_EX AttachDeviceEx;
PIOMMU_DOMAIN_DETACH_DEVICE_EX DetachDeviceEx;
PIOMMU_FLUSH_DOMAIN FlushDomain;
PIOMMU_FLUSH_DOMAIN_VA_LIST FlushDomainByVaList;
PIOMMU_QUERY_INPUT_MAPPINGS QueryInputMappings;
PIOMMU_MAP_LOGICAL_RANGE_EX MapLogicalRangeEx;
PIOMMU_UNMAP_LOGICAL_RANGE UnmapLogicalRange;
PIOMMU_MAP_IDENTITY_RANGE_EX MapIdentityRangeEx;
PIOMMU_UNMAP_IDENTITY_RANGE_EX UnmapIdentityRangeEx;
PIOMMU_SET_DEVICE_FAULT_REPORTING_EX SetDeviceFaultReportingEx;
PIOMMU_DOMAIN_CONFIGURE ConfigureDomain;
PIOMMU_DEVICE_QUERY_DOMAIN_TYPES QueryAvailableDomainTypes;
PIOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK RegisterInterfaceStateChangeCallback;
PIOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK UnregisterInterfaceStateChangeCallback;
PIOMMU_RESERVE_LOGICAL_ADDRESS_RANGE ReserveLogicalAddressRange;
PIOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE FreeReservedLogicalAddressRange;
PIOMMU_MAP_RESERVED_LOGICAL_RANGE MapReservedLogicalRange;
PIOMMU_UNMAP_RESERVED_LOGICAL_RANGE UnmapReservedLogicalRange;
PIOMMU_DEVICE_CREATE CreateDevice;
PIOMMU_DEVICE_DELETE DeleteDevice;
PIOMMU_PASID_DEVICE_CREATE CreatePasidDevice;
PIOMMU_PASID_DEVICE_DELETE DeletePasidDevice;
PIOMMU_DOMAIN_ATTACH_PASID_DEVICE AttachPasidDevice;
PIOMMU_DOMAIN_DETACH_PASID_DEVICE DetachPasidDevice;
PIOMMU_DEVICE_QUERY_INFORMATION QueryDeviceInfo;
} DMA_IOMMU_INTERFACE_V3, *PDMA_IOMMU_INTERFACE_V3;
구성원
CreateDomainEx
DMA 다시 매핑 디바이스 도메인을 만드는 IOMMU_DOMAIN_CREATE_EX 함수에 대한 포인터입니다.
DeleteDomain
디바이스 도메인을 삭제하는 IOMMU_DOMAIN_DELETE 함수에 대한 포인터입니다.
AttachDeviceEx
도메인에 디바이스를 연결하는 IOMMU_DOMAIN_ATTACH_DEVICE_EX 함수에 대한 포인터입니다.
DetachDeviceEx
도메인에서 디바이스를 분리하는 IOMMU_DOMAIN_DETACH_DEVICE_EX 함수에 대한 포인터입니다.
FlushDomain
이 도메인과 일치하는 모든 항목에 대해 TLB를 플러시하는 IOMMU_FLUSH_DOMAIN 함수에 대한 포인터입니다.
FlushDomainByVaList
지정된 도메인의 ASID 및 제공된 목록의 주소 중 하나와 일치하는 모든 항목에 대해 TLB를 플러시하는 IOMMU_FLUSH_DOMAIN_VA_LIST 함수에 대한 포인터입니다.
QueryInputMappings
지정된 디바이스에 유효한 입력 매핑 ID를 찾고 제공된 버퍼를 해당 ID로 채우려는 IOMMU_QUERY_INPUT_MAPPINGS 함수에 대한 포인터입니다.
MapLogicalRangeEx
지정된 도메인의 주소 공간에 페이지 범위를 매핑하는 IOMMU_MAP_LOGICAL_RANGE_EX 함수에 대한 포인터입니다.
UnmapLogicalRange
페이지 범위의 매핑을 해제하는 IOMMU_UNMAP_LOGICAL_RANGE 함수에 대한 포인터입니다.
MapIdentityRangeEx
제공된 도메인에서 제공된 실제 주소에 대한 ID 매핑을 만드는 IOMMU_MAP_IDENTITY_RANGE_EX 함수에 대한 포인터입니다.
UnmapIdentityRangeEx
지정된 실제 주소에 대한 ID 매핑을 삭제하는 IOMMU_UNMAP_IDENTITY_RANGE_EX 함수에 대한 포인터입니다.
SetDeviceFaultReportingEx
도메인에 이미 연결된 디바이스에서 디바이스 오류 보고 상태를 설정하는 IOMMU_SET_DEVICE_FAULT_REPORTING_EX 함수에 대한 포인터입니다.
ConfigureDomain
사용할 도메인을 구성하는 IOMMU_DOMAIN_CONFIGURE 함수에 대한 포인터입니다.
QueryAvailableDomainTypes
플랫폼 및 DMA Guard 정책과 같은 환경 요인에 따라 디바이스가 연결할 수 있는 사용 가능한 유형의 도메인을 쿼리하는 IOMMU_DEVICE_QUERY_DOMAIN_TYPES 함수에 대한 포인터입니다.
RegisterInterfaceStateChangeCallback
IOMMU 인터페이스와 관련된 상태 변경이 발생할 때마다 호출자가 호출할 콜백을 등록할 수 있도록 하는 IOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK 함수에 대한 포인터입니다.
UnregisterInterfaceStateChangeCallback
호출자가 등록된 콜백의 등록을 취소할 수 있는 IOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK 함수에 대한 포인터입니다.
ReserveLogicalAddressRange
향후 매핑에 사용할 수 있는 논리 주소 공간을 미리 할당하는 IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE 함수에 대한 포인터입니다.
FreeReservedLogicalAddressRange
논리 주소 토큰을 해제하는 IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE 함수에 대한 포인터입니다.
MapReservedLogicalRange
예약된 논리 범위를 매핑하는 IOMMU_MAP_RESERVED_LOGICAL_RANGE 함수에 대한 포인터입니다.
UnmapReservedLogicalRange
이전에 매핑된 예약된 논리 범위의 매핑을 해제하는 IOMMU_UNMAP_RESERVED_LOGICAL_RANGE 함수에 대한 포인터입니다.
CreateDevice
물리적 디바이스 개체를 사용하고 IOMMU_DMA_DEVICE만드는 IOMMU_DEVICE_CREATE 함수에 대한 포인터입니다.
DeleteDevice
IOMMU_DMA_DEVICE삭제하는 IOMMU_DEVICE_DELETE 함수에 대한 포인터입니다.
CreatePasidDevice
IOMMU DMA 디바이스에서 자체 PASID를 사용하여 새 하위 디바이스를 만드는 IOMMU_PASID_DEVICE_CREATE 함수에 대한 포인터입니다.
DeletePasidDevice
PASID 하위 디바이스를 삭제하고 ASID를 해제하는 IOMMU_PASID_DEVICE_DELETE 함수에 대한 포인터입니다.
AttachPasidDevice
PASID 하위 디바이스를 기존 메모리 도메인에 연결하는 IOMMU_DOMAIN_ATTACH_PASID_DEVICE 함수에 대한 포인터입니다.
DetachPasidDevice
현재 연결된 도메인에서 PASID 하위 디바이스를 분리하는 IOMMU_DOMAIN_DETACH_PASID_DEVICE 함수에 대한 포인터입니다.
QueryDeviceInfo
IOMMU DMA 디바이스에 대한 정보를 쿼리하는 IOMMU_DEVICE_QUERY_INFORMATION 함수에 대한 포인터입니다.
비고
이 구조는 추가 PASID(프로세스 주소 공간 식별자) 지원 함수를 사용하여 DMA_IOMMU_INTERFACE_V2 확장합니다. V3 인터페이스에는 V2의 모든 함수와 PASID 하위 디바이스를 만들고 관리하고 디바이스 정보를 쿼리하는 새로운 기능이 포함되어 있습니다.
요구 사항
| 요구 사항 | 가치 |
|---|---|
| 지원되는 최소 클라이언트 | Windows 11 버전 22H2 |
| 헤더 | wdm.h(Wdm.h 포함) |
참고하십시오
IOMMU_DOMAIN_ATTACH_PASID_DEVICE