다음을 통해 공유


KMDF(잠금 규칙 집합)

이러한 규칙을 사용하여 드라이버가 공유 리소스를 올바르게 관리하는지 확인합니다.

섹션 내용

항목 Description

ParentObjectCheckLock

ParentObjectCheckLock 규칙은 드라이버가 WdfWaitLockCreateWdfSpinLockCreate 설정 부모 개체를 호출하도록 지정합니다.

ReqSendWhileSpinlock

ReqSendWhileSpinlock 규칙은 드라이버가 스핀 잠금을 보유하는 동안 요청이 전송되지 않음을 지정합니다.

Spinlock

Spinlock 규칙은 KeAcquireSpinLock 또는KeAcquireSpinLockRaiseToDpcKeReleaseSpinlock에 대한 호출이 엄격한 교대로 사용되도록 지정합니다.

SpinlockDpc

SpinlockDpc 규칙은 KeAcquireSpinLock 또는KeAcquireSpinLockRaiseToDpcKeReleaseSpinlock에 대한 호출이 엄격한 교대로 사용되도록 지정합니다.

SpinlockRelease

SpinlockRelease 규칙은 KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpcKeReleaseSpinLock에 대한 호출이 KMDF 콜백 내에서 균형 잡힌 방식으로 사용되도록 지정합니다. KMDF 콜백 루틴이 끝나면 드라이버가 스핀 잠금을 보유해서는 안 됩니다.

WdfInterruptLock

WdfInterruptLock 규칙은 WdfInterruptAcquireLock 메서드에 대한 호출이 WdfInterruptReleaseLock 호출과 함께 엄격한 변경에 사용되도록 지정합니다. 또한 KMDF 콜백 루틴이 끝날 때 드라이버는 WdfInterruptAcquireLock에 대한 이전 호출에서 얻은 프레임워크 스핀 잠금 개체를 보유해서는 안 됩니다.

WdfInterruptLockRelease

WdfInterruptLockRelease 규칙은 WdfInterruptAcquireLockWdfInterruptReleaseLock에 대한 호출이 KMDF 콜백 루틴 내에서 균형 잡힌 방식으로 사용되도록 지정합니다. KMDF 콜백 루틴이 끝날 때 드라이버는 WdfInterruptAcquireLock에 대한 이전 호출에서 얻은 프레임워크 스핀 잠금 개체를 보유하지 않아야 합니다.

WdfSpinlock

WdfSpinlock 규칙은 WdfSpinLockAcquire 메서드에 대한 호출이 WdfSpinlockRelease를 사용하여 엄격한 변경에 사용되도록 지정합니다. KMDF 콜백 루틴이 끝날 때 드라이버는 WdfSpinLockAcquire에 대한 이전 호출에서 얻은 프레임워크 스핀 잠금 개체를 보유하지 않아야 합니다.

WdfSpinlockRelease

WdfSpinlockRelease 규칙은 WdfSpinLockAcquireWdfSpinlockRelease에 대한 호출이 KMDF 이벤트 콜백 함수 내에서 균형 잡힌 방식으로 사용되도록 지정합니다. KMDF 이벤트 콜백 함수가 반환되면 드라이버는 WdfSpinLockAcquire에 대한 이전 호출에서 가져온 프레임워크 스핀 잠금 개체를 보유하지 않아야 합니다.

WdfWaitlock

WdfWaitlock 규칙은 WdfWaitLockAcquire에 대한 호출이 WdfWaitlockRelease를 사용하여 엄격한 변경에 사용되도록 지정합니다. KMDF 이벤트 콜백 함수가 반환되면 드라이버는 WdfWaitLockAcquire에 대한 이전 호출에서 가져온 프레임워크 스핀 잠금 개체를 보유하지 않아야 합니다.

WdfWaitlockRelease

WdfWaitlockRelease 규칙은 WdfWaitLockAcquireWdfWaitLockRelease에 대한 호출이 KMDF 이벤트 콜백 함수 내에서 균형 잡힌 방식으로 사용되도록 지정합니다. KMDF 이벤트 콜백 함수가 반환되면 드라이버는 WdfWaitLockAcquire에 대한 이전 호출에서 가져온 프레임워크 스핀 잠금 개체를 보유하지 않아야 합니다.

잠금 규칙 집합을 선택하려면

  1. Microsoft Visual Studio에서 드라이버 프로젝트(.vcxProj)를 선택합니다. 드라이버 메뉴에서 정적 드라이버 검증 도구 시작...을 클릭합니다.

  2. 규칙 탭을 클릭합니다. 규칙 집합에서 잠금을 선택합니다.

    Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /검사 옵션을 사용하여 Locking.sdv를 지정합니다. 예를 들면 다음과 같습니다.

    msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    자세한 내용은 정적 드라이버 검증 도구로 드라이버의 결함 찾기MSBuild(정적 드라이버 검증 도구 명령)를 참조하세요.