Partilhar via


Conjunto de regras SrbProcessing (Storport)

Use essas regras para verificar se o driver processa corretamente as solicitações SRB.

Nesta seção

Tópico Descrição

SpDuplex

Esta regra verifica se esta miniporta está no modo Full Duplex . Qualquer driver criado de acordo com o modelo StorPort-miniport deve estar no modo Full Duplex . Half Duplex só deve ser usado ao portar um driver SCSI existente para StorPort.

SpNoWait

Esta regra verifica se as esperas ou a alocação de dados não são executadas dentro do StartIo.

SpReturnValue

Esta regra verifica se as implementações do driver de HwStorFindAdapter e VirtualHwStorFindAdapter retornam um status válido. Um status válido é um dos seguintes: SP_RETURN_FOUND, SP_RETURN_ERROR, SP_RETURN_BAD_CONFIG ou SP_RETURN_NOT_FOUND.

StorPortAllocatePool

Esta regra verifica se a miniporta não deve tentar chamar StorPortFreePool em um buffer desalocado.

StorPortAllocatePool2

Esta regra verifica se a miniporta não deve tentar chamar StorPortAllocatePool em um buffer alocado sem realocá-lo primeiro.

StorPortBuildIo

Esta regra verifica se se a rotina StorPortBuildIo do miniporto StorPort retornar FALSE, o SRB em questão não será passado para StartIo. (Nesses casos, o driver de miniporta deve concluir o SRB chamando StorPortNotification com um tipo de notificação de RequestComplete de StorPortBuildIo ou em algum outro lugar).

StorPortCompleteRequest

Esta regra verifica se nenhuma chamada para StorPortCompleteRequest é feita pelo miniporto. O uso do StorPortCompleteRequest não é recomendado, os miniports devem chamar StorPortNotification com notificationType = RequestComplete.

StorPortEnablePassive

Esta regra verifica se StorPortEnablePassiveInitialization não é chamado de qualquer rotina de driver de miniporta StorPort diferente de HwInitialize.

StorPortFindAdapter

A rotina HwStorFindAdapter deve definir os campos MaximumTransferLength e NumberOfPhysicalBreaks na estrutura PORT_CONFIGURATION_INFORMATION. Por padrão, o valor de ambos os campos é SP_UNINITIALIZED_VALUE. Se um desses campos ainda estiver definido como SP_UNINITIALIZED_VALUE ao sair do FindAdapter, o driver falhará na regra.

StorPortNotification2

Esta regra verifica se as chamadas para StorPortNotification usam apenas tipos de notificação permitidos (ou seja, documentados).

StorPortPassiveFromHwInit

StorPortEnablePassiveInitialization não deve ser chamado dentro do ponto de entrada de inicialização de HW para drivers Storport se o ponto de entrada de inicialização de HW puder ser chamado diretamente do ponto de entrada de controle de adaptador de HW.

StorPortPerfOpts

Esta regra verifica se o parâmetro PerfConfigData que é passado para StorPortInitializePerfOpts não é NULL.

StorPortStartIo

Esperas ou alocação de dados nunca devem ser realizadas na rotina StartIo do miniport. O driver falhará na regra se chamar StorPortStallExecution ou outra função que envolva operações demoradas. Como o StartIo é sincronizado, essas chamadas devem ser feitas principalmente no BuildIo.

StorPortTimer

A rotina HW_TIMER deve ser definida se uma chamada para StorPortNotification(RequestTimerCall) for feita.

Para selecionar o conjunto de regras SrbProcessing

  1. Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver, clique em Launch Static Driver Verifier....

  2. Clique na guia Regras . Em Conjuntos de Regras, selecione SrbProcessing.

    Para selecionar o conjunto de regras padrão em uma janela de prompt de comando do desenvolvedor do Visual Studio, especifique SrbProcessing.sdv com a opção /check . Por exemplo:

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

    Para obter mais informações, consulte Usando o verificador de driver estático para localizar defeitos em drivers e comandos do verificador de driver estático (MSBuild).