Share via


Regra SpinLockSafe (wdm)

A regra SpinLockSafe especifica que IoStartNextPacket e IoCompleteRequest não são chamados enquanto mantêm um bloqueio de rotação.

Essa regra também especifica que o driver chama KeAcquireSpinLock ou KeAcquireSpinLockAtDpcLevel antes de chamar KeReleaseSpinLockFromDpcLevel ou KeReleaseSpinLock e que ele chama IoAcquireCancelSpinLock antes de chamar IoReleaseCancelSpinLock.

O Verificador de Driver Estático poderá relatar falsas violações dessa regra se o driver incluir SpinLocks aninhados, mesmo que esses bloqueios de rotação sejam adquiridos e liberados corretamente.

Modelo de driver: WDM

Como testar

Em tempo de compilação

Execute o Verificador de Driver Estático e especifique a regra SpinLockSafe .

Use as seguintes etapas para executar uma análise do código:
  1. Prepare seu código (use declarações de tipo de função).
  2. Execute o Verificador de Driver Estático.
  3. Exiba e analise os resultados.

Para obter mais informações, consulte Usando o Verificador de Driver Estático para localizar defeitos em drivers.

Aplica-se a

IoAcquireCancelSpinLockIoCompleteRequestIoReleaseCancelSpinLockIoStartNextPacketKeAcquireSpinLockKeAcquireSpinLockRaiseToDpcKeReleaseSpinLock