Bagikan melalui


Mengelola data Run-Time Sakelar Yang Dapat Diperluas Hyper-V

Topik ini menjelaskan operasi penyimpanan dan pemulihan untuk ekstensi sakelar hyper-V yang dapat diperluas. Operasi ini memungkinkan ekstensi untuk menyimpan dan memulihkan data run-time untuk adaptor jaringan sakelar yang dapat diperluas individu (NIC). Operasi ini dilakukan ketika partisi anak Hyper-V yang memiliki koneksi adaptor jaringan ke port sakelar yang dapat diperluas sedang dihentikan atau dimulai.

Menyimpan data Run-Time Sakelar Yang Dapat Diperluas Hyper-V

Bagian ini menjelaskan operasi di mana ekstensi Hyper-V Extensible Switch dapat menyimpan data run-time untuk adaptor jaringan individu (NIC). Operasi ini dilakukan ketika partisi anak Hyper-V dengan koneksi adaptor jaringan ke port sakelar yang dapat diperluas sedang dihentikan atau statusnya sedang disimpan.

Menangani Permintaan OID_SWITCH_NIC_SAVE

Ketika partisi anak Hyper-V dengan koneksi adaptor jaringan ke port sakelar yang dapat diperluas dihentikan atau statusnya disimpan, antarmuka sakelar yang dapat diperluas Hyper-V akan diberi tahu. Ini menyebabkan tepi protokol sakelar yang dapat diperluas untuk mengeluarkan permintaan metode pengidentifikasi objek (OID) OID_SWITCH_NIC_SAVE menumpuk driver sakelar yang dapat diperluas. Ketika ekstensi sakelar yang dapat diperluas menerima permintaan OID ini, ekstensi ini dapat menyimpan data run-time-nya untuk koneksi adaptor jaringan yang ditentukan yang dilampirkan ke partisi anak.

Anggota InformationBuffer dari struktur NDIS_OID_REQUEST untuk permintaan OID_SWITCH_NIC_SAVE berisi penunjuk ke struktur NDIS_SWITCH_NIC_SAVE_STATE. Struktur ini dialokasikan oleh tepi protokol sakelar yang dapat diperluas dan diinisialisasi dengan cara berikut:

  • Anggota Header diinisialisasi untuk berisi jenis saat ini, revisi struktur NDIS_SWITCH_NIC_SAVE_STATE . Ukuran diatur ke ukuran buffer penuh.

  • Anggota PortId berisi pengidentifikasi unik port sakelar yang dapat diperluas di mana operasi penyimpanan sedang dilakukan.

Ketika menerima permintaan metode OID_SWITCH_NIC_SAVE , ekstensi melakukan hal berikut:

  1. Ekstensi membaca anggota PortId dari struktur NDIS_SWITCH_NIC_SAVE_STATE .

  2. Jika ekstensi memiliki data run-time untuk disimpan untuk NIC yang ditentukan, ekstensi menyimpan datanya dalam struktur NDIS_SWITCH_NIC_SAVE_STATE yang dimulai dengan Byte SaveDataOffset dari awal struktur. Ekstensi kemudian menyelesaikan permintaan metode OID dengan NDIS_STATUS_SUCCESS.

  3. Jika struktur NDIS_SWITCH_NIC_SAVE_STATE tidak menyediakan buffer yang memadai untuk menahan status runtime, ekstensi ekstensi mengatur bidang BytesNeeded struktur metode ke NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 ditambah jumlah buffer yang diperlukan untuk menyimpan data, dan menyelesaikan OID dengan NDIS_STATUS_BUFFER_TOO_SHORT. OID akan diterbitkan ulang dengan ukuran yang diperlukan.

  4. Jika ekstensi tidak memiliki data run-time untuk disimpan untuk NIC yang ditentukan, ekstensi harus memanggil NdisFOidRequest. Ini meneruskan permintaan metode OID ke driver yang mendasar dalam tumpukan driver sakelar yang dapat diperluas. Untuk informasi selengkapnya tentang prosedur ini, lihat Memfilter Permintaan OID di Driver Filter NDIS.

Jika ekstensi memiliki data port run-time untuk disimpan, ekstensi harus mengikuti panduan ini saat menyimpan data port run-time dalam struktur NDIS_SWITCH_NIC_SAVE_STATE:

  1. Ekstensi mengatur anggota ExtensionId ke nilai GUID yang secara unik mengidentifikasi driver.

  2. Ekstensi mengatur anggota ExtensionFriendlyName ke nama driver.

    Catatan Jenis data NDIS_SWITCH_EXTENSION_FRIENDLYNAME ditentukan oleh struktur IF_COUNTED_STRING . String yang didefinisikan oleh struktur ini tidak harus dihentikan null. Namun, panjang string harus diatur dalam anggota Panjang struktur ini. Jika string dihentikan NULL, anggota Panjang tidak boleh menyertakan karakter NULL yang dihentikan.

  3. Jika kelas fitur dikaitkan dengan data run-time yang disimpan, ekstensi mengatur FeatureClassId dengan GUID yang mengidentifikasi kelas secara unik.

    Catatan Jika kelas fitur tidak terkait dengan data run-time yang disimpan, ekstensi mengatur FeatureClassId ke nol.

  4. Ekstensi menyalin data run-time ke anggota SaveData dan mengatur anggota SaveDataSize ke ukuran, dalam byte, dari data run-time.

Catatan Ekstensi tidak boleh mengubah anggota Header atau PortId dari struktur NDIS_SWITCH_NIC_SAVE_STATE .

Permintaan metode OID OID_SWITCH_NIC_SAVE pada akhirnya ditangani oleh tepi miniport yang mendasar dari sakelar yang dapat diperluas. Setelah permintaan metode OID ini diteruskan ke driver miniport melalui tumpukan driver sakelar yang dapat diperluas, driver miniport menyelesaikan permintaan OID dengan NDIS_STATUS_SUCCESS. Ini memberi tahu tepi protokol dari sakelar yang dapat diperluas bahwa semua ekstensi dalam tumpukan driver sakelar yang dapat diperluas telah dikueri untuk data port run-time. Tepi protokol sakelar yang dapat diperluas kemudian mengeluarkan permintaan set OID OID_SWITCH_NIC_SAVE_COMPLETE untuk menyelesaikan operasi penyimpanan.

Menangani Permintaan OID_SWITCH_NIC_SAVE_COMPLETE

Ketika partisi anak Hyper-V yang memiliki koneksi adaptor jaringan ke port sakelar yang dapat diperluas dijeda atau statusnya sedang disimpan, antarmuka sakelar yang dapat diperluas Hyper-V akan diberi tahu. Ini menyebabkan tepi protokol sakelar yang dapat diperluas untuk mengeluarkan permintaan metode pengidentifikasi objek (OID) OID_SWITCH_NIC_SAVE menumpuk driver sakelar yang dapat diperluas.

Ketika setiap ekstensi sakelar yang dapat diperluas Hyper-V telah menyimpan data run-time-nya, tepi protokol sakelar yang dapat diperluas memberi tahu ekstensi yang mendasari bahwa operasi penyimpanan telah selesai. Tepi protokol melakukan ini dengan mengeluarkan permintaan set OID OID_SWITCH_NIC_SAVE_COMPLETE menurunkan tumpukan driver sakelar yang dapat diperluas.

Catatan Ketika operasi penyimpanan run-time dimulai untuk koneksi adaptor jaringan sakelar yang dapat diperluas, operasi penyimpanan lain untuk koneksi adaptor jaringan yang sama tidak akan dilakukan sampai permintaan OID_SWITCH_NIC_SAVE_COMPLETE dikeluarkan. Namun, operasi penyimpanan untuk koneksi adaptor jaringan lainnya dapat terjadi selama waktu ini.

Anggota InformationBuffer dari struktur NDIS_OID_REQUEST untuk permintaan OID_SWITCH_NIC_SAVE_COMPLETE berisi penunjuk ke struktur NDIS_SWITCH_NIC_SAVE_STATE. Struktur ini dialokasikan oleh tepi protokol sakelar yang dapat diperluas.

Saat menerima permintaan set OID OID_SWITCH_NIC_SAVE_COMPLETE, ekstensi harus mengikuti panduan berikut:

  • Ekstensi tidak boleh mengubah struktur NDIS_SWITCH_NIC_SAVE_STATE yang terkait dengan permintaan OID.

  • Ekstensi harus memanggil NdisFOidRequest untuk meneruskan permintaan OID ini melalui tumpukan ekstensi sakelar yang dapat diperluas. Ekstensi tidak boleh gagal dalam permintaan OID.

    Catatan Ekstensi harus memantau status penyelesaian permintaan OID ini. Ekstensi melakukan ini untuk mendeteksi apakah operasi penyimpanan telah berhasil diselesaikan.

Permintaan metode OID OID_SWITCH_NIC_SAVE_COMPLETE pada akhirnya ditangani oleh tepi miniport yang mendasar dari sakelar yang dapat diperluas. Setelah permintaan metode OID ini diterima oleh tepi miniport, permintaan OID selesai dengan NDIS_STATUS_SUCCESS. Ini memberi tahu tepi protokol sakelar yang dapat diperluas bahwa semua ekstensi dalam tumpukan driver sakelar yang dapat diperluas telah menyelesaikan operasi penyimpanan.

Memulihkan data Run-Time Sakelar Yang Dapat Diperluas Hyper-V

Ketika partisi anak Hyper-V yang memiliki koneksi adaptor jaringan ke port sakelar yang dapat diperluas dilanjutkan dari jeda, antarmuka sakelar yang dapat diperluas Hyper-V akan diberi tahu. Ini menyebabkan tepi protokol sakelar yang dapat diperluas untuk mengeluarkan permintaan set pengidentifikasi objek (OID) OID_SWITCH_NIC_RESTORE ke bawah tumpukan driver sakelar yang dapat diperluas. Ketika ekstensi menerima permintaan OID ini, ekstensi dapat memulihkan data run-time untuk port sakelar yang dapat diperluas yang digunakan oleh partisi anak.

Anggota InformationBuffer dari struktur NDIS_OID_REQUEST untuk permintaan OID_SWITCH_NIC_RESTORE berisi penunjuk ke struktur NDIS_SWITCH_NIC_SAVE_STATE. Struktur ini dialokasikan oleh tepi protokol sakelar yang dapat diperluas.

Ketika menerima permintaan set OID OID_SWITCH_NIC_RESTORE, ekstensi sakelar yang dapat diperluas harus terlebih dahulu menentukan apakah ia memiliki data run-time. Ekstensi melakukan ini dengan membandingkan nilai anggota ExtensionId dari struktur NDIS_SWITCH_NIC_SAVE_STATE dengan nilai GUID yang digunakan ekstensi untuk mengidentifikasi dirinya sendiri.

Jika ekstensi memiliki data run-time untuk NIC sakelar yang dapat diperluas, ekstensi akan memulihkan data ini dengan cara berikut:

  1. Ekstensi menyalin data run-time di anggota SaveData ke penyimpanan yang dialokasikan driver.

    Catatan Nilai anggota PortId dari struktur NDIS_SWITCH_NIC_SAVE_STATE mungkin berbeda dari nilai PortId pada saat data run-time disimpan. Ini dapat terjadi jika data run-time disimpan selama Migrasi Langsung dari satu host ke host lainnya. Namun, konfigurasi NIC sakelar yang dapat diperluas dipertahankan selama Migrasi Langsung. Ini memungkinkan ekstensi untuk memulihkan data run-time ke NIC sakelar yang dapat diperluas dengan menggunakan nilai PortId baru.

  2. Ekstensi menyelesaikan permintaan set OID dengan NDIS_STATUS_SUCCESS.

Jika ekstensi tidak memiliki data run-time yang ditentukan untuk disimpan, ekstensi memanggil NdisFOidRequest. Ini meneruskan permintaan set OID ke driver yang mendasar dalam tumpukan driver sakelar yang dapat diperluas. Dalam hal ini, ekstensi tidak boleh mengubah struktur NDIS_SWITCH_NIC_SAVE_STATE yang terkait dengan permintaan OID. Untuk informasi selengkapnya tentang cara meneruskan permintaan OID, lihat Memfilter Permintaan OID di Driver Filter NDIS.

Jika permintaan set OID OID_SWITCH_NIC_RESTORE diselesaikan dengan NDIS_STATUS_SUCCESS, tepi protokol sakelar yang dapat diperluas mengeluarkan permintaan set OID lain. Ketika menerima permintaan set OID baru ini, ekstensi dapat melakukan salah satu hal berikut:

  • Jika memiliki data run-time dalam permintaan OID baru, ekstensi memulihkan data run-time tambahan dalam struktur NDIS_SWITCH_NIC_SAVE_STATE. Ekstensi kemudian menyelesaikan permintaan OID dengan NDIS_STATUS_SUCCESS.

  • Jika tidak memiliki data run-time dalam permintaan OID baru, ekstensi memanggil NdisFOidRequest untuk meneruskan permintaan set OID ini ke driver yang mendasarinya.

OID_SWITCH_NIC_RESTORE_COMPLETE
Antarmuka sakelar yang dapat diperluas menandakan tepi protokol sakelar yang dapat diperluas untuk mengeluarkan OID ini pada penyelesaian operasi pemulihan data run-time untuk adaptor jaringan sakelar yang dapat diperluas.

Permintaan OID ini memberi tahu ekstensi bahwa operasi pemulihan telah selesai hanya untuk NIC sakelar yang dapat diperluas tertentu.

Untuk informasi selengkapnya tentang permintaan OID ini, lihat OID_SWITCH_NIC_RESTORE_COMPLETE.

Catatan Jika permintaan set OID_SWITCH_NIC_RESTORE diterima oleh tepi miniport sakelar yang dapat diperluas, permintaan OID selesai dengan NDIS_STATUS_SUCCESS. Ini memberi tahu tepi protokol sakelar yang dapat diperluas bahwa tidak ada ekstensi yang memiliki data run-time. Jika ini terjadi, antarmuka sakelar yang dapat diperluas mencatat peristiwa yang mendanai nilai anggota ExtensionId dan PortId untuk ekstensi yang awalnya menyimpan data port run-time.