NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT fungsi panggilan balik (ndis.h)
Ekstensi sakelar yang dapat diperluas Hyper-V memanggil fungsi SetNetBufferListSwitchContext untuk melampirkan buffer konteks yang dialokasikan ekstensi ke NET_BUFFER_LIST. Konteks kemudian dapat diakses selama masa pakai NET_BUFFER_LIST tersebut, termasuk jika konteks diatur pada ingress dan NBL terlihat lagi saat keluar, terlepas dari apakah ekstensi lain mengatur konteksnya sendiri. Jenis akses ini tidak dimungkinkan menggunakan API konteks NET_BUFFER_LIST NDIS yang ada (NdisAllocateNetBufferListContext/ NET_BUFFER_LIST_CONTEXT_DATA_START) karena ekstensi lain dapat mengalokasikan konteks NDIS ketika mendapatkan kepemilikan NET_BUFFER_LIST, di mana pointer ke konteks NDIS asli hilang.
Sintaks
NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchSetNetBufferListSwitchContext;
NDIS_STATUS NdisSwitchSetNetBufferListSwitchContext(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in, out] PNET_BUFFER_LIST NetBufferList,
[in] PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType,
[in] PVOID Context
)
{...}
Parameter
[in] NdisSwitchContext
Nilai NDIS_SWITCH_CONTEXT yang berisi handel modul sakelar yang dapat diperluas tempat ekstensi sakelar hyper-V yang dapat diperluas terpasang. Ketika ekstensi memanggil NdisFGetOptionalSwitchHandlers, handel ini dikembalikan melalui parameter NdisSwitchContext .
[in, out] NetBufferList
Penunjuk ke struktur NET_BUFFER_LIST untuk satu paket yang menerima asosiasi konteks.
[in] ContextType
Jenis konteks yang dideklarasikan menggunakan NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE yang akan digunakan sebagai kunci saat mengambil konteks.
[in] Context
Penunjuk ke konteks yang akan diambil menggunakan ContextType yang ditentukan.
Nilai kembali
Jika panggilan berhasil, fungsi akan mengembalikan NDIS_STATUS_SUCCESS. Jika tidak, kode kesalahan NDIS_STATUS_Xxx yang ditentukan dalam Ndis.h.
Keterangan
API SetNetBufferListSwitchContext memungkinkan ekstensi melampirkan konteks ke NET_BUFFER_LIST pada ingress dan mengambilnya saat keluar. Meskipun demikian, ekstensi harus tahan terhadap konteks ingress yang tidak ada pada egress. Konteks pengalihan tidak dipertahankan saat NET_BUFFER_LIST dikloning, jadi dalam skenario di mana NET_BUFFER_LIST dikloning antara masuk dan keluar, NET_BUFFER_LIST tidak akan memiliki konteks pengalihan asli.
Ekstensi harus mengelola masa pakai konteks. Salah satu pendekatannya adalah mengalokasikan NDIS NET_BUFFER_LIST konteks (menggunakan NdisAllocateNetBufferListContext, atau telah dikonfigurasi sebelumnya jika ekstensi memiliki kumpulan NET_BUFFER_LIST), dan menggunakan SetNetBufferListSwitchContext untuk mengaitkan pengidentifikasi jenis konteks dengan konteks NET_BUFFER_LIST NDIS. Ketika NBL selesai, ekstensi dapat membebaskan konteks NET_BUFFER_LIST NDIS (menggunakan NdisFreeNetBufferListContext, atau membebaskan NET_BUFFER_LIST itu sendiri jika berasal dari ekstensi).
Untuk informasi selengkapnya tentang konteks penerusan sakelar yang dapat diperluas, lihat Konteks Penerusan Sakelar Yang Dapat Diperluas Hyper-V.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung di NDIS 6.30 dan yang lebih baru. |
Target Platform | Desktop |
Header | ndis.h (termasuk Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
AllocateNetBufferListForwardingContext
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk