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 una rutina de devolución de llamada DxgkProtectedCallback proporcionada mientras está 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 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 protegida del controlador DxgkProtectedCallback en el mismo contexto de subproceso que el autor de la llamada. El autor de la llamada debe llamar desde una llamada DDI sincronizada de segundo otercer nivel . 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 las funciones DxgkCbReadDeviceSpace o DxgkCbWriteDeviceSpace 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 de la rutina de devolución de llamada DxgkProtectedCallback .
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.
Comentarios
Las solicitudes de aplicación se bloquearán hasta que esta función devuelva. Aunque 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 llamada.
Esta función también impide que todos los espacios de configuración 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 de llamada esperando a que se devuelva la rutina de devolución de llamada DxgkProtectedCallback . 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 el miembro Flags de la estructura 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 | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Plataforma de destino | Escritorio |
Encabezado | dispmprt.h (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL |