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.
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:
- O driver primeiro chama a função NdisMGetVirtualFunctionLocation para obter as informações de localização relacionadas ao barramento para o VF.
- 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