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,此字串會包含要當做主要查閱索引鍵使用的值。 在此情況下,只會擷取屬於正確登入會話的認證,且主要查閱機碼符合此值。

如果 RetrieveAllCredentialsTRUE,則會忽略輸入上的這個字串值,並在此字串中傳回所擷取之每個認證的主要查閱索引鍵。

[out] PrimaryKeyLength

如果 RetrieveAllCredentials 參數為 TRUE,此參數會收到儲存 PrimaryKeyValue 字串所需的長度。

[out] Credentials

接收所擷取認證的緩衝區指標。 每個呼叫只會擷取一個認證。 此認證會在呼叫 AllocateLsaHeap 函式所配置的緩衝區中傳回。 呼叫 FreeLsaHeap 時,呼叫者必須負責釋放不再需要的認證緩衝區。

傳回值

如果函式成功,函式會傳回NTSTATUS程式代碼,STATUS_SUCCESS,指出已成功擷取認證。

如果函式失敗,傳回值為NTSTATUS程式碼,可以是下列其中一個值或其中一個 LSA原則函數傳回值

傳回碼 Description
ERROR_GEN_FAILURE
沒有其他認證可供使用。 如果在第一次呼叫時傳回此程式代碼,則沒有符合選取準則的認證。
STATUS_MORE_ENTRIES
提供給接收 PrimaryKeyValue 的字串不夠大,無法保存數據。 在此情況下,不會擷取任何數據,而且不會修改 QueryContext 值。 這可讓相同的呼叫再次使用較大的字串緩衝區進行。
STATUS_NO_SUCH_LOGON_SESSION
找不到指定的登入工作階段。
 

LsaNtStatusToWinError 函式會將NTSTATUS程式碼轉換為 Windows 錯誤碼。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 ntsecpkg.h

另請參閱

LSA_DISPATCH_TABLE

LSA_SECPKG_FUNCTION_TABLE