다음을 통해 공유


SrbProcessing 규칙 집합(Storport)

이러한 규칙을 사용하여 드라이버가 SRB 요청을 올바르게 처리하는지 확인합니다.

섹션 내용

항목 설명

SpDuplex

이 규칙은 이 미니포트가 전체 이중 모드인지 확인합니다. StorPort 미니포트 모델에 따라 빌드된 모든 드라이버는 전체 이중 모드여야 합니다. 반이중 은 기존 SCSI 드라이버를 StorPort로 포팅할 때만 사용해야 합니다.

SpNoWait

이 규칙은 StartIo 내에서 대기 또는 데이터 할당이 수행되지 않는지 확인합니다.

SpReturnValue

이 규칙은 드라이버의 HwStorFindAdapter 및 VirtualHwStorFindAdapter 구현이 유효한 상태 반환하는지 확인합니다. 유효한 상태 SP_RETURN_FOUND, SP_RETURN_ERROR, SP_RETURN_BAD_CONFIG 또는 SP_RETURN_NOT_FOUND하나입니다.

StorPortAllocatePool

이 규칙은 미니포트가 할당 취소된 버퍼에서 StorPortFreePool을 호출하려고 시도해서는 안 됨을 확인합니다.

StorPortAllocatePool2

이 규칙은 미니포트가 할당된 버퍼에서 StorPortAllocatePool을 먼저 할당 취소하지 않고 호출하려고 시도해서는 안 됨을 확인합니다.

StorPortBuildIo

이 규칙은 StorPort 미니포트의 StorPortBuildIo 루틴이 FALSE를 반환하는 경우 해당 SRB가 StartIo전달되지 않는지 확인합니다. (이러한 경우 미니포트 드라이버는 호출 하여 SRB를 완료해야 합니다.StorPortBuildIo 또는 다른 위치에서 RequestComplete 알림 유형이 있는 StorPortNotification).

StorPortCompleteRequest

이 규칙은 StorPortCompleteRequest에 대한 호출이 미니포트에서 수행되지 않는지 확인합니다. StorPortCompleteRequest를 사용하지 않는 것이 좋습니다. 미니포트는 notificationType = RequestComplete사용하여 StorPortNotification을 대신 호출해야 합니다.

StorPortEnablePassive

이 규칙은 StorPortEnablePassiveInitialization이 HwInitialize 이외의 StorPort 미니포트 드라이버 루틴에서 호출되지 않는지 확인합니다.

StorPortFindAdapter

HwStorFindAdapter 루틴은 PORT_CONFIGURATION_INFORMATION 구조에서 MaximumTransferLengthNumberOfPhysicalBreaks 필드를 설정해야 합니다. 기본적으로 이 두 필드의 값은 SP_UNINITIALIZED_VALUE. FindAdapter에서 종료할 때 이러한 필드 중 하나가 여전히 SP_UNINITIALIZED_VALUE 설정되면 드라이버가 규칙을 실패합니다.

StorPortNotification2

이 규칙은 StorPortNotification에 대한 호출이 허용된(즉, 문서화된) 알림 유형만 사용하는지 확인합니다.

StorPortPassiveFromHwInit

HW 초기화 진입점을 HW 어댑터 컨트롤 진입점에서 직접 호출할 수 있는 경우 Storport 드라이버의 HW 초기화 진입점 내에서 StorPortEnablePassiveInitialization 을 호출하면 안 됩니다.

StorPortPerfOpts

이 규칙은 StorPortInitializePerfOpts에 전달된 PerfConfigData 매개 변수가 NULL이 아닌지 확인합니다.

StorPortStartIo

대기 또는 데이터 할당은 미니포트의 StartIo 루틴에서 수행해서는 안 됩니다. 드라이버가 StorPortStallExecution 또는 시간이 많이 걸리는 작업을 포함하는 다른 함수를 호출하는 경우 규칙이 실패합니다. StartIo가 동기화되므로 이러한 호출은 주로 BuildIo에서 수행되어야 합니다.

StorPortTimer

StorPortNotification(RequestTimerCall)에 대한 호출이 이루어지면 HW_TIMER 루틴을 정의해야 합니다.

SrbProcessing 규칙 집합을 선택하려면

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

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

    Visual Studio 개발자 명령 프롬프트 창에서 기본 규칙 집합을 선택하려면 /검사 옵션을 사용하여 SrbProcessing.sdv지정합니다. 예시:

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

    자세한 내용은 정적 드라이버 검증 도구를 사용하여 드라이버정적 드라이버 검증 도구 명령(MSBuild)에서 결함을 찾는 방법을 참조하세요.