Condividi tramite


DXGKDDI_PREEMPTCOMMAND funzione di callback (d3dkmddi.h)

La funzione DxgkDdiPreemptCommand annulla un buffer DMA (Direct Memory Access) inviato in precedenza e attualmente accodato nell'unità di esecuzione dei comandi hardware.

Sintassi

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

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

Parametri

[in] hAdapter

Handle di un blocco di contesto associato a una scheda di visualizzazione. Il driver miniport di visualizzazione precedentemente fornito questo handle al sottosistema kernel della grafica Microsoft DirectX nel MiniportDeviceContext parametro di output della funzione DxgkDdiAddDevice.

[in] pPreemptCommand

Puntatore a una struttura DXGKARG_PREEMPTCOMMAND che descrive il comando usato per anteporre un buffer DMA inviato in precedenza all'unità di esecuzione del comando hardware.

Valore restituito

Restituisce STATUS_SUCCESS al completamento corretto. Se il driver restituisce invece un codice di errore, il sistema operativo causa un controllo errori del sistema. Per altre informazioni, vedere la sezione Osservazioni seguente.

Osservazioni

Se il driver determina che l'hardware è già stato completato l'elaborazione di tutti i buffer DMA inviati, e che l'hardware ha informato l'utilità di pianificazione dell'unità di elaborazione grafica (GPU) sui completamenti, quando la relativa DxgkDdiPreemptCommand funzione viene chiamata per impedire i buffer DMA, Il driver deve eseguire le operazioni seguenti anziché inviare il limite di precedenza identificato dall'PreemptionFenceId membro di DXGKARG_PREEMPTCOMMAND all'hardware:

  • Aumentare il livello di interruzione di IRQL. Ad esempio, il driver può chiamare la funzione dxgkCbSynchronizeExecution per la sincronizzazione con la relativa funzione DxgkDdiInterruptRoutine.
  • Informare l'utilità di pianificazione GPU sulle informazioni di precedenza. Il driver può chiamare direttamente la funzione DxgkCbNotifyInterrupt oppure chiamare direttamente la funzione DxgkDdiInterruptRoutine (ad esempio, se il driver deve eseguire anche altri aggiornamenti).

    Si noti che l'utilità di pianificazione GPU gestisce le istanze in cui l'hardware ha smesso di rispondere a causa del lavoro TDR (Timeout Detection and Recovery).

Se il driver restituisce un codice di errore, il sottosistema kernel della grafica Microsoft DirectX causa la verifica di un bug di sistema. In un file di dump di arresto anomalo del sistema, l'errore viene indicato dal messaggio BugCheck 0x119, con i quattro parametri seguenti.
  1. 0x2
  2. Codice di errore NTSTATUS restituito dalla chiamata al driver non riuscito
  3. Puntatore alla struttura DXGKARG_PREEMPTCOMMAND
  4. Puntatore a una struttura di dati dell'utilità di pianificazione interna
dxgkDdiPreemptCommand deve essere reso non modificabile perché viene eseguito in IRQL = DISPATCH_LEVEL

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista
piattaforma di destinazione Desktop
intestazione d3dkmddi.h
IRQL DISPATCH_LEVEL

Vedere anche

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine