Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp worden opslag- en herstelbewerkingen beschreven voor Hyper-V uitbreidbare switchextensies. Met deze bewerkingen kan een extensie runtimegegevens opslaan en herstellen voor afzonderlijke uitbreidbare switchnetwerkadapters (NIC's). Deze bewerkingen worden uitgevoerd wanneer een Hyper-V kindpartitie met een netwerkadapterverbinding met een uitbreidbare switchpoort wordt gestopt of gestart.
Het opslaan van gegevens voor de uitbreidbare switch Hyper-V Run-Time
In deze sectie wordt het proces beschreven waarmee een Hyper-V extensie van een uitbreidbare switch runtimegegevens voor afzonderlijke netwerkadapters (NIC's) kan opslaan. De bewerking wordt uitgevoerd wanneer een Hyper-V onderliggende partitie met een netwerkverbinding via een netwerkadapter naar een uitbreidbare switchpoort wordt gestopt of wanneer de status ervan wordt opgeslagen.
De OID_SWITCH_NIC_SAVE-aanvraag verwerken
Wanneer een Hyper-V subpartitie met een netwerkadapterverbinding met een uitbreidbare switchpoort wordt gestopt of de toestand wordt opgeslagen, wordt de Hyper-V uitbreidbare switch-interface op de hoogte gesteld. Dit zorgt ervoor dat de protocolrand van de uitbreidbare switch een Object Identifier (OID) methodeaanvraag van OID_SWITCH_NIC_SAVE uitgeeft binnen de stuurprogrammastack van de uitbreidbare switch. Wanneer een uitbreidbare switchextensie deze OID-aanvraag ontvangt, kunnen de runtimegegevens worden opgeslagen voor de opgegeven netwerkadapterverbinding die is gekoppeld aan de onderliggende partitie.
De InformationBuffer onderdeel van de NDIS_OID_REQUEST-structuur voor de OID_SWITCH_NIC_SAVE-aanvraag bevat een pointer naar een NDIS_SWITCH_NIC_SAVE_STATE-structuur. Deze structuur wordt toegewezen door de protocolrand van de uitbreidbare switch en op de volgende manier geïnitialiseerd:
Het -header--element wordt geïnitialiseerd om het huidige type en de revisie van de NDIS_SWITCH_NIC_SAVE_STATE-structuur te bevatten. Grootte is ingesteld op de volledige buffergrootte.
Het PortId lid bevat de unieke id van de uitbreidbare switchpoort waarvoor de opslagbewerking wordt uitgevoerd.
Wanneer de OID_SWITCH_NIC_SAVE methodeaanvraag wordt ontvangen, doet de extensie het volgende:
De extensie leest de PortId lid van de NDIS_SWITCH_NIC_SAVE_STATE-structuur.
Als de extensie runtimegegevens bevat om op te slaan voor de opgegeven NIC, worden de gegevens opgeslagen in de NDIS_SWITCH_NIC_SAVE_STATE structuur, te beginnen met SaveDataOffset bytes vanaf het begin van de structuur. De extensie voltooit vervolgens de aanvraag van de OID-methode met NDIS_STATUS_SUCCESS.
Als de NDIS_SWITCH_NIC_SAVE_STATE structuur niet voldoende buffer biedt om de status tijdens runtime te behouden, stelt de extensie het veld BytesNeeded van de methodestructuur in op NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 plus de hoeveelheid buffer die nodig is voor het opslaan van de gegevens, en voltooit de OID met NDIS_STATUS_BUFFER_TOO_SHORT. De OID wordt opnieuw uitgegeven met de vereiste grootte.
Als de extensie geen runtimegegevens heeft om op te slaan voor de opgegeven NIC, moet deze NdisFOidRequestaanroepen. Hiermee wordt de OID-methodeaanvraag doorgestuurd naar onderliggende stuurprogramma's in de uitbreidbare stuurprogrammastack. Zie OID-aanvragen filteren in een NDIS-filterstuurprogrammavoor meer informatie over deze procedure.
Als de extensie runtimepoortgegevens heeft om op te slaan, moet deze richtlijnen volgen wanneer runtimepoortgegevens worden opgeslagen in de NDIS_SWITCH_NIC_SAVE_STATE structuur:
De extensie stelt het ExtensionId-lid in op de GUID-waarde die het stuurprogramma uniek identificeert.
Extensie wijzigt de ExtensionFriendlyName lidvariabele naar de naam van het stuurprogramma.
Opmerking Het gegevenstype NDIS_SWITCH_EXTENSION_FRIENDLYNAME is door de IF_COUNTED_STRING structuur gedefinieerd. Een tekenreeks die door deze structuur is gedefinieerd, hoeft niet met een null-teken beëindigd te worden. De lengte van de tekenreeks moet echter worden ingesteld in het lid Lengte van deze structuur. Als de tekenreeks NULL is beëindigd, mag het Lengte lid het afsluitteken NULL niet bevatten.
Als een functieklasse is gekoppeld aan de opgeslagen runtimegegevens, stelt de extensie de FeatureClassId- in met de GUID die de klasse uniek identificeert.
Opmerking Als een functieklasse niet is gekoppeld aan de opgeslagen runtimegegevens, stelt de extensie de FeatureClassId- in op nul.
De extensie kopieert de runtimegegevens naar het SaveData lid en stelt het SaveDataSize lid in op de grootte, in bytes, van de runtimegegevens.
Opmerking De extensie mag de Header of PortId leden van de NDIS_SWITCH_NIC_SAVE_STATE-structuur niet wijzigen.
OID-methodeaanvragen van OID_SWITCH_NIC_SAVE worden uiteindelijk verwerkt door de onderliggende minipoortrand van de uitbreidbare switch. Zodra deze OID-methodeaanvraag is doorgestuurd naar het minipoortstuurprogramma via de uitbreidbare switchstuurprogrammastack, voltooit het minipoortstuurprogramma de OID-aanvraag met NDIS_STATUS_SUCCESS. Hiermee wordt de protocolgrens van de uitbreidbare schakelaar gemeld dat alle extensies in de stuurprogrammastack voor de uitbreidbare schakelaar zijn opgevraagd voor runtimedata van poorten. De protocolrand van de uitbreidbare switch geeft vervolgens een OID-setaanvraag van OID_SWITCH_NIC_SAVE_COMPLETE uit om de opslagbewerking te voltooien.
De OID_SWITCH_NIC_SAVE_COMPLETE-aanvraag verwerken
Wanneer een Hyper-V kind-partitie met een netwerkadapterverbinding naar een uitbreidbare switchpoort wordt gepauzeerd of de status wordt opgeslagen, wordt de Hyper-V uitbreidbare switchinterface op de hoogte gesteld. Dit zorgt ervoor dat de protocolrand van de uitbreidbare switch een Object Identifier (OID) methodeaanvraag van OID_SWITCH_NIC_SAVE uitgeeft binnen de stuurprogrammastack van de uitbreidbare switch.
Wanneer elke Hyper-V uitbreidbare switchextensie de runtimegegevens heeft opgeslagen, geeft de protocolrand van de uitbreidbare switch aan dat de opslagbewerking is voltooid. De protocolrand doet dit door een OID-setaanvraag van OID_SWITCH_NIC_SAVE_COMPLETE uit te voeren binnen de stapel van de uitbreidbare switch-driver.
Opmerking Wanneer een runtime-opslagbewerking wordt gestart voor een uitbreidbare switchnetwerkadapterverbinding, wordt een andere opslagbewerking voor dezelfde netwerkadapterverbinding pas uitgevoerd nadat de OID_SWITCH_NIC_SAVE_COMPLETE aanvraag is uitgegeven. Opslagbewerkingen voor andere netwerkadapterverbindingen kunnen echter tijdens deze tijd optreden.
De InformationBuffer-lid van de NDIS_OID_REQUEST-structuur voor de OID_SWITCH_NIC_SAVE_COMPLETE-aanvraag bevat een pointer naar een NDIS_SWITCH_NIC_SAVE_STATE-structuur. Deze structuur wordt toegewezen door de protocolrand van de uitbreidbare switch.
Wanneer de OID-setaanvraag van OID_SWITCH_NIC_SAVE_COMPLETEwordt ontvangen, moet de extensie de volgende richtlijnen volgen:
De extensie mag de NDIS_SWITCH_NIC_SAVE_STATE structuur die is gekoppeld aan de OID-aanvraag niet wijzigen.
De extensie moet NdisFOidRequest aanroepen om deze OID-aanvraag door te sturen via de uitbreidbare switchuitbreidingsstack. De extensie mag de OID-aanvraag niet mislukken.
Opmerking De extensie moet de voltooiingsstatus van deze OID-aanvraag controleren. De extensie doet dit om te detecteren of de opslagbewerking is voltooid.
OID-methodeaanvragen van OID_SWITCH_NIC_SAVE_COMPLETE uiteindelijk worden verwerkt door de onderliggende minipoortrand van de uitbreidbare switch. Zodra deze OID-methodeaanvraag is ontvangen door de minipoortrand, wordt de OID-aanvraag met NDIS_STATUS_SUCCESS voltooid. Hiermee wordt de protocolrand van de uitbreidbare switch gemeld dat alle extensies in de uitbreidbare stuurprogrammastack de opslagbewerking hebben voltooid.
Gegevens van uitbreidbare schakelaar Hyper-V Run-Time herstellen
Wanneer een Hyper-V onderliggende partitie met een netwerkverbinding aan een uitbreidbare switchpoort wordt hervat na een pauze, wordt de Hyper-V interface van de uitbreidbare switch op de hoogte gesteld. Dit zorgt ervoor dat de protocolrand van de uitbreidbare switch een objectidentificatiesetverzoek (OID) van OID_SWITCH_NIC_RESTORE naar beneden door de stuurprogrammastack van de uitbreidbare switch uitvaardigt. Wanneer een extensie deze OID-aanvraag ontvangt, kan deze de runtimegegevens herstellen voor de uitbreidbare switchpoort die wordt gebruikt door de onderliggende partitie.
De InformationBuffer lid van de NDIS_OID_REQUEST-structuur voor de OID_SWITCH_NIC_RESTORE-aanvraag bevat een pointer naar een NDIS_SWITCH_NIC_SAVE_STATE-structuur. Deze structuur wordt toegewezen door de protocolrand van de uitbreidbare switch.
Wanneer de OID-setaanvraag van OID_SWITCH_NIC_RESTOREwordt ontvangen, moet de uitbreidbare switchextensie eerst bepalen of deze eigenaar is van de runtimegegevens. De extensie doet dit door de waarde van de ExtensionId lid van de NDIS_SWITCH_NIC_SAVE_STATE-structuur te vergelijken met de GUID-waarde die de extensie gebruikt om zichzelf te identificeren.
Als de extensie eigenaar is van de runtimegegevens voor een uitbreidbare switch-NIC, worden deze gegevens op de volgende manier hersteld:
Met de extensie worden de runtimegegevens in het 'SaveData'-lid gekopieerd naar door het stuurprogramma toegewezen opslag.
Opmerking De waarde van de PortId lid van de NDIS_SWITCH_NIC_SAVE_STATE structuur kan afwijken van de PortId waarde op het moment dat de runtimegegevens zijn opgeslagen. Dit kan gebeuren als runtimegegevens zijn opgeslagen tijdens een livemigratie van de ene host naar de andere. De configuratie van de uitbreidbare switch-NIC blijft echter behouden tijdens de livemigratie. Hierdoor kan de extensie de runtimegegevens herstellen naar de uitbreidbare switch-NIC met behulp van de nieuwe PortId waarde.
De extensie voltooit de OID-setaanvraag met NDIS_STATUS_SUCCESS.
Als de extensie niet de eigenaar is van de opgegeven runtimegegevens om op te slaan, roept de extensie NdisFOidRequest. Hiermee wordt de OID-setaanvraag doorgestuurd naar onderliggende stuurprogramma's in de uitbreidbare stuurprogrammastack. In dit geval mag de extensie de NDIS_SWITCH_NIC_SAVE_STATE structuur die is gekoppeld aan de OID-aanvraag niet wijzigen. Zie Filteren van OID-aanvragen in een NDIS-filterstuurprogrammavoor meer informatie over het doorsturen van OID-aanvragen.
Als de OID-setaanvraag van OID_SWITCH_NIC_RESTORE is voltooid met NDIS_STATUS_SUCCESS, geeft de protocolrand van de uitbreidbare switch een andere OID-setaanvraag uit. Wanneer deze nieuwe OID-setaanvraag wordt ontvangen, kan de extensie een van de volgende handelingen uitvoeren:
Als deze eigenaar is van de runtimegegevens in de nieuwe OID-aanvraag, herstelt de extensie de extra runtimegegevens binnen de NDIS_SWITCH_NIC_SAVE_STATE structuur. De extensie voltooit vervolgens de OID-aanvraag met NDIS_STATUS_SUCCESS.
Als deze geen eigenaar is van de runtimegegevens in de nieuwe OID-aanvraag, roept de extensie NdisFOidRequest aan om deze OID-setaanvraag door te sturen naar onderliggende stuurprogramma's.
OID_SWITCH_NIC_RESTORE_COMPLETE
De uitbreidbare switchinterface geeft de protocolrand van de uitbreidbare switch aan om deze OID uit te geven bij het voltooien van de herstelbewerking van runtimegegevens voor een uitbreidbare switchnetwerkadapter.
Met deze OID-aanvraag wordt de extensie aangegeven dat de herstelbewerking alleen is voltooid voor een opgegeven uitbreidbare switch-NIC.
Zie OID_SWITCH_NIC_RESTORE_COMPLETEvoor meer informatie over deze OID-aanvraag.
Opmerking Als de OID_SWITCH_NIC_RESTORE ingestelde aanvraag wordt ontvangen door de minipoortrand van de uitbreidbare switch, wordt de OID-aanvraag met NDIS_STATUS_SUCCESS voltooid. Hiermee wordt de protocolrand van de uitbreidbare switch aangegeven dat geen extensie eigenaar is van de runtimegegevens. Als dit gebeurt, registreert de uitbreidbare switchinterface een gebeurtenis die de waarden van de leden ExtensionId en PortId documenteert voor de extensie die oorspronkelijk de runtime-poortgegevens heeft opgeslagen.