Jeu de règles SrbProcessing (Storport)
Utilisez ces règles pour vérifier que votre pilote traite correctement les requêtes SRB.
Contenu de cette section
Sujet | Description |
---|---|
Cette règle vérifie que ce miniport est en mode Duplex complet. Tout pilote créé en fonction du modèle StorPort-miniport doit être en mode Duplex complet . La moitié duplex doit être utilisée uniquement lors du portage d’un pilote SCSI existant vers StorPort. |
|
Cette règle vérifie que les attentes ou l’allocation de données ne sont pas effectuées dans StartIo. |
|
Cette règle vérifie que les implémentations du pilote de HwStorFindAdapter et VirtualHwStorFindAdapter retournent un état valide. Un état valide est l’un des éléments suivants : SP_RETURN_FOUND, SP_RETURN_ERROR, SP_RETURN_BAD_CONFIG ou SP_RETURN_NOT_FOUND. |
|
Cette règle vérifie que le miniport ne doit pas tenter d’appeler StorPortFreePool sur une mémoire tampon libérée. |
|
Cette règle vérifie que le miniport ne doit pas tenter d’appeler StorPortAllocatePool sur une mémoire tampon allouée sans l’allouer en premier. |
|
Cette règle vérifie que si la routine StorPort miniport StorPortBuildIo retourne FALSE, la SRB en question n’est pas passée à StartIo. (Dans ce cas, le pilote miniport doit terminer le SRB en appelant StorPortNotification avec un type de notification RequestComplete de StorPortBuildIo ou un autre emplacement). |
|
Cette règle vérifie qu’aucun appel à StorPortCompleteRequest n’est effectué par le miniport. L’utilisation de StorPortCompleteRequest n’est pas recommandée ; les miniports doivent à la place appeler StorPortNotification avec notificationType = RequestComplete. |
|
Cette règle vérifie que StorPortEnablePassiveInitialization n’est pas appelé à partir d’une routine de pilote miniport StorPort autre que HwInitialize. |
|
La routine HwStorFindAdapter doit définir les champs MaximumTransferLength et NumberOfPhysicalBreaks dans la structure PORT_CONFIGURATION_INFORMATION. Par défaut, la valeur de ces deux champs est SP_UNINITIALIZED_VALUE. Si l’un de ces champs est toujours défini sur SP_UNINITIALIZED_VALUE à la sortie de FindAdapter, le pilote échoue à la règle. |
|
Cette règle vérifie que les appels à StorPortNotification utilisent uniquement les types de notification autorisés (c’est-à-dire documentés). |
|
StorPortEnablePassiveInitialization ne doit pas être appelé dans le point d’entrée D’initialisation HW pour les pilotes Storport si le point d’entrée d’initialisation HW peut être appelé directement à partir du point d’entrée du contrôle de l’adaptateur HW. |
|
Cette règle vérifie que le paramètre PerfConfigData passé à StorPortInitializePerfOpts n’est pas NULL. |
|
Les attentes ou l’allocation de données ne doivent jamais être effectuées dans la routine StartIo du miniport. Le pilote échoue la règle si elle appelle StorPortStallExecution ou une autre fonction qui implique des opérations fastidieuses. Étant donné que StartIo est synchronisé, ces appels doivent principalement être effectués dans BuildIo. |
|
La routine HW_TIMER doit être définie si un appel à StorPortNotification(RequestTimerCall) est effectué. |
Pour sélectionner l’ensemble de règles SrbProcessing
Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....
Cliquez sur l’onglet Règles . Sous Ensembles de règles, sélectionnez SrbProcessing.
Pour sélectionner l’ensemble de règles par défaut à partir d’une fenêtre d’invite de commandes du développeur Visual Studio, spécifiez SrbProcessing.sdv avec l’option /case activée. Par exemple :
msbuild /t:sdv /p:Inputs="/check:SrbProcessing.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 les commandes MSBuild (Static Driver Verifier).