Compartir a través de


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 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 minipuerto de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de Microsoft DirectX en la función MiniportDeviceContext parámetro de salida del 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 en su lugar el controlador devuelve 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 siguiente sección Comentarios.

Observaciones

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 de gráficos (GPU) sobre las finalizaciones, cuando se llama a su DxgkDdiPreemptCommand función para reemplazar los búferes DMA, El controlador debe realizar las siguientes operaciones en lugar de enviar la barrera de adelantamiento identificada por el PreemptionFenceId miembro de DXGKARG_PREEMPTCOMMAND al hardware:

  • Genere IRQL para interrumpir el nivel. 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 de tiempo de espera y recuperación (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, que tiene los cuatro parámetros siguientes.
  1. 0x2
  2. El código de error NTSTATUS devuelto desde la llamada al controlador con errores
  3. Puntero a la estructura 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 Valor
cliente mínimo admitido Windows Vista
de la plataforma de destino de Escritorio
encabezado de d3dkmddi.h
irQL DISPATCH_LEVEL

Consulte también

DXGKARG_PREEMPTCOMMAND

dxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

dxgkDdiAddDevice

dxgkDdiInterruptRoutine