Bagikan melalui


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.

Catatan Anda harus mendeklarasikan fungsi dengan menggunakan jenis PROTOCOL_UNBIND_ADAPTER_EX . Untuk informasi selengkapnya, lihat bagian Contoh berikut ini.
 

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
NDIS_STATUS_SUCCESS
ProtocolUnbindAdapterEx berhasil membuka ikatan dari adaptor miniport yang mendasar.
NDIS_STATUS_PENDING
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:
  1. Menghapus pola bangun manajemen daya pada LAN (WOL) dari adaptor miniport dengan OID_PNP_REMOVE_WAKE_UP_PATTERN OID.
  2. Bersihkan parameter penskalakan sisi penerimaan dengan OID_GEN_RECEIVE_SCALE_PARAMETERS OID.
Driver protokol NDIS 6.20 dan yang lebih baru harus melakukan operasi berikut:
  1. Hapus pola WOL manajemen daya dari adaptor miniport dengan OID_PM_REMOVE_WOL_PATTERN OID.
  2. 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

NdisCloseAdapterEx

NdisCompleteUnbindAdapterEx

NdisOpenAdapterEx

OID_802_3_MULTICAST_LIST

OID_GEN_CURRENT_PACKET_FILTER

OID_GEN_RECEIVE_SCALE_PARAMETERS

OID_PNP_REMOVE_WAKE_UP_PATTERN

ProtocolBindAdapterEx

ProtocolCloseAdapterCompleteEx

ProtocolNetPnPEvent