PROTOCOL_CM_OPEN_AF fungsi panggilan balik (ndis.h)
Fungsi ProtocolCmOpenAf diperlukan. Fungsi ini mengalokasikan sumber daya per terbuka bagi manajer panggilan untuk berinteraksi dengan klien NDIS berorientasi koneksi yang membuka keluarga alamat.
Sintaks
PROTOCOL_CM_OPEN_AF ProtocolCmOpenAf;
NDIS_STATUS ProtocolCmOpenAf(
[in] NDIS_HANDLE CallMgrBindingContext,
[in] PCO_ADDRESS_FAMILY AddressFamily,
[in] NDIS_HANDLE NdisAfHandle,
[out] PNDIS_HANDLE CallMgrAfContext
)
{...}
Parameter
[in] CallMgrBindingContext
Untuk manajer panggilan yang tidak terintegrasi, CallMgrBindingContext menentukan handel ke area konteks yang dialokasikan manajer panggilan tempat manajer panggilan mempertahankan informasi status per pengikatannya. Manajer panggilan menyediakan handel ini ketika disebut NdisOpenAdapterEx.
Untuk manajer panggilan terintegrasi (MCM), CallMgrBindingContext menentukan handel ke area konteks yang dialokasikan miniport tempat miniport mempertahankan informasi status per adaptornya. Miniport menyediakan handel ini dalam panggilan NdisMSetAttributesEx (untuk driver 5.x) atau panggilan NdisMSetMiniportAttributes -nya (untuk driver 6.x).
[in] AddressFamily
Menentukan keluarga alamat yang dibuka klien. Keluarga alamat ini didaftarkan oleh manajer panggilan ketika dipanggil NdisCmRegisterAddressFamilyEx.
[in] NdisAfHandle
Menentukan handel, yang disediakan oleh NDIS, yang secara unik mengidentifikasi instans keluarga alamat ini. Handel ini buram ke manajer panggilan dan dicadangkan untuk penggunaan sistem.
[out] CallMgrAfContext
Menentukan handel ke area konteks yang disediakan manajer panggilan tempat manajer panggilan mempertahankan status tentang pembukaan keluarga alamat yang disediakannya.
Nilai kembali
ProtocolCmOpenAf mengembalikan status operasinya sebagai salah satu hal berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Menunjukkan bahwa manajer panggilan telah berhasil mengalokasikan dan menginisialisasi sumber daya apa pun yang diperlukan untuk menerima permintaan dari klien ke keluarga alamat ini. |
|
Menunjukkan bahwa operasi yang diminta sedang ditangani secara asinkron. Manajer panggilan harus memanggil NdisCmOpenAddressFamilyComplete ketika telah menyelesaikan semua operasi open-AF-nya untuk menunjukkan kepada NDIS (dan klien) bahwa operasi telah selesai. |
|
Menunjukkan bahwa manajer panggilan tidak dapat menyelesaikan operasi yang diperlukan karena kurangnya sumber daya sistem yang tersedia, seperti memori. |
|
Menunjukkan bahwa manajer panggilan tidak dapat mengatur dirinya ke dalam status di mana ia dapat menerima permintaan dari klien untuk beroperasi pada keluarga alamat ini. Ini bisa menjadi status kesalahan yang disebarluaskan dari fungsi pustaka NDIS lain atau status kesalahan apa pun yang ditentukan sesuai oleh penulis driver. |
Keterangan
ProtocolCmOpenAf melakukan alokasi sumber daya dan struktur dinamis yang diperlukan yang dianggap perlu oleh penulis manajer panggilan untuk melakukan operasi atas nama klien yang membuka instans keluarga alamat ini. Sumber daya tersebut termasuk, tetapi tidak terbatas pada, buffer memori, struktur data, peristiwa, dan sumber daya serupa lainnya. Manajer panggilan juga harus menginisialisasi data per terbuka yang relevan sebelum mengembalikan kontrol ke NDIS.
Ketika manajer panggilan telah mengalokasikan area status per terbukanya, alamat area status harus diatur dalam handel CallMgrAfContext sebelum mengembalikan kontrol ke NDIS. Untuk melakukan ini, dereferensi CallMgrAfContext dan simpan penunjuk ke area data sebagai nilai handel. Contohnya:
*CallMgrAfContext = SomeBuffer;
Jika ProtocolCmOpenAf tidak dapat mengalokasikan sumber daya per terbuka yang diperlukan untuk melakukan permintaan berikutnya atas nama klien yang membuka keluarga alamat ini, ia harus membebaskan semua sumber daya yang dialokasikan untuk kontrol terbuka dan kembali ke NDIS dengan NDIS_STATUS_RESOURCES.
Jika ProtocolCmOpenAf telah menyelesaikan operasi yang diperlukan dan CM siap menerima permintaan dari klien, ProtocolCmOpenAf harus mengembalikan kontrol secepat mungkin dengan status NDIS_STATUS_SUCCESS.
Contoh
Untuk menentukan fungsi ProtocolCmOpenAf , 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 ProtocolCmOpenAf yang diberi nama "MyCmOpenAf", gunakan jenis PROTOCOL_CM_OPEN_AF seperti yang ditunjukkan dalam contoh kode ini:
PROTOCOL_CM_OPEN_AF MyCmOpenAf;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
NDIS_STATUS
MyCmOpenAf(
NDIS_HANDLE CallMgrBindingContext,
PCO_ADDRESS_FAMILY AddressFamily,
NDIS_HANDLE NdisAfHandle,
PNDIS_HANDLE CallMgrAfContext
)
{...}
Jenis fungsi PROTOCOL_CM_OPEN_AF ditentukan 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_CM_OPEN_AF 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 driver NDIS 6.0 dan NDIS 5.1 (lihat ProtocolCmOpenAf (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat ProtocolCmOpenAf (NDIS 5.1)) di Windows XP. |
Target Platform | Windows |
Header | ndis.h (termasuk Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
NdisCmOpenAddressFamilyComplete NdisCmRegisterAddressFamilyExSaran 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