Inicializar um driver de miniporta VF
Este tópico descreve as diretrizes para escrever uma função MiniportInitializeEx do driver de miniporta para uma função virtual (VF) PCI Express (PCIe). A VF é exposta por um adaptador de rede que dá suporte à virtualização de E/S de raiz única (SR-IOV).
Observação
Essas diretrizes só se aplicam aos drivers de miniporta VF do adaptador de rede SR-IOV. Para obter diretrizes de inicialização para o driver de miniporta de uma função física PCIe (PF) do adaptador, consulte Inicializar um driver de miniporta PF.
O driver de miniporta VF segue as mesmas etapas que qualquer driver de miniporta NDIS quando sua função MiniportInitializeEx é chamada. Para obter mais informações sobre essas etapas, consulte Inicializar um driver de miniporta.
Além dessas etapas, o driver de miniporta VF deve seguir estas etapas adicionais quando o NDIS chama a função MiniportInitializeEx do driver:
O driver de miniporta VF chama a função NdisGetHypervisorInfo para verificar se ela está sendo executada na partição filho do Hyper-V. Esta função retorna uma estrutura NDIS_HYPERVISOR_INFO que define o tipo de partição. Se o tipo de partição for relatado como NdisHypervisorPartitionMsHvChild, o driver de miniporta está sendo executado em uma partição filho do Hyper-V conectada ao PF no adaptador.
Observação
Se o tipo de partição for relatado como NdisHypervisorPartitionMsHvParent, o driver de miniporta está sendo executado na partição pai do Hyper-V conectada ao PF no adaptador. Nesse caso, o driver de miniporta não deve ser inicializado como um driver VF. Se possível, o driver deve ser inicializado como um driver PF conforme descrito em Sequência de inicialização para drivers de miniporta PF.
Ao contrário do driver de miniporta PF, o driver de miniporta VF não deve ser instalado com as palavras-chave padronizadas SR-IOV e não deve tentar ler essas palavras-chave. Para obter mais informações sobre essas palavras-chave, consulte Palavras-chave INF padronizadas para SR-IOV.
O driver de miniporta VF relata os recursos de hardware SR-IOV do adaptador de rede virtual subjacente por meio de uma estrutura NDIS_SRIOV_CAPABILITIES inicializada assim:
O driver de miniporta inicializa o membro Header. O driver define o membro Type de Header como NDIS_OBJECT_TYPE_DEFAULT.
A partir do NDIS 6.30, o driver de miniporta define o membro Revision de Header para NDIS_SRIOV_CAPABILITIES _REVISION_1 e o membro Size para NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1.
O driver de miniporta define o sinalizador NDIS_SRIOV_CAPS_PF_MINIPORT no membro SriovCapabilities para relatar os recursos SR-IOV.
Observação
O driver de miniporta VF deve definir o sinalizador de NDIS_SRIOV_CAPS_VF_MINIPORT e o sinalizador de NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.
O driver de miniporta VF registra os recursos SR-IOV do adaptador de rede seguindo estas etapas:
O driver de miniporta inicializa uma estrutura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.
O driver de miniporta define os membros HardwareSriovCapabilities e CurrentSriovCapabilities como um ponteiro para a estrutura NDIS_SRIOV_CAPABILITIES inicializada anteriormente.
O driver chama NdisMSetMiniportAttributes e define o parâmetro MiniportAttributes como um ponteiro para a estruturaNDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.
O driver de miniporta VF não deve anunciar recursos de VMQ (fila de máquinas virtuais). No entanto, o driver pode anunciar suporte para outras tecnologias NDIS, como gerenciamento de energia e RSS (Receive Side Scaling).
Para obter mais informações sobre RSS, consulte RSS (Receive Side Scaling).