NPI_PROVIDER_ATTACH_CLIENT_FN fungsi panggilan balik (netioddk.h)

Fungsi panggilan balik ProviderAttachClient modul penyedia melampirkan modul penyedia ke modul klien.

Sintaks

NPI_PROVIDER_ATTACH_CLIENT_FN NpiProviderAttachClientFn;

NTSTATUS NpiProviderAttachClientFn(
  [in]  HANDLE NmrBindingHandle,
  [in]  PVOID ProviderContext,
  [in]  PNPI_REGISTRATION_INSTANCE ClientRegistrationInstance,
  [in]  PVOID ClientBindingContext,
  [in]  const VOID *ClientDispatch,
  [out] PVOID *ProviderBindingContext,
  [out] const VOID **ProviderDispatch
)
{...}

Parameter

[in] NmrBindingHandle

Handel yang digunakan oleh NMR untuk mewakili pengikatan antara modul klien dan modul penyedia.

[in] ProviderContext

Penunjuk ke konteks pendaftaran modul penyedia. Modul penyedia meneruskan pointer ini ke NMR ketika memanggil fungsi NmrRegisterProvider untuk mendaftarkan dirinya dengan NMR.

[in] ClientRegistrationInstance

Penunjuk ke NPI_REGISTRATION_INSTANCE struktur. Struktur ini berisi data pendaftaran modul klien.

[in] ClientBindingContext

Penunjuk ke konteks modul klien untuk pengikatan antara modul klien dan modul penyedia. Modul klien menggunakan konteks ini untuk melacak status pengikatan. Konten konteks pengikatan modul klien buram untuk modul penyedia. Modul penyedia meneruskan pointer ini ke modul klien setiap kali memanggil salah satu fungsi panggilan balik NPI modul klien yang memerlukan konteks pengikatan modul klien.

[in] ClientDispatch

Penunjuk ke struktur konstanta yang berisi tabel pengiriman fungsi panggilan balik NPI untuk modul klien. Isi strukturnya khusus untuk NPI. Jika NPI tidak menentukan struktur tabel pengiriman klien, maka pointer ini adalah NULL.

[out] ProviderBindingContext

Pointer ke variabel tempat modul penyedia akan menyimpan pointer ke konteksnya untuk pengikatan antara modul klien dan modul penyedia. Modul penyedia menggunakan konteks ini untuk melacak status pengikatan. Konten konteks pengikatan modul penyedia buram ke modul klien. Modul klien meneruskan penunjuk ini ke modul penyedia setiap kali memanggil salah satu fungsi NPI modul penyedia yang memerlukan konteks pengikatan modul penyedia. Modul penyedia harus memastikan bahwa konteks ini tetap valid dan tinggal dalam memori selama modul klien dilampirkan ke modul penyedia.

[out] ProviderDispatch

Penunjuk ke variabel tempat modul penyedia akan menyimpan pointer ke struktur konstan yang berisi tabel pengiriman fungsi NPI untuk modul penyedia. Modul penyedia harus memastikan bahwa struktur ini tetap valid dan tinggal dalam memori selama modul klien dilampirkan ke modul penyedia. Isi strukturnya khusus untuk NPI.

Nilai kembali

Fungsi panggilan balik ProviderAttachClient modul penyedia mengembalikan salah satu kode NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Modul penyedia berhasil dilampirkan ke modul klien.
STATUS_NOINTERFACE
Modul penyedia tidak dilampirkan ke modul klien.
Kode status lainnya
Terjadi kesalahan.

Keterangan

NMR memanggil fungsi panggilan balik ProviderAttachClient modul penyedia setiap kali modul klien memanggil fungsi NmrClientAttachProvider dengan handel yang mewakili pengikatan antara modul klien dan modul penyedia.

Modul penyedia dapat memeriksa data pendaftaran modul klien. Data ini berada dalam struktur yang ditunjukkan oleh parameter ClientRegistrationInstance . Modul penyedia menggunakan data ini untuk menentukan apakah modul akan dilampirkan ke modul klien:

  • Jika modul penyedia menentukan bahwa modul akan dilampirkan ke modul klien, maka fungsi panggilan balik ProviderAttachClient harus melakukan hal berikut:
    1. Simpan pointer yang diteruskan dalam parameter ClientBindingContext dan ClientDispatch sehingga modul penyedia dapat melakukan panggilan ke fungsi NPI modul klien.
    2. Simpan handel yang diteruskan dalam parameter NmrBindingHandle . Modul penyedia meneruskan handel ini sebagai parameter ke Fungsi NmrProviderDetachClientComplete saat terlepas dari modul klien.
    3. Atur parameter ProviderBindingContext untuk menunjuk ke struktur konteks pengikatan modul penyedia untuk pengikatan antara modul klien dan modul penyedia.
    4. Atur parameter ProviderDispatch untuk menunjuk ke struktur yang berisi tabel pengiriman fungsi NPI modul penyedia.
    5. Kembalikan STATUS_SUCCESS.
  • Jika modul penyedia menentukan bahwa modul tidak akan dilampirkan ke modul klien, maka fungsi panggilan balik ProviderAttachClient harus mengembalikan STATUS_NOINTERFACE.
Jika modul penyedia melekat pada modul klien dan secara dinamis mengalokasikan memori untuk konteks pengikatannya, modul harus membebaskan memori yang dialokasikan ketika NMR memanggil modul penyediaFungsi panggilan balik ProviderCleanupBindingContext setelah modul klien dan modul penyedia dilepas satu sama lain.

NMR memanggil fungsi panggilan balik ProviderAttachClient modul penyedia di IRQL = PASSIVE_LEVEL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Windows
Header netioddk.h (termasuk Wsk.h)
IRQL PASSIVE_LEVEL

Lihat juga

NPI_PROVIDER_CHARACTERISTICS

NPI_REGISTRATION_INSTANCE

NmrClientAttachProvider

NmrProviderDetachClientComplete

NmrRegisterProvider

ProviderCleanupBindingContext

ProviderDetachClient