Configurando um arquivo INF para um driver de filtro de modificação

Os seguintes problemas de instalação do driver de filtro NDIS estão associados à modificação de drivers de filtro. Para criar seu próprio arquivo INF do driver de filtro de modificação, você também pode adaptar o driver de filtro NDIS 6.0 de exemplo.

  • Defina a entrada de arquivo CLASSE INF como NetService no arquivo INF. O exemplo a seguir mostra uma entrada de classe de exemplo para o arquivo INF.

    Class = NetService
    
  • A seção DDInstall em um arquivo INF do driver de filtro deve ter uma entrada Características . O exemplo a seguir mostra como você deve definir a entrada Características no arquivo INF do filtro.

    Characteristics=0x40000
    

    O valor 0x40000 indica que NCF_LW_FILTER (0x40000) está definido. Os drivers de filtro não devem definir o sinalizador NCF_FILTER (0x400). Os valores dos sinalizadores xxx NCF_ são definidos em Netcfgx.h. Para obter mais informações sobre NCF_ sinalizadores Xxx , consulte Seção DDInstall em um arquivo INF de rede.

  • Defina a entrada de arquivo INF NetCfgInstanceId no arquivo INF, como mostra o exemplo a seguir.

    NetCfgInstanceId="{5cbf81bd-5055-47cd-9055-a76b2b4e3697}"
    

    Você pode usar a ferramenta Uuidgen.exe para criar o GUID para a entrada NetCfgInstanceId .

  • A seção DDInstall do arquivo INF para um driver de filtro deve incluir uma diretiva Addreg para uma chave Ndi . O arquivo INF deve especificar a entrada Serviço sob a chave Ndi . A entrada ServiceBinary na seção service-install do arquivo INF especifica o caminho para o binário para o driver de filtro. Para obter mais informações, consulte Adicionar valores relacionados ao serviço à seção Ndi Key e DDInstall.Services em um arquivo INF de rede.

  • A seção DDInstall em um arquivo INF do driver de filtro deve ter entradas FilterType e FilterRunType . Para especificar um filtro de modificação, defina a entrada FilterType no arquivo INF, como mostra o exemplo a seguir.

    HKR, Ndi,FilterType,0x00010001 ,0x00000002
    

    O valor FilterType 0x00000002 indica que o filtro é um filtro de modificação.

  • Defina a entrada FilterRunType no arquivo INF, como mostra o exemplo a seguir.

    HKR, Ndi,FilterRunType,0x00010001 ,0x00000001
    

    O valor 0x00000001 no exemplo anterior indica que o módulo de filtro é obrigatório. Para instalar um módulo de filtro opcional, defina a entrada FilterRunType como 0x00000002. Para obter mais informações, consulte Drivers de filtro obrigatórios.

  • O exemplo a seguir mostra como um arquivo INF do driver de filtro de modificação especifica o nome do serviço.

    HKR, Ndi,Service,,"NdisLwf"
    

    Neste exemplo, NdisLwf é o nome do serviço do driver, pois ele é relatado ao NDIS. Observe que o nome do serviço de um driver de filtro pode ser diferente do nome do binário para o driver, mas normalmente eles são os mesmos.

  • O exemplo a seguir mostra como o arquivo INF do filtro faz referência ao nome do serviço do driver de filtro quando ele adiciona esse serviço.

    [Install.Services]
    AddService=NdisLwf,,NdisLwf_Service_Inst;, common.EventLog 
    
    [NdisLwf_Service_Inst]
    DisplayName     = %NdisLwf_Desc%
    ServiceType     = 1 ;SERVICE_KERNEL_DRIVER
    StartType       = 1 ;SERVICE_SYSTEM_START
    ErrorControl    = 1 ;SERVICE_ERROR_NORMAL
    ServiceBinary   = %13%\ndislwf.sys
    LoadOrderGroup  = NDIS
    Description     = %NdisLwf_Desc%
    AddReg          = Common.Params.reg
    
  • Um arquivo INF de filtro deve especificar pelo menos o nome do serviço primário do filtro para o atributo CoServices , como mostra o exemplo a seguir.

    HKR, Ndi,CoServices,0x00010000,"NdisLwf"
    

    Para obter mais informações sobre o atributo CoServices , consulte Adicionando valores relacionados ao serviço à chave Ndi.

  • O valor FilterClass no arquivo INF para um driver de filtro determina sua ordem em uma pilha de filtros. Os drivers de filtro devem definir a chave FilterClass . A classe do driver pode ser um dos valores na tabela a seguir.

    Valor Descrição

    agendador

    Serviço de filtro de agendamento de pacotes. Essa classe de driver de filtro é o driver de nível mais alto que pode existir acima dos filtros de classe de criptografia em uma pilha de driver. Um agendador de pacotes detecta a classificação de prioridade de 802,1p que é dada a pacotes por componentes de sinalização de qualidade de serviço (QoS) e o agendador envia esses níveis de pacotes para drivers subjacentes de acordo com sua prioridade.

    criptografia

    Existem drivers de filtro de classe de criptografia entre filtros de classe de compactação e agendador.

    compactação

    Existem drivers de filtro de classe de compactação entre criptografia e filtros de classe vpn.

    vpn

    Existem drivers de filtro de classe VPN entre drivers de compactação e filtro de balanceamento de carga.

    loadbalance

    Serviço de filtro de balanceamento de carga. Essa classe de driver de filtro existe entre o agendamento de pacotes e os drivers de failover. Um serviço de filtro de balanceamento de carga equilibra sua carga de trabalho de transferências de pacote distribuindo a carga de trabalho sobre seu conjunto de adaptadores de miniporte subjacentes.

    failover

    Serviço de filtro de failover. Essa classe de driver de filtro existe entre o equilíbrio de carga e os drivers de diagnóstico.

    diagnóstico

    Os drivers de filtro de diagnóstico existem abaixo dos drivers de failover na pilha.

    custom

    Os drivers de filtro na classe personalizada existem abaixo dos drivers de diagnóstico.

    provider_address

    Os drivers de filtro de endereço do provedor existem abaixo dos pacotes de PA (pa) de virtualização de rede do Hyper-V in-box ms_wnv.

Nota Se vários drivers de filtro tiverem o mesmo FilterClass, todos eles serão adicionados à pilha em camadas de drivers de filtro. O sistema atribui uma ordem de camadas a cada driver de filtro de modificação com o mesmo FilterClass. Em alguns casos, o administrador do sistema pode reorganizar a ordem relativa dos drivers de filtro que têm o mesmo FilterClass.

O exemplo a seguir mostra um exemplo de FilterClass .

HKR, Ndi,FilterClass,, compression
  • Somente os drivers de filtro de extensão de comutador Hyper-V são válidos no Comutador Extensível do Hyper-V. Os drivers de filtro de comutador extensível do Hyper-V devem definir a chave FilterClass com um dos valores na tabela a seguir.

    Valor Descrição

    ms_switch_capture

    A partir do NDIS 6.30, os drivers de captura monitoram o tráfego de pacotes na pilha do driver de comutador extensível do Hyper-V. Essa classe de driver de filtro existe abaixo de drivers personalizados na pilha.

    Para obter mais informações sobre essa classe de driver, consulte Capturando extensões.

    ms_switch_filter

    A partir do NDIS 6.30, a filtragem de drivers filtra o tráfego de pacotes e impõe a porta ou a política de comutador para entrega de pacotes por meio da pilha extensível do driver de comutador. Essa classe de driver de filtro existe abaixo ms_switch_capture drivers na pilha.

    Para obter mais informações sobre essa classe de driver, consulte Filtrando extensões.

    ms_switch_forward

    A partir do NDIS 6.30, o filtro de drivers de encaminhamento executa as mesmas funções que um driver de filtragem. Os drivers de encaminhamento também encaminham pacotes de e para portas de comutador extensíveis. Essa classe de driver de filtro existe abaixo ms_switch_filter drivers na pilha.

    Para obter mais informações sobre essa classe de driver, consulte Extensões de encaminhamento.

  • Você deve definir as seguintes entradas no arquivo INF do driver de filtro de modificação para controlar as associações de driver.

    HKR, Ndi\Interfaces,UpperRange,,"noupper"
    HKR, Ndi\Interfaces,LowerRange,,"nolower"
    HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
    

    Para obter mais informações sobre como controlar as associações de driver, consulte Especificando relações de associação de driver de filtro.

  • Um arquivo INF de filtro de modificação pode especificar definições de parâmetro comuns para o driver e os parâmetros associados a um adaptador específico. O exemplo a seguir mostra algumas definições de parâmetro comuns.

Cuidado

Usar o HKR AddReg para colocar chaves diretamente sob o estado do serviço é uma violação de conformidade. Essas chaves precisam ser adicionadas sob a chave Parâmetros do serviço para serem compatíveis.

[Common.Params.reg]

HKR, FilterDriverParams\DriverParam,  ParamDesc, , "Driverparam for lwf"
HKR, FilterDriverParams\DriverParam,  default, , "5"
HKR, FilterDriverParams\DriverParam,  type,  , "int"

HKR, FilterAdapterParams\AdapterParam,  ParamDesc, , "Adapterparam for lwf"
HKR, FilterAdapterParams\AdapterParam,  default, , "10"
HKR, FilterAdapterParams\AdapterParam,  type,  , "int"