Condividi tramite


DXGKDDI_INTERRUPT_ROUTINE funzione di callback (dispmprt.h)

La funzione DxgkDdiInterruptRoutine gestisce gli interrupt generati da una scheda di visualizzazione.

Sintassi

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

BOOLEAN DxgkddiInterruptRoutine(
  [in] IN_CONST_PVOID MiniportDeviceContext,
  [in] IN_ULONG MessageNumber
)
{...}

Parametri

[in] MiniportDeviceContext

Handle di un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver miniport di visualizzazione ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX.

[in] MessageNumber

Indice in base zero nella tabella msi ( Message-Signaled Interrupt ) se l'interrupt è segnalato dal messaggio. Per gli interrupt basati su riga, questo parametro è zero.

Valore restituito

Se DxgkDdiInterruptRoutine determina che la scheda rappresentata da MiniportDeviceContext non ha generato l'interrupt, restituisce FALSE. In caso contrario, deve ignorare l'interrupt nell'adattatore prima che restituisca TRUE.

Commenti

Se l'interrupt è basato su riga (MessageNumber = 0), DxgkDdiInterruptRoutine deve determinare se l'adattatore rappresentato da MiniportDeviceContext ha generato l'interrupt e, in caso contrario, restituire FALSE immediatamente.

Se l'adattatore rappresentato da MiniportDeviceContext ha generato l'interrupt, DxgkDdiInterruptRoutine deve seguire questa procedura:

  • Ignorare l'interrupt nell'adattatore.
  • Completare l'operazione richiesta che ha causato l'interruzione o accodamento di un DPC che completerà l'operazione in un secondo momento.
  • Restituisce TRUE il più rapidamente possibile.

Qualsiasi altra funzione driver miniport di visualizzazione che condivide la memoria (ad esempio, parte dello stato rappresentato da MiniportDeviceContext) con DxgkDdiInterruptRoutine deve chiamare DxgkCbSynchronizeExecution per sincronizzare l'accesso alla memoria condivisa.

La funzione DxgkDdiInterruptRoutine può chiamare DxgkCbQueueDpc e DxgkCbNotifyInterrupt , ma non deve chiamare altre funzioni DxgkCbXxx . Per altre informazioni sulla sequenza corretta di chiamate di funzione, vedere Invio di un buffer dei comandi.

DxgkDdiInterruptRoutine viene eseguito in un IRQL con privilegi elevati, quindi tutte le funzioni chiamate devono essere non di paging. Inoltre, DxgkDdiInterruptRoutine (e tutte le funzioni chiamate) non deve tentare di accedere alla memoria di paging.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Piattaforma di destinazione Desktop
Intestazione dispmprt.h
IRQL Vedere la sezione Osservazioni.

Vedi anche

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution