LSA_GET_CREDENTIALS fungsi panggilan balik (ntsecpkg.h)

Mengambil kredensial yang terkait dengan sesi masuk.

Fungsi ini tidak digunakan oleh paket autentikasi yang lebih baru, seperti Kerberos.

Sintaks

LSA_GET_CREDENTIALS LsaGetCredentials;

NTSTATUS LsaGetCredentials(
  [in]      PLUID LogonId,
  [in]      ULONG AuthenticationPackage,
  [in, out] PULONG QueryContext,
  [in]      BOOLEAN RetrieveAllCredentials,
  [in, out] PLSA_STRING PrimaryKeyValue,
  [out]     PULONG PrimaryKeyLength,
  [out]     PLSA_STRING Credentials
)
{...}

Parameter

[in] LogonId

Pointer ke struktur LUID yang berisi ID sesi dari sesi masuk tempat kredensial akan diambil.

[in] AuthenticationPackage

ID paket autentikasi dari paket autentikasi panggilan. Paket autentikasi hanya boleh mengambil kredensial mereka sendiri.

[in, out] QueryContext

Arahkan ke nilai LONG yang tidak ditandatangani yang digunakan di seluruh panggilan berturut-turut untuk mengambil beberapa kredensial. Pertama kali fungsi ini digunakan, nilai yang ditujukkan oleh argumen ini harus nol. Setelah itu, nilai ini akan diperbarui untuk memungkinkan pengambilan berlanjut di tempat terakhirnya. Oleh karena itu, nilai ini tidak boleh diubah sampai semua kredensial operasi kueri tertentu telah diambil.

[in] RetrieveAllCredentials

Menunjukkan apakah semua kredensial untuk sesi masuk yang ditentukan harus diambil (TRUE), atau hanya yang cocok dengan PrimaryKeyValue (FALSE) yang ditentukan.

[in, out] PrimaryKeyValue

Parameter ini melayani dua tujuan. Jika parameter RetrieveAllCredentialsFALSE, string ini berisi nilai yang akan digunakan sebagai kunci pencarian utama. Dalam hal ini, hanya kredensial milik sesi masuk yang benar dengan kunci pencarian utama yang cocok dengan nilai ini yang akan diambil.

Jika RetrieveAllCredentialsTRUE, nilai string ini pada input diabaikan dan kunci pencarian utama dari setiap kredensial yang diambil dikembalikan dalam string ini.

[out] PrimaryKeyLength

Jika parameter RetrieveAllCredentialsTRUE, parameter ini menerima panjang yang diperlukan untuk menyimpan string PrimaryKeyValue .

[out] Credentials

Penunjuk ke buffer yang menerima kredensial yang diambil. Hanya satu kredensial yang diambil untuk setiap panggilan yang dilakukan. Kredensial dikembalikan dalam buffer yang dialokasikan fungsi dengan memanggil fungsi AllocateLsaHeap . Pemanggil bertanggung jawab untuk membebaskan buffer Kredensial ketika tidak lagi diperlukan, dengan memanggil FreeLsaHeap.

Nilai kembali

Jika fungsi berhasil, fungsi mengembalikan kode NTSTATUS, STATUS_SUCCESS, yang menunjukkan bahwa kredensial berhasil diambil.

Jika fungsi gagal, nilai yang dikembalikan adalah kode NTSTATUS, yang dapat menjadi salah satu nilai berikut atau salah satu Nilai Pengembalian Fungsi Kebijakan LSA.

Menampilkan kode Deskripsi
ERROR_GEN_FAILURE
Tidak ada lagi kredensial yang tersedia. Jika kode ini dikembalikan pada panggilan pertama, tidak ada kredensial yang cocok dengan kriteria pemilihan.
STATUS_MORE_ENTRIES
String yang disediakan untuk menerima PrimaryKeyValue tidak cukup besar untuk menyimpan data. Dalam hal ini, tidak ada data yang diambil, dan nilai QueryContext tidak dimodifikasi. Ini memungkinkan panggilan yang sama untuk dilakukan lagi dengan buffer string yang lebih besar.
STATUS_NO_SUCH_LOGON_SESSION
Sesi masuk yang ditentukan tidak dapat ditemukan.
 

Fungsi LsaNtStatusToWinError mengonversi kode NTSTATUS ke kode kesalahan Windows.

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 ntsecpkg.h

Lihat juga

LSA_DISPATCH_TABLE

LSA_SECPKG_FUNCTION_TABLE