Compartilhar via


Interrompendo um driver de miniporto PF

Este tópico discute as etapas envolvidas na interrupção do driver de miniporto para uma PF (Função Física) PCI Express (PCIe) em um adaptador que dá suporte à virtualização de E/S de raiz única (SR-IOV). Essas etapas são mostradas na figura a seguir.

Diagrama que mostra o processo de interrupção de um Driver de Miniporto PF, ilustrando o fluxo de solicitações e funções entre o driver sobressociente, o NDIS e o driver de miniporto PF.

Este tópico inclui as informações a seguir:

Ações executadas pelo NDIS e drivers de sobreposição antes que MiniportHaltEx seja chamado

Antes que o NDIS chame a função MiniportHaltEx do driver de miniport do PF, ele primeiro faz o seguinte:

  • O NDIS desassocia todos os drivers de protocolo que anteriormente associaram ao driver de miniporto PF subjacente. O NDIS faz isso chamando a função ProtocolUnbindAdapterEx do driver de protocolo.

  • O NDIS desanexa todos os drivers de filtro que anteriormente associaram ao driver de miniporto PF subjacente. O NDIS faz isso chamando a função FilterDetach do driver de filtro.

Quando um driver de filtro ou protocolo de sobreposição estiver sendo desvinculado ou desanexado do driver de miniporto PF, ele deverá seguir estas etapas:

  1. O driver deve emitir uma solicitação de conjunto de OID (identificador de objeto) de OID_RECEIVE_FILTER_CLEAR_FILTER para limpar todos os filtros de recebimento definidos anteriormente. O driver define esses filtros na porta virtual padrão (VPort) ou em qualquer VPort não padrão da opção NIC no adaptador de rede. O driver define esses filtros emitindo solicitações de método OID de OID_RECEIVE_FILTER_SET_FILTER para o driver de miniporto PF.

  2. O driver deve emitir uma solicitação de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT para excluir quaisquer VPorts não padrão que ele criou anteriormente na opção NIC. O driver define essas VPorts emitindo solicitações de método OID de OID_NIC_SWITCH_CREATE_VPORT para o driver de miniporto PF.

  3. O driver deve emitir uma solicitação de conjunto de OID de OID_NIC_SWITCH_FREE_VF para liberar os recursos para quaisquer VFs (PcIe Virtual Functions) que ele alocou anteriormente na opção NIC. O driver aloca recursos para o VF emitindo solicitações de método OID de OID_NIC_SWITCH_ALLOCATE_VF para o driver de miniporto PF.

    Para obter mais informações, consulte Liberando recursos para uma função virtual.

    Nota Quando os recursos para o VF são liberados, o NDIS chama a função MiniportHaltEx do driver de miniporto VF. Para obter mais informações, confira Como interromper um driver de miniporto VF.

Depois que todos os filtros de recebimento, VPorts não padrão e VFs tiverem sido excluídos do comutador NIC, o NDIS segue estas etapas:

  • O NDIS exclui todos os comutadores NIC emitindo solicitações de conjunto de OID de OID_NIC_SWITCH_DELETE_SWITCH para o driver de miniporto PF. Para obter mais informações sobre como uma opção NIC é excluída, consulte Excluindo um comutador NIC.

    Nota A partir do Windows Server 2012, a interface SR-IOV dá suporte apenas à opção NIC padrão no adaptador de rede.

  • Depois que todas as opções NIC tiverem sido excluídas com êxito, o NDIS chamará a função MiniportHaltEx do driver de miniporto PF.

Ações executadas pelo driver de miniporto PF quando MiniportHaltEx é chamado

Quando o NDIS chama MiniportHaltEx, o driver de miniporto PF deve seguir estas etapas:

  1. Se o driver de miniporto PF der suporte à criação estática de comutadores NIC e todos os comutadores NIC tiverem sido excluídos, o driver deverá desabilitar a virtualização no adaptador chamando NdisMEnableVirtualization com o parâmetro EnableVirtualization definido como FALSE e o parâmetro NumVFs definido como zero.

    NdisMEnableVirtualization limpa o membro NumVFs e o bit Habilitar VF na estrutura capacidade estendida SR-IOV no espaço de configuração PCIe do PF do adaptador de rede.

    Nota Se o driver de miniporto PF der suporte à criação dinâmica e à configuração de comutadores NIC, ele deverá chamar NdisMEnableVirtualization quando o driver manipular a solicitação de conjunto de OID de OID_NIC_SWITCH_DELETE_SWITCH. Essa solicitação OID é emitida antes de MiniportHaltEx ser chamado.

  2. O driver de miniporto PF executa as outras tarefas associadas a uma operação de parada de miniporto. Para obter mais informações, consulte Interrompendo um adaptador de miniport.