Controllo bug 0x18: REFERENCE_BY_POINTER
Il controllo dei bug REFERENCE_BY_POINTER ha un valore pari a 0x00000018. Ciò indica che il conteggio dei riferimenti di un oggetto non è valido per lo stato corrente dell'oggetto.
Importante
Questo articolo è destinato ai programmatori. Se si è un cliente che ha ricevuto un codice di errore della schermata blu durante l'uso del computer, vedere Risolvere gli errori della schermata blu.
Parametri REFERENCE_BY_POINTER
Parametro | Descrizione |
---|---|
1 |
Tipo di oggetto dell'oggetto il cui conteggio dei riferimenti viene abbassato. |
2 |
Oggetto il cui numero di riferimenti viene abbassato. |
3 |
Prenotato |
4 |
Prenotato |
Causa
Il conteggio dei riferimenti di un oggetto non è valido per lo stato corrente dell'oggetto. Ogni volta che un driver usa un puntatore a un oggetto, il driver chiama una routine kernel per aumentare il numero di riferimenti dell'oggetto di uno. Quando il driver viene eseguito con il puntatore, il driver chiama un'altra routine del kernel per ridurre il numero di riferimenti di uno.
I driver devono corrispondere alle chiamate alle routine che aumentano (riferimento) e riducono (dereferenziazione) il conteggio dei riferimenti. Questo controllo dei bug è causato da una incoerenza nel conteggio dei riferimenti dell'oggetto. In genere, l'incoerenza è causata da un driver che riduce il numero di riferimenti di un oggetto troppe volte, effettuando chiamate aggiuntive che dereferenziano l'oggetto. Questo controllo di bug può verificarsi perché il conteggio dei riferimenti di un oggetto va a zero mentre sono ancora presenti handle aperti per l'oggetto. Può verificarsi anche quando il conteggio dei riferimenti dell'oggetto scende al di sotto dello zero, indipendentemente dal fatto che siano presenti handle aperti per l'oggetto.
Risoluzione
Assicurarsi che il driver corrisponda alle chiamate alle routine che aumentano e riducono il numero di riferimenti dell'oggetto. Assicurarsi che il driver non eseduca chiamate aggiuntive alle routine che dereferenziano l'oggetto (vedere Parametro 2).
È possibile usare un debugger per analizzare questo problema. Per altre informazioni, vedere Crash dump analysis using the Windows debuggers (WinDbg). L'estensione di debug !analyze visualizza informazioni sul controllo dei bug e può essere utile per determinare la causa radice.
Per trovare l'handle e il conteggio dei puntatori sull'oggetto, usare il comando !object debugger.
kd> !object address
Dove address è l'indirizzo dell'oggetto specificato nel parametro 2.
È anche possibile impostare un punto di interruzione nel codice che conduce a questo codice di arresto e tentare di eseguire un singolo passaggio avanti nel codice di errore.
Se non si è dotati di usare il debugger Windows per lavorare su questo problema, è possibile usare alcune tecniche di risoluzione dei problemi di base.
Controllare l'accesso di sistema Visualizzatore eventi per ulteriori messaggi di errore che potrebbero aiutare a identificare il dispositivo o il driver che causa questo controllo del bug.
Se un driver viene identificato nel messaggio di controllo dei bug, disabilitare il driver o rivolgersi al produttore per verificare la presenza di aggiornamenti dei driver.
Verificare che qualsiasi nuovo hardware installato sia compatibile con la versione installata di Windows. Ad esempio, puoi ottenere informazioni sull'hardware necessario in Specifiche di Windows 10.
Per altre informazioni generali sulla risoluzione dei problemi, vedere Analizzare i dati della schermata blu di controllo dei bug.