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 結構的指標,其中包含要從中擷取認證之登入會話的會話標識碼。
[in] AuthenticationPackage
呼叫驗證套件的驗證套件標識碼。 驗證套件應該只擷取自己的認證。
[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原則函數傳回值。
傳回碼 | Description |
---|---|
|
沒有其他認證可供使用。 如果在第一次呼叫時傳回此程式代碼,則沒有符合選取準則的認證。 |
|
提供給接收 PrimaryKeyValue 的字串不夠大,無法保存數據。 在此情況下,不會擷取任何數據,而且不會修改 QueryContext 值。 這可讓相同的呼叫再次使用較大的字串緩衝區進行。 |
|
找不到指定的登入工作階段。 |
LsaNtStatusToWinError 函式會將NTSTATUS程式碼轉換為 Windows 錯誤碼。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | ntsecpkg.h |