Condividi tramite


DXGKDDI_GETDISPLAYSTATENONINTRUSIVE funzione di callback (dispmprt.h)

Il sistema operativo chiama una routine DxgkDdiGetDisplayStateNonIntrusive per raccogliere informazioni sullo stato visualizzato 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 di 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 questo DDI non può accedervi.
STATUS_DEVICE_HARDWARE_ERROR Errore HW generico.
STATUS_DEVICE_POWERED_OFF Il dispositivo è disattivato.

Commenti

Il sistema operativo chiama DxgkDdiGetDisplayStateNonIntrusive per raccogliere informazioni sullo stato visualizzato dal driver. A differenza di DxgkDdiGetDisplayStateIntrusive, la routine DxgkDdiGetDisplayStateNonIntrusive non deve eseguire operazioni che causano effetti collaterali visibili all'utente e il processo di raccolta deve essere relativamente veloce (idealmente entro alcuni millisecondi). La frequenza di chiamata di questa routine sarà relativamente elevata. Oltre a essere chiamato per diagnosticare lo stato utente non valido, il sistema operativo potrebbe anche usare questa routine per registrare le informazioni sullo stato cronologico dal driver per scopi 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> su 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 gli scenari di errore in un determinato sistema.

Il sistema operativo chiamerà DxgkDdiGetDisplayStateNonIntrusive frequentemente (periodicamente o su altri eventi comuni) 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 specifici scenari di errore (ad esempio schermate nere) prima di raccogliere informazioni più dettagliate chiamando DxgkDdiGetDisplayStateIntrusive. Dato la frequenza possibile di questa chiamata, i driver devono completarlo il più rapidamente possibile. Il sistema operativo chiamerà questo 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 in cui è effettivamente connesso un monitoraggio. Per un vidpntarget su cui non è connesso alcun monitoraggio, il miniport deve solo compilare DXGK_DIAG_DISPLAY_CONNECTIVITY e il sistema operativo ignora 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 lo stato di connettività del monitoraggio dei report. Lo scopo principale di DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED è per le chiamate intrusive in cui il sistema operativo non chiede la connettività di monitoraggio.

Se il driver verifica un errore in un determinato vidpntarget durante la raccolta di informazioni, deve usare ReturnSubStatus per impostare lo stato di errore e procedere al vidpntarget successivo e non eseguire la chiamata complessiva a meno che tutti i percorsi non verifichino errori. I driver devono registrare idealmente errori durante questa chiamata in un log di 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 questo DDI è la sincronizzazione a livello zero.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 2004
Intestazione dispmprt.h

Vedi anche

DXGKARG_GETDISPLAYSTATENONINTRUSIVE

DxgkDdiCollectDiagnosticInfo

DxgkDdiGetDisplayStateIntrusive

DxgkDdiQueryInterface