Поделиться через


функция обратного вызова 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 не будут выполняться.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 1803 (WDDM 2.4)
заголовка d3dkmddi.h
IRQL PASSIVE_LEVEL

См. также

DRIVER_INITIALIZATION_DATA

DXGKARG_BEGINEXCLUSIVEACCESS

DxgkDdiEndExclusiveAccess