Condividi tramite


DXGKDDI_PREEMPTCOMMAND funzione di callback (d3dkmddi.h)

La funzione DxgkDdiPreemptCommand impedisce 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 a un blocco di contesto associato a una scheda di visualizzazione. Il driver miniport visualizzato in precedenza ha fornito questo handle al sottosistema kernel della grafica Microsoft DirectX nel parametro di output MiniportDeviceContext della funzione DxgkDdiAddDevice .

[in] pPreemptCommand

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

Valore restituito

Restituisce STATUS_SUCCESS al completamento corretto. Se il driver restituisce invece un codice di errore, il sistema operativo causa la verifica di un bug di sistema. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Commenti

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) sul completamento- quando la funzione DxgkDdiPreemptCommand viene chiamata per premettere i buffer DMA, il driver deve eseguire le operazioni seguenti anziché inviare il preempt fence identificato dal membro PreemptionFenceId di DXGKARG_PREEMPTCOMMAND all'hardware:

  • Generare IRQL a livello di interruzione. Ad esempio, il driver può chiamare la funzione DxgkCbSynchronizeExecution per sincronizzare con la relativa funzione DxgkDdiInterruptRoutine .
  • Informare l'utilità di pianificazione gpu sulle informazioni di preemption. Il driver può chiamare direttamente la funzione DxgkCbNotifyInterrupt o 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 interrotto la risposta a causa del funzionamento del rilevamento timeout e del ripristino (TDR).

Se il driver restituisce un codice di errore, il sottosistema del kernel della grafica Microsoft DirectX causa la verifica di un bug di sistema. In un file di dump dell'arresto anomalo, l'errore viene notato dal messaggio BugCheck 0x119, con i quattro parametri seguenti.
  1. 0x2
  2. Codice di errore NTSTATUS restituito dalla chiamata del 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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Piattaforma di destinazione Desktop
Intestazione d3dkmddi.h
IRQL DISPATCH_LEVEL

Vedi anche

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine