Dela via


Hantera Hyper-V utökningsbara switchar Run-Time data

Detta avsnitt beskriver operationer för att spara och återställa Hyper-V utökningsbara switch-tillägg. Dessa åtgärder gör att ett tillägg kan spara och återställa körningsdata för enskilda utökningsbara växelnätverkskort(NIC). Dessa åtgärder utförs när en Hyper-V underordnad partition med en nätverksanslutning till en expanderbar växelport stoppas eller startas.

Spara Hyper-V utökningsbara switchar Run-Time data

I det här avsnittet beskrivs hur ett tillägg för Hyper-V Extensible Switch kan spara körningsdata för enskilda nätverkskort (NIC). Den här åtgärden utförs när en Hyper-V underordnad partition med en nätverkskortanslutning till en utökningsbar växelport stoppas eller dess tillstånd sparas.

Hantera OID_SWITCH_NIC_SAVE begäran

När en Hyper-V underordnad partition med en nätverkskortanslutning till en expanderbar switchport stoppas eller dess tillstånd sparas, meddelas det expanderbara switchgränssnittet Hyper-V. Detta gör att protokollgränsen för den utökningsbara switchen utfärdar en begäran om en OID-metod (object identifier) för OID_SWITCH_NIC_SAVE genom den utökningsbara växeldrivrutinsstacken. När ett utökningsbart switch-tillägg tar emot den här OID-begäran kan det spara sina runtime-data för den angivna nätverkskortanslutningen som är kopplad till den underordnade partitionen.

InformationBuffer medlemmen i NDIS_OID_REQUEST-strukturen för OID_SWITCH_NIC_SAVE-begäran innehåller en pekare till en NDIS_SWITCH_NIC_SAVE_STATE-struktur. Den här strukturen allokeras av protokollgränsen för den utökningsbara växeln och initieras på följande sätt:

  • -huvudets medlem initieras för att innehålla den aktuella typen och revideringen av NDIS_SWITCH_NIC_SAVE_STATE strukturen. Storleken är inställd på den fullständiga buffertstorleken.

  • PortId medlem innehåller den unika identifieraren för den utökningsbara växelport som spara-åtgärden utförs för.

När den tar emot OID_SWITCH_NIC_SAVE-metodbegäran gör tillägget följande:

  1. Tillägget läser PortId medlem i NDIS_SWITCH_NIC_SAVE_STATE-strukturen.

  2. Om tillägget har kördata att spara för det angivna nätverkskortet, sparar det sina data i NDIS_SWITCH_NIC_SAVE_STATE-strukturen från och med SaveDataOffset byte från början av strukturen. Tillägget slutför sedan OID-metodbegäran med NDIS_STATUS_SUCCESS.

  3. Om NDIS_SWITCH_NIC_SAVE_STATE-strukturen inte tillhandahåller en tillräcklig buffert för att hålla körningstillståndet, anger tillägget metodstrukturens BytesNeeded-fält till NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 plus den mängd buffert som krävs för att hålla sparadatan, och slutför OID med NDIS_STATUS_BUFFER_TOO_SHORT. OID kommer att utfärdas på nytt med den storlek som krävs.

  4. Om tillägget inte har körningsdata att spara för det angivna nätverkskortet måste det anropa NdisFOidRequest. Detta vidarebefordrar OID-metodbegäran till underliggande drivrutiner i den utökningsbara växeldrivrutinsstacken. Mer information om den här proceduren finns i Filtrera OID-begäranden i en NDIS-filterdrivrutin.

Om tillägget har körtidsportdata som ska sparas måste det följa dessa riktlinjer när körtidsportdata sparas i NDIS_SWITCH_NIC_SAVE_STATE struktur:

  1. Tillägget anger ExtensionId medlem till det GUID-värde som unikt identifierar drivrutinen.

  2. Tillägget sätter ExtensionFriendlyName-medlemmen till drivrutinens namn.

    Obs Datatypen NDIS_SWITCH_EXTENSION_FRIENDLYNAME är typdefinierad av IF_COUNTED_STRING struktur. En sträng som definieras av den här strukturen behöver inte vara null-avslutad. Längden på strängen måste dock anges i Längd medlem i den här strukturen. Om strängen är NULL-terminerad får medlemmen för Längd inte innehålla det avslutande NULL-tecknet.

  3. Om en funktionsklass är associerad med sparade körningsdata anger tillägget FeatureClassId med GUID som unikt identifierar klassen.

    Obs Om en funktionsklass inte är associerad med sparade körningsdata anger tillägget FeatureClassId till noll.

  4. Tillägget kopierar kördata till SaveData medlemmen och anger SaveDataSize medlem till storleken i byte för kördata.

Obs! Tillägget får inte ändra Header eller PortId fälten i NDIS_SWITCH_NIC_SAVE_STATE-strukturen.

OID-metodbegäranden för OID_SWITCH_NIC_SAVE hanteras slutligen av den underliggande miniportkanten för den utökningsbara växeln. När den här OID-metodbegäran har vidarebefordrats till miniportdrivrutinen via den utökningsbara växeldrivrutinsstacken slutför miniportdrivrutinen OID-begäran med NDIS_STATUS_SUCCESS. Detta meddelar protokollgränsen för den utökningsbara växeln att alla tillägg i den utökningsbara växeldrivrutinsstacken har efterfrågats för körningsportdata. Protokollgränsen för den utökningsbara växeln utfärdar sedan en OID-uppsättningsbegäran om OID_SWITCH_NIC_SAVE_COMPLETE för att slutföra spara-åtgärden.

Hantering av OID_SWITCH_NIC_SAVE_COMPLETE-begäran

När en Hyper-V underordnad partition, som har en anslutning via nätverkskort till en utökningsbar växelport, pausas eller dess tillstånd sparas, meddelas det utökningsbara växelgränssnittet Hyper-V. Detta gör att protokollgränsen för den utökningsbara växeln utfärdar en metodbegäran av typen OID (object identifier) för OID_SWITCH_NIC_SAVE ner i den utökningsbara växeldrivrutinsstacken.

När varje Hyper-V utökningsbara växeltillägg har sparat sina körningsdata meddelar protokollgränsen för den utökningsbara växeln underliggande tillägg som sparandeåtgärden har slutfört. Protokollgränsen gör detta genom att utfärda en OID-uppsättningsbegäran för OID_SWITCH_NIC_SAVE_COMPLETE ner för den utökningsbara växlingsdrivrutinsstacken.

Obs! När en körningssparåtgärd startas för en utökningsbar växelnätverkskortanslutning utförs inte någon annan sparandeåtgärd för samma nätverkskortanslutning förrän OID_SWITCH_NIC_SAVE_COMPLETE begäran har utfärdats. Sparåtgärder för andra nätverksanslutningar kan dock inträffa under den här tiden.

InformationBuffer medlem i NDIS_OID_REQUEST-strukturen för OID_SWITCH_NIC_SAVE_COMPLETE-begäran innehåller en pekare till en NDIS_SWITCH_NIC_SAVE_STATE struktur. Den här strukturen allokeras av protokollgränsen för den utökningsbara växeln.

När den tar emot begäran om OID-uppsättningen OID_SWITCH_NIC_SAVE_COMPLETEmåste tillägget följa dessa riktlinjer:

  • Tillägget får inte ändra den NDIS_SWITCH_NIC_SAVE_STATE struktur som är associerad med OID-begäran.

  • Tillägget måste anropa NdisFOidRequest för att vidarebefordra denna OID-begäran via den utökningsbara växeltilläggsstacken. Tillägget får inte misslyckas med OID-begäran.

    Obs Tillägget bör övervaka slutförandestatusen för den här OID-begäran. Tillägget gör detta för att identifiera om spara-åtgärden har slutförts.

Begäranden om OID-metoder för OID_SWITCH_NIC_SAVE_COMPLETE hanteras slutligen av den utökningsbara växelns underliggande miniportkant. När den här OID-metodbegäran har tagits emot av miniportens kant slutför den OID-begäran med NDIS_STATUS_SUCCESS. Detta meddelar protokollgränsen för den utökningsbara växeln att alla tillägg i den utökningsbara växeldrivrutinsstacken har slutfört spara-åtgärden.

Återställa data för den utbyggbara switchen Hyper-V Run-Time

När en Hyper-V underordnad partition som har en nätverkskortsanslutning till en utbyggbar växelport återupptas från en paus, meddelas det Hyper-V utbyggbara växelgränssnittet. Detta gör att protokollgränsen för den utökningsbara växeln utfärdar en begäran om att ställa in objektidentifierare (OID) OID_SWITCH_NIC_RESTORE genom den utökningsbara växeldrivrutinsstacken. När ett tillägg tar emot den här OID-begäran kan det återställa sina körningsdata för den utökningsbara växelporten som används av den underordnade partitionen.

InformationBuffer medlem i NDIS_OID_REQUEST-strukturen för OID_SWITCH_NIC_RESTORE-begäran innehåller en pekare till en NDIS_SWITCH_NIC_SAVE_STATE struktur. Den här strukturen allokeras av protokollgränsen för den utökningsbara växeln.

När den tar emot OID-uppsättningens begäran om OID_SWITCH_NIC_RESTOREmåste det utökningsbara växeltillägget först avgöra om det äger körningsdata. Tillägget gör detta genom att jämföra värdet för ExtensionId medlem i NDIS_SWITCH_NIC_SAVE_STATE-strukturen med det GUID-värde som tillägget använder för att identifiera sig.

Om tillägget äger driftdata för ett utökningsbart nätverkskort återställs dessa data enligt följande:

  1. Tillägget kopierar körningsdata i SaveData medlem till drivrutinsallokerad lagring.

    Obs Värdet för PortId medlem i NDIS_SWITCH_NIC_SAVE_STATE-strukturen kan skilja sig från värdet PortId när körningsdata sparades. Detta kan inträffa om körningsdata sparades under en direktmigrering från en värd till en annan. Konfigurationen av det utökningsbara växelns nätverkskort behålls dock under direktmigreringen. Detta gör det möjligt för tillägget att återställa körningsdata till det utbyggbara switch-nätverkskortet genom att använda det nya PortId--värdet.

  2. Tillägget slutför OID-set begäran med NDIS_STATUS_SUCCESS.

Om tillägget inte äger de angivna körningsdata som ska sparas anropar tillägget NdisFOidRequest. Detta vidarebefordrar OID-uppsättningens begäran till underliggande drivrutiner i den utökningsbara växeldrivrutinsstacken. I det här fallet får tillägget inte ändra den NDIS_SWITCH_NIC_SAVE_STATE struktur som är associerad med OID-begäran. Mer information om hur du vidarebefordrar OID-begäranden finns i Filtrera OID-begäranden i en NDIS-filterdrivrutin.

Om begäran om OID-uppsättning OID_SWITCH_NIC_RESTORE slutförs med NDIS_STATUS_SUCCESS, gör protokollets gräns för den utökningsbara växeln en ny begäran om OID-uppsättning. När den tar emot den här nya begäran om OID-uppsättning kan tillägget göra något av följande:

  • Om det äger exekveringsdata i den nya OID-begäran återställer tillägget ytterligare exekveringsdata inom strukturen NDIS_SWITCH_NIC_SAVE_STATE. Tillägget slutför sedan OID-begäran med NDIS_STATUS_SUCCESS.

  • Om den inte äger körtidsdata i den nya OID-begäran gör tillägget ett anrop till NdisFOidRequest för att vidarebefordra denna uppsättning av OID-begäran till underliggande drivrutiner.

OID_SWITCH_NIC_RESTORE_COMPLETE
Det utökningsbara växelgränssnittet signalerar protokollgränsen för den utökningsbara växeln för att utfärda denna OID när återställningen av körningsdata har slutförts för ett utökningsbart växelnätverkskort.

Den här OID-begäran meddelar tillägget att återställningsåtgärden bara har slutförts för en angiven utökningsbar växel NIC.

Mer information om den här OID-begäran finns i OID_SWITCH_NIC_RESTORE_COMPLETE.

Obs Om OID_SWITCH_NIC_RESTORE set-begäran tas emot av den utökningsbara växelns miniportgräns, slutförs den OID-begäran med NDIS_STATUS_SUCCESS. Detta meddelar protokollgränsen för den utökningsbara växeln att inget tillägg äger körningsdata. Om detta händer loggar det utökningsbara växelgränssnittet en händelse som dokumenterar ExtensionId och PortId medlemsvärden för tillägget som ursprungligen sparade portdata för körning.