Enumerando funções virtuais em um adaptador de rede
Um driver ou aplicativo de usuário em excesso pode obter uma lista de todas as VFs (Funções Virtuais) PCI Express (PCIe) em um adaptador de rede que dá suporte à VIRTUALização de E/S de raiz única (SR-IOV). O driver ou aplicativo emite uma solicitação de método OID (identificador de objeto) de OID_NIC_SWITCH_ENUM_VFS para obter essa lista.
Antes que o driver ou aplicativo emita a solicitação OID, ele deve inicializar uma estrutura NDIS_NIC_SWITCH_VF_INFO_ARRAY que é passada junto com a solicitação. O driver ou aplicativo deve seguir estas diretrizes ao inicializar a estrutura NDIS_NIC_SWITCH_VF_INFO_ARRAY :
Se o sinalizador NDIS_NIC_SWITCH_VF_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH estiver definido no membro Flags , o driver ou aplicativo sobreposto deverá definir o membro SwitchId como o identificador de um comutador NIC no adaptador de rede SR-IOV. Ao definir esses membros dessa maneira, as informações de VF são retornadas somente para a opção NIC especificada no adaptador de rede SR-IOV.
Nota O driver sobreposto e o aplicativo de modo de usuário podem obter os identificadores de comutador NIC emitindo uma solicitação de consulta OID de OID_NIC_SWITCH_ENUM_SWITCHES.
Se o membro Flags estiver definido como zero, o driver ou aplicativo deverá definir o membro SwitchId como zero. Ao definir esses membros dessa maneira, as informações de VF são retornadas para todos os comutadores NIC no adaptador de rede SR-IOV.
Nota A partir do Windows Server 2012, o Windows dá suporte apenas ao comutador NIC padrão no adaptador de rede. Independentemente dos sinalizadores definidos no membro Flags , o membro SwitchId deve ser definido como NDIS_DEFAULT_SWITCH_ID.
Após um retorno bem-sucedido dessa solicitação de consulta OID, o membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para um buffer que contém o seguinte:
Uma estrutura NDIS_NIC_SWITCH_VF_INFO_ARRAY que define o número de elementos dentro da matriz.
Uma matriz de estruturas NDIS_NIC_SWITCH_VF_INFO . Cada uma dessas estruturas contém informações sobre um único VF em um comutador NIC do adaptador de rede. Uma VF é anexada a uma opção NIC por meio de solicitações de método OID de OID_NIC_SWITCH_ALLOCATE_VF.
Nota Se nenhuma VF estiver anexada a um comutador NIC no adaptador de rede, o membro NumElements da estrutura NDIS_NIC_SWITCH_VF_INFO_ARRAY será definido como zero e nenhuma estrutura de NDIS_NIC_SWITCH_VF_INFO será retornada.
Para obter mais informações sobre comutadores NIC, consulte Comutadores NIC.
O NDIS lida com a solicitação de OID_NIC_SWITCH_ENUM_VFS para drivers de miniporta. O NDIS retorna as informações de um cache interno dos dados que ele mantém ao inspecionar as seguintes fontes:
Solicitações de método OID de OID_NIC_SWITCH_ALLOCATE_VF.
OID define solicitações de OID_NIC_SWITCH_VF_PARAMETERS.