Flytta ett mottagningsfilter till en virtuell port
Den överliggande drivrutinen utfärdar en begäran om objektidentifierare (OID) OID_RECEIVE_FILTER_MOVE_FILTER för att flytta ett mottagningsfilter från en virtuell port (VPort) till en annan VPort på NIC-switchen. Vanligtvis utfärdar den överliggande drivrutinen, till exempel virtualiseringsstacken, denna OID-begäran om något av följande villkor är sant:
Virtualiseringsstacken anger ett mottagningsfilter på standard-VPort. Det här filtret innehåller MAC-adressen (Media Access Control) och de virtuella LAN-parametrarna (VLAN) för den virtuella maskinens (VM) nätverkskort som exponeras i barnpartitionen Hyper-V. Detta gör att paket kan vidarebefordras mellan det virtuella datornätverkskortet och det underliggande nätverkskortet via den programvarubaserade syntetiska datasökvägen.
När resurser för en virtuell funktion för PCI Express (PCIe) har allokerats och den virtuella funktionen är ansluten till en underordnad partition skapar virtualiseringsstacken en ickestandard VPort på VF. Virtualiseringsstacken flyttar sedan mottagarfiltret för det virtuella datornätverkskortet från standard-VPort till den icke-standard VPort som är ansluten till VF. Detta gör att paket kan vidarebefordras mellan det virtuella datornätverkskortet och det underliggande nätverkskortet via den maskinvarubaserade VF-datasökvägen.
Mer information om dessa datasökvägar finns i SR-IOV Datasökvägar.
En VF har bortkopplats från en Hyper-V underordnad partition där gästoperativsystemet fortfarande körs. I det här fallet utfärdar den överdrivande drivrutinen OID-uppsättningens begäran om att flytta mottagarfiltret för det virtuella datornätverkskortet från nondefault VPort till den standard-VPort som är kopplad till PF. När detta händer återgår pakettrafiken till den syntetiska datavägen.
Om du vill flytta ett mottagningsfilter från en VPort till en annan VPort utfärdar en överliggande drivrutin en OID-uppsättningsbegäran om OID_RECEIVE_FILTER_MOVE_FILTER. InformationBuffer medlem i NDIS_OID_REQUEST struktur innehåller en pekare till en NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS struktur.
Innan den överliggande drivrutinen gör OID_RECEIVE_FILTER_MOVE_FILTER begäran måste den initiera en NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS struktur på följande sätt:
Drivrutinen sätter FilterId-medlemmen till identifieraren för det tidigare allokerade mottagarfiltret.
Obs Den överliggande drivrutinen hämtade filteridentifieraren från en tidigare OID-metodbegäran på OID_RECEIVE_FILTER_SET_FILTER eller OID_RECEIVE_FILTER_ENUM_FILTERS.
Drivrutinen anger SourceQueueId medlem till NDIS_DEFAULT_RECEIVE_QUEUE_ID.
Drivrutinen anger SourceVPortId medlem till identifieraren för den VPort som det här filtret tidigare angavs på.
Drivrutinen sätter DestQueueId elementet till NDIS_DEFAULT_RECEIVE_QUEUE_ID.
Drivrutinen anger DestVPortId medlem till identifieraren för den VPort som det här filtret ska flyttas på.
NDIS verifierar medlemmarna i NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS innan den vidarebefordrar OID-uppsättningens begäran till PF-miniportdrivrutinen.
När PF-miniportdrivrutinen hanterar denna OID-setbegäran måste den flytta mottagarfiltret i en atomär operation. Drivrutinen måste kunna konfigurera nätverkskortet för att samtidigt ta bort filtret från en mottagningskö och en VPort och applicera det på en annan mottagningskö och VPort.