Bagikan melalui


RpcNsBindingLookupNext (rpcnsi.h)

Fungsi RpcNsBindingLookupNext mengembalikan daftar handel pengikatan yang kompatibel untuk antarmuka tertentu dan secara opsional objek .

Catatan Fungsi ini tidak didukung pada Windows Vista dan sistem operasi yang lebih baru.
 

Sintaks

RPC_STATUS RpcNsBindingLookupNext(
  RPC_NS_HANDLE      LookupContext,
  RPC_BINDING_VECTOR **BindingVec
);

Parameter

LookupContext

Handel layanan nama yang dikembalikan dari fungsi RpcNsBindingLookupBegin .

BindingVec

Mengembalikan alamat penunjuk ke vektor handel pengikatan server yang kompatibel dengan klien.

Nilai kembali

Nilai Makna
RPC_S_OK
Panggilan berhasil.
RPC_S_NO_MORE_BINDINGS
Tidak ada lagi pengikatan.
RPC_S_NAME_SERVICE_UNAVAILABLE
Layanan nama tidak tersedia.
 
Catatan Untuk daftar kode kesalahan yang valid, lihat Nilai Pengembalian RPC.
 

Keterangan

Fungsi RpcNsBindingLookupNext mengembalikan vektor handel pengikatan server yang kompatibel dengan klien untuk server yang menawarkan antarmuka dan UUID objek yang ditentukan oleh parameter IfSpec dan ObjUuid dalam fungsi RpcNsBindingLookupBegin . (Bandingkan ini dengan RpcNsBindingImportNext, yang mengembalikan satu handel pengikatan server yang kompatibel.)

Fungsi RpcNsBindingLookupNext hanya berkomunikasi dengan database layanan nama, tidak langsung dengan server.

Efektif dengan Windows 2000, lingkungan RPC menggunakan Direktori Aktif sebagai database layanan-namanya dan urutan di mana lingkungan run-time melakukan pencarian adalah sebagai berikut:

  • Cari cache lokal.
  • Jika entri tidak ditemukan di cache lokal, cari Direktori Aktif komputer tersebut.
  • Jika entri tidak ditemukan di komputer lokal, kirim permintaan siaran ke semua layanan Direktori Aktif lainnya di domain.

    Perhatikan bahwa jika entri ada di Direktori Aktif, tetapi tidak ada informasi yang terkait dengan entri, lingkungan run-time tidak akan mengeluarkan permintaan siaran ini.

Pada panggilan berturut-turut, fungsi RpcNsBindingLookupNext melintasi entri database layanan nama, mengumpulkan handel pengikatan server yang kompatibel dengan klien dari setiap entri.

Ketika Microsoft Active Directory adalah database layanan-nama, RpcNsBindingLookupNext melintasi database hanya jika nama entri yang diberikan null dan entri default (dalam registri) tidak ditentukan atau kosong. Selain itu, karena entri campuran tidak diizinkan di Direktori Aktif, fungsi hanya mencari nama entri server, bukan nama grup atau profil.

Ketika DCE Cell Directory Service (CDS) adalah database layanan-nama, dan entri di mana pencarian mulai berisi handel pengikatan selain nama grup atau profil, RpcNsBindingLookupNext mengembalikan handel pengikatan dari EntryName sebelum mencari grup atau profil. Ini berarti bahwa fungsi dapat mengembalikan vektor penuh sebagian sebelum memproses anggota grup atau profil.

Handel pengikatan kompatibel yang dikembalikan selalu berisi UUID objek, nilainya tergantung pada parameter ObjUuid dalam fungsi RpcNsBindingImportBegin . Jika UUID objek non-null ditentukan, handel pengikatan yang dikembalikan berisi UUID objek tersebut. Namun, jika UUID objek null atau nilai null ditentukan, UUID objek yang dikembalikan adalah hasil dari kemungkinan berikut:

  • Jika server tidak mengekspor UUID objek apa pun, handel pengikatan yang dikembalikan berisi UUID objek nihil.
  • Jika server mengekspor satu UUID objek, handel pengikatan yang dikembalikan berisi UUID objek tersebut.
  • Jika server mengekspor beberapa UUID objek, handel pengikatan yang dikembalikan berisi salah satu UUID objek. Operasi impor-berikutnya memilih UUID objek yang dikembalikan dengan cara non-deterministik. Akibatnya, UUID objek yang berbeda dapat dikembalikan untuk setiap handel pengikatan yang kompatibel dari satu entri server.
Dari vektor handel pengikatan server yang dikembalikan, aplikasi klien dapat menggunakan kriterianya sendiri untuk memilih handel pengikatan individu, atau aplikasi dapat memanggil fungsi RpcNsBindingSelect untuk memilih handel pengikatan. Fungsi RpcBindingToStringBinding dan RpcStringBindingParse akan membantu klien membuat kriteria pilihannya sendiri.

Aplikasi klien dapat menggunakan handel pengikatan yang dipilih untuk mencoba melakukan panggilan prosedur jarak jauh ke server. Jika klien gagal membangun hubungan dengan server, klien dapat memilih handel pengikatan lain dari vektor. Ketika semua handel pengikatan di vektor telah digunakan, aplikasi klien memanggil RpcNsBindingLookupNext lagi.

Setiap kali klien memanggil RpcNsBindingLookupNext, fungsi mengembalikan vektor lain dari handel pengikatan. Handel pengikatan yang dikembalikan di setiap vektor tidak diurutkan. Vektor yang dikembalikan dari beberapa panggilan ke fungsi ini juga tidak diurutkan.

Klien memanggil fungsi RpcNsBindingInqEntryName untuk mendapatkan nama entri server database layanan-nama asal pengikatan.

Ketika pencarian mencapai akhir database layanan nama, RpcNsBindingLookupNext mengembalikan status RPC_S_NO_MORE_BINDINGS dan mengembalikan nilai BindingVecNULL.

Fungsi RpcNsBindingLookupNext mengalokasikan penyimpanan untuk data yang direferensikan oleh parameter BindingVec yang dikembalikan. Ketika aplikasi klien selesai dengan vektor, aplikasi harus memanggil fungsi RpcBindingVectorFree untuk membatalkan alokasi penyimpanan. Setiap panggilan ke RpcNsBindingLookupNext memerlukan panggilan yang sesuai ke RpcBindingVectorFree.

Klien bertanggung jawab untuk memanggil fungsi RpcNsBindingLookupDone untuk menghapus konteks pencarian, atau jika Anda ingin aplikasi memulai pencarian baru untuk server yang kompatibel.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header rpcnsi.h (termasuk Rpc.h)
Pustaka Rpcns4.lib
DLL Rpcns4.dll

Lihat juga

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse