Partager via


Jeu de règles VirtualStorport (Storport)

Utilisez ces règles pour vérifier que votre pilote appelle correctement les DDIs qui présentent un intérêt particulier pour les pilotes Storport virtual miniport (VMiniport).

Contenu de cette section

Rubrique Description

DoubleExFreePool

Cette règle vérifie que le pilote ne tente pas de libérer deux fois le même bloc de mémoire du pool.

DoubleKeSetEvent

Cette règle vérifie que KeSetEvent n’est pas appelé deux fois sur le même objet d’événement. Si le même objet d’événement est passé à la routine, le pilote échoue à la règle.

IoFreeIrp

Cette règle vérifie qu’un IRP qui a été alloué par IoAllocateIrp sera libéré par IoFreeIrp ou que sa routine d’achèvement sera définie par IoSetCompletionRoutine.

StorPortVirtualDevice

Cette règle vérifie qu’à la sortie de la routine HwStorFindAdapter , le champ VirtualDevice de la structure PORT_CONFIGURATION_INFORMATION (Storport) a été défini sur FALSE. La règle s’applique uniquement aux miniports StorPort physiques.

StorPortVirtualDevice2

Cette règle vérifie qu’à la sortie de la routine HwStorFindAdapter , le champ VirtualDevice de la structure PORT_CONFIGURATION_INFORMATION (Storport) a été défini sur TRUE. La règle s’applique uniquement aux miniports StorPort virtuels.

WithinCriticalRegion

Cette règle vérifie que les appels du pilote à certaines fonctions de synchronisation sont effectués uniquement lorsque la remise APC du noyau normal est désactivée.

ZwRegistryCreate

Cette règle vérifie que le handle d’une clé de Registre créée avec ZwCreateKey est ensuite utilisé correctement par d’autres routines ZwXxx . La routine ZwOpenKey ne doit pas être appelée sur un handle déjà ouvert. Les routines ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose et ZwDeleteKey ne doivent pas être appelées sur un handle qui n’est pas ouvert. Le handle doit également être fermé avant le retour.

ZwRegistryOpen

Cette règle vérifie que le handle de la clé de Registre ouverte via ZwOpenKey est ensuite utilisé correctement par d’autres routines ZwXxx. Les routines ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose et ZwDeleteKey ne doivent pas être appelées sur un handle qui n’est pas ouvert. Le handle doit également être fermé avant le retour.

Pour sélectionner l’ensemble de règles VirtualStorport

  1. Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....

  2. Cliquez sur l’onglet Règles . Sous Ensembles de règles, sélectionnez VirtualStorport.

    Pour sélectionner l’ensemble de règles par défaut dans une fenêtre d’invite de commandes du développeur Visual Studio, spécifiez VirtualStorport.sdv avec l’option /case activée. Par exemple :

    msbuild /t:sdv /p:Inputs="/check:VirtualStorport.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes et commandes msBuild (Static Driver Verifier).