Partager via


Jeu de règles d’utilisation de la mémoire (NDIS)

Utilisez ces règles pour vérifier que votre pilote appelle correctement les fonctions NDIS pour allouer et libérer de la mémoire.

Dans cette section

Sujet Descriptif

NdisAllocateGenericObject

La règle NdisAllocateGenericObject spécifie que NdisAllocateGenericObject et NdisFreeGenericObject sont appelés dans un autre ordre. L’objectif ultime est de s’assurer que tous les objets génériques sont libérés lorsque MiniportHaltEx se termine.

NdisAllocateMdl

La règle NdisAllocateMdl spécifie que NdisAllocateMdl et NdisFreeMdl sont appelés dans un autre ordre. L’objectif ultime est de s’assurer que tous les MDL sont libérés lorsque MiniportHaltEx se termine.

NdisAllocateMemoryWithTagPriority

La règle NdisAllocateMemoryWithTagPriority spécifie qu’un pilote ne doit pas appeler NdisAllocateMemoryWithTagPriority sans fournir de Tag.

Chaque allocation de mémoire doit utiliser une balise de pool unique pour vous assurer que les débogueurs du noyau et le vérificateur de pilote peuvent identifier un bloc de mémoire alloué distinct.

NdisAllocateNetBuffer

La règle NdisAllocateNetBuffer spécifie que NdisAllocateNetBuffer et NdisFreeNetBuffer sont appelés dans un autre ordre. L’objectif ultime est de s’assurer que toutes les instances de NET_BUFFER sont libérées lorsque MiniportHaltEx se termine.

NdisMFreeSharedMemory

NdisMFreeSharedMemory ne peut pas être appelé à partir d’une fonction MiniportShutdownEx .

NdisMIndicateStatusEx

Le pilote ne doit pas appeler NdisMIndicateStatusEx après son retour à partir de la fonction MiniportHaltEx .

NdisMMapIoSpace

La fonction NdisMMapIoSpace doit uniquement être appelée dans le contexte de MiniportInitializeEx.

NdisMRegisterIoPortRange

Un pilote miniport appelle NdisMRegisterIoPortRange à partir de ses fonctions MiniportInitializeEx ou MINIPORT_ADD_DEVICE. MiniportInitializeEx ou MINIPORT_ADD_DEVICE devez appeler NdisMSetMiniportAttributes avant d’appeler NdisMRegisterIoPortRange.

Pour sélectionner l’ensemble de règles d’utilisation de la mémoire

  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 MemoryUsage.

    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 MemoryUsage.sdv avec l’option /check . Par exemple:

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

    Pour plus d’informations, veuillez consulter la section Utilisation de Static Driver Verifier pour rechercher des défauts dans les pilotes et les commandes MSBuild (Static Driver Verifier).