DXGKDDI_GETDISPLAYSTATENONINTRUSIVE funzione di callback (dispmprt.h)
Il sistema operativo chiama un driver miniport visualizzato DxgkDdiGetDisplayStateNonIntrusive routine per raccogliere informazioni sullo stato di visualizzazione non intrusive dal driver.
Sintassi
DXGKDDI_GETDISPLAYSTATENONINTRUSIVE DxgkddiGetdisplaystatenonintrusive;
NTSTATUS DxgkddiGetdisplaystatenonintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATENONINTRUSIVE pArgs
)
{...}
Parametri
[in] Context
Puntatore a un contesto privato restituito da DxgkDdiQueryInterface.
[in/out] pArgs
Puntatore a una struttura DXGKARG_GETDISPLAYSTATENONINTRUSIVE.
Valore restituito
DxgkDdiGetDisplayStateNonIntrusive restituisce STATUS_SUCCESS se ha esito positivo. In caso contrario, restituisce un codice di errore, ad esempio uno dei seguenti.
Codice errore | Significato |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | Si è verificato un errore software generico all'interno del driver. |
STATUS_ACCESS_DENIED | L'hardware è attualmente usato da altri thread e questa DDI non può ottenere l'accesso. |
STATUS_DEVICE_HARDWARE_ERROR | Si è verificato un errore HW generico. |
STATUS_DEVICE_POWERED_OFF | Il dispositivo è spento. |
Osservazioni
Il sistema operativo chiama DxgkDdiGetDisplayStateNonIntrusive per raccogliere informazioni sullo stato di visualizzazione dal driver. A differenza di DxgkDdiGetDisplayStateIntrusive, il driver DxgkDdiGetDisplayStateNonIntrusive routine non deve eseguire operazioni che causano effetti collaterali visibili all'utente e il processo di raccolta deve essere relativamente veloce (idealmente entro pochi millisecondi). La frequenza di chiamata di questa routine sarà relativamente elevata. Oltre a essere chiamato per la diagnosi dello stato utente non valido, il sistema operativo potrebbe anche usare questa routine per registrare informazioni sullo stato cronologico dal driver a scopo di debug.
In rari casi in cui un'implementazione specifica della piattaforma richiede al driver di eseguire operazioni intrusive come parte di una chiamata a DxgkDdiGetDisplayStateNonIntrusive, il driver deve eseguire le operazioni, ma deve impostare pArgs->ReturnSubStatus per DXGK_DIAG_GETDISPLAYSTATE_CAUSED_GLITCH o DXGK_DIAG_GETDISPLAYSTATE_CHANGED_DISPLAY_STATE di conseguenza. In base al valore ReturnSubStatus, il sistema operativo potrebbe chiamare questa routine solo per scenari di errore in un determinato sistema.
Il sistema operativo chiamerà DxgkDdiGetDisplayStateNonIntrusive frequentemente (periodicamente o su altri eventi che si verificano comunemente) per raccogliere i dati sullo stato del driver per scopi di debug e per esaminare la sequenza temporale cronologica. Il sistema operativo chiamerà anche questa routine in particolari scenari di errore (ad esempio schermate nere) prima di raccogliere informazioni più dettagliate chiamando DxgkDdiGetDisplayStateIntrusive. Data la frequenza possibile di questa chiamata, i driver devono completarlo il più rapidamente possibile. Il sistema operativo chiamerà questa DDI con NumOfTargets impostato sul numero massimo di destinazioni supportate dalla scheda grafica specificata e VidPnTargetId compilato. Il driver miniport deve riempire solo le informazioni sullo stato di visualizzazione per le destinazioni su cui è effettivamente collegato un monitor. Per un vidpntarget su cui non è connesso alcun monitor, il miniport dovrebbe semplicemente compilare DXGK_DIAG_DISPLAY_CONNECTIVITY e il sistema operativo ignorerà tutti gli altri campi per tale destinazione.
Nota
I driver devono usare solo ReturnSubStatus per segnalare le condizioni di errore e non usare DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED per segnalare lo stato di connettività del monitoraggio. Lo scopo principale di DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED è quello delle chiamate intrusive in cui il sistema operativo non chiede di monitorare la connettività.
Se il driver raggiunge un errore in un determinato vidpntarget durante la raccolta di informazioni, deve usare ReturnSubStatus per impostare lo stato di errore e procedere con il vidpntarget successivo e non interrompere la chiamata complessiva a meno che tutti i percorsi non riscontrino errori. I driver dovrebbero idealmente registrare errori durante questa chiamata in alcuni log degli errori interni, in modo che quando il sistema operativo chiama DxgkDdiCollectDiagnosticInfo per la raccolta di informazioni sulla casella nera, questi errori vengono acquisiti come parte di una raccolta di log interna per aiutare IHV durante il debug.
Il livello di sincronizzazione per questa DDI è sincronizzazione a livello zero.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10, versione 2004 |
intestazione | dispmprt.h |
Vedere anche
DXGKARG_GETDISPLAYSTATENONINTRUSIVE