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.

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

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
NDIS_STATUS_SUCCESS
Menunjukkan bahwa manajer panggilan berhasil mengalokasikan sumber daya yang diperlukan untuk melakukan panggilan dan dapat mengaktifkan koneksi virtual dengan driver miniport.
NDIS_STATUS_PENDING
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.
NDIS_STATUS_RESOURCES
Menunjukkan bahwa manajer panggilan tidak dapat mengalokasikan dan/atau menginisialisasi sumber dayanya untuk mengaktifkan koneksi virtual seperti yang diminta oleh klien.
NDIS_STATUS_NOT_SUPPORTED
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

NdisClMakeCall

NdisCmActivateVc

NdisCmMakeCallComplete

ProtocolCoCreateVc