Compartilhar via


Conjunto de regras diversas (NDIS)

Use essas regras para verificar se o driver segue corretamente um conjunto geral de requisitos para o tratamento adequado de temporizadores, operações de pausa, chaves, cadeias de caracteres e associações.

Nesta seção

Tópico Descrição

CancelTimerObject

A regra CancelTimerObject especifica que NdisSetTimerObject e NdisCancelTimerObject são chamados em ordem alternativa. O objetivo final é garantir que todos os temporizadores sejam cancelados quando MiniportHaltEx terminar.

MiniportPause_Return

A regra MiniportPause_Return especifica que a função de retorno de chamada MiniportPause só deve retornar NDIS_STATUS_SUCCESS se a operação de pausa estiver concluída ou NDIS_STATUS_PENDING se o driver de miniporto estiver em estado de pausa. Qualquer outro status retornado é inválido.

NdisOpenConfigurationEx

Essa regra verifica se NdisOpenConfigurationEx e NdisCloseConfiguration são chamados em ordem alternativa. O objetivo final é garantir que os identificadores de configuração sejam fechados quando MiniportHaltEx for encerrado

NdisQueryBindInstanceName

NdisQueryBindInstanceName aloca memória para a cadeia de caracteres que especifica o nome amigável. Depois que o chamador terminar de usar essa memória, o chamador deverá chamar a função NdisFreeMemory para liberar a memória.

NdisReEnumerateProtocolBindings

Os drivers de protocolo não podem chamar NdisReEnumerateProtocolBindings no contexto das funções ProtocolBindAdapterEx ou ProtocolUnbindAdapterEx . Além disso, os drivers de protocolo não podem chamar NdisReEnumerateProtocolBindings dentro do contexto da função ProtocolNetPnPEvent se o parâmetro ProtocolBindingContext de ProtocolNetPnPEvent for diferente de NULL. No entanto, os drivers de protocolo podem chamar NdisReEnumerateProtocolBindings no contexto de ProtocolNetPnPEvent se ProtocolBindingContext for NULL. Um valor NULL ProtocolBindingContext indica que o evento se aplica a todas as associações.

PeriodicTimer

A regra PeriodicTimer especifica que o chamador de NdisCancelTimerObject deve estar em execução em IRQL = PASSIVE_LEVEL se um valor diferente de zero foi especificado no parâmetro MillisecondsPeriod da função NdisSetTimerObject . Se o parâmetro MillisecondsPeriod da função NdisSetTimerObject fosse zero, os chamadores de NdisCancelTimerObject podem estar sendo executados em IRQL <= DISPATCH_LEVEL.

WriteErrorLog

A regra WriteErrorLog especifica que, se a função NdisMAllocateSharedMemory for chamada na função MiniportInitializeEx , o driver também deverá chamar NdisWriteErrorLogEntry se a alocação falhar.

Para selecionar o conjunto de regras Diversificado

  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 Diversos.

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

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