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 |
---|---|
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. |
|
Esta regra verifica se as esperas ou a alocação de dados não são executadas dentro do StartIo. |
|
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. |
|
Esta regra verifica se a miniporta não deve tentar chamar StorPortFreePool em um buffer desalocado. |
|
Esta regra verifica se a miniporta não deve tentar chamar StorPortAllocatePool em um buffer alocado sem realocá-lo primeiro. |
|
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). |
|
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. |
|
Esta regra verifica se StorPortEnablePassiveInitialization não é chamado de qualquer rotina de driver de miniporta StorPort diferente de HwInitialize. |
|
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. |
|
Esta regra verifica se as chamadas para StorPortNotification usam apenas tipos de notificação permitidos (ou seja, documentados). |
|
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. |
|
Esta regra verifica se o parâmetro PerfConfigData que é passado para StorPortInitializePerfOpts não é NULL. |
|
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. |
|
A rotina HW_TIMER deve ser definida se uma chamada para StorPortNotification(RequestTimerCall) for feita. |
Para selecionar o conjunto de regras SrbProcessing
Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver, clique em Launch Static Driver Verifier....
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).