Fungsi CredReadDomainCredentialsA (wincred.h)

Fungsi CredReadDomainCredentials membaca kredensial domain dari kumpulan kredensial pengguna. Set kredensial yang digunakan adalah yang terkait dengan sesi masuk token saat ini. Token tidak boleh menonaktifkan SID pengguna.

Sintaks

BOOL CredReadDomainCredentialsA(
  [in]  PCREDENTIAL_TARGET_INFORMATIONA TargetInfo,
  [in]  DWORD                           Flags,
  [out] DWORD                           *Count,
  [out] PCREDENTIALA                    **Credential
);

Parameter

[in] TargetInfo

Informasi target yang mengidentifikasi server target. Setidaknya salah satu anggota penamaan tidak boleh NULL: NetbiosServerName, DnsServerName, NetbiosDomainName, DnsDomainName atau DnsTreeName.

[in] Flags

Bendera yang mengontrol pengoperasian fungsi.

Bendera berikut didefinisikan:

CRED_CACHE_TARGET_INFORMATION

Cache TargetInfo untuk bacaan berikutnya menggunakan CredGetTargetInfo.

[out] Count

Jumlah kredensial yang dikembalikan dalam array Kredensial .

[out] Credential

Arahkan ke array pointer ke kredensial. Kredensial yang paling spesifik yang ada yang cocok dengan TargetInfo dikembalikan. Jika kredensial dari berbagai jenis (misalnya, kredensial CRED_TYPE_DOMAIN_PASSWORD dan CRED_TYPE_DOMAIN_CERTIFICATE) ada, salah satu dari setiap jenis dikembalikan. Jika koneksi akan dibuat ke target bernama, kredensial yang paling spesifik ini akan digunakan.

Hanya jenis kredensial yang ditentukan oleh TargetInfo. Array CredTypes dikembalikan. Array Kredensial yang dikembalikan diurutkan dalam urutan yang sama dengan TargetInfo. Array CredTypes. Artinya, paket autentikasi menentukan jenis kredensial pilihan dengan menentukannya sebelumnya di TargetInfo. Array CredTypes. Jika TargetInfo. CredTypeCount adalah nol, array Kredensial dikembalikan dalam urutan yang diurutkan berikut:

  • CRED_TYPE_DOMAIN_CERTIFICATE
  • CRED_TYPE_DOMAIN_PASSWORD

Buffer yang dikembalikan adalah satu blok yang dialokasikan. Setiap pointer yang terkandung dalam buffer adalah penunjuk ke lokasi dalam blok yang dialokasikan tunggal ini. Buffer tunggal yang dikembalikan harus dikosongkan dengan memanggil CredFree.

Nilai kembali

Fungsi mengembalikan TRUE pada keberhasilan dan FALSE pada kegagalan. Fungsi GetLastError dapat dipanggil untuk mendapatkan kode status yang lebih spesifik. Kode status berikut dapat dikembalikan:

  • ERROR_INVALID_PARAMETER

    Tidak ada parameter penamaan yang ditentukan.

  • ERROR_NOT_FOUND

    Tidak ada kredensial yang cocok dengan parameter penamaan yang ditentukan.

  • ERROR_NO_SUCH_LOGON_SESSION

    Sesi masuk tidak ada atau tidak ada set kredensial yang terkait dengan sesi masuk ini. Sesi masuk jaringan tidak memiliki set kredensial terkait.

  • ERROR_INVALID_FLAGS

    Bendera yang tidak valid ditentukan untuk parameter Bendera .

Keterangan

Fungsi ini mengembalikan kredensial yang paling spesifik yang cocok dengan parameter penamaan. Misalnya, jika ada kredensial yang cocok dengan nama server target dan kredensial yang cocok dengan nama domain target, hanya kredensial spesifik server yang dikembalikan. Ini adalah kredensial yang akan digunakan.

Daftar berikut menentukan urutan (dari yang paling spesifik hingga paling tidak spesifik) dari kredensial apa yang dikembalikan jika lebih dari satu kecocokan:

  • Nama target kredensial adalah formulir <DfsRoot>\<DfsShare>, dan itu adalah kecocokan yang tepat pada TargetName.
  • Kecocokan persis pada DnsServerName.
  • Kecocokan persis pada NetBIOSServerName.
  • Kecocokan persis pada TargetName.
  • Kecocokan DnsServerName dengan kredensial server wildcard. Jika lebih dari satu kredensial server kartubebas cocok, kredensial dengan TargetName yang lebih panjang akan digunakan. Artinya, kredensial untuk *.example.microsoft.com digunakan alih-alih kredensial untuk *.microsoft.com.
  • Kecocokan persis DnsDomainName dengan kredensial domain wildcard formulir <DnsDomainName>\*.
  • Kecocokan yang tepat dari NetBIOSDomainName dengan kredensial domain wildcard formulir <NetBIOSDomainName>\*
  • Info masuk bernama CRED_SESSION_WILDCARD_NAME.
  • Kredensial bernama "*".
CredReadDomainCredentials berbeda dari CredRead karena menangani kredensial idiosyncrasies domain (CRED_TYPE_DOMAIN_PASSWORD atau CRED_TYPE_DOMAIN_CERTIFICATE). Info masuk domain berisi lebih dari satu anggota target.

Jika nilai jenis anggota strukturKREDENSIAL yang ditentukan oleh parameter KredensialCRED_TYPE_DOMAIN_EXTENDED, namespace harus ditentukan dalam nama target. Fungsi ini hanya dapat mengembalikan satu kredensial dari jenis yang ditentukan.

Fungsi ini dapat mengembalikan beberapa kredensial jenis ini, tetapi CRED_TYPE_DOMAIN_EXTENDED tidak dapat dicampur dengan jenis lain dalam anggota CredTypes dari struktur CREDENTIAL_TARGET_INFORMATION yang ditentukan oleh parameter TargetInfo .

Catatan

Header wincred.h mendefinisikan CredReadDomainCredentials sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosem 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

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header wincred.h
Pustaka Advapi32.lib
DLL Advapi32.dll