다음을 통해 공유


DMA_IOMMU_INTERFACE_V3 구조체(wdm.h)

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 포함)

참고하십시오

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX

IOMMU_PASID_DEVICE_CREATE

IOMMU_PASID_DEVICE_DELETE

IOMMU_DOMAIN_ATTACH_PASID_DEVICE

IOMMU_DOMAIN_DETACH_PASID_DEVICE

IOMMU_DEVICE_QUERY_INFORMATION