Condividi tramite


DXGKDDI_BEGINEXCLUSIVEACCESS funzione di callback (d3dkmddi.h)

Dxgkrnl chiama DxgkDdiBeginExclusiveAccess per notificare al driver in modalità kernel che sta per verificarsi un commutatore di dominio IOMMU.

Sintassi

DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;

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

Parametri

hAdapter

[in] Handle di un blocco di contesto associato a una scheda di visualizzazione.

pBeginExclusiveAccess

[in] Puntatore a una struttura DXGKARG_BEGINEXCLUSIVEACCESS che contiene gli argomenti di input per DxgkDdiBeginExclusiveAccess.

Valore restituito

DxgkDdiBeginExclusiveAccess deve restituire STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, deve restituire un codice di errore NTSTATUS appropriato.

Commenti

Il collegamento e lo scollegamento del dominio IOMMU è estremamente veloce, ma non è tuttavia attualmente atomico. Ciò significa che non è garantito che una transazione emessa su PCIe venga convertita correttamente durante lo scambio in un dominio con mapping diversi.

Per gestire questa situazione, Dxgkrnl chiama la coppia DDI kmd seguente:

  • DxgkDdiBeginExclusiveAccess per notificare al KMD che sta per verificarsi un cambio di dominio IOMMU.
  • DxgkDdiEndExclusiveAccess dopo il completamento dell'opzione di dominio IOMMU.

Il driver deve assicurarsi che l'hardware sia invisibile all'utente ogni volta che il dispositivo passa a un nuovo dominio IOMMU. Ovvero, il driver deve assicurarsi che non legga o scriva nella memoria di sistema dal dispositivo tra queste due chiamate.

Tra queste due chiamate , Dxgkrnl garantisce quanto segue:

  • L'utilità di pianificazione verrà sospesa. Tutti i carichi di lavoro attivi verranno scaricati e non verranno inviati nuovi carichi di lavoro o pianificati nell'hardware.
  • Non verranno effettuate altre chiamate DDI.

Come parte di queste chiamate, il driver può scegliere di disabilitare e eliminare gli interrupt (inclusi gli interrupt vsync) per la durata dell'accesso esclusivo, anche senza notifiche esplicite dal sistema operativo.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1803 (WDDM 2.4)
Intestazione d3dkmddi.h
IRQL PASSIVE_LEVEL

Vedi anche

DRIVER_INITIALIZATION_DATA

DXGKARG_BEGINEXCLUSIVEACCESS

DxgkDdiEndExclusiveAccess