PROTOCOL_UNBIND_ADAPTER_EX fungsi panggilan balik (ndis.h)
NDIS memanggil fungsi ProtocolUnbindAdapterEx driver protokol untuk meminta driver membatalkan ikatan dari adaptor miniport yang mendasar.
Sintaks
PROTOCOL_UNBIND_ADAPTER_EX ProtocolUnbindAdapterEx;
NDIS_STATUS ProtocolUnbindAdapterEx(
[in] NDIS_HANDLE UnbindContext,
[in] NDIS_HANDLE ProtocolBindingContext
)
{...}
Parameter
[in] UnbindContext
Handel yang mengidentifikasi area konteks NDIS untuk operasi yang tidak terikat ini.
[in] ProtocolBindingContext
Handel ke area konteks yang dialokasikan oleh driver protokol. Driver protokol mempertahankan informasi konteks per pengikatan di area konteks ini. Driver menyediakan handel ini ke NDIS ketika driver memanggil fungsi NdisOpenAdapterEx .
Nilai kembali
ProtocolUnbindAdapterEx mengembalikan salah satu nilai status berikut:
Menampilkan kode | Deskripsi |
---|---|
|
ProtocolUnbindAdapterEx berhasil membuka ikatan dari adaptor miniport yang mendasar. |
|
ProtocolUnbindAdapterEx tidak menyelesaikan operasi unbind dan operasi akan diselesaikan secara asinkron. Driver protokol harus memanggil Fungsi NdisCompleteUnbindAdapterEx setelah operasi unbind selesai. |
Keterangan
ProtocolUnbindAdapterEx adalah fungsi yang diperlukan. Sebagai timbal balik fungsi ProtocolBindAdapterEx , NDIS memanggil ProtocolUnbindAdapterEx untuk merilis sumber daya yang dialokasikan driver untuk operasi I/O jaringan yang khusus untuk pengikatan. Pengandar protokol tidak dapat gagal dalam operasi yang tidak terikat.
Sebelum memanggil ProtocolUnbindAdapterEx, NDIS menjeda pengikatan protokol. Untuk menjeda pengikatan, NDIS memanggil fungsi ProtocolNetPnPEvent dan menentukan peristiwa NetEventPause .
ProtocolUnbindAdapterEx harus memanggil fungsi NdisCloseAdapterEx untuk menutup pengikatan ke adaptor miniport yang mendasar. Jika NdisCloseAdapterEx mengembalikan NDIS_STATUS_SUCCESS, operasi penutupan selesai. Jika NdisCloseAdapterEx mengembalikan NDIS_STATUS_PENDING, NDIS akan memanggil driver protokol Fungsi ProtocolCloseAdapterCompleteEx setelah operasi penutupan selesai.
Sebelum memanggil NdisCloseAdapterEx, driver protokol harus menghapus daftar alamat multicast dan filter paket untuk pengikatan. Driver protokol mengatur daftar alamat multicast pengikatan ke NULL, dan filter paket menjadi nol. Untuk informasi selengkapnya, lihat OID_802_3_MULTICAST_LIST dan OID_GEN_CURRENT_PACKET_FILTER.
Jika pola bangun telah ditentukan, driver protokol harus menghapusnya dengan OID OID_PNP_REMOVE_WAKE_UP_PATTERN dan menghapus parameter penskalakan sisi penerimaan dengan OID_GEN_RECEIVE_SCALE_PARAMETERS OID. Driver protokol NDIS 6.20 dan yang lebih baru harus menghapus pola wake-on-LAN dengan OID OID_PM_REMOVE_WOL_PATTERN dan menghapus offload protokol berdaya rendah dengan OID_PM_REMOVE_PROTOCOL_OFFLOAD OID.
ProtocolUnbindAdapterEx tidak boleh membebaskan memori di ProtocolBindingContext hingga operasi penutupan selesai. NDIS meneruskan handel di ProtocolBindingContext ke ProtocolCloseAdapterCompleteEx.
Jika driver protokol telah menyelesaikan operasi unbind, ProtocolUnbindAdapterEx dapat mengembalikan NDIS_STATUS_SUCCESS. Jika NdisCloseAdapterEx mengembalikan NDIS_STATUS_PENDING, ProtocolUnbindAdapterEx harus menunggu NDIS memanggil ProtocolCloseAdapterCompleteEx sebelum dapat mengembalikan NDIS_STATUS_SUCCESS.
ProtocolUnbindAdapterEx dapat mengembalikan NDIS_STATUS_PENDING untuk menugaskan penyelesaian operasi yang tidak terikat ke lain waktu. Jika ProtocolUnbindAdapterEx mengembalikan NDIS_STATUS_PENDING, driver akhirnya harus memanggil Fungsi NdisCompleteUnbindAdapterEx untuk menyelesaikan operasi yang tidak terikat. Jika fungsi NdisCloseAdapterEx dikembalikan NDIS_STATUS_PENDING, driver dapat menyelesaikan operasi unbind di ProtocolCloseAdapterCompleteEx. ProtocolUnbindAdapterEx dapat menyimpan handel di UnbindContext di area konteks di ProtocolBindingContext sebelum memanggil NdisCloseAdapterEx. Jika ProtocolUnbindAdapterEx menyimpan handel, ProtocolCloseAdapterCompleteEx dapat meneruskan handel ke NdisCompleteUnbindAdapterEx untuk menyelesaikan operasi unbind.
Segera setelah ProtocolUnbindAdapterEx memanggil NdisCloseAdapterEx, handel yang diperoleh dari fungsi NdisOpenAdapterEx pada parameter NdisBindingHandle menjadi tidak valid. ProtocolUnbindAdapterEx tidak dapat melakukan panggilan berikutnya ke fungsi NdisXxx dengan handel ini. Driver bisa mendapatkan indikasi terima dan status dari adaptor miniport yang mendasar hingga operasi penutupan selesai.
NDIS memanggil ProtocolUnbindAdapterEx di IRQL = PASSIVE_LEVEL.
Memperbarui Pengaturan Power Management dan RSS
Driver protokol NDIS 6.0 dan 6.1 harus melakukan operasi berikut jika berlaku:- Menghapus pola bangun manajemen daya pada LAN (WOL) dari adaptor miniport dengan OID_PNP_REMOVE_WAKE_UP_PATTERN OID.
- Bersihkan parameter penskalakan sisi penerimaan dengan OID_GEN_RECEIVE_SCALE_PARAMETERS OID.
- Hapus pola WOL manajemen daya dari adaptor miniport dengan OID_PM_REMOVE_WOL_PATTERN OID.
- Menghapus offload protokol manajemen daya dari adaptor miniport dengan OID_PM_REMOVE_PROTOCOL_OFFLOAD OID.
Contoh
Untuk menentukan fungsi ProtocolUnbindAdapterEx , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi untuk pengandar. Mendeklarasikan fungsi menggunakan jenis fungsi membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.Misalnya, untuk menentukan fungsi ProtocolUnbindAdapterEx yang diberi nama "MyUnbindAdapterEx", gunakan jenis PROTOCOL_UNBIND_ADAPTER_EX seperti yang ditunjukkan dalam contoh kode ini:
PROTOCOL_UNBIND_ADAPTER_EX MyUnbindAdapterEx;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
NDIS_STATUS
MyUnbindAdapterEx(
NDIS_HANDLE UnbindContext,
NDIS_HANDLE ProtocolBindingContext
)
{...}
Jenis fungsi PROTOCOL_UNBIND_ADAPTER_EX didefinisikan dalam file header Ndis.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi PROTOCOL_UNBIND_ADAPTER_EX dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver NDIS.
Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Didukung untuk NDIS 6.0 dan yang lebih baru. |
Target Platform | Windows |
Header | ndis.h (termasuk Ndis.h) |
IRQL | PASSIVE_LEVEL |
Lihat juga
OID_GEN_RECEIVE_SCALE_PARAMETERSOID_PNP_REMOVE_WAKE_UP_PATTERN
ProtocolCloseAdapterCompleteEx