DXGKDDI_BEGINEXCLUSIVEACCESS función de devolución de llamada (d3dkmddi.h)
Dxgkrnl llama a DxgkDdiBeginExclusiveAccess para notificar al controlador en modo kernel que está a punto de producirse un conmutador de dominio IOMMU.
Sintaxis
DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;
NTSTATUS DxgkddiBeginexclusiveaccess(
IN_CONST_HANDLE hAdapter,
IN_PDXGKARG_BEGINEXCLUSIVEACCESS pBeginExclusiveAccess
)
{...}
Parámetros
hAdapter
[in] Identificador de un bloque de contexto asociado a un adaptador de pantalla.
pBeginExclusiveAccess
[in] Puntero a una estructura DXGKARG_BEGINEXCLUSIVEACCESS que contiene los argumentos de entrada para DxgkDdiBeginExclusiveAccess.
Valor devuelto
DxgkDdiBeginExclusiveAccess debe devolver STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, debe devolver un código de error NTSTATUS adecuado.
Comentarios
La asociación y desasociación de dominios iomMU es extremadamente rápida, pero no es actualmente atómica. Esto significa que no se garantiza que una transacción emitida a través de PCIe se traduzca correctamente mientras se intercambia a un dominio con asignaciones diferentes.
Para controlar esta situación, Dxgkrnl llama al siguiente par DDI de KMD:
- DxgkDdiBeginExclusiveAccess para notificar a KMD que está a punto de producirse un modificador de dominio IOMMU.
- DxgkDdiEndExclusiveAccess una vez completado el modificador de dominio IOMMU.
El controlador debe asegurarse de que su hardware sea silencioso siempre que el dispositivo se cambie a un nuevo dominio IOMMU. Es decir, el controlador debe asegurarse de que no lee ni escribe en la memoria del sistema desde el dispositivo entre estas dos llamadas.
Entre estas dos llamadas, Dxgkrnl garantiza lo siguiente:
- El programador se suspenderá. Todas las cargas de trabajo activas se vaciarán y no se enviará ninguna carga de trabajo nueva a o se programará en el hardware.
- No se realizará ninguna otra llamada DDI.
Como parte de estas llamadas, el controlador puede optar por deshabilitar y suprimir interrupciones (incluidas las interrupciones asincrónicas) durante el acceso exclusivo, incluso sin notificación explícita del sistema operativo.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10, versión 1803 (WDDM 2.4) |
Encabezado | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |