PROTOCOL_CL_INCOMING_CLOSE_CALL fungsi panggilan balik (ndis.h)

Fungsi ProtocolClIncomingCloseCall digunakan oleh semua klien NDIS yang berorientasi koneksi. Semua klien tersebut harus memiliki fungsi ProtocolClIncomingCloseCall yang berfungsi penuh.

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

Sintaks

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

Parameter

[in] CloseStatus

Menentukan status yang menunjukkan penyebab teardown koneksi, yang biasanya NDIS_STATUS_SUCCESS untuk menunjukkan bahwa pihak jarak jauh ke panggilan meminta agar koneksi ditutup. Nilai lain menunjukkan bahwa masalah pada jaringan menyebabkan manajer panggilan mengakhiri koneksi.

[in] ProtocolVcContext

Menentukan handel ke area konteks per VC klien untuk VC tempat koneksi ditutup. Apa pun nilai CloseStatus, klien tidak dapat mengirim atau menerima data pada VC yang ditunjuk oleh NdisVcHandle yang disimpan di area konteks ini.

[in] CloseData

Penunjuk ke buffer yang berisi pesan tutup khusus protokol, mungkin satu disediakan oleh klien jarak jauh yang diterima manajer panggilan melalui jaringan, atau parameter ini bisa NULL.

Ketika CloseStatus NDIS_STATUS_SUCCESS, parameter ini adalah NULL jika media jaringan yang mendasar tidak mendukung transfer data saat menutup koneksi. Namun, setiap manajer panggilan tertentu mungkin menentukan struktur untuk meneruskan informasi diagnostik tambahan kepada kliennya pada teardown panggilan yang disebabkan oleh masalah pada jaringan.

[in] Size

Menentukan ukuran dalam byte buffer di CloseData, nol jika CloseData adalah NULL.

Mengembalikan nilai

Tidak ada

Keterangan

Panggilan ke ProtocolClIncomingCloseCall menunjukkan bahwa salah satu hal berikut ini telah terjadi:

  • Manajer panggilan telah menerima permintaan melalui jaringan untuk menutup koneksi yang dibuat, yang diidentifikasi oleh NdisVcHandle bahwa klien disimpan di area konteks per VC di ProtocolVcContext .
  • Manajer panggilan telah mendeteksi bahwa masalah jaringan akan mencegah transfer data lebih lanjut pada koneksi yang dibuat.
Dalam kedua kasus, ProtocolClIncomingCloseCall harus melakukan operasi yang ditentukan protokol, seperti memberi tahu klien klien sendiri bahwa koneksi sedang rusak. Misalnya, jika panggilan yang akan ditutup adalah VC multipoint yang dibuat oleh klien, ProtocolClIncomingCloseCall harus memanggil NdisClDropParty satu atau beberapa kali sampai hanya satu pihak yang tetap berada di VC multipoint-nya.

Baik VC yang diberikan adalah koneksi titik tunggal atau multipoint, ProtocolClIncomingCloseCall harus memanggil NdisClCloseCall untuk mengakui bahwa klien tidak akan mencoba mengirim atau mengharapkan untuk menerima data pada VC khusus ini. Jika manajer panggilan membuat VC ini, ProtocolClIncomingCloseCall harus mengembalikan kontrol setelah memanggil NdisClCloseCall. Manajer panggilan bertanggung jawab untuk menghancurkan atau menggunakan kembali VC apa pun yang dibuatnya.

Jika klien awalnya membuat VC ini untuk panggilan keluar, ProtocolClIncomingCloseCall dapat melakukan salah satu hal berikut setelah memanggil NdisClDropParty sebanyak yang diperlukan, jika ada, dan NdisClCloseCall:

  • Jika CloseStatus NDIS_STATUS_SUCCESS, robek VC dengan NdisCoDeleteVc dan lepaskan area konteks per VC klien atau siapkan untuk digunakan kembali dalam panggilan berikutnya ke NdisCoCreateVc.
  • Jika CloseStatus NDIS_STATUS_SUCCESS, pertahankan VC yang dibuat klien dan siapkan area konteks per VC untuk digunakan kembali dalam panggilan berikutnya ke NdisClMakeCall.
  • Jika tidak, robek VC dengan NdisCoDeleteVc dan lepaskan area konteks per VC-nya jika manajer panggilan menunjukkan bahwa jaringan telah menjadi tidak operasi.

Contoh

Untuk menentukan fungsi ProtocolClIncomingCloseCall , 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 ProtocolClIncomingCloseCall yang diberi nama "MyClIncomingCloseCall", gunakan jenis PROTOCOL_CL_INCOMING_CLOSE_CALL seperti yang ditunjukkan dalam contoh kode ini:

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

Jenis fungsi PROTOCOL_CL_INCOMING_CLOSE_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_CL_INCOMING_CLOSE_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 ProtocolClIncomingCloseCall (NDIS 5.1)) di Windows Vista. Didukung untuk driver NDIS 5.1 (lihat ProtocolClIncomingCloseCall (NDIS 5.1)) di Windows XP.
Target Platform Windows
Header ndis.h (termasuk Ndis.h)
IRQL <= DISPATCH_LEVEL

Lihat juga

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc