DXGKDDI_PREEMPTCOMMAND función de devolución de llamada (d3dkmddi.h)

La función DxgkDdiPreemptCommand adelanta un búfer de acceso directo a memoria (DMA) que se envió anteriormente a y actualmente se puso en cola en la unidad de ejecución de comandos de hardware.

Sintaxis

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

NTSTATUS DxgkddiPreemptcommand(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}

Parámetros

[in] hAdapter

Identificador de un bloque de contexto asociado a un adaptador de pantalla. El controlador de miniporte de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de Microsoft DirectX en el parámetro de salida MiniportDeviceContext de la función DxgkDdiAddDevice .

[in] pPreemptCommand

Puntero a una estructura de DXGKARG_PREEMPTCOMMAND que describe el comando que se usa para adelantar un búfer DMA enviado previamente a la unidad de ejecución de comandos de hardware.

Valor devuelto

Devuelve STATUS_SUCCESS tras la finalización correcta. Si el controlador devuelve en su lugar un código de error, el sistema operativo hace que se produzca una comprobación de errores del sistema. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Comentarios

Si el controlador determina que el hardware ya ha terminado de procesar todos los búferes DMA enviados, y que el hardware informó al programador de la unidad de procesamiento gráfico (GPU) sobre las finalizaciones,--cuando se llama a su función DxgkDdiPreemptCommand para adelantar los búferes DMA, el controlador debe realizar las siguientes operaciones en lugar de enviar la barrera de adelantamiento identificada por el miembro PreemptionFenceId de DXGKARG_PREEMPTCOMMAND al hardware:

  • Genere IRQL al nivel de interrupción. Por ejemplo, el controlador puede llamar a la función DxgkCbSynchronizeExecution para sincronizar con su función DxgkDdiInterruptRoutine .
  • Informe al programador de GPU sobre la información de adelantamiento. El controlador puede llamar directamente a la función DxgkCbNotifyInterrupt o llamar a su función DxgkDdiInterruptRoutine (por ejemplo, si el controlador también debe realizar otras actualizaciones).

    Tenga en cuenta que el programador de GPU controla las instancias en las que el hardware ha dejado de responder debido al trabajo de detección y recuperación de tiempo de espera (TDR).

Si el controlador devuelve un código de error, el subsistema del kernel de gráficos de Microsoft DirectX hace que se produzca una comprobación de errores del sistema. En un archivo de volcado de memoria, el mensaje BugCheck 0x119 indica el error, que tiene los cuatro parámetros siguientes.
  1. 0x2
  2. El código de error NTSTATUS devuelto por la llamada de controlador con error
  3. Puntero a la estructura de DXGKARG_PREEMPTCOMMAND
  4. Puntero a una estructura de datos de programador interna
DxgkDdiPreemptCommand debe ser no paginable porque se ejecuta en IRQL = DISPATCH_LEVEL

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Plataforma de destino Escritorio
Encabezado d3dkmddi.h
IRQL DISPATCH_LEVEL

Consulte también

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine