Compartir a través de


Conjunto de reglas de uso de memoria (NDIS)

Use estas reglas para comprobar que el controlador llama correctamente a las funciones NDIS para asignar y liberar memoria.

En esta sección

Tema Descripción

NdisAllocateGenericObject

La regla NdisAllocateGenericObject especifica que se llama a NdisAllocateGenericObject y NdisFreeGenericObject en orden alternativo. El objetivo final es asegurarse de que todos los objetos genéricos se liberan cuando finaliza MiniportHaltEx .

NdisAllocateMdl

La regla NdisAllocateMdl especifica que se llama a NdisAllocateMdl y NdisFreeMdl en orden alternativo. El objetivo final es asegurarse de que todos los MDL se liberan cuando finaliza MiniportHaltEx .

NdisAllocateMemoryWithTagPriority

La regla NdisAllocateMemoryWithTagPriority especifica que un controlador no debe llamar a NdisAllocateMemoryWithTagPriority sin proporcionar una etiqueta.

Cada asignación de memoria debe usar una etiqueta de grupo única para asegurarse de que los depuradores de kernel y el Comprobador de controladores puedan identificar un bloque de memoria asignado distinto.

NdisAllocateNetBuffer

La regla NdisAllocateNetBuffer especifica que se llama a NdisAllocateNetBuffer y NdisFreeNetBuffer en orden alternativo. El objetivo final es asegurarse de que todas las instancias de NET_BUFFER se liberan cuando finaliza MiniportHaltEx .

NdisMFreeSharedMemory

No se puede llamar a NdisMFreeSharedMemory desde una función MiniportShutdownEx.

NdisMIndicateStatusEx

El controlador no debe llamar a NdisMIndicateStatusEx después de que se devuelva de la función MiniportHaltEx .

NdisMMapIoSpace

Solo se debe llamar a la función NdisMMapIoSpace en el contexto de MiniportInitializeEx.

NdisMRegisterIoPortRange

Un controlador de minipuerto llama a NdisMRegisterIoPortRange desde sus funciones MiniportInitializeEx o MINIPORT_ADD_DEVICE. MiniportInitializeEx o MINIPORT_ADD_DEVICE debe llamar a NdisMSetMiniportAttributes antes de llamar a NdisMRegisterIoPortRange.

Para seleccionar el conjunto de reglas de uso de memoria

  1. Seleccione el proyecto de controlador (.vcxProj) en Microsoft Visual Studio. En el menú Controlador , haga clic en Iniciar comprobador de controladores estáticos....

  2. Haga clic en la pestaña Reglas . En Conjuntos de reglas, seleccione MemoryUsage.

    Para seleccionar el conjunto de reglas predeterminado en una ventana del símbolo del sistema para desarrolladores de Visual Studio, especifique MemoryUsage.sdv con la opción /check . Por ejemplo:

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

    Para obtener más información, consulte Uso del comprobador de controladores estáticos para buscar defectos en controladores y comandos de comprobador de controladores estáticos (MSBuild).