DXGKDDI_GETDISPLAYSTATEINTRUSIVE funzione di callback (dispmprt.h)
Il sistema operativo chiama un driver miniport di visualizzazione DxgkDdiGetDisplayStateNonIntrusive routine per raccogliere informazioni sullo stato di visualizzazione dal driver.
Sintassi
DXGKDDI_GETDISPLAYSTATEINTRUSIVE DxgkddiGetdisplaystateintrusive;
NTSTATUS DxgkddiGetdisplaystateintrusive(
[in] HANDLE Context,
[in/out] PDXGKARG_GETDISPLAYSTATEINTRUSIVE pArgs
)
{...}
Parametri
[in] Context
Puntatore a un contesto privato restituito da DxgkDdiQueryInterface.
[in/out] pArgs
Puntatore a una struttura DXGKARG_GETDISPLAYSTATEINTRUSIVE.
Valore restituito
DxgkDdiGetDisplayStateIntrusive 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 DxgkDdiGetDisplayStateIntrusive per raccogliere informazioni sullo stato di visualizzazione dal driver quando l'utente è già in uno stato non valido. A differenza di DxgkDdiGetDisplayStateNonIntrusive, il driver DxgkDdiGetDisplayStateIntrusive routine può eseguire operazioni più intrusive con effetti collaterali visibili all'utente. Un'operazione intrusiva viene definita come segue (le operazioni non intrusive non hanno alcuna di queste proprietà):
Causa effetti collaterali (glitch) visibili all'utente ,ad esempio l'arresto temporaneamente dell'analisi e il controllo della connettività di monitoraggio distruttivo.
È lento e influisce sulle prestazioni di sistema o di visualizzazione se viene chiamato frequentemente (più volte in un secondo).
Modifica lo stato del sottosistema di visualizzazione (o qualsiasi altro sottosistema) direttamente o indirettamente.
Il driver non deve modificare lo stato del sistema intenzionalmente durante la raccolta dei dati.
Il sistema operativo chiamerà questa routine molto meno frequentemente rispetto alle chiamate a DxgkDdiGetDisplayStateNonIntrusive. Nella maggior parte degli scenari di errore, il sistema operativo chiamerà prima DxgkDdiGetDisplayStateNonIntrusive e quindi chiamerà DxgkDdiGetDisplayStateIntrusive per garantire che qualsiasi effetto non intenzionale della chiamata intrusiva non influisca sulla raccolta di dati non intrusivi.
DXGKRNL chiamerà questa routine con NumOfTargets impostato sul numero di destinazioni in cui il sistema operativo segnala che è presente un monitor connesso con VidPnTargetId corrispondente compilato. Quando il driver ritiene che non vi sia alcun monitoraggio connesso a una determinata destinazione, deve impostare il ReturnSubStatus affinché tale destinazione sia DXGK_DIAG_GETDISPLAYSTATE_MONITOR_NOT_CONNECTED.
Nota
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 scatola nera, questi errori vengono acquisiti come parte di una raccolta di log interna per consentire il debug di IHV.
Il sistema operativo avrà un timeout sufficiente (circa 5 secondi) per DxgkDdiGetDisplayStateIntrusive da completare, dando al driver più tempo per raccogliere tutto lo stato pertinente. Dopo un timeout, il sistema operativo potrebbe controllare il computer e raccogliere un dump se il driver si blocca in questa chiamata, quindi il miniport dovrebbe provare a completare sempre questa chiamata entro l'intervallo di tempo.
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_GETDISPLAYSTATEINTRUSIVE