다음을 통해 공유


DXGKDDI_BEGINEXCLUSIVEACCESS 콜백 함수(d3dkmddi.h)

DxgkrnlDxgkDdiBeginExclusiveAccess 호출하여 커널 모드 드라이버에 IOMMU 도메인 스위치가 발생할 것임을 알립니다.

통사론

DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;

NTSTATUS DxgkddiBeginexclusiveaccess(
  IN_CONST_HANDLE hAdapter,
  IN_PDXGKARG_BEGINEXCLUSIVEACCESS pBeginExclusiveAccess
)
{...}

매개 변수

hAdapter

[in] 디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다.

pBeginExclusiveAccess

[in] DxgkDdiBeginExclusiveAccess대한 입력 인수를 포함하는 DXGKARG_BEGINEXCLUSIVEACCESS 구조체에 대한 포인터입니다.

반환 값

DxgkDdiBeginExclusiveAccess 작업이 성공하면 STATUS_SUCCESS 반환해야 합니다. 그렇지 않으면 적절한 NTSTATUS 오류 코드를 반환해야 합니다.

발언

IOMMU 도메인 연결 및 분리는 매우 빠르지만 현재 원자성이 아닙니다. 즉, PCIe를 통해 발급된 트랜잭션이 다른 매핑이 있는 도메인으로 교환하는 동안 올바르게 변환되지 않습니다.

이 상황을 처리하기 위해 Dxgkrnl 다음 KMD DDI 쌍을 호출합니다.

  • DxgkDdiBeginExclusiveAccess IOMMU 도메인 스위치가 발생할 것임을 KMD에 알립니다.
  • IOMMU 도메인 스위치가 완료된 후 DxgkDdiEndExclusiveAccess.

드라이버는 디바이스가 새 IOMMU 도메인으로 전환될 때마다 해당 하드웨어가 자동으로 유지되도록 해야 합니다. 즉, 드라이버는 이러한 두 호출 사이에 디바이스에서 시스템 메모리를 읽거나 쓰지 않도록 해야 합니다.

이러한 두 호출 사이에 Dxgkrnl 다음을 보장합니다.

  • 스케줄러가 일시 중단됩니다. 모든 활성 워크로드가 플러시되고 하드웨어에 새 워크로드가 전송되거나 예약되지 않습니다.
  • 다른 DDI 호출은 발생하지 않습니다.

이러한 호출의 일부로 드라이버는 OS의 명시적 알림 없이도 단독 액세스 기간 동안 인터럽트(vsync 인터럽트 포함)를 사용하지 않도록 설정하고 표시하지 않도록 선택할 수 있습니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 버전 1803(WDDM 2.4)
헤더 d3dkmddi.h
IRQL PASSIVE_LEVEL

참고 항목

DRIVER_INITIALIZATION_DATA

DXGKARG_BEGINEXCLUSIVEACCESS

DxgkDdiEndExclusiveAccess