Partilhar via


Conjunto de regras diversos (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 deve retornar somente NDIS_STATUS_SUCCESS se a operação de pausa estiver concluída ou NDIS_STATUS_PENDING se o driver de miniporto estiver no 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 de dentro do contexto das funções ProtocolBindAdapterEx ou ProtocolUnbindAdapterEx . Além disso, os drivers de protocolo não poderão chamar NdisReEnumerateProtocolBindings de dentro do contexto da função ProtocolNetPnPEvent se o parâmetro ProtocolBindingContext de ProtocolNetPnPEvent não for NULL. No entanto, os drivers de protocolo podem chamar NdisReEnumerateProtocolBindings de dentro do 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 tiver sido especificado no parâmetro MillisecondsPeriod da função NdisSetTimerObject . Se o parâmetro MillisecondsPeriod da função NdisSetTimerObject for zero, os chamadores de NdisCancelTimerObject poderão ser 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 Diversos

  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 do prompt de comando do desenvolvedor do Visual Studio, especifique Miscellaneous.sdv com a opção /marcar. 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 Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).