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 per 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 kernel della grafica DirectX.
[in] MessageNumber
Indice in base zero nella tabella interrupt segnalato dal messaggio (MSI) se l'interrupt viene segnalato tramite messaggio. Per gli interrupt basati su riga, questo parametro è zero.
Valore restituito
Se DxgkDdiInterruptRoutine determina che l'adattatore rappresentato da MiniportDeviceContext non ha generato l'interrupt, restituisce FALSE. In caso contrario, deve ignorare l'interrupt sull'adattatore prima che restituisca TRUE.
Osservazioni
Se l'interrupt è basato su riga (MessageNumber = 0), DxgkDdiInterruptRoutine deve determinare se l'adattatore rappresentato da MiniportDeviceContext generato l'interrupt e, in caso contrario, restituire false immediatamente.
Se l'adattatore rappresentato da MiniportDeviceContext ha generato l'interrupt, DxgkDdiInterruptRoutine seguire questa procedura:
- Ignorare l'interrupt sull'adattatore.
- Completare l'operazione richiesta che ha causato l'interrupt o accodamento di un DPC che completerà l'operazione in un secondo momento.
- Restituisce TRUE il più rapidamente possibile.
Qualsiasi altra funzione del 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 delle 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 pageable. Inoltre, DxgkDdiInterruptRoutine (e tutte le funzioni chiamate) non deve tentare di accedere alla memoria pageable.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista |
piattaforma di destinazione | Desktop |
intestazione | dispmprt.h |
IRQL | Vedere la sezione Osservazioni. |