Conjunto de regras de bloqueio (KMDF)
Use essas regras para verificar se o driver gerencia corretamente os recursos compartilhados.
Nesta seção
Tópico | Descrição |
---|---|
A regra ParentObjectCheckLock especifica que o driver deve chamar WdfWaitLockCreate e WdfSpinLockCreate definindo um objeto pai. |
|
A regra ReqSendWhileSpinlock especifica que nenhuma solicitação é enviada enquanto o driver mantém um spinlock. |
|
A regra Spinlock especifica que as chamadas para KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc e KeReleaseSpinlock são usadas em alternância estrita. |
|
A regra SpinlockDpc especifica que as chamadas para KeAcquireSpinLock ou KeAcquireSpinLockRaiseToDpc e KeReleaseSpinlock são usadas em alternância estrita. |
|
A regra SpinlockRelease especifica que as chamadas para KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc e KeReleaseSpinLock são usadas de maneira equilibrada dentro de um retorno de chamada KMDF. No final de qualquer rotina de retorno de chamada KMDF, o driver não deve manter o bloqueio de rotação. |
|
A regra WdfInterruptLock especifica que as chamadas para o método WdfInterruptAcquireLock são usadas em alternância estrita com chamadas para WdfInterruptReleaseLock. Além disso, no final de qualquer rotina de retorno de chamada KMDF, o driver não deve manter o objeto de bloqueio de rotação da estrutura, obtido por uma chamada anterior para WdfInterruptAcquireLock. |
|
A regra WdfInterruptLockRelease especifica que as chamadas para WdfInterruptAcquireLock e WdfInterruptReleaseLock são usadas de maneira equilibrada dentro de uma rotina de retorno de chamada KMDF. No final de qualquer rotina de retorno de chamada KMDF, o driver não deve manter o objeto de bloqueio de rotação da estrutura obtido por uma chamada anterior para WdfInterruptAcquireLock. |
|
A regra WdfSpinlock especifica que as chamadas para o método WdfSpinLockAcquire são usadas em alternância estrita com WdfSpinlockRelease. No final de qualquer rotina de retorno de chamada KMDF, o driver não deve manter o objeto spinlock da estrutura obtido por uma chamada anterior para WdfSpinLockAcquire. |
|
A regra WdfSpinlockRelease especifica que as chamadas para WdfSpinLockAcquire e WdfSpinlockRelease são usadas de maneira equilibrada dentro de uma função de retorno de chamada de evento KMDF. Quando a função de retorno de chamada de evento KMDF retorna, o driver não deve manter o objeto de bloqueio de rotação da estrutura obtido por uma chamada anterior para WdfSpinLockAcquire. |
|
A regra WdfWaitlock especifica que as chamadas para WdfWaitLockAcquire são usadas em alternância estrita com WdfWaitlockRelease. Quando a função de retorno de chamada de evento KMDF retorna, o driver não deve manter o objeto de bloqueio de rotação da estrutura obtido por uma chamada anterior para WdfWaitLockAcquire. |
|
A regra WdfWaitlockRelease especifica que as chamadas para WdfWaitLockAcquire e WdfWaitLockRelease são usadas de maneira equilibrada dentro de uma função de retorno de chamada de evento KMDF. Quando a função de retorno de chamada de evento KMDF retorna, o driver não deve manter o objeto de bloqueio de rotação da estrutura obtido por uma chamada anterior para WdfWaitLockAcquire. |
Para selecionar o conjunto de regras de bloqueio
Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver , clique em Iniciar Verificador de Driver Estático....
Clique na guia Regras . Em Conjuntos de Regras, selecione Bloqueio.
Para selecionar o conjunto de regras padrão em uma janela do prompt de comando do desenvolvedor do Visual Studio, especifique Locking.sdv com a opção /marcar. Por exemplo:
msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Para obter mais informações, consulte Usando o Verificador de Driver Estático para localizar defeitos em drivers e comandos do Verificador de Driver Estático (MSBuild).