PROTOCOL_CM_MAKE_CALL fungsi panggilan balik (ndis.h)
Fungsi ProtocolCmMakeCall adalah fungsi yang diperlukan yang menyiapkan parameter khusus media untuk koneksi virtual (VC) dan mengaktifkan koneksi virtual.
Sintaks
PROTOCOL_CM_MAKE_CALL ProtocolCmMakeCall;
NDIS_STATUS ProtocolCmMakeCall(
[in] NDIS_HANDLE CallMgrVcContext,
[in, out] PCO_CALL_PARAMETERS CallParameters,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[out, optional] PNDIS_HANDLE CallMgrPartyContext
)
{...}
Parameter
[in] CallMgrVcContext
Menentukan handel ke area konteks yang dialokasikan manajer panggilan di mana manajer panggilan mempertahankan status per VC-nya. Manajer panggilan menyediakan handel ini ke NDIS dari fungsi ProtocolCoCreateVc-nya .
[in, out] CallParameters
Penunjuk ke struktur CO_CALL_PARAMETERS yang berisi parameter, yang ditentukan oleh klien berorientasi koneksi, untuk panggilan keluar ini.
[in, optional] NdisPartyHandle
Menentukan handel, yang disediakan oleh NDIS, yang secara unik mengidentifikasi pihak awal pada koneksi virtual multipoint. Handel ini buram untuk manajer panggilan dan dicadangkan untuk penggunaan pustaka NDIS. Handel ini adalah NULL jika klien tidak menyiapkan panggilan multipoint keluar.
[out, optional] CallMgrPartyContext
Saat kembali, menentukan handel ke area konteks yang disediakan manajer panggilan di mana manajer panggilan mempertahankan status tentang pihak awal pada panggilan multipoint. Jika NdisPartyHandle adalah NULL, handel ini harus diatur ke NULL.
Nilai kembali
ProtocolCmMakeCall mengembalikan status operasinya sebagai salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Menunjukkan bahwa manajer panggilan berhasil mengalokasikan sumber daya yang diperlukan untuk melakukan panggilan dan dapat mengaktifkan koneksi virtual dengan driver miniport. |
|
Menunjukkan bahwa manajer panggilan akan menyelesaikan permintaan untuk melakukan panggilan secara asinkron. Ketika manajer panggilan telah menyelesaikan semua operasi untuk melakukan panggilan, manajer panggilan harus memanggil NdisCmMakeCallComplete untuk memberi sinyal kepada NDIS bahwa panggilan ini telah selesai. |
|
Menunjukkan bahwa manajer panggilan tidak dapat mengalokasikan dan/atau menginisialisasi sumber dayanya untuk mengaktifkan koneksi virtual seperti yang diminta oleh klien. |
|
Menunjukkan bahwa manajer panggilan tidak dapat mengaktifkan koneksi virtual karena pemanggil meminta fitur yang tidak valid atau tidak tersedia dalam parameter panggilan yang ditentukan di CallParameters . |
Keterangan
Jika ProtocolCmMakeCall diberi NdisPartyHandle eksplisit, VC ini dibuat oleh klien untuk panggilan multipoint. Manajer panggilan harus mengalokasikan dan menginisialisasi sumber daya yang diperlukan untuk mempertahankan informasi status dan mengontrol panggilan multipoint. Sumber daya tersebut termasuk, tetapi tidak terbatas pada, buffer memori, struktur data, peristiwa, dan sumber daya serupa lainnya. Jika manajer panggilan tidak dapat mengalokasikan atau menginisialisasi sumber daya yang diperlukan untuk area statusnya, manajer panggilan harus mengembalikan kontrol ke NDIS dengan NDIS_STATUS_RESOURCES.
ProtocolCmMakeCall berkomunikasi dengan perangkat kontrol jaringan atau aktor khusus media lainnya, seperlunya, untuk membuat koneksi antara simpul lokal dan simpul jarak jauh berdasarkan parameter panggilan yang ditentukan di CallParameters . Tindakan tersebut dapat mencakup, tetapi tidak terbatas pada, komunikasi dengan beralih perangkat keras, komunikasi dengan stasiun kontrol jaringan, atau tindakan lain yang sesuai dengan media jaringan.
Jika manajer panggilan diperlukan untuk berkomunikasi dengan perangkat keras jaringan (seperti sakelar jaringan), manajer panggilan harus menggunakan koneksi virtual ke perangkat kontrol jaringan yang dibuatnya dalam fungsi ProtocolBindAdapterEx . Manajer panggilan berkomunikasi dengan perangkat keras jaringan mereka melalui driver miniport dengan memanggil NdisCoSendNetBufferLists. Driver Miniport dengan dukungan manajemen panggilan terintegrasi tidak akan memanggil NdisCoSendNetBufferLists, melainkan akan mengirimkan data itu sendiri.
Setelah manajer panggilan melakukan semua komunikasi yang diperlukan dengan perangkat keras jaringannya sebagaimana diperlukan oleh medianya, manajer panggilan harus memanggil NdisCmActivateVc.
Jika panggilan ini adalah panggilan multipoint, setelah manajer panggilan berkomunikasi dengan perangkat keras jaringan, parameter panggilan terverifikasi, dan mengalokasikan dan menginisialisasi data status per pihaknya, alamat blok statusnya harus diatur dalam menangani CallMgrPartyContext sebelum mengembalikan kontrol ke NDIS. Handel diatur dengan mendereferensikan handel dan menyimpan penunjuk ke blok status sebagai nilai handel. Contohnya:
*CallMgrPartyContext = SomeBuffer ;
Jika ProtocolCmMakeCall telah menyelesaikan operasi yang diperlukan untuk jaringannya dan VC telah berhasil diaktifkan melalui NdisCmActivateVc, ProtocolCmMakeCall harus mengembalikan kontrol secepat mungkin dengan status STATUS_SUCCESS.
Setelah ProtocolCmMakeCall mengembalikan kontrol ke NDIS, manajer panggilan seharusnya tidak mengambil tindakan lebih lanjut pada panggilan ini untuk menyiapkannya. ProtocolCmMakeCall bertanggung jawab untuk membuat koneksi sehingga klien dapat melakukan transfer data melalui jaringan pada VC ini. Namun, manajer panggilan kemudian dapat dipanggil untuk memodifikasi kualitas layanan panggilan, untuk menambahkan atau menghilangkan pihak jika ini adalah VC multipoint, dan akhirnya untuk mengakhiri panggilan ini.
Contoh
Untuk menentukan fungsi ProtocolCmMakeCall , 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 ProtocolCmMakeCall yang diberi nama "MyCmMakeCall", gunakan jenis PROTOCOL_CM_MAKE_CALL seperti yang ditunjukkan dalam contoh kode ini:
PROTOCOL_CM_MAKE_CALL MyCmMakeCall;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
NDIS_STATUS
MyCmMakeCall(
NDIS_HANDLE CallMgrVcContext,
PCO_CALL_PARAMETERS CallParameters,
NDIS_HANDLE NdisPartyHandle,
PNDIS_HANDLE CallMgrPartyContext
)
{...}
Jenis fungsi PROTOCOL_CM_MAKE_CALL 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_CM_MAKE_CALL 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 ProtocolCmMakeCall (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat ProtocolCmMakeCall (NDIS 5.1)) di Windows XP. |
Target Platform | Windows |
Header | ndis.h (termasuk Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
Lihat juga
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