Ange PCI-konfigurationsdata för en virtuell funktion

Miniportdrivrutinen för en virtuell PCI Express-funktion (PCIe) (VF) körs i gästoperativsystemet för en Hyper-V underpartition. Därför kan inte VF-miniportdrivrutinen komma åt maskinvaruresurser direkt, till exempel VF:s PCI-konfigurationsutrymme. Endast miniportdrivrutinen för PCIe Physical Function (PF) kan få åtkomst till PCI-konfigurationsutrymmet för en VF. PF-miniportdrivrutinen körs i hanteringsoperativsystemet för en Hyper-V överordnad partition och har privilegierad åtkomst till VF-resurserna.

Den överliggande drivrutinen, till exempel virtualiseringsstacken, utfärdar OID-uppsättningens begäran om OID_SRIOV_WRITE_VF_CONFIG_SPACE när VF-miniportdrivrutinen anropar NdisMSetBusData för att skriva till sitt PCI-konfigurationsutrymme.

Innan den här OID-uppsättningsbegäran skickas måste den överliggande drivrutinen ställa in medlemmarna i strukturenNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS på följande sätt:

  • Ange VFId- medlem till identifieraren för den VF som informationen ska skrivas för.

  • Ange Offset-medlemmen till förskjutningen inom PCI-konfigurationsutrymmet för den VF där data kommer att skrivas.

  • Ange Längd medlem till antalet byte som ska skrivas till VF:s PCI-konfigurationsutrymme.

  • Ange BufferOffset- fält till förskjutningen inom bufferten (som refereras avInformationBuffer- fält) som kommer att innehålla de data som skrivs till det angivna VF:ets PCI-konfigurationsutrymme. Den här förskjutningen anges i antal bytes från början av NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS strukturen.

När den hanterar OID-metodbegäran för OID_SRIOV_WRITE_VF_CONFIG_SPACEmåste PF-miniportdrivrutinen följa dessa riktlinjer:

  • PF-miniportdrivrutinen måste kontrollera att den virtuella hårddisken, som anges av VFId medlem i NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS struktur, har resurser som tidigare har allokerats. PF-miniportdrivrutinen allokerar resurser för en VF via en OID-metodbegäran för OID_NIC_SWITCH_ALLOCATE_VF.

    Om resurser för den angivna virtuella hårddisken inte har allokerats måste drivrutinen misslyckas med OID-begäran.

  • PF-miniportdrivrutinen anropar NdisMSetVirtualFunctionBusData för att skriva till det begärda PCI-konfigurationsutrymmet. PF-miniportdrivrutinen kan dock också returnera PCI-konfigurationsutrymmesdata för VF (Virtual Function) som drivrutinen har cachelagrat från tidigare läs- eller skrivåtgärder i PCI-konfigurationsutrymmet.

    Note Om en oberoende maskinvaruleverantör (IHV) tillhandahåller en virtuell bussdrivrutin (VBD) som en del av sitt SR-IOV drivrutinspaketfår dess PF-miniportdrivrutin inte anropa NdisMSetVirtualFunctionBusData. Istället måste drivrutinen interagera med VBD via en privat kommunikationskanal och begära att VBD anropar SetVirtualFunctionData. Den här funktionen exponeras från GUID_VPCI_INTERFACE_STANDARD-gränssnittet som stöds av den underliggande virtuella PCI (VPCI)-bussdrivrutinen.

Om PF-miniportdrivrutinen kan slutföra OID-begäran måste drivrutinen kopiera begärda PCI-konfigurationsutrymmesdata till bufferten som refereras av InformationBuffer medlem i NDIS_OID_REQUEST-strukturen. Drivrutinen kopierar data till bufferten vid den förskjutning som anges avBufferOffset medlem i NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS struktur.