Conjunto de reglas de bloqueo (KMDF)
Use estas reglas para comprobar que el controlador administra correctamente los recursos compartidos.
En esta sección
Tema | Descripción |
---|---|
La regla ParentObjectCheckLock especifica que el controlador debe llamar a WdfWaitLockCreate y WdfSpinLockCreate estableciendo un objeto primario. |
|
La regla ReqSendWhileSpinlock especifica que no se envían solicitudes mientras el controlador contiene un interbloqueo. |
|
La regla Spinlock especifica que las llamadas a KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc y KeReleaseSpinlock se usan en alternancia estricta. |
|
La regla SpinlockDpc especifica que las llamadas a KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc y KeReleaseSpinlock se usan en alternancia estricta. |
|
La regla SpinlockRelease especifica que las llamadas a KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc y KeReleaseSpinLock se usan de forma equilibrada dentro de una devolución de llamada de KMDF. Al final de cualquier rutina de devolución de llamada de KMDF, el controlador no debe mantener el bloqueo de giro. |
|
La regla WdfInterruptLock especifica que las llamadas al método WdfInterruptAcquireLock se usan en alternancia estricta con llamadas a WdfInterruptReleaseLock. Además, al final de cualquier rutina de devolución de llamada de KMDF, el controlador no debe contener el objeto de bloqueo de número de marco, obtenido por una llamada anterior a WdfInterruptAcquireLock. |
|
La regla WdfInterruptLockRelease especifica que las llamadas a WdfInterruptAcquireLock y WdfInterruptReleaseLock se usan de forma equilibrada dentro de una rutina de devolución de llamada de KMDF. Al final de cualquier rutina de devolución de llamada de KMDF, el controlador no debe contener el objeto de bloqueo de número de marco obtenido por una llamada anterior a WdfInterruptAcquireLock. |
|
La regla WdfSpinlock especifica que las llamadas al método WdfSpinLockAcquire se usan en alternancia estricta con WdfSpinlockRelease. Al final de cualquier rutina de devolución de llamada de KMDF, el controlador no debe contener el objeto de interbloqueo del marco obtenido por una llamada anterior a WdfSpinLockAcquire. |
|
La regla WdfSpinlockRelease especifica que las llamadas a WdfSpinLockAcquire y WdfSpinlockRelease se usan de forma equilibrada dentro de una función de devolución de llamada de eventos KMDF. Cuando se devuelve la función de devolución de llamada de evento KMDF, el controlador no debe contener el objeto de bloqueo de número de marco obtenido por una llamada anterior a WdfSpinLockAcquire. |
|
La regla WdfWaitlock especifica que las llamadas a WdfWaitLockAcquire se usan en alternancia estricta con WdfWaitlockRelease. Cuando se devuelve la función de devolución de llamada de evento KMDF, el controlador no debe contener el objeto de bloqueo de número de marco obtenido por una llamada anterior a WdfWaitLockAcquire. |
|
La regla WdfWaitlockRelease especifica que las llamadas a WdfWaitLockAcquire y WdfWaitLockRelease se usan de forma equilibrada dentro de una función de devolución de llamada de eventos KMDF. Cuando se devuelve la función de devolución de llamada de evento KMDF, el controlador no debe contener el objeto de bloqueo de número de marco obtenido por una llamada anterior a WdfWaitLockAcquire. |
Para seleccionar el conjunto de reglas de bloqueo
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 Bloquear.
Para seleccionar el conjunto de reglas predeterminado en una ventana del símbolo del sistema para desarrolladores de Visual Studio, especifique Locking.sdv con la opción /check . Por ejemplo:
msbuild /t:sdv /p:Inputs="/check:Locking.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).