Emissão de solicitações de OID_NIC_SWITCH_ALLOCATE_VF
Antes de emitir a solicitação de método OID (identificador de objeto) de OID_NIC_SWITCH_ALLOCATE_VF para o driver de miniporto para a função física PCI Express (PCIe), o driver sobreposto formata uma estrutura NDIS_NIC_SWITCH_VF_PARAMETERS . Essa estrutura contém os parâmetros de configuração para os recursos a serem alocados para uma função virtual PCIe (VF) no adaptador de rede. O driver de sobreposição deve definir os membros dessa estrutura da seguinte maneira:
O membro SwitchId deve ser definido como o identificador de um comutador NIC que foi criado anteriormente no adaptador de rede. Uma opção NIC é criada por meio de uma solicitação de método OID de OID_NIC_SWITCH_CREATE_SWITCH.
Quando ele manipula a solicitação de método OID de OID_NIC_SWITCH_ALLOCATE_VF, o driver de miniporto para a função física PCIe (PF) aloca recursos para o VF. Se os recursos forem alocados com êxito, o driver de miniporto PF atribuirá o VF ao comutador NIC especificado.
Nota A partir do NDIS 6.30 em Windows Server 2012, a interface SR-IOV dá suporte apenas ao comutador NIC padrão no adaptador de rede. O valor do membro SwitchId deve ser definido como NDIS_DEFAULT_SWITCH_ID.
Para obter mais informações sobre um comutador NIC, consulte Comutadores NIC.
O membro VFId deve ser definido como NDIS_INVALID_VF_FUNCTION_ID.
O membro RequestorId deve ser definido como NDIS_INVALID_RID.
Os membros VMFriendlyName e VMName devem ser definidos como os parâmetros de uma partição filho do Hyper-V. O driver de miniporta PF usa esses membros apenas para fins informativos.
Nota A partição filho do Hyper-V também é conhecida como VM (máquina virtual).
A VF é associada à VM especificada antes que o driver de sobreposição emita a solicitação de OID_NIC_SWITCH_CREATE_SWITCH .
O membro NicName deve ser definido como o identificador do adaptador de rede da VM (máquina virtual). Esse adaptador virtual é exposto no sistema operacional convidado que é executado na VM. O driver de miniporto PF usa esse membro apenas para fins informativos.
Quando os recursos são alocados para o VF e são anexados à partição filho, um adaptador de rede VF é exposto no sistema operacional convidado. As equipes do adaptador de rede da VM com o adaptador de rede VF para transferência de pacotes pelo caminho de dados VF baseado em hardware.
No entanto, a VF pode ser desanexada da partição filho, como durante a Migração Dinâmica. Quando isso acontece, a transferência de pacote ocorre no caminho de dados sintéticos baseado em software. Para obter mais informações sobre esses caminhos de dados, consulte Caminhos de dados SR-IOV.
Os membros PermanentMacAddress e CurrentMacAddress devem ser definidos para os endereços MAC (controle de acesso à mídia) para o adaptador de rede virtual do VF. Esses endereços são expostos à pilha de rede executada no sistema operacional convidado da partição filho do Hyper-V.
O driver sobreposto emite a solicitação de método OID de OID_NIC_SWITCH_ALLOCATE_VF seguindo estas etapas:
O driver sobreposto inicializa uma estrutura NDIS_OID_REQUEST para a solicitação do método OID. O driver define o membro InformationBuffer como um ponteiro para uma estrutura de NDIS_NIC_SWITCH_VF_PARAMETERS inicializada.
O driver subjacente chama NdisOidRequest para emitir a solicitação OID para o driver de miniporto PF subjacente.
Nota Quando o driver sobreposto chama NdisOidRequest, o NDIS intercepta a solicitação OID e verifica os parâmetros de VF especificados na estrutura NDIS_NIC_SWITCH_VF_PARAMETERS . Se os parâmetros forem verificados com êxito, o NDIS encaminhará o OID para o driver de miniporto PF. Caso contrário, o NDIS falhará na solicitação OID com NDIS_STATUS_INVALID_PARAMETER.
Depois que um driver de sobreposição solicita a alocação de recursos para uma VF, esse driver é o único componente que pode solicitar a liberação dos recursos para o mesmo VF. O driver sobreposto deve emitir uma solicitação de conjunto de OID de OID_NIC_SWITCH_FREE_VF para liberar os recursos do VF. Antes que o driver de sobreposição possa ser interrompido, ele deve liberar os recursos para cada VF alocado pela solicitação de OID_NIC_SWITCH_ALLOCATE_VF do driver.