Conjunto de reglas varios (NDIS)
Use estas reglas para comprobar que el controlador sigue correctamente un conjunto general de requisitos para el control adecuado de temporizadores, operaciones de pausa, claves, cadenas y enlaces.
En esta sección
Tema | Descripción |
---|---|
La regla CancelTimerObject especifica que se llama a NdisSetTimerObject y NdisCancelTimerObject en orden alternativo. El objetivo final es asegurarse de que todos los temporizadores se cancelan cuando finaliza MiniportHaltEx . |
|
La regla de MiniportPause_Return especifica que la función de devolución de llamada MiniportPause solo debe devolver NDIS_STATUS_SUCCESS si la operación de pausa está completa o NDIS_STATUS_PENDING si el controlador de miniporte está en estado de pausa. Cualquier otro estado devuelto no es válido. |
|
Esta regla comprueba que se llama a NdisOpenConfigurationEx y NdisCloseConfiguration en orden alternativo. El objetivo final es asegurarse de que los identificadores de configuración se cierran cuando se cierra MiniportHaltEx . |
|
NdisQueryBindInstanceName asigna memoria para la cadena que especifica el nombre descriptivo. Una vez que el autor de la llamada termine de usar esta memoria, el llamador debe llamar a la función NdisFreeMemory para liberar la memoria. |
|
Los controladores de protocolo no pueden llamar a NdisReEnumerateProtocolBindings desde el contexto de las funciones ProtocolBindAdapterEx o ProtocolUnbindAdapterEx . Además, los controladores de protocolo no pueden llamar a NdisReEnumerateProtocolBindings desde el contexto de la función ProtocolNetPnPEvent si el parámetro ProtocolBindingContext de ProtocolNetPnPEvent no es NULL. Sin embargo, los controladores de protocolo pueden llamar a NdisReEnumerateProtocolBindings desde el contexto de ProtocolNetPnPEvent si ProtocolBindingContext es NULL. Un valor ProtocolBindingContext NULL indica que el evento se aplica a todos los enlaces. |
|
La regla PeriodicTimer especifica que el autor de la llamada de NdisCancelTimerObject debe ejecutarse en IRQL = PASSIVE_LEVEL si se especificó un valor distinto de cero en el parámetro MillisecondsPeriod de la función NdisSetTimerObject . Si el parámetro MillisecondsPeriod de la función NdisSetTimerObject era cero, los llamadores de NdisCancelTimerObject se pueden ejecutar en IRQL <= DISPATCH_LEVEL. |
|
La regla WriteErrorLog especifica que si se llama a la función NdisMAllocateSharedMemory en la función MiniportInitializeEx , el controlador también debe llamar a NdisWriteErrorLogEntry si se produce un error en la asignación. |
Para seleccionar el conjunto de reglas varios
Seleccione el proyecto de controlador (.vcxProj) en Microsoft Visual Studio. En el menú Controlador , haga clic en Iniciar comprobador de controladores estáticos....
Haga clic en la pestaña Reglas . En Conjuntos de reglas, seleccione Varios.
Para seleccionar el conjunto de reglas predeterminado en una ventana del símbolo del sistema para desarrolladores de Visual Studio, especifique Miscellaneous.sdv con la opción /check . Por ejemplo:
msbuild /t:sdv /p:Inputs="/check:Miscellaneous.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 comprobadores de controladores estáticos (MSBuild).