Набор правил блокировки (KMDF)
Используйте эти правила, чтобы убедиться, что драйвер правильно управляет общими ресурсами.
В этом разделе
Раздел | Описание |
---|---|
Правило ParentObjectCheckLock указывает, что драйвер должен вызывать WdfWaitLockCreate и WdfSpinLockCreate , устанавливая родительский объект. |
|
Правило ReqSendWhileSpinlock указывает, что запросы не отправляются, пока драйвер удерживает спин-блокировку. |
|
Правило spinlock указывает, что вызовы KeAcquireSpinLock или KeAcquireSpinLockRaiseToDpc и KeReleaseSpinlock используются в строгом чередованности. |
|
Правило SpinlockDpc указывает, что вызовы KeAcquireSpinLock или KeAcquireSpinLockRaiseToDpc и KeReleaseSpinlock используются для строгого чередования. |
|
Правило SpinlockRelease указывает, что вызовы KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc и KeReleaseSpinLock используются сбалансированным образом в рамках обратного вызова KMDF. В конце любой процедуры обратного вызова KMDF драйвер не должен удерживать спин-блокировку. |
|
Правило WdfInterruptLock указывает, что вызовы метода WdfInterruptAcquireLock используются в строгом чередовке с вызовами WdfInterruptReleaseLock. Кроме того, в конце любой процедуры обратного вызова KMDF драйвер не должен удерживать объект spin lock платформы, полученный при предыдущем вызове WdfInterruptAcquireLock. |
|
Правило WdfInterruptLockRelease указывает, что вызовы WdfInterruptAcquireLock и WdfInterruptReleaseLock используются сбалансированным образом в рамках процедуры обратного вызова KMDF. В конце любой процедуры обратного вызова KMDF драйвер не должен содержать объект spin lock платформы, полученный при предыдущем вызове WdfInterruptAcquireLock. |
|
Правило WdfSpinlock указывает, что вызовы метода WdfSpinLockAcquire используются в строгом чередовке с WdfSpinlockRelease. В конце любой процедуры обратного вызова KMDF драйвер не должен содержать объект spinlock платформы, полученный при предыдущем вызове WdfSpinLockAcquire. |
|
Правило WdfSpinlockRelease указывает, что вызовы WdfSpinLockAcquire и WdfSpinlockRelease используются сбалансированным образом в функции обратного вызова событий KMDF. При возврате функции обратного вызова события KMDF драйвер не должен содержать объект spin lock платформы, полученный при предыдущем вызове WdfSpinLockAcquire. |
|
Правило WdfWaitlock указывает, что вызовы WdfWaitLockAcquire используются в строгом чередовке с WdfWaitlockRelease. При возврате функции обратного вызова события KMDF драйвер не должен содержать объект spin lock платформы, полученный при предыдущем вызове WdfWaitLockAcquire. |
|
Правило WdfWaitlockRelease указывает, что вызовы WdfWaitLockAcquire и WdfWaitLockRelease используются сбалансированным образом в функции обратного вызова событий KMDF. При возврате функции обратного вызова события KMDF драйвер не должен содержать объект spin lock платформы, полученный при предыдущем вызове WdfWaitLockAcquire. |
Выбор набора правил блокировки
Выберите проект драйвера (.vcxProj) в Microsoft Visual Studio. В меню Драйвер щелкните Запустить средство проверки статических драйверов....
Перейдите на вкладку Правила . В разделе Наборы правил выберите Блокировка.
Чтобы выбрать набор правил по умолчанию в окне командной строки разработчика Visual Studio, укажите Locking.sdv с параметром /проверка. Пример:
msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Дополнительные сведения см. в разделах Использование статического средства проверки драйверов для поиска дефектов в драйверах и Команд статического средства проверки драйверов (MSBuild).