PROTOCOL_CM_OPEN_AF fungsi panggilan balik (ndis.h)

Fungsi ProtocolCmOpenAf diperlukan. Fungsi ini mengalokasikan sumber daya per terbuka bagi manajer panggilan untuk berinteraksi dengan klien NDIS berorientasi koneksi yang membuka keluarga alamat.

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

Sintaks

PROTOCOL_CM_OPEN_AF ProtocolCmOpenAf;

NDIS_STATUS ProtocolCmOpenAf(
  [in]  NDIS_HANDLE CallMgrBindingContext,
  [in]  PCO_ADDRESS_FAMILY AddressFamily,
  [in]  NDIS_HANDLE NdisAfHandle,
  [out] PNDIS_HANDLE CallMgrAfContext
)
{...}

Parameter

[in] CallMgrBindingContext

Untuk manajer panggilan yang tidak terintegrasi, CallMgrBindingContext menentukan handel ke area konteks yang dialokasikan manajer panggilan tempat manajer panggilan mempertahankan informasi status per pengikatannya. Manajer panggilan menyediakan handel ini ketika disebut NdisOpenAdapterEx.

Untuk manajer panggilan terintegrasi (MCM), CallMgrBindingContext menentukan handel ke area konteks yang dialokasikan miniport tempat miniport mempertahankan informasi status per adaptornya. Miniport menyediakan handel ini dalam panggilan NdisMSetAttributesEx (untuk driver 5.x) atau panggilan NdisMSetMiniportAttributes -nya (untuk driver 6.x).

[in] AddressFamily

Menentukan keluarga alamat yang dibuka klien. Keluarga alamat ini didaftarkan oleh manajer panggilan ketika dipanggil NdisCmRegisterAddressFamilyEx.

[in] NdisAfHandle

Menentukan handel, yang disediakan oleh NDIS, yang secara unik mengidentifikasi instans keluarga alamat ini. Handel ini buram ke manajer panggilan dan dicadangkan untuk penggunaan sistem.

[out] CallMgrAfContext

Menentukan handel ke area konteks yang disediakan manajer panggilan tempat manajer panggilan mempertahankan status tentang pembukaan keluarga alamat yang disediakannya.

Nilai kembali

ProtocolCmOpenAf mengembalikan status operasinya sebagai salah satu hal berikut:

Menampilkan kode Deskripsi
NDIS_STATUS_SUCCESS
Menunjukkan bahwa manajer panggilan telah berhasil mengalokasikan dan menginisialisasi sumber daya apa pun yang diperlukan untuk menerima permintaan dari klien ke keluarga alamat ini.
NDIS_STATUS_PENDING
Menunjukkan bahwa operasi yang diminta sedang ditangani secara asinkron. Manajer panggilan harus memanggil NdisCmOpenAddressFamilyComplete ketika telah menyelesaikan semua operasi open-AF-nya untuk menunjukkan kepada NDIS (dan klien) bahwa operasi telah selesai.
NDIS_STATUS_RESOURCES
Menunjukkan bahwa manajer panggilan tidak dapat menyelesaikan operasi yang diperlukan karena kurangnya sumber daya sistem yang tersedia, seperti memori.
NDIS_STATUS_XXX
Menunjukkan bahwa manajer panggilan tidak dapat mengatur dirinya ke dalam status di mana ia dapat menerima permintaan dari klien untuk beroperasi pada keluarga alamat ini. Ini bisa menjadi status kesalahan yang disebarluaskan dari fungsi pustaka NDIS lain atau status kesalahan apa pun yang ditentukan sesuai oleh penulis driver.

Keterangan

ProtocolCmOpenAf melakukan alokasi sumber daya dan struktur dinamis yang diperlukan yang dianggap perlu oleh penulis manajer panggilan untuk melakukan operasi atas nama klien yang membuka instans keluarga alamat ini. Sumber daya tersebut termasuk, tetapi tidak terbatas pada, buffer memori, struktur data, peristiwa, dan sumber daya serupa lainnya. Manajer panggilan juga harus menginisialisasi data per terbuka yang relevan sebelum mengembalikan kontrol ke NDIS.

Ketika manajer panggilan telah mengalokasikan area status per terbukanya, alamat area status harus diatur dalam handel CallMgrAfContext sebelum mengembalikan kontrol ke NDIS. Untuk melakukan ini, dereferensi CallMgrAfContext dan simpan penunjuk ke area data sebagai nilai handel. Contohnya:

*CallMgrAfContext = SomeBuffer;

Jika ProtocolCmOpenAf tidak dapat mengalokasikan sumber daya per terbuka yang diperlukan untuk melakukan permintaan berikutnya atas nama klien yang membuka keluarga alamat ini, ia harus membebaskan semua sumber daya yang dialokasikan untuk kontrol terbuka dan kembali ke NDIS dengan NDIS_STATUS_RESOURCES.

Jika ProtocolCmOpenAf telah menyelesaikan operasi yang diperlukan dan CM siap menerima permintaan dari klien, ProtocolCmOpenAf harus mengembalikan kontrol secepat mungkin dengan status NDIS_STATUS_SUCCESS.

Contoh

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

PROTOCOL_CM_OPEN_AF MyCmOpenAf;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
NDIS_STATUS
 MyCmOpenAf(
    NDIS_HANDLE  CallMgrBindingContext,
    PCO_ADDRESS_FAMILY  AddressFamily,
    NDIS_HANDLE  NdisAfHandle,
    PNDIS_HANDLE  CallMgrAfContext
    )
  {...}

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

Lihat juga

NdisClOpenAddressFamilyEx

NdisCmOpenAddressFamilyComplete NdisCmRegisterAddressFamilyEx

NdisOpenAdapterEx