Partilhar via


Conjunto de regras do VirtualStorport (Storport)

Utilize essas regras para verificar se o seu driver chama corretamente as DDIs, que são de particular interesse para os drivers de miniporta virtual (VMiniport) Storport.

Nesta secção

Tópico Descrição

DoubleExFreePool

Esta regra verifica se o driver não tenta liberar o mesmo bloco de memória do pool duas vezes.

DoubleKeSetEvent

Esta regra verifica se KeSetEvent não é chamado duas vezes no mesmo objeto de evento. Se o mesmo objeto de evento for passado para a rotina, o driver falhará na regra.

IoFreeIrp

Esta regra verifica se um IRP que foi alocado pelo IoAllocateIrp será liberado pelo IoFreeIrp ou sua rotina de conclusão será definida pelo IoSetCompletionRoutine.

StorPortVirtualDevice

Esta regra verifica que, ao sair da rotina HwStorFindAdapter, o campo VirtualDevice na estrutura PORT_CONFIGURATION_INFORMATION (Storport) foi definido como FALSE. A regra se aplica apenas a miniportas físicas do StorPort.

StorPortVirtualDevice2

Esta regra verifica que, ao sair da rotina HwStorFindAdapter , o campo VirtualDevice na estrutura PORT_CONFIGURATION_INFORMATION (Storport) foi definido como TRUE. A regra se aplica somente a miniportas virtuais StorPort.

WithinCriticalRegion

Esta regra verifica se as chamadas do driver para determinadas funções de sincronização são feitas somente enquanto o processamento normal de APC do kernel está desativado.

ZwRegistryCreate

Esta regra verifica se o identificador para uma chave do Registro criada com ZwCreateKey é subsequentemente usado corretamente por outras rotinas ZwXxx . A rotina ZwOpenKey não deve ser chamada em um identificador já aberto. As rotinas ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose e ZwDeleteKey não devem ser chamadas em um identificador que não esteja aberto. A alça também deve ser fechada antes de retornar.

ZwRegistryOpen

Esta regra verifica se o identificador para a chave do registo aberta via ZwOpenKey é posteriormente usado corretamente por outras rotinas ZwXxx. As rotinas ZwEnumerateKey, ZwEnumerateValueKey, ZwFlushKey, ZwQueryKey, ZwQueryValueKey, ZwSetValueKey, ZwClose e ZwDeleteKey não devem ser chamadas em um identificador que não esteja aberto. A alça também deve ser fechada antes de retornar.

Para selecionar o conjunto de regras do VirtualStorport

  1. Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver, clique em Iniciar Verificador de Driver Estático...

  2. Clique na guia Regras . Em Conjuntos de regras, selecione VirtualStorport.

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

    msbuild /t:sdv /p:Inputs="/check:VirtualStorport.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).