Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Utiliza estas reglas para comprobar que el controlador sigue correctamente un conjunto general de requisitos para la gestión adecuada de temporizadores, operaciones en pausa, teclas, cadenas y asociaciones.
En esta sección
| Tema | Descripción |
|---|---|
La regla CancelTimerObject especifica que NdisSetTimerObject y NdisCancelTimerObject se llaman 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 debe devolver solo NDIS_STATUS_SUCCESS si la operación de pausa está completa o NDIS_STATUS_PENDING si el controlador de miniport está en estado de pausa. Cualquier otro estado devuelto no es válido. |
|
Esta regla verifica que NdisOpenConfigurationEx y NdisCloseConfiguration se llamen en orden alternativo. El objetivo final es asegurarse de que los identificadores de configuración se cierren cuando MiniportHaltEx termine. |
|
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 autor de la llamada 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 llamante de NdisCancelTimerObject debe estar ejecutándose 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 desde una ventana de comandos del desarrollador 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=Win32Para 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).