Aracılığıyla paylaş


Hyper-V Genişletilebilir Anahtar Çalışma Zamanı Verisinin Yönetimi

Bu konuda, Hyper-V genişletilebilir anahtar uzantıları için kaydetme ve geri yükleme işlemleri açıklanmaktadır. Bu işlemler, bir uzantının tek tek genişletilebilir anahtar ağ bağdaştırıcıları (NIC' ler) için çalışma zamanı verilerini kaydetmesine ve geri yüklemesine olanak tanır. Bu işlemler, genişletilebilir anahtar portuna bağlı bir ağ bağdaştırıcısına sahip bir Hyper-V alt bölümü etkinleştirildiğinde veya durdurulduğunda gerçekleştirilir.

Hyper-V Genişletilebilir Anahtar Çalışma Zamanı Verilerini Kaydetme

Bu bölümde, bir Hyper-V Genişletilebilir Anahtar uzantısının tek tek ağ bağdaştırıcıları (NIC' ler) için çalışma zamanı verilerini kaydedebildiği işlem açıklanmaktadır. Bir ağ bağdaştırıcısının genişletilebilir bir anahtar bağlantı noktasına bağlandığı bir Hyper-V alt bölümü durdurulurken veya durumu kaydedilirken bu işlem gerçekleştirilir.

OID_SWITCH_NIC_SAVE İsteğini İşleme

Bir genişletilebilir anahtar bağlantı noktasına ağ bağdaştırıcısı bağlantısı olan bir Hyper-V alt bölümü durdurulduğunda veya durumu kaydedildiğinde, Hyper-V genişletilebilir anahtar arabirimi bilgilendirilir. Bu, genişletilebilir anahtarın protokol sınırının, genişletilebilir anahtar sürücü yığınına OID_SWITCH_NIC_SAVE nesne tanımlayıcı (OID) yöntemi isteği göndermesine neden olur. Genişletilebilir anahtar uzantısı bu OID isteğini aldığında, alt bölüme bağlı olan belirtilen ağ bağdaştırıcısı bağlantısının çalışma zamanı verilerini kaydedebilir.

OID_SWITCH_NIC_SAVE isteği için NDIS_OID_REQUEST yapısının InformationBuffer üyesi, NDIS_SWITCH_NIC_SAVE_STATE yapısına yönelik bir işaretçi içerir. Bu yapı, genişletilebilir anahtarın protokol kenarı tarafından tahsis edilir ve şu şekilde başlatılır:

  • Üst Bilgisi üyesi, NDIS_SWITCH_NIC_SAVE_STATE yapısının mevcut türü ve revizyonunu içerecek şekilde başlatılır. Boyut, tam arabellek boyutuna ayarlanır.

  • PortId üyesi, kaydetme işleminin gerçekleştirildiği genişletilebilir anahtar bağlantı noktasının benzersiz tanımlayıcısını içerir.

OID_SWITCH_NIC_SAVE yöntemi isteğini aldığında uzantı aşağıdakileri yapar:

  1. Uzantı, NDIS_SWITCH_NIC_SAVE_STATE yapısının PortId üyesini okur.

  2. Uzantı, belirtilen NIC için çalışma zamanı verilerini kaydedecekse, verilerini, yapının başlangıcından itibaren SaveDataOffset bayt ile başlayan NDIS_SWITCH_NIC_SAVE_STATE yapısı içinde kaydeder. Uzantı daha sonra OID yöntemi isteğini NDIS_STATUS_SUCCESS ile tamamlar.

  3. NDIS_SWITCH_NIC_SAVE_STATE yapısı çalışma zamanı durumunu tutmak için yeterli bir arabellek sağlamıyorsa, uzantı yöntem yapısının BytesNeeded alanını NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 artı kaydetme verilerini tutmak için gereken arabellek miktarına ayarlar ve ardından OID'yi NDIS_STATUS_BUFFER_TOO_SHORTile tamamlar. OID, gereken boyutla tekrar verilecektir.

  4. Uzantının belirtilen NIC için kaydedilecek çalışma zamanı verileri yoksa, NdisFOidRequestçağrısı yapmalıdır. Bu, OID yöntemi isteğini genişletilebilir anahtar sürücü yığınındaki temel sürücülere iletir. Bu yordam hakkında daha fazla bilgi için bkz. NDIS Filtre Sürücüsünde OID İsteklerini Filtreleme.

Uzantının kaydedilecek çalışma zamanı bağlantı noktası verileri varsa, NDIS_SWITCH_NIC_SAVE_STATE yapısı içinde çalışma zamanı bağlantı noktası verilerini kaydederken bu yönergeleri izlemesi gerekir:

  1. Uzantı, ExtensionId üyesini sürücüyü benzersiz olarak tanımlayan GUID değerine ayarlar.

  2. Uzantı, ExtensionFriendlyName üyesini sürücünün adına ayarlar.

    Not NDIS_SWITCH_EXTENSION_FRIENDLYNAME veri türü, IF_COUNTED_STRING yapısı tarafından tanımlanan bir türdür. Bu yapı tarafından tanımlanan bir dizenin null olarak sonlandırılması gerekmez. Ancak, dizenin uzunluğu bu yapının Uzunluğu üyesinde ayarlanmalıdır. Dize NULL ile sonlandırıldıysa, Uzunluğu üyesi sonlandırıcı NULL karakterini içermemelidir.

  3. Bir özellik sınıfı kaydedilmiş çalışma zamanı verileriyle ilişkiliyse, uzantı sınıfı benzersiz olarak tanımlayan GUID ile FeatureClassId ayarlar.

    Not Bir özellik sınıfı kaydedilen çalışma zamanı verileriyle ilişkilendirilmemişse, uzantı FeatureClassId sıfır olarak ayarlar.

  4. Uzantı, çalışma zamanı verilerini SaveData üyesine kopyalar ve SaveDataSize üyesini çalışma zamanı verilerinin bayt cinsinden boyutuna ayarlar.

Not Uzantı, NDIS_SWITCH_NIC_SAVE_STATE yapısının Üst Bilgisi veya PortId üyelerini değiştirmemelidir.

OID_SWITCH_NIC_SAVE OID yöntemi istekleri, nihayetinde genişletilebilir anahtarın alttaki miniport ara yüzü tarafından gerçekleştirilir. Bu OID yöntemi isteği genişletilebilir anahtar sürücüsü yığını aracılığıyla miniport sürücüsüne iletildikten sonra, miniport sürücüsü OID isteğini NDIS_STATUS_SUCCESS ile tamamlar. Bu, genişletilebilir anahtarın protokol kenarına, genişletilebilir anahtar sürücü yığınındaki tüm uzantıların çalışma zamanı port verileri için sorgulandığını bildirir. Genişletilebilir anahtarın protokol uç noktası, kaydetme işlemini tamamlamak için OID_SWITCH_NIC_SAVE_COMPLETE OID ayar isteği gönderir.

OID_SWITCH_NIC_SAVE_COMPLETE İsteğini Ele Alma

Genişletilebilir anahtar bağlantı noktasına ağ bağdaştırıcısı bağlantısı olan bir Hyper-V alt bölümü duraklatıldığında veya durumu kaydedilmekte olduğunda, bu durum Hyper-V genişletilebilir anahtar arabirimine bildirilir. Bu, genişletilebilir anahtarın protokol sınırının, genişletilebilir anahtar sürücü yığınına OID_SWITCH_NIC_SAVE nesne tanımlayıcı (OID) yöntemi isteği göndermesine neden olur.

Her Hyper-V genişletilebilir anahtar uzantısı çalışma zamanı verilerini kaydettiğinde, genişletilebilir anahtarın protokol kenarı, kaydetme işleminin tamamlandığını temel alınan uzantılara bildirir. Protokol kenarı, bunu genişletilebilir anahtar sürücü yığınına doğru `OID_SWITCH_NIC_SAVE_COMPLETE` bir OID kümesi isteği göndererek yapar.

Not Genişletilebilir anahtar ağ bağdaştırıcısı bağlantısı için bir çalışma zamanı kaydetme işlemi başlatıldığında, OID_SWITCH_NIC_SAVE_COMPLETE isteği verilene kadar aynı ağ bağdaştırıcısı bağlantısı için başka bir kaydetme işlemi gerçekleştirilmeyecektir. Ancak, bu süre boyunca diğer ağ bağdaştırıcısı bağlantıları için kaydetme işlemleri gerçekleşebilir.

OID_SWITCH_NIC_SAVE_COMPLETE isteği için NDIS_OID_REQUEST yapısının InformationBuffer üyesi, bir NDIS_SWITCH_NIC_SAVE_STATE yapısına yönelik bir işaretçi içerir. Bu yapı, genişletilebilir anahtarın protokol ucu tarafından tahsis edilir.

OID_SWITCH_NIC_SAVE_COMPLETEOID kümesi isteğini aldığında uzantı şu yönergeleri izlemelidir:

  • Uzantı, OID isteğiyle ilişkili NDIS_SWITCH_NIC_SAVE_STATE yapısını değiştirmemelidir.

  • Uzantının bu OID isteğini genişletilebilir anahtar uzantısı yığını aracılığıyla iletmek için NdisFOidRequest çağırması gerekir. Uzantı OID isteğinde başarısız olmamalıdır.

    Not Uzantı, bu OID isteğinin tamamlanma durumunu izlemelidir. Uzantı, kaydetme işleminin başarıyla tamamlanıp tamamlanmadığını algılamak için bunu yapar.

OID_SWITCH_NIC_SAVE_COMPLETE OID yöntemi istekleri nihayetinde genişletilebilir anahtarın altında yatan miniport kenarı tarafından işlenir. Bu OID yöntemi isteği miniport edge tarafından alındıktan sonra OID isteğini NDIS_STATUS_SUCCESS ile tamamlar. Bu, genişletilebilir anahtarın protokol kenarına genişletilebilir anahtar sürücü yığınındaki tüm uzantıların kaydetme işlemini tamamlamış olduğunu bildirir.

Hyper-V Genişletilebilir Anahtar Run-Time Verilerini Geri Yükleme

Genişletilebilir anahtar bağlantı noktasına ağ bağdaştırıcısı bağlantısı olan bir Hyper-V alt bölümü duraklatılmış durumdan devam ettirildiğinde, Hyper-V genişletilebilir anahtar arabirimine bildirilir. Bu, genişletilebilir anahtarın protokol kenarının, genişletilebilir anahtar sürücü yığınında OID_SWITCH_NIC_RESTORE nesne tanımlayıcı (OID) kümesi isteği göndermesine neden olur. Bir uzantı bu OID isteğini aldığında, alt bölüm tarafından kullanılan genişletilebilir anahtar bağlantı noktası için çalışma zamanı verilerini geri yükleyebilir.

InformationBuffer üyesi, OID_SWITCH_NIC_RESTORE isteği için NDIS_OID_REQUEST yapısının NDIS_SWITCH_NIC_SAVE_STATE yapısına bir işaretçi içerir. Bu yapı, genişletilebilir anahtarın protokol uç noktası tarafından ayrılır.

OID_SWITCH_NIC_RESTOREOID kümesi isteğini aldığında, genişletilebilir anahtar uzantısının önce çalışma zamanına ait verilerin kendisinde olup olmadığını belirlemesi gerekir. Uzantı bunu, NDIS_SWITCH_NIC_SAVE_STATE yapısının ExtensionId üyesinin değerini uzantının kendisini tanımlamak için kullandığı GUID değeriyle karşılaştırarak yapar.

Uzantı, genişletilebilir anahtar NIC'sinin çalışma zamanı verilerine sahipse, bu verileri aşağıdaki şekilde geri yükler:

  1. Uzantı, SaveData üyesindeki çalışma zamanı verilerini sürücü tarafından ayrılan depolama alanına kopyalar.

    NotNDIS_SWITCH_NIC_SAVE_STATE yapısının PortId üyesinin değeri, çalışma zamanı verilerinin kaydedildiği zamandaki PortId değerinden farklı olabilir. Çalışma zamanındaki veriler bir konaktan diğerine Dinamik Geçiş sırasında kaydedildiyse bu durum oluşabilir. Ancak genişletilebilir anahtar NIC'nin yapılandırması, Canlı Taşıma sırasında korunur. Bu, uzantının yeni PortId değerini kullanarak genişletilebilir anahtar NIC'sine çalışma zamanı verilerini geri yüklemesini sağlar.

  2. Uzantı, OID kümesi isteğini NDIS_STATUS_SUCCESS ile tamamlar.

Uzantı kaydedilecek belirtilen çalışma zamanı verilerine sahip değilse, uzantı NdisFOidRequestçağırır. Bu, OID kümesi isteğini genişletilebilir anahtar sürücü yığınındaki temel sürücülere iletir. Bu durumda uzantı, OID isteğiyle ilişkili NDIS_SWITCH_NIC_SAVE_STATE yapısını değiştirmemelidir. OID isteklerini iletme hakkında daha fazla bilgi için bkz. NDIS Filtre Sürücüsünde OID İsteklerini Filtreleme.

OID_SWITCH_NIC_RESTORE OID kümesi isteği NDIS_STATUS_SUCCESS ile tamamlanırsa, genişletilebilir anahtarın protokol kenarı başka bir OID kümesi isteği oluşturur. Bu yeni OID kümesi isteğini aldığında uzantı aşağıdakilerden birini yapabilir:

  • Yeni OID isteğindeki çalışma zamanı verilerine sahipse uzantı, NDIS_SWITCH_NIC_SAVE_STATE yapısı içindeki ek çalışma zamanı verilerini geri yükler. Uzantı daha sonra OID isteğini NDIS_STATUS_SUCCESS ile tamamlar.

  • Yeni OID isteğindeki çalışma zamanı verilerine sahip değilse uzantı, bu OID kümesi isteğini temel alınan sürücülere iletmek için NdisFOidRequest çağırır.

OID_SWITCH_NIC_RESTORE_COMPLETE
Genişletilebilir anahtar arabirimi, genişletilebilir anahtar ağ bağdaştırıcısının çalışma zamanı verilerinin geri yükleme işlemi tamamlandığında, bu OID'yi vermesi için protokol kenarına sinyal gönderir.

Bu OID isteği, uzantıya geri yükleme işleminin yalnızca belirtilen genişletilebilir anahtar NIC için tamamlandığını bildirir.

Bu OID isteği hakkında daha fazla bilgi için bkz. OID_SWITCH_NIC_RESTORE_COMPLETE.

Not Eğer OID_SWITCH_NIC_RESTORE kümesi isteği, genişletilebilir anahtarın miniport kenarı tarafından alınırsa, OID isteği NDIS_STATUS_SUCCESS ile tamamlanır. Bu, genişletilebilir anahtarın protokol kenarına, çalışma zamanı verisinin hiçbir uzantıya ait olmadığını bildirir. Bu durumda, genişletilebilir anahtar arayüzü, başlangıçta çalışma zamanı port verilerini kaydeden uzantının ExtensionId ve PortId üye değerlerini belgeleyen bir olay kaydeder.