PROTOCOL_CL_MAKE_CALL_COMPLETE fungsi panggilan balik (ndis.h)
Fungsi ProtocolClMakeCallComplete digunakan oleh klien NDIS berorientasi koneksi yang melakukan panggilan keluar. Klien tersebut harus memiliki fungsi ProtocolClMakeCallComplete untuk menyelesaikan operasi asinkron yang mereka mulai dengan NdisClMakeCall. Jika tidak, fungsi ProtocolClMakeCallComplete yang terdaftar dari driver protokol seperti itu hanya dapat mengembalikan kontrol.
Sintaks
PROTOCOL_CL_MAKE_CALL_COMPLETE ProtocolClMakeCallComplete;
void ProtocolClMakeCallComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolVcContext,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in] PCO_CALL_PARAMETERS CallParameters
)
{...}
Parameter
[in] Status
Menentukan status akhir panggilan asli klien ke NdisClMakeCall, yang bisa menjadi salah satu dari berikut ini:
NDIS_STATUS_SUCCESS
Upaya klien untuk menyiapkan koneksi virtual yang berhasil. Akibatnya, klien dapat melanjutkan untuk melakukan transfer pada VC aktif menggunakan NdisVcHandle yang dikembalikan oleh NdisCoCreateVc, yang telah disimpan klien di area konteks per-VC di ProtocolVcContext .
NDIS_STATUS_RESOURCES
NDIS, manajer panggilan, atau driver yang mendasar tidak dapat mengalokasikan sumber daya yang memadai untuk menyiapkan koneksi.
NDIS_STATUS_XXX
Manajer panggilan atau driver miniport yang mendasar gagal membuat koneksi aktif dan NDIS menyebarkan status kegagalan yang ditentukan driver ini ke klien.
[in] ProtocolVcContext
Menentukan handel ke area konteks per VC klien, yang awalnya disediakan klien ke NDIS ketika disebut NdisCoCreateVc untuk menyiapkan VC untuk panggilan keluarnya.
[in, optional] NdisPartyHandle
Jika Status NDIS_STATUS_SUCCESS dan klien membuat VC multipoint dengan meneruskan handle ProtocolPartyContext eksplisit ke NdisClMakeCall, ini adalah NdisPartyHandle yang valid. Jika tidak, parameter ini adalah NULL.
ProtocolClMakeCallComplete harus menyimpan input NdisPartyHandle yang valid, biasanya di area konteks per pihak klien. Klien harus menggunakan handel ini jika (atau ketika) melakukan panggilan berikutnya ke NdisClDropParty atau NdisClCloseCall yang mengacu pada pihak ini.
[in] CallParameters
Penunjuk ke struktur CO_CALL_PARAMETERS yang di-buffer. Klien mengalokasikan buffer ini dan menginisialisasi struktur ini dengan data yang ditentukan klien sebelum meneruskan pointer ini ke NdisClMakeCall. Saat memproses permintaan klien, manajer panggilan dapat memodifikasi data ini untuk mencerminkan hasil negosiasinya dengan jaringan atau dengan peer sinyal.
Nilai kembali
Tidak ada
Keterangan
Panggilan ke ProtocolClMakeCallComplete menunjukkan bahwa manajer panggilan telah selesai memproses permintaan klien untuk membuat koneksi virtual dengan NdisClMakeCall.
Jika upaya klien untuk membuat panggilan keluar tidak berhasil ( Status input adalah apa pun kecuali NDIS_STATUS_SUCCESS), ProtocolClMakeCallComplete harus melakukan hal berikut:
- Lepaskan atau siapkan untuk menggunakan kembali area ProtocolPartyContext , jika ada, dan buffer di CallParameters yang dialokasikan klien.
- Robek VC yang dibuat klien dengan panggilan ke NdisCoDeleteVc dan lepaskan atau bersiap untuk menggunakan kembali area ProtocolVcContext yang dialokasikan klien.
- Periksa anggota Bendera struktur di CallParameters untuk melihat apakah CALL_PARAMETERS_CHANGED diatur, yang menunjukkan bahwa manajer panggilan memodifikasi parameter panggilan yang disediakan klien.
-
Jika demikian, periksa data di CallParameters untuk menentukan apakah data tersebut dapat diterima untuk koneksi ini.
Misalnya, klien mungkin mempertahankan parameter panggilan buffer untuk VC aktif, menyimpan NdisPartyHandle jika ini adalah VC multipoint, dan umumnya membuat klien siap untuk transfer berikutnya dan operasi lain pada VC aktif jika menemukan parameter panggilan yang diberikan memuaskan.
-
Jika tidak, protokol sinyal menentukan apakah klien dapat mencoba bernegosiasi ulang untuk parameter panggilan yang dapat diterima dengan manajer panggilan.
Misalnya, manajer panggilan tertentu mungkin memungkinkan kliennya untuk memanggil NdisClModifyCallQoS satu atau beberapa kali dalam keadaan ini.
-
Jika parameter panggilan yang dimodifikasi CM tidak dapat diterima dan negosiasi ulang lebih lanjut tidak mungkin, ProtocolClMakeCallComplete harus merobohkan panggilan dengan NdisClCloseCall.
Dalam hal ini, ProtocolClMakeCallCompletetidak boleh mencoba merilis sumber daya yang dialokasikan klien saat kembali dari NdisClCloseCall tetapi hanya dapat mengembalikan kontrol. Sebagai gantinya, klien harus merilis sumber daya yang dialokasikannya (atau mempersiapkannya untuk digunakan kembali) dalam fungsi ProtocolClCloseCallComplete - nya.
Contoh
Untuk menentukan fungsi ProtocolClMakeCallComplete , 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 ProtocolClMakeCallComplete yang diberi nama "MyClMakeCallComplete", gunakan jenis PROTOCOL_CL_MAKE_CALL_COMPLETE seperti yang ditunjukkan dalam contoh kode ini:
PROTOCOL_CL_MAKE_CALL_COMPLETE MyClMakeCallComplete;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
VOID
MyClMakeCallComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolVcContext,
NDIS_HANDLE NdisPartyHandle,
PCO_CALL_PARAMETERS CallParameters
)
{...}
Jenis fungsi PROTOCOL_CL_MAKE_CALL_COMPLETE 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_CL_MAKE_CALL_COMPLETE 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 ProtocolClMakeCallComplete (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat ProtocolClMakeCallComplete (NDIS 5.1)) di Windows XP. |
Target Platform | Windows |
Header | ndis.h (termasuk Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
NdisFreeToNPagedLookasideListSaran 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