функция обратного вызова DXGKDDI_BEGINEXCLUSIVEACCESS (d3dkmddi.h)

Dxgkrnl вызывает DxgkDdiBeginExclusiveAccess , чтобы уведомить драйвер режима ядра о том, что произойдет переключение домена IOMMU.

Синтаксис

DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;

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

Параметры

hAdapter

[in] Дескриптор для блока контекста, связанного с видеоадаптером.

pBeginExclusiveAccess

[in] Указатель на структуру DXGKARG_BEGINEXCLUSIVEACCESS , содержащую входные аргументы для DxgkDdiBeginExclusiveAccess.

Возвращаемое значение

DxgkDdiBeginExclusiveAccess должен возвращать STATUS_SUCCESS, если операция выполнена успешно. В противном случае он должен вернуть соответствующий код ошибки NTSTATUS .

Комментарии

Подключение и отсоединение домена IOMMU выполняется очень быстро, но, тем не менее, в настоящее время не является атомарным. Это означает, что транзакция, выданная через PCIe, не гарантируется для правильного перевода при переключении в домен с разными сопоставлениями.

Чтобы справиться с этой ситуацией, Dxgkrnl вызывает следующую пару KMD DDI:

  • DxgkDdiBeginExclusiveAccess для уведомления KMD о том, что произойдет переключение домена IOMMU.
  • DxgkDdiEndExclusiveAccess после завершения переключения домена IOMMU.

Драйвер должен обеспечить бесшумную работу оборудования при каждом переключении устройства на новый домен IOMMU. То есть драйвер должен убедиться, что он не считывает и не записывает данные в системную память с устройства между этими двумя вызовами.

Между этими двумя вызовами Dxgkrnl гарантирует следующее:

  • Планировщик будет приостановлен. Все активные рабочие нагрузки будут сброшены, и новые рабочие нагрузки не будут отправляться на оборудование или планироваться на оборудовании.
  • Другие вызовы DDI выполняться не будут.

В рамках этих вызовов драйвер может отключить и отключить прерывания (включая прерывания виртуальной синхронизации) на время монопольного доступа, даже без явного уведомления ос.

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1803 (WDDM 2.4)
Верхняя часть d3dkmddi.h
IRQL PASSIVE_LEVEL

См. также раздел

DRIVER_INITIALIZATION_DATA

DXGKARG_BEGINEXCLUSIVEACCESS

DxgkDdiEndExclusiveAccess