Règle IrqlIoRtlZwPassive (wdm)
La règle IrqlIoRtlZwPassive spécifie que le pilote appelle les DDIs répertoriés dans la règle uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL.
Cette règle augmente les règles IRQL de vérification de conformité DDI pour PASSIVE_LEVEL. Pour plus d’informations, consultez Ensemble de règles Irql (WDM).
Modèle de pilote : WDM
Bogues case activée trouvés avec cette règle : 0xC4 de vérification des bogues : DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)
Exemple
Le code suivant enfreint cette règle :
//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//
KeAcquireSpinLock (&Lock, &OldIrql);
//
// ERROR: IoGetDriverDirectory can only be called at IRQL == PASSIVE_LEVEL.
//
IoGetDriverDirectory (DriverObject,
DriverDirectoryData,
0,
&DirectoryHandle);
KeReleaseSpinLock (&Lock, OldIrql);
Pour plus d’informations sur les niveaux IRQL, consultez Répartition des routines et des IRQL et Gestion des priorités matérielles.
Comment tester
Au moment de la compilation |
---|
Exécutez Static Driver Verifier et spécifiez la règle IrqlIoRtlZwPassive . Utilisez les étapes suivantes pour exécuter l’analyse de votre code :
Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes. |
Au moment de l'exécution |
---|
Vous pouvez activer les règles DDI Compliance - IRQL supplémentaires pour un ou plusieurs pilotes à l’aide de la ligne de commande Verifier.exe. Pour plus d’informations, consultez Sélection des options du vérificateur de pilote. Vous devez redémarrer l’ordinateur pour activer ou désactiver les règles de conformité DDI - IRQL supplémentaires. Sur la ligne de commande, la vérification de conformité DDI - IRQL supplémentaire est représentée par une valeur de classe de règle de 35. Par exemple :
OR
La vérification IRQL supplémentaire sera active après le redémarrage du PC. |
S’applique à
IoCreateFileEx
IoCreateFileSpecifyDeviceObjectHint
IoGetDeviceDirectory
IoGetDriverDirectory
IoOpenDeviceInterfaceRegistryKey
IoOpenDeviceRegistryKey
RtlCreateRegistryKey
RtlCreateSystemVolumeInformationFolder
RtlWriteRegistryValue
ZwCreateDirectoryObject
ZwCreateFile
ZwCreateKeyTransacted
ZwDeleteFile
ZwDeleteValueKey
ZwFlushBuffersFileEx
ZwFlushBuffersFile
ZwRenameKey
ZwSetEaFile
ZwSetInformationFile
ZwSetInformationKey