Regra do SpinLock (wdm)
A regra SpinLock especifica que, depois de chamar KeAcquireSpinLock, o driver chama KeReleaseSpinLock antes das chamadas subsequentes para KeAcquireSpinLock ou para KeAcquireSpinLockRaiseToDpc.
Chamadas aninhadas serão permitidas se estiverem adquirindo e liberando bloqueios para recursos diferentes. Chamadas aninhadas para adquirir ou liberar bloqueios para os mesmos recursos violam essa regra.
Essa regra também especifica que o driver usou KeReleaseSpinLock para liberar todos os bloqueios de rotação antes que a rotina de expedição ou a rotina de cancelamento termine.
Modelo de driver: WDM
Marcar de bug encontrado com esta regra: 0xC4 de Verificação de Bugs: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040009)
Como testar
Em tempo de compilação |
---|
Execute o Verificador de Driver Estático e especifique a regra SpinLock . Use as seguintes etapas para executar uma análise do código:
Para obter mais informações, consulte Usando o Verificador de Driver Estático para localizar defeitos em drivers. |
Em tempo de execução |
---|
Execute o Verificador de Driver e selecione a opção de verificação de conformidade da DDI . |
Aplica-se a
KeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinLockKeTryToAcquireSpinLockAtDpcLevel