DXGKCB_EXCLUDE_ADAPTER_ACCESS función de devolución de llamada (dispmprt.h)
La función DxgkCbExcludeAdapterAccess impide todo el acceso al adaptador de pantalla y llama a un DxgkProtectedCallback proporcionado rutina de devolución de llamada mientras se encuentra en este estado protegido.
Sintaxis
DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkcbExcludeAdapterAccess;
NTSTATUS DxgkcbExcludeAdapterAccess(
[in] HANDLE DeviceHandle,
[in] ULONG Attributes,
[in] DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
[in] PVOID ProtectedCallbackContext
)
{...}
Parámetros
[in] DeviceHandle
Identificador que representa un adaptador de pantalla. El controlador de minipuerto de pantalla obtuvo este identificador en el miembro DeviceHandle de la estructura de DXGKRNL_INTERFACE que se pasó a DxgkDdiStartDevice.
[in] Attributes
Valor que especifica las operaciones de memoria de vídeo. Este parámetro puede ser cualquier combinación de los siguientes valores de marca de bits, excepto que DXGK_EXCLUDE_EVICT_ALL y DXGK_EXCLUDE_CALL_SYNCHRONOUS son mutuamente excluyentes. Estos valores se definen en Dispmprt.h.
DXGK_EXCLUDE_EVICT_ALL
Toda la memoria de vídeo del adaptador se copia en la memoria del sistema; se trata de una operación costosa. Si el parámetro Attributes no está establecido en este valor, se suspende el acceso a superficies bloqueadas en la memoria del sistema.
DXGK_EXCLUDE_CALL_SYNCHRONOUS
Ejecuta la rutina de devolución de llamada del controlador dxgkProtectedCallback protegida en el mismo contexto de subproceso que el autor de la llamada. El autor de la llamada debe llamar desde un de segundo nivel o tercera llamada DDI sincronizada. De lo contrario, se producirá un error en la función DxgkCbExcludeAdapterAccess.
DXGK_EXCLUDE_BRIDGE_ACCESS
Protege el acceso al puerto raíz de PCI Express (PCIe) cuando el controlador necesita acceder al espacio de configuración del puerto raíz. Establezca el parámetro Attributes en este valor antes de llamar a DxgkCbReadDeviceSpace o DxgkCbWriteDeviceSpace funciones con el parámetro DataType establecido en DXGK_WHICHSPACE_BRIDGE.
[in] DxgkProtectedCallback
La rutina de devolución de llamada que se va a llamar cuando se ha detenido todo el acceso al adaptador.
[in] ProtectedCallbackContext
Puntero al valor que se va a pasar al parámetro ProtectedCallbackContext del DxgkProtectedCallback rutina de devolución de llamada.
Valor devuelto
DxgkCbExcludeAdapterAccess devuelve STATUS_SUCCESS si se ejecuta correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.
Observaciones
Las solicitudes de aplicación se bloquearán hasta que se devuelva esta función. Mientras se encuentra en este estado de protección, se llama a la rutina de devolución de llamada dxgkProtectedCallback proporcionada en IRQL = PASSIVE_LEVEL.
DxgkCbExcludeAdapterAccess adquiere acceso exclusivo al adaptador para evitar operaciones de E/S relacionadas con gráficos al adaptador de pantalla y a todos los vínculos. Esto inactiva eficazmente la GPU durante toda la duración de la llamada.
Esta función también impide que todos los espacios de configuración de PCI accedan al puerto raíz pci Express (PCIe) si se especifica DXGK_EXCLUDE_BRIDGE_ACCESS en el parámetro Attributes.
El controlador no debe bloquear la ejecución continua del subproceso que realiza la llamada esperando a que la DxgkProtectedCallback rutina de devolución de llamada que se devuelva. Por ejemplo, el controlador podría programar un subproceso de trabajo asincrónico para controlar la rutina de devolución de llamada.
Una excepción a este bloqueo de solicitudes de aplicación se produce cuando el controlador de pantalla en modo de usuario ha establecido la marca de campo de bits useAlternateVA en la flags miembro de la estructura de D3DDDICB_LOCKFLAGS en una llamada a la función pfnLockCb. DxgkCbExcludeAdapterAccess no bloquea este tipo de bloqueo de asignación y la CPU puede acceder al adaptador de pantalla mientras se ejecuta la rutina de devolución de llamada protegida.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows Vista |
de la plataforma de destino de | Escritorio |
encabezado de | dispmprt.h (incluya Dispmprt.h) |
irQL | PASSIVE_LEVEL |