Hyper-V-Erweiterbare Switch-Speichervorgänge
Wenn eine untergeordnete Hyper-V-Partition beendet, gespeichert oder live migriert wird, wird der Laufzeitzustand der Partition gespeichert. Während des Speichervorgangs kann eine erweiterbare Hyper-V-Switcherweiterung Laufzeitdaten über einen erweiterbaren Switch-Netzwerkadapter (NIC) speichern.
Wenn ein Speichervorgang auf einer untergeordneten Hyper-V-Partition ausgeführt wird, benachrichtigt die erweiterbare Switchschnittstelle die Erweiterung über den Vorgang. Die Erweiterung wird durch die folgenden OID-Anforderungen (Object Identifier) benachrichtigt:
OID_SWITCH_NIC_SAVE
Die erweiterbare Switchschnittstelle signalisiert dem Protokollrand des erweiterbaren Switches, diese OID während des Speichervorgangs für eine erweiterbare Switch-NIC auszugeben. Wenn diese OID-Anforderung verarbeitet wird, gibt die Erweiterung Laufzeitdaten für die NIC zurück. Nachdem die Laufzeitdaten gespeichert wurden, werden sie über OID-Setanforderungen von OID_SWITCH_NIC_RESTORE wiederhergestellt.
Wenn sie die OID_SWITCH_NIC_SAVE-Methodenanforderung empfängt, kann die Erweiterung eine der folgenden Aktionen ausführen:
Wenn die Erweiterung Laufzeitdaten enthält, die gespeichert werden sollen, initialisiert sie eine NDIS_SWITCH_NIC_SAVE_STATE-Struktur und legt fest, dass die verschiedenen Member, z. B. das ExtensionId-Element , sich selbst und die gespeicherten Daten identifizieren. Die Erweiterung speichert auch die Daten in der NDIS_SWITCH_NIC_SAVE_STATE-Struktur , die SaveDataOffset-Bytes vom Anfang der Struktur aus startet, und schließt dann die Anforderung der OID-Methode mit NDIS_STATUS_SUCCESS ab.
Wenn die NDIS_SWITCH_NIC_SAVE_STATE-Struktur keine ausreichende Puffergröße bereitstellt, die im NDIS_OBJECT_HEADER Size-Member aufgelistet ist, um den Laufzeitzustand zu speichern, legt die Erweiterung das BytesNeeded-Feld der Methodenstruktur auf NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 plus die Menge an Puffer fest, die zum Speichern der Daten erforderlich ist, und schließt die OID mit NDIS_STATUS_BUFFER_TOO_SHORT ab. Die OID wird mit der erforderlichen Größe neu aufgelegt.
Wenn die Erweiterung keine Laufzeitdaten zum Speichern enthält, muss sie NdisFOidRequest aufrufen. Dadurch wird die OID-Methodenanforderung an zugrunde liegende Erweiterungen im erweiterbaren Switchtreiberstapel weitergeleitet. Weitere Informationen zu diesem Verfahren finden Sie unter Filtern von OID-Anforderungen in einem NDIS-Filtertreiber.
Weitere Informationen zu dieser OID-Anforderung finden Sie unter Behandeln der OID_SWITCH_NIC_SAVE-Anforderung.
OID_SWITCH_NIC_SAVE_COMPLETE
Die erweiterbare Switchschnittstelle signalisiert dem Protokollrand des erweiterbaren Switches, diese OID beim Abschluss des Speichervorgangs der Laufzeitdaten für eine erweiterbare Switch-NIC auszugeben.
Diese OID-Anforderung benachrichtigt die Erweiterung, dass der Speichervorgang nur für eine angegebene erweiterbare Switch-NIC abgeschlossen wurde.
Weitere Informationen zu dieser OID-Anforderung finden Sie unter Behandeln der OID_SWITCH_NIC_SAVE_COMPLETE Anforderung.
Während des Speichervorgangs für Laufzeitdaten stellt der Protokollrand des erweiterbaren Switches OID-Anforderungen von OID_SWITCH_NIC_SAVE und OID_SWITCH_NIC_SAVE_COMPLETE für die Netzwerkschnittstelle einer untergeordneten Hyper-V-Partition verbunden ist. Wenn mehrere untergeordnete Hyper-V-Partitionen beendet oder live migriert werden, stellt der Protokoll-Edge separate Sätze von OID_SWITCH_NIC_SAVE- und OID_SWITCH_NIC_SAVE_COMPLETE-Anforderungen für jede Netzwerkschnittstellenverbindung aus.
Hinweis Der Protokollrand des erweiterbaren Switches verwebt keine Speichervorgänge für Laufzeitdaten für dieselbe NIC. Der Protokollrand startet einen Laufzeitdatenspeichervorgang für eine NIC erst, nachdem ein vorheriger Speichervorgang für dieselbe NIC abgeschlossen wurde. Der Protokollrand startet jedoch möglicherweise einen Speichervorgang für eine NIC, während ein anderer Speichervorgang für eine andere NIC ausgeführt wird. Aus diesem Gründen wird dringend empfohlen, dass Erweiterungen Speichervorgänge auf nicht verschachtelte Weise ausführen. Beispielsweise sollten Erweiterungen nicht davon ausgehen, dass ein neuer Speichervorgang auf einer anderen NIC nicht gestartet werden kann, bevor ein laufender Speichervorgang für eine andere NIC abgeschlossen wurde.