PROTOCOL_CL_REGISTER_SAP_COMPLETE fungsi panggilan balik (ndis.h)

Klien NDIS berorientasi koneksi yang menerima panggilan masuk harus memiliki fungsi ProtocolClRegisterSapComplete untuk menyelesaikan operasi asinkron yang dimulai dengan NdisClRegisterSap. Jika tidak, fungsi ProtocolClRegisterSapComplete yang terdaftar dari driver protokol tersebut hanya dapat mengembalikan kontrol.

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

Sintaks

PROTOCOL_CL_REGISTER_SAP_COMPLETE ProtocolClRegisterSapComplete;

void ProtocolClRegisterSapComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolSapContext,
  [in] PCO_SAP Sap,
  [in] NDIS_HANDLE NdisSapHandle
)
{...}

Parameter

[in] Status

Menentukan status akhir panggilan klien ke NdisClRegisterSap, yang bisa menjadi salah satu dari berikut ini:

NDIS_STATUS_SUCCESS

SAP telah terdaftar baik dengan NDIS maupun manajer panggilan, yang kemudian akan memanggil NdisCmDispatchIncomingCall setiap kali menerima penawaran panggilan masuk yang diarahkan ke SAP yang diberikan, sehingga menyebabkan NDIS memanggil klien Fungsi ProtocolClIncomingCall .

NDIS_STATUS_RESOURCES

NDIS atau manajer panggilan tidak dapat mengalokasikan dan/atau menginisialisasi sumber daya yang diperlukan untuk mendaftar dan memelihara SAP.

NDIS_STATUS_INVALID_DATA

Klien menyediakan spesifikasi yang tidak valid di Sap ke NDIS, yang diteruskannya ke fungsi ProtocolCmRegisterSap manajer panggilan untuk validasi.

NDIS_STATUS_XXX

Manajer panggilan mengalami kesalahan dalam mencoba mendaftarkan SAP dan NDIS yang diberikan menyebarkan status kegagalan yang ditentukan CM ini kepada klien.

[in] ProtocolSapContext

Menentukan handel ke area konteks per SAP klien, yang awalnya disediakan klien ke NDIS ketika disebut NdisClRegisterSap. Jika pendaftaran berhasil, NDIS mempertahankan handel konteks ini dan menggunakannya kemudian dalam panggilan ke fungsi ProtocolClIncomingCall klien yang berkaitan dengan SAP ini.

[in] Sap

Arahkan ke buffer yang dialokasikan klien yang berisi spesifikasi SAP yang akan dibuka. Klien awalnya meneruskan pointer ini ke NdisClRegisterSap.

[in] NdisSapHandle

Jika Status NDIS_STATUS_SUCCESS, menentukan handel valid yang disediakan NDIS ke SAP terdaftar ini, secara efektif asosiasi yang dibuat dengan NDIS antara klien dan manajer panggilan tertentu untuk SAP yang ditentukan klien. Jika tidak, parameter ini ADALAH NULL. Klien harus menyimpan handel yang valid, sebaiknya di area ProtocolSapContext-nya , untuk panggilan akhirnya ke NdisClDeregisterSap.

Nilai kembali

Tidak ada

Keterangan

NDIS memanggil ProtocolClRegisterSapComplete untuk menunjukkan bahwa panggilan klien sebelumnya ke NdisClRegisterSap telah diproses oleh NDIS dan, jika NDIS tidak gagal dalam panggilan, oleh manajer panggilan tempat klien berbagi NdisAfHandle yang diteruskannya ke NdisClRegisterSap.

Untuk menerima panggilan masuk melalui NIC berorientasi koneksi, klien ProtocolCoAfRegisterNotify atau Fungsi ProtocolClOpenAfCompleteEx biasanya mendaftarkan satu atau beberapa SAP dengan manajer panggilan.

Untuk mendaftarkan setiap SAP, klien memanggil NdisClRegisterSap, meneruskan NdisAfHandle yang mengidentifikasi manajer panggilan tempat klien ingin menerima pemberitahuan panggilan masuk, dan NDIS mengembalikan klien NdisSapHandle ke SAP terdaftar jika panggilan klien ke NdisClRegisterSap berhasil. ProtocolClRegisterSapComplete harus menyimpan setiap NdisSapHandle yang valid, biasanya di area ProtocolSapContext per-SAP klien sehingga dapat merilis SAP nanti dengan NdisClDeregisterSap.

Format SAP khusus untuk manajer panggilan. Jika manajer panggilan tidak mengenali SAP yang coba didaftarkan klien atau jika SAP yang ditentukan sudah digunakan, manajer panggilan dapat gagal dalam pendaftaran SAP. ProtocolClRegisterSapComplete harus memeriksa Status input untuk NDIS_STATUS_SUCCESS sebelum menjanjikan lebih lanjut. Jika upaya untuk mendaftarkan SAP gagal,
ProtocolClRegisterSapComplete dapat merilis area konteks per-SAP dan buffer di Sap yang dialokasikan klien atau menyiapkannya untuk digunakan kembali dalam panggilan lain ke NdisClRegisterSap.

Klien dapat menerima panggilan masuk pada SAP bahkan saat pendaftaran SAP masih tertunda, yaitu, sebelum fungsi ProtocolClRegisterSapComplete dipanggil.

Contoh

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

PROTOCOL_CL_REGISTER_SAP_COMPLETE MyClRegisterSapComplete;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyClRegisterSapComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolSapContext,
    PCO_SAP  Sap,
    NDIS_HANDLE  NdisSapHandle
    )
  {...}

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

Lihat juga

NdisClDeregisterSap

NdisClRegisterSap

NdisCmDispatchIncomingCall

NdisCmRegisterSapComplete

NdisFreeMemory

NdisFreeToNPagedLookasideList

NdisMCmDispatchIncomingCall

NdisMCmRegisterSapComplete

ProtocolClIncomingCall

ProtocolClOpenAfCompleteEx

ProtocolCmRegisterSap

ProtocolCoAfRegisterNotify