Regola irqlNtifsApcPassive (wdm)
La regola IrqlNtifsApcPassive specifica che il driver chiama le DDI elencate nella regola solo quando viene eseguito in IRQL = PASSIVE_LEVEL o in IRQL <= APC_LEVEL.
Modello di driver: WDM
Verifica bug trovata con questa regola: Verifica bug 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20024 )
Esempio
Il codice seguente viola questa regola:
//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//
KeAcquireSpinLock (&Lock, &OldIrql);
//
// ERROR: ZwWriteFile can only be called at IRQL == PASSIVE_LEVEL.
//
ZwWriteFile (Handle,
NULL,
NULL,
NULL,
IoStatusBlock,
Buffer,
BufferLength,
NULL,
NULL);
KeReleaseSpinLock (&Lock, OldIrql);
Per altre informazioni sui livelli IRQL, vedere Routine di invio e IRQLs egestione delle priorità hardware.
Come eseguire il test
In fase di compilazione |
---|
Eseguire il verifica driver statico e specificare la regola IrqlNtifsApcPassive . Usa i passaggi descritti di seguito per eseguire un'analisi del codice:
Per altre informazioni, vedere Uso del verificatore driver statico per trovare i difetti nei driver. |
In fase di esecuzione |
---|
È possibile attivare le regole DDI Compliance - IrQL aggiuntive per uno o più driver usando la riga di comando Verifier.exe. Per informazioni dettagliate, vedere Selezione delle opzioni di verifica driver. È necessario riavviare il computer per attivare o disattivare la conformità DDI - Regole IRQL aggiuntive. Nella riga di comando, il controllo di conformità DDI - Controllo IRQL aggiuntivo è rappresentato da un valore della classe di regola pari a 35. Ad esempio:
OR
Il controllo IRQL aggiuntivo sarà attivo dopo il riavvio del PC. |
Si applica a
NtSetInformationFile
NtWriteFile
NtCreateFile
ZwWriteFile
CcCopyWrite
CcCopyWriteEx
CcDeferWrite
CcFastCopyWrite