Função NdisMGetVirtualFunctionLocation (ndis.h)

Um driver de miniporto chama a função NdisMGetVirtualFunctionLocation para consultar o local do dispositivo de uma VF (Função Virtual) PCI Express (PCIe) em um barramento PCI. O driver usa o local do dispositivo para construir a RID (ID do Solicitante PCIe) para o VF.

ObservaçãoNdisMGetVirtualFunctionLocation só deve ser chamado pelo driver de miniporto para PF (Função Física PCIe) do adaptador de rede.
 

Sintaxe

void NdisMGetVirtualFunctionLocation(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PUSHORT                SegmentNumber,
  [out] PUCHAR                 BusNumber,
  [out] PUCHAR                 FunctionNumber
);

Parâmetros

[in] NdisMiniportHandle

O identificador de adaptador de rede que o NDIS passou para o parâmetro MiniportAdapterHandle de MiniportInitializeEx.

[in] VFId

O identificador da VF para a qual o local do dispositivo é retornado.

[out] SegmentNumber

Um ponteiro para uma variável fornecida pelo chamador na qual essa função retorna um valor USHORT para o número do segmento PCI atual. Esse valor especifica o grupo de barramentos PCI no qual o dispositivo está anexado.

[out] BusNumber

Um ponteiro para uma variável fornecida pelo chamador na qual essa função retorna um valor UCHAR. Esse valor especifica o número do barramento PCI atual no qual o dispositivo está anexado.

[out] FunctionNumber

Um ponteiro para uma variável fornecida pelo chamador na qual essa função retorna um valor UCHAR. Esse valor especifica o número de função de um dispositivo lógico no dispositivo.

Retornar valor

Nenhum

Comentários

Quando ele lida com uma solicitação de método de OID_NIC_SWITCH_ALLOCATE_VF, o driver de miniporto PF deve retornar o RID para a VF que o driver alocou com êxito no adaptador de rede. O driver gera o RID da seguinte maneira:

  1. O driver primeiro chama a função NdisMGetVirtualFunctionLocation para obter as informações de localização relacionadas ao barramento para o VF.
  2. Em seguida, o driver chama a macro NDIS_MAKE_RID com as informações de localização relacionadas ao barramento para gerar o RID.

Para obter mais informações sobre como alocar recursos de VF, consulte Sequência de inicialização de função virtual.

Para obter mais informações sobre a interface SR-IOV, consulte Visão geral da SR-IOV (Virtualização de E/S de Raiz Única).

Interfacing to a Virtual Bus Driver

Se um IHV (fornecedor independente de hardware) fornecer um VBD (driver de barramento virtual) como parte de seu pacote de driver SR-IOV, seu driver de miniporto não deverá chamar NdisMGetVirtualFunctionLocation. Em vez disso, o driver deve fazer interface com o VBD por meio de um canal de comunicação privado e solicitar que o VBD chame GetLocation. Essa função é exposta a partir da interface GUID_PCI_VIRTUALIZATION_INTERFACE compatível com o driver de barramento PCI subjacente.

O VBD executado no sistema operacional de gerenciamento da partição pai do Hyper-V pode consultar a interface de GUID_PCI_VIRTUALIZATION_INTERFACE emitindo uma solicitação de IRP_MN_QUERY_INTERFACE para seu PDO (objeto de dispositivo físico) no barramento PCI. Essa solicitação deve ser feita de IRQL = PASSIVE_LEVEL. Nessa solicitação, o driver deve definir o parâmetro InterfaceType como GUID_PCI_VIRTUALIZATION_INTERFACE.

Requisitos

Requisito Valor
Cliente mínimo com suporte Nenhum com suporte, com suporte no NDIS 6.30 e posterior.
Servidor mínimo com suporte Windows Server 2012
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL

Confira também

GUID_PCI_VIRTUALIZATION_INTERFACE

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF