Compartilhar via


SRIOV_GET_VENDOR_AND_DEVICE_IDS função de retorno de chamada (pcivirt.h)

Fornece a ID do Fornecedor e do Dispositivo para uma VF (Função Virtual SR-IOV) PCI Express a ser usada para gerar uma ID de Plug and Play mais genérica para o VF. Essas IDs não podem ser lidas diretamente do espaço de configuração do VF.

Sintaxe

SRIOV_GET_VENDOR_AND_DEVICE_IDS SriovGetVendorAndDeviceIds;

void SriovGetVendorAndDeviceIds(
  [in]  PVOID Context,
  [in]  USHORT VfIndex,
  [out] PUSHORT VendorId,
  [out] PUSHORT DeviceId
)
{...}

Parâmetros

[in] Context

Um ponteiro para um contexto definido pelo driver.

[in] VfIndex

Um índice baseado em zero do VF ao qual essa operação de gravação se aplica.

[out] VendorId

Um ponteiro para uma variável USHORT preenchida com a ID do fornecedor da VF.

[out] DeviceId

Um ponteiro para uma variável USHORT preenchida com a ID do dispositivo da VF.

Retornar valor

Nenhum

Comentários

Essa função de retorno de chamada é implementada pelo driver de função física (PF). Ele é invocado quando o sistema deseja recuperar o fornecedor e os identificadores de dispositivo do VF especificado.

A Especificação PCI Express SR-IOV exige que todas as VFs tenham as mesmas IDs de fornecedor e dispositivo. Esse é um requisito de hardware em conformidade. No entanto, é possível provisionar VFs de modo que suas funcionalidades diferem umas das outras e, muitas vezes, é útil carregar drivers diferentes em hardwares diferentes. Portanto, o Windows permite que o driver PF forneça IDs de Dispositivo e Fornecedor separadas (com códigos de classe diferentes, por meio das interfaces de espaço de configuração), de modo que cada VF possa aparecer com as IDs de Plug and Play mais apropriadas para seu uso.

O driver PF registra sua implementação definindo o membro GetVendorAndDevice do SRIOV_DEVICE_INTERFACE_STANDARD, configurando uma estrutura WDF_QUERY_INTERFACE_CONFIG e chamando WdfDeviceAddQueryInterface.

Aqui está um exemplo de implementação dessa função de retorno de chamada.

Virtualization_GetVendorAndDevice (
    _In_    PVOID           Context,
    _In_    USHORT          VfIndex,
    _Out_   PUSHORT         VendorId,
    _Out_   PUSHORT         DeviceId
    )
{
    PDEVICE_CONTEXT deviceContext;

    UNREFERENCED_PARAMETER(VfIndex);
    PAGED_CODE();

    deviceContext = (PDEVICE_CONTEXT)Context;

    *VendorId = deviceContext->VendorId;
    *DeviceId = deviceContext->DeviceId;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Windows
Cabeçalho pcivirt.h
IRQL PASSIVE_LEVEL