DXGKDDI_BEGINEXCLUSIVEACCESS função de retorno de chamada (d3dkmddi.h)
Dxgkrnl chama DxgkDdiBeginExclusiveAccess para notificar o driver do modo kernel de que uma opção de domínio IOMMU está prestes a ocorrer.
Sintaxe
DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;
NTSTATUS DxgkddiBeginexclusiveaccess(
IN_CONST_HANDLE hAdapter,
IN_PDXGKARG_BEGINEXCLUSIVEACCESS pBeginExclusiveAccess
)
{...}
Parâmetros
hAdapter
[in] Um identificador para um bloco de contexto associado a um adaptador de exibição.
pBeginExclusiveAccess
[in] Ponteiro para uma estrutura DXGKARG_BEGINEXCLUSIVEACCESS que contém os argumentos de entrada para DxgkDdiBeginExclusiveAccess.
Retornar valor
DxgkDdiBeginExclusiveAccess deverá retornar STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, ele deverá retornar um código de erro NTSTATUS apropriado.
Comentários
A anexação e desanexação de domínio IOMMU é extremamente rápida, mas, no entanto, não é atômica no momento. Isso significa que não há garantia de que uma transação emitida por PCIe seja traduzida corretamente durante a troca para um domínio com mapeamentos diferentes.
Para lidar com essa situação, Dxgkrnl chama o seguinte par DDI KMD:
- DxgkDdiBeginExclusiveAccess para notificar o KMD de que uma opção de domínio IOMMU está prestes a ocorrer.
- DxgkDdiEndExclusiveAccess após a conclusão da opção de domínio IOMMU.
O driver deve garantir que seu hardware seja silencioso sempre que o dispositivo for alternado para um novo domínio IOMMU. Ou seja, o driver deve garantir que ele não leia ou escreva na memória do sistema do dispositivo entre essas duas chamadas.
Entre essas duas chamadas, dxgkrnl garante o seguinte:
- O agendador será suspenso. Todas as cargas de trabalho ativas serão liberadas e nenhuma nova carga de trabalho será enviada ou agendada no hardware.
- Nenhuma outra chamada DDI será feita.
Como parte dessas chamadas, o driver pode optar por desabilitar e suprimir interrupções (incluindo interrupções vsync) durante o acesso exclusivo, mesmo sem notificação explícita do sistema operacional.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1803 (WDDM 2.4) |
Cabeçalho | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |