Partilhar via


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 ID do SOLICITANTE PCIe (RID) 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 do 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 de segmento PCI atual. Esse valor especifica o grupo de barramentos PCI nos quais 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 atual do barramento PCI 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.

Valor de retorno

Nenhum

Observações

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 motorista 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 de sequência de inicialização de função virtual.

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

interfiguração para um motorista de ônibus virtual

Se um IHV (fornecedor de hardware independente) fornecer um VBD (driver de ônibus 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 a interface com o VBD por meio de um canal de comunicação privado e solicitar que a chamada do VBD GetLocation. Essa função é exposta a partir da interface GUID_PCI_VIRTUALIZATION_INTERFACE compatível com o driver de ônibus PCI subjacente.

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

Requisitos

Requisito Valor
de cliente com suporte mínimo Nenhum com suporte, com suporte no NDIS 6.30 e posterior.
servidor com suporte mínimo Windows Server 2012
da Plataforma de Destino Universal
cabeçalho ndis.h (inclua Ndis.h)
biblioteca Ndis.lib
IRQL PASSIVE_LEVEL

Consulte também

GUID_PCI_VIRTUALIZATION_INTERFACE

getLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF