Controllo bug 0x1: APC_INDEX_MISMATCH

Il controllo bug APC_INDEX_MISMATCH ha un valore di 0x00000001. Il controllo dei bug indica una mancata corrispondenza nell'indice di stato delle chiamate di routine asincrone (APC).

Importante

Questo articolo è destinato ai programmatori. Se si è un cliente Microsoft e il computer visualizza un codice di errore della schermata blu, vedere Risolvere gli errori della schermata blu.

parametri APC_INDEX_MISMATCH

Parametro Descrizione
1 Indirizzo della funzione di sistema (chiamata di sistema) o della routine di lavoro.
2 Valore del campo ApcStateIndex del thread corrente.
3 Valore del campo CombinedApcDisable del thread corrente. Questo campo è costituito da due campi separati a 16 bit: (>SpecialApcDisable<< 16 thread) | KernelApcDisable del thread>.
4 Tipo di chiamata:
0 - Chiamata di sistema
1 - Routine di lavoro

Causa

La causa più comune di questo controllo di bug è quando un file system o un driver ha una sequenza non corrispondente di chiamate per disabilitare e riabilitare le API. L'elemento dati chiave è il campo Thread>CombinedApcDisable. Il campo CombinedApcDisable è costituito da due campi separati a 16 bit: SpecialApcDisable e KernelApcDisable. Un valore negativo di uno dei due campi indica che un driver ha disabilitato rispettivamente API speciali o normali senza riabilitarle. Un valore positivo indica che un driver ha abilitato troppe volte le API speciali o normali.

Risoluzione

È possibile risolvere questo problema usando WinDbg o usando tecniche di risoluzione dei problemi di base.

Eseguire il debug con WinDbg

L'estensione del debugger !analyze visualizza informazioni sul controllo dei bug e consente di determinare la causa radice.

È possibile usare l'estensione !apc per visualizzare il contenuto di uno o più APC .

È anche possibile impostare un punto di interruzione nel codice che precede questo codice di arresto e tentare di eseguire un unico passaggio nel codice di errore.

Per altre informazioni sull'uso di WinDbg, vedere Crash dump analysis using the Windows debuggers (WinDbg).

Eseguire il debug senza usare WinDbg

Se non si è dotati di usare il debugger Windows per risolvere questo problema:

  • In Visualizzatore eventi controllare la presenza di altri messaggi di errore nel registro di sistema che potrebbero aiutare a identificare il dispositivo o il driver che causa questo controllo dei 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 richiesto nelle specifiche di Windows 10.

Per informazioni più generali sulla risoluzione dei problemi, vedere Analizzare i dati della schermata blu di controllo dei bug.

Osservazioni:

Questo controllo di bug è il risultato di un errore interno nel kernel. Questo errore si verifica all'uscita da una chiamata di sistema. Una possibile causa di questo controllo dei bug è un file system o un driver con una sequenza non corrispondente di chiamate di sistema per entrare o lasciare aree protette o critiche. Ad esempio, ogni chiamata a KeEnterCriticalRegion deve avere una chiamata corrispondente a KeLeaveCriticalRegion.

Se stai sviluppando un driver, puoi usare Static Driver Verifier, uno strumento di analisi statica disponibile in Windows Driver Kit, per rilevare i problemi nel codice prima di spedire il driver. Eseguire Static Driver Verifier con la regola CriticalRegions per verificare che il codice sorgente usi queste chiamate di sistema nella sequenza corretta.

Vedi anche

Informazioni di riferimento sul codice di controllo dei bug