Compartir a través de


Conjunto de reglas de VirtualStorport (Storport)

Use estas reglas para comprobar que el controlador llama correctamente a los controladores de DDIs que son de especial interés para los controladores de miniport virtual de Storport (VMiniport).

En esta sección

Tema Descripción

DoubleExFreePool

Esta regla comprueba que el controlador no intenta liberar el mismo bloque de memoria del grupo dos veces.

DoubleKeSetEvent

Esta regla comprueba que no se llama a KeSetEvent dos veces en el mismo objeto de evento. Si se pasa el mismo objeto de evento a la rutina, el controlador produce un error en la regla.

IoFreeIrp

Esta regla comprueba que IoFreeIrp libere un IRP asignado por IoAllocateIrp o que su rutina de finalización se establecerá mediante IoSetCompletionRoutine.

StorPortVirtualDevice

Esta regla comprueba que, al salir de la rutina HwStorFindAdapter , el campo VirtualDevice de la estructura PORT_CONFIGURATION_INFORMATION (Storport) se ha establecido en FALSE. La regla solo se aplica a los miniportes físicos de StorPort.

StorPortVirtualDevice2

Esta regla comprueba que, al salir de la rutina HwStorFindAdapter , el campo VirtualDevice de la estructura PORT_CONFIGURATION_INFORMATION (Storport) se ha establecido en TRUE. La regla solo se aplica a minipuertos de StorPort virtual.

WithinCriticalRegion

Esta regla comprueba que las llamadas del controlador a determinadas funciones de sincronización solo se realizan mientras se deshabilita la entrega normal de APC del kernel.

ZwRegistryCreate

Esta regla comprueba que el identificador de una clave del Registro creada con ZwCreateKey se usa posteriormente mediante otras rutinas ZwXxx . No se debe llamar a la rutina ZwOpenKey en un identificador ya abierto. Las rutinas ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose y ZwDeleteKey no deben llamarse en un identificador que no esté abierto. El controlador también debe cerrarse antes de devolverlo.

ZwRegistryOpen

Esta regla comprueba que el identificador de la clave del Registro abierta a través de ZwOpenKey se usa posteriormente correctamente con otras rutinas ZwXxx. Las rutinas ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose y ZwDeleteKey no deben llamarse en un identificador que no esté abierto. El controlador también debe cerrarse antes de devolverlo.

Para seleccionar el conjunto de reglas VirtualStorport

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

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

    msbuild /t:sdv /p:Inputs="/check:VirtualStorport.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).