LSA_GET_CREDENTIALS回调函数 (ntsecpkg.h)
检索与登录会话关联的凭据。
较新的身份验证包(如 Kerberos)不使用此函数。
语法
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
)
{...}
参数
[in] LogonId
指向 LUID 结构的指针,该结构包含要从中检索凭据的登录会话的会话 ID。
[in] AuthenticationPackage
调用身份验证包的身份验证包 ID。 身份验证包应仅检索其自己的凭据。
[in, out] QueryContext
指向跨连续调用用于检索多个凭据的无符号 LONG 值的指针。 首次使用此函数时,此参数指向的值应为零。 此后,此值将更新,以允许在中断的位置继续检索。 因此,在检索到给定查询操作的所有凭据之前,不应更改此值。
[in] RetrieveAllCredentials
指示是应 (TRUE) 检索指定登录会话的所有凭据,还是仅检索与指定 PrimaryKeyValue 匹配的凭据 (FALSE) 。
[in, out] PrimaryKeyValue
此参数有两个用途。 如果 RetrieveAllCredentials 参数为 FALSE,则此字符串包含要用作主查找键的值。 在这种情况下,将仅检索属于正确登录会话且主查找键与此值匹配的凭据。
如果 RetrieveAllCredentials 为 TRUE,则忽略输入时此字符串的值,并且检索到的每个凭据的主查找键将在此字符串中返回。
[out] PrimaryKeyLength
如果 RetrieveAllCredentials 参数为 TRUE,则此参数接收存储 PrimaryKeyValue 字符串所需的长度。
[out] Credentials
指向接收检索到的凭据的缓冲区的指针。 每次调用仅检索一个凭据。 凭据在函数通过调用 AllocateLsaHeap 函数分配的缓冲区中返回。 调用方负责在不再需要 凭据 缓冲区时通过调用 FreeLsaHeap 来释放该缓冲区。
返回值
如果函数成功,该函数将返回 NTSTATUS 代码(STATUS_SUCCESS),指示已成功检索凭据。
如果函数失败,则返回值为 NTSTATUS 代码,可以是以下值之一或 LSA 策略函数返回值之一。
返回代码 | 说明 |
---|---|
|
不再有可用的凭据。 如果在第一次调用时返回此代码,则没有与选择条件匹配的凭据。 |
|
为接收 PrimaryKeyValue 而提供的字符串不够大,无法容纳数据。 在这种情况下,不会检索任何数据,并且不会修改 QueryContext 值。 这允许使用更大的字符串缓冲区再次进行相同的调用。 |
|
找不到指定的登录会话。 |
LsaNtStatusToWinError 函数将 NTSTATUS 代码转换为 Windows 错误代码。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | ntsecpkg.h |