Pilotes pris en charge
Pour que SDV vérifie un pilote, il doit être en mesure d’interpréter le code du pilote, en particulier les points d’entrée du pilote et le code dans les fonctions et routines qui prennent en charge les fonctionnalités de pilote requises.
Les sections suivantes décrivent les exigences de base pour les pilotes et la syntaxe spécifique que SDV attend des pilotes qu’il vérifie. SDV ne vérifie pas que les conducteurs respectent ces exigences, mais si le conducteur ne se conforme pas, SDV peut ne pas s’exécuter et, dans de rares cas, il signale des résultats faux positifs ou faux négatifs en raison d’une mauvaise interprétation.
Caractéristiques de base du pilote
SDV est en mesure de vérifier uniquement les pilotes présentant les caractéristiques suivantes :
SDV vérifie les pilotes et les bibliothèques écrits en C et C++.
SDV effectue la vérification complète uniquement sur les pilotes de périphériques compatibles KMDF et WDM (pilotes de fonction, pilotes de filtre et pilotes de bus), les pilotes NDIS (pilotes de filtre, miniport et de protocole) et les pilotes Storport.
SDV tente une vérification limitée des propriétés génériques (telles que NullCheck) sur les pilotes qui ne s’intègrent pas dans les catégories ci-dessus.
SDV peut vérifier les pilotes WDM qui déclarent leurs fonctions de rappel de pilote à l’aide des types de rôles de fonction WDM. Pour plus d’informations sur la déclaration des fonctions, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes WDM.
SDV peut vérifier les pilotes générés à partir de l’infrastructure de pilote en mode noyau, à condition que vous déclariez chaque fonction de rappel à l’aide d’un type de fonction de rappel SDV-KMDF. Pour plus d’informations, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes KMDF.
SDV peut vérifier les pilotes NDIS, à condition d’annoter chaque fonction de rappel avec la déclaration de fonction à l’aide d’un type de fonction de rappel SDV-NDIS. Pour plus d’informations, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.
SDV peut vérifier les pilotes Storport, à condition d’annoter chaque fonction de rappel avec la déclaration de fonction. Pour ce faire, utilisez un type de fonction de rappel SDV-Storport. Pour plus d’informations, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes Storport.
Configuration requise pour les pilotes de base
Pour que SDV vérifie un pilote WDM, le pilote doit :
Incluez Wdm.h ou Ntddk.h (Wdm.h est un sous-ensemble de Ntddk.h).
Créez des objets d’appareil à l’aide des méthodes décrites dans Présentation des objets d’appareil et suivantes.
Avoir une routine de déchargement écrite comme recommandé dans Écriture d’une routine de déchargement.
Déclarez chaque fonction de répartition à l’aide d’une déclaration de type de rôle de fonction, décrite dans Utilisation des déclarations de type de rôle de fonction. Pour plus d’informations sur les types de rôles WDM et les annotations _Dispatch_type_ (type), consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes WDM.
Pour que SDV vérifie un pilote KMDF, le pilote doit :
Incluez Wdf.h et Ntddk.h.
Créez les objets KMDF décrits dans Utilisation de l’infrastructure pour développer un pilote.
Annoter chaque fonction de rappel à l’aide d’un type de fonction de rappel SDV-KMDF, décrit dans Utilisation des déclarations de type de rôle de fonction. Pour obtenir la liste des types de rôles pris en charge, consultez Déclarations de fonction KMDF du vérificateur de pilote statique.
Pour que SDV vérifie un pilote NDIS, le pilote doit :
Incluez Ndis.h et Ntddk.h.
Suivez les instructions du Guide de conception réseau pour créer des pilotes NDIS.
Annotez chaque fonction de rappel à l’aide d’un type de rôle de fonction de rappel SDV-NDIS, comme décrit dans Utilisation des déclarations de type de rôle de fonction. Pour obtenir la liste des types de rôles pris en charge, consultez Déclarations de fonction NDIS du vérificateur de pilote statique.
En outre, SDV peut vérifier les pilotes qui prennent en charge :
Noms de fonctions réservées
Le moteur de vérification SDV ne fonctionne pas correctement lorsque le pilote ou le code de bibliothèque utilise les mêmes modèles de nom de fonction que SDV en interne.
Plus précisément, SDV n’interprète pas correctement le code si :
Le code inclut des noms de fonctions qui commencent par __init et sont suivis d’un ou plusieurs entiers, tels que __init123.
Le code inclut des noms de fonctions qui commencent par sdv_, comme sdv_Func, ou incluent la chaîne _sdv_, comme Func_sdv_ ou Func_sdv_foo.
La bibliothèque utilise un fichier .def pour renommer une fonction exportée et le nom externe est identique au nom d’une autre fonction statique dans la bibliothèque.
Si le code du pilote ou du code de bibliothèque inclut ces éléments, SDV tente de vérifier le pilote ou de traiter la bibliothèque, mais le résultat est Fonctionnalité non prise en charge (NSF). Pour plus d’informations sur les résultats SDV, consultez Interprétation des résultats du vérificateur de pilote statique.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour