Bagikan melalui


Fungsi DsGetSpnW (ntdsapi.h)

Fungsi DsGetSpn membangun array dari satu atau beberapa nama perwakilan layanan (SPN). Setiap nama dalam array mengidentifikasi instans layanan. SPN ini dapat didaftarkan ke layanan direktori (DS) menggunakan fungsi DsWriteAccountSpn.

Sintaksis

NTDSAPI DWORD DsGetSpnW(
  [in]           DS_SPN_NAME_TYPE ServiceType,
  [in]           LPCWSTR          ServiceClass,
  [in, optional] LPCWSTR          ServiceName,
  [in]           USHORT           InstancePort,
  [in]           USHORT           cInstanceNames,
  [in, optional] LPCWSTR          *pInstanceNames,
  [in, optional] const USHORT     *pInstancePorts,
  [out]          DWORD            *pcSpn,
  [out]          LPWSTR           **prpszSpn
);

Parameter

[in] ServiceType

Mengidentifikasi format SPN yang akan disusupi. Parameter ServiceType dapat memiliki salah satu nilai berikut.

DS_SPN_DNS_HOST, DS_SPN_DN_HOST, DS_SPN_NB_HOST

SPN memiliki format berikut.

ServiceClass/ InstanceName: InstancePort

Parameter ServiceName harus null. Ini adalah format SPN untuk layanan berbasis host, yang menyediakan layanan yang diidentifikasi dengan komputer host-nya. Komponen InstancePort bersifat opsional.

DS_SPN_DOMAIN, DS_SPN_NB_DOMAIN

SPN memiliki format berikut.

ServiceClass/ InstanceName: InstancePort/ ServiceName

Parameter ServiceName harus berupa nama DNS atau DN domain. Format ini digunakan untuk layanan yang dapat direplikasi yang menyediakan layanan ke domain yang ditentukan.

DS_SPN_SERVICE

SPN memiliki format berikut.

ServiceClass/ InstanceName: InstancePort/ ServiceName

Parameter ServiceName harus berupa nama DN atau DNS kanonis yang mengidentifikasi instans layanan. Misalnya, itu bisa menjadi nama DNS dari catatan SRV, atau nama khusus titik koneksi layanan untuk instans layanan ini.

[in] ServiceClass

Penunjuk ke string yang dihentikan null konstanta yang menentukan kelas layanan; misalnya, http. Umumnya, ini bisa menjadi string apa pun yang unik untuk layanan.

[in, optional] ServiceName

Penunjuk ke string yang dihentikan null konstanta yang menentukan nama DNS atau nama khusus (DN) layanan. ServiceName tidak diperlukan untuk layanan berbasis host. Untuk informasi selengkapnya, lihat deskripsi parameter ServiceType untuk nilai yang mungkin dari ServiceName.

[in] InstancePort

Menentukan nomor port instans layanan. Jika nilai ini nol, SPN tidak menyertakan nomor port.

[in] cInstanceNames

Menentukan jumlah elemen dalam pInstanceNames dan pInstancePorts array. Jika nilai ini nol, pInstanceNames harus menunjuk ke array cInstanceNames string, dan pInstancePorts dapat berupa NULL atau penunjuk ke array cInstanceNames nomor port. Jika nilai ini nol, DsGetSpn hanya mengembalikan satu SPN dalam array prpszSpn dan pInstanceNames dan pInstancePorts diabaikan.

[in, optional] pInstanceNames

Penunjuk ke array string yang dihentikan null yang menentukan nama instans tambahan (tidak digunakan untuk nama host). Parameter ini diabaikan jika cInstanceNames adalah nol. Dalam hal ini, komponen InstanceName dari default SPN ke nama DNS komputer lokal yang sepenuhnya memenuhi syarat atau nama NetBIOS jika DS_SPN_NB_HOST atau DS_SPN_NB_DOMAIN ditentukan.

[in, optional] pInstancePorts

Penunjuk ke array port instans tambahan. Jika nilai ini bukanNULL , nilai harus menunjuk ke array cInstanceNames nomor port. Jika nilai ini null, SPN tidak menyertakan nomor port. Parameter ini diabaikan jika cInstanceNames adalah nol.

[out] pcSpn

Pointer ke variabel yang menerima jumlah SPN yang terkandung dalam prpszSpn.

[out] prpszSpn

Penunjuk ke variabel yang menerima penunjuk ke array SPN. Array ini harus dibebaskan dengan DsFreeSpnArray.

Mengembalikan nilai

Jika fungsi mengembalikan array SPN, nilai yang dikembalikan adalah ERROR_SUCCESS.

Jika fungsi gagal, nilai pengembalian dapat menjadi salah satu kode kesalahan berikut.

Komentar

Membuat SPN untuk beberapa instans layanan yang direplikasi yang berjalan di beberapa komputer host

  1. Atur cInstanceNames ke jumlah instans.
  2. Tentukan nama komputer host di array pInstanceNames .

Membuat SPN untuk beberapa instans layanan yang berjalan di komputer host yang sama

  1. Atur cInstanceNames ke jumlah instans.
  2. Atur setiap entri di array pInstanceNames ke nama DNS komputer host.
  3. Gunakan parameter pInstancePorts untuk menentukan array nomor port unik untuk setiap instans guna membedakan SPN.
Parameter string tidak dapat menyertakan garis miring (/), yang digunakan untuk memisahkan komponen SPN.

Aplikasi dengan hak istimewa yang sesuai, yang biasanya merupakan admin domain, dapat memanggil fungsi DsWriteAccountSpn untuk mendaftarkan satu atau beberapa SPN pada akun pengguna atau komputer tempat layanan berjalan. Klien kemudian dapat menggunakan SPN untuk mengautentikasi layanan.

Nota

Header ntdsapi.h mendefinisikan DsGetSpn sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praproscesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows Vista
server minimum yang didukung Windows Server 2008
Platform Target Windows
Header ntdsapi.h
Pustaka Ntdsapi.lib
DLL Ntdsapi.dll

Lihat juga

Fungsi Pengendali Domain dan Manajemen Replikasi

DsFreeSpnArray

DsWriteAccountSpn