共用方式為


驗證函式

驗證函式會根據使用方式進行分類,如下所示:

SSPI 函式

安全性支援提供者介面 (SSPI) 函式屬於下列主要類別。

封裝管理

SSPI 套件管理功能會 起始安全性套件、列舉可用的套件,以及查詢安全性套件的屬性。 下列 SSPI 函式提供安全性套件的管理服務。

函式 描述
EnumerateSecurityPackages 列出可用的安全性套件及其功能。
InitSecurityInterface 擷取安全性支援提供者 (SSP) 分派數據表的指標。
QuerySecurityPackageInfo 擷取指定 之安全性套件的相關信息。 這項資訊包含驗證資訊、 認證和內容大小的界限。

認證管理

SSPI 認證管理功能提供認證句柄、不透明安全性對象的參考,以存取主體。 安全性物件不透明,因為應用程式只能存取句柄,而不是結構的實際內容。

認證內容之內容的所有參考都是透過物件的句柄,而 安全性套件 會取值句柄來存取認證的特定數據。 認證句柄是 {0x00000000, 0x00000000} 与 {0xFFFFFFFF, 0xFFFFFFFE} 之間的 64 位值。

應用程式會使用認證句柄搭配內容管理功能來建立安全性內容

認證管理功能也會釋放認證句柄,並查詢認證的屬性。 目前,與認證相關聯的名稱是唯一可以查詢的屬性。

下列函式會與認證管理搭配使用。

函式 描述
AcquireCredentialsHandle (一般) 取得指定主體之預先存在認證的句柄。
ExportSecurityContext 將安全性內容匯出至內容緩衝區。
FreeCredentialsHandle 釋放認證句柄和相關聯的資源。
ImportSecurityContext 使用 ExportSecurityContext 將導出的安全性內容匯入目前進程。
QueryCredentialsAttributes 擷取認證的屬性,例如與認證相關聯的名稱。

內容管理

SSPI 內容管理功能會建立及使用安全性內容

在通訊連結中,客戶端和伺服器會合作建立共用的安全性內容。 用戶端和伺服器都使用安全性內容搭配訊息支援函式,以確保連線期間的訊息完整性隱私權。

安全性內容是不透明的安全性物件。 應用程式無法使用安全性內容中的資訊。 內容管理功能會建立和使用內容句柄,而安全性套件會取值內容句柄來存取其安全性內容。

內容句柄是 {0x00000000, 0x00000000} 与 {0xFFFFFFFF, 0xFFFFFFFE} 之間的 64 位值。

下列函式會與內容管理搭配使用。

函式 描述
AcceptSecurityContext (一般) 由伺服器用來根據從用戶端接收的不透明訊息來建立安全性內容
ApplyControlToken 將補充安全性訊息套用至現有的安全性內容。
CompleteAuthToken 完成驗證令牌。 傳輸應用程式更新某些訊息參數之後,需要修改安全性資訊的通訊協定,例如 DCE 會使用此函式。
DeleteSecurityContext 釋放安全性內容和相關聯的資源。
FreeContextBuffer 釋放由安全性套件配置的記憶體緩衝區。
ImpersonateSecurityContext 模擬安全性內容,以顯示為系統的用戶端。
InitializeSecurityContext (一般) 用戶端用來起始安全性內容,方法是產生要傳遞至伺服器的不透明訊息。
QueryContextAttributes (一般) 可讓傳輸應用程式查詢安全性套件是否有安全性內容的特定屬性
QuerySecurityContextToken 取得用戶端安全性內容的存取令牌,並直接使用它。
SetContextAttributes 可讓傳輸應用程式設定安全性套件的安全性內容屬性。 此函式僅受安全通道安全性套件支援。
RevertSecurityContext 允許安全性套件停止呼叫端的模擬,並還原自己的安全性內容。

訊息支援

SSPI 訊息支援函式可讓應用程式傳輸和接收防竄改訊息,以及加密和解密訊息。 這些函式會使用包含訊息的一或多個緩衝區,以及內容管理功能建立的安全性內容。 函式的行為會根據連接、 數據報或數據流內容正在使用中而有所不同。 如需這些差異的描述,請參閱 SSPI 內容語意

下列函式提供訊息的安全性支援。

函式 描述
DecryptMessage (一般) 使用安全性內容中的會話密鑰來解密加密的訊息。
EncryptMessage (一般) 使用來自安全性內容的會話密鑰來加密訊息。
MakeSignature 產生訊息的密碼編譯總和檢查碼,也包含排序資訊,以防止訊息遺失或插入。
VerifySignature 使用 MakeSignature 函式驗證發件人所收到的訊息簽章。

由 SSP/AP 實作的函式

下列函式是由安全性支援提供者/驗證套件 (SSP/APs) 中包含的安全性套件所實作。

在下表中,第一組函式是由 Windows XP SSP/AP 安全性套件實作。 第二組函式只會由 SSP/AP 安全性套件實作。

Local Security Authority (LSA) 會使用 SSP/AP 的 SpLsaModeInitialize 函式所提供的SECPKG_FUNCTION_TABLE結構來存取這些函式。

下列函式是由所有驗證套件實作。

函式 描述
LsaApCallPackage 當具有 LSA 受信任連線的登入應用程式呼叫 LsaCallAuthenticationPackage 函式,並指定驗證套件的標識符時,由本地安全機構 (LSA) 呼叫。
LsaApCallPackagePassthrough 傳送至 LsaCallAuthenticationPackage 函式之傳遞登入要求的分派函式
LsaApCallPackageUntrusted 當與 LSA 連線不受信任的應用程式呼叫 LsaCallAuthenticationPackage 函式,並指定驗證套件的識別碼時,由本地安全機構 (LSA) 呼叫。
LsaApInitializePackage 在系統初始化期間由 本地安全機構 (LSA) 呼叫一次,以提供驗證套件初始化本身的機會。
LsaApLogonTerminated 用來在登入會話終止時通知驗證套件。 當參考登入會話的最後一個令牌被刪除時,登入會話就會終止。
LsaApLogonUser 驗證使用者的登入認證。
LsaApLogonUserEx 驗證使用者的登入認證。
LsaApLogonUserEx2 用來驗證使用者初始登入嘗試的使用者登入嘗試。 會為使用者建立新的登入會話,並傳回使用者的驗證資訊。

SSP/AP 安全性套件會實作下列其他函式。

函式 描述
SpAcceptCredentials 本機安全性授權單位 (LSA) 呼叫,以傳遞針對已驗證安全性主體儲存的任何認證的安全性套件。
SpAcceptLsaModeContext 伺服器分派函式,用來建立 伺服器和用戶端共用的安全性內容
SpAcquireCredentialsHandle 呼叫 以取得主體認證的句柄。
SpAddCredentials 用來新增安全性主體認證
SpApplyControlToken 將控件令牌套用至安全性內容 本地安全域 (LSA) 目前未呼叫此函式。
SpDeleteContext 刪除安全性內容
SpDeleteCredentials 安全性套件的主要補充認證清單中刪除認證。
SpFreeCredentialsHandle 釋放透過呼叫 SpAcquireCredentialsHandle 函式取得的認證。
SpGetCredentials 擷取用戶認證。
SpGetExtendedInformation 提供安全性套件擴充資訊。
SpGetInfo 提供安全性套件一般資訊,例如其名稱和功能。
SpGetUserInfo 擷取登入 會話的相關信息。
SPInitialize 本地安全機構 (LSA) 呼叫一次,以提供具有一般安全性資訊和支援函式分派數據表的安全性套件
SpInitLsaModeContext 用戶端分派函式,用來建立伺服器與客戶端之間的安全性內容
SpQueryContextAttributes 擷取安全性內容的屬性
SpQueryCredentialsAttributes 擷取認證的屬性
SpSaveCredentials 補充認證 儲存至用戶物件。
SpSetExtendedInformation 設定安全性套件擴充資訊。
SpShutdown 在卸除 SSP/AP 之前,執行任何必要的清除。
SslCrackCertificate 回 X509Certificate 結構,其中包含指定之憑證 BLOB 中的資訊。
SslEmptyCache 從安全通道快取中移除指定的字串。
SslFreeCertificate 釋放先前呼叫 SslCrackCertificate 函式所配置的憑證。

使用者模式 SSP/AP 實作的函式

下列函式是由可載入至用戶端/伺服器應用程式的安全性支援提供者/驗證套件 (SSP/AP) 所實作。

SSP/AP 表示它會在 SpInitLsaModeContext 和 SpAcceptLsaModeContext 函式的 MappedContext 參數中傳回 TRUE,以實作使用者模式函式。 SpInitLsaModeContext 函式是由傳輸層級應用程式的用戶端使用,而 SpAcceptLsaModeContext 則由伺服器端使用。

將 SSP/AP 載入客戶端進程或伺服器進程是由安全性提供者 DLL 處理,Security.dll或Secur32.dll。 安全性提供者 DLL 會尋找 SSP/AP 所實作的 SpUserModeInitialize 函式位址,並加以呼叫,以載入 SSP/AP。 此函式會傳回一組數據表,其中包含每個 安全性套件中實作之使用者模式函式的指標。

將 SSP/AP 載入用戶端或伺服器進程之後,Local Security Authority (LSA) 會複製安全性內容資訊(由 SpInitLsaModeContext 或 SpAcceptLsaModeContext 傳回),以及進程的任何其他內容相關數據,並呼叫安全性套件的 SpInitUserModeContext 函式。

用戶端/伺服器應用程式會藉由呼叫 安全性支援提供者介面 (SSPI) 函式來存取使用者模式功能。 SSPI 函式會使用 封裝所提供的SECPKG_USER_FUNCTION_TABLE ,由安全性提供者 DLL 對應。

函式 描述
SpCompleteAuthToken 完成驗證令牌。
實作 SSPI CompleteAuthToken 函式。
SpDeleteContext 刪除安全性內容
實作 SSPI DeleteSecurityContext 函式。
SpExportSecurityContext 將安全性內容匯出至另一個進程。
實作 SSPI ExportSecurityContext 函式。
SpFormatCredentials 認證格式化為儲存在用戶物件中。
SpGetContextToken 取得要仿真的令牌。
由 SSPI ImpersonateSecurityContext 函式使用。
SpImportSecurityContext 從另一個進程匯入安全性內容。
實作 SSPI ImportSecurityContext 函式。
SpInitUserModeContext 從已封裝的本機安全性授權單位 (LSA) 模式內容建立使用者模式安全性內容。
SpInstanceInit 初始化 SSP/AP 中的使用者模式安全性套件。
SpMakeSignature 根據指定的訊息和安全性內容產生簽章
實作 SSPI MakeSignature 函 式。
SpMarshallSupplementalCreds 公用格式的補充認證 轉換成適合本機過程調用的格式。
SpQueryContextAttributes 擷取安全性內容的屬性
實作 SSPI QueryContextAttributes (一般) 函式。
SpSealMessage 加密在客戶端與伺服器之間交換的訊息。
實作 SSPI EncryptMessage (一般) 函式。
SpUnsealMessage 解密先前使用 SpSealMessage 函式加密的訊息。
實作 SSPI DecryptMessage (一般) 函式。
SpUserModeInitialize 當安全性支援提供者/驗證套件 (SSP/AP) DLL 載入至用戶端/伺服器應用程式的進程空間時呼叫。 此函式會為 SSP/AP DLL 中的每個安全性套件提供SECPKG_USER_FUNCTION_TABLE數據表。
SpVerifySignature 根據簽章驗證收到的訊息是否正確
實作 SSPI VerifySignature 函式

由 SSP/AP 呼叫的 LSA 函式

本地安全機構 (LSA) 提供下列功能給安全性支援提供者/驗證套件 (SSP/AP) 中部署的安全性套件。 函式可在 LSA_SECPKG_FUNCTION_TABLE 結構中使用,而且可以在 SSP/AP 載入 LSA 的進程空間時呼叫。 下列函式可供所有 AP 使用。

函式 描述
AddCredential 新增用戶 認證
AllocateClientBuffer 在封裝客戶端的位址空間中配置記憶體。
AllocateLsaHeap 在堆積上配置記憶體。 某些傳回 LSA 的資訊預期會使用此函式進行配置。
CopyFromClientBuffer 將客戶端進程的位址空間中的資訊複製到目前進程中的緩衝區。
CopyToClientBuffer 將目前進程中緩衝區的資訊複製到客戶端進程的位址空間。
CreateLogonSession 建立登入會話。
DeleteCredential 刪除用戶認證。
DeleteLogonSession 刪除 LSA 登入工作階段。
FreeClientBuffer 釋放封裝用戶端位址空間中的記憶體。
FreeLsaHeap 解除分配之前由 AllocateLsaHeap 配置的堆積記憶體。
GetCredentials 擷取與登入會話相關聯的認證。

下列函式可供 SSP/AP 使用。

函式 描述
AllocateSharedMemory 配置共用記憶體的區段。
AuditAccountLogon 建立嘗試登入的稽核記錄。
AuditLogon 建立登入會話的稽核線索。
CallPackage 呼叫封裝。
CallPackageEx 呼叫另一個套件。
CallPackagePassthrough 從另一個安全性套件呼叫一個安全性套件。
CancelNotification 取消特殊事件的通知。
ClientCallback 允許安全性套件在用戶端程式中叫用函式。
如需 ClientCallback式原型,請參閱 ClientCallback 函式原型。
CloseSamUser 關閉 Security Accounts Manager 資料庫專案的句柄。
ConvertAuthDataToToken 將授權資料轉換為使用者令牌。
CrackSingleName 將名稱從一種格式轉換成另一種格式。
CreateSharedMemory 建立用戶端與 SSP/AP 之間共用的記憶體區段。
CreateThread 建立新的線程。
CreateToken 建立令牌。
DeleteSharedMemory 刪除共用記憶體的區段。
DuplicateHandle 複製句柄。
FreeReturnBuffer 釋放 LSA 所配置的緩衝區。
FreeSharedMemory 釋放共用記憶體的區段。
GetAuthDataForUser 擷取用戶帳戶的授權數據。
GetCallInfo 擷取最新函數調用的相關信息。
GetClientInfo 擷取安全性套件使用者程序的相關信息。
GetUserAuthData 傳回使用者的授權數據。
GetUserCredentials 尚未實作。
ImpersonateClient 安全性套件 呼叫,以模擬套件使用者。
MapBuffer SecBuffer 結構對應至安全性支援提供者/驗證套件 (SSP/AP) 的地址空間。
OpenSamUser 擷取安全性帳戶管理員 (SAM) 資料庫中用戶帳戶的句柄。
RegisterNotification 提供通知安全性套件的機制。 當事件物件收到訊號或特定系統事件時,可能會以固定間隔發生通知。
SaveSupplementalCredentials 已過時。 請勿使用。
UnloadPackage 卸除安全性支援提供者/驗證套件 (SSP/AP)。
UpdateCredentials 提供一個安全性套件的機制,以通知其他封裝登入會話的認證已變更。

由使用者模式 SSP/APs 呼叫的 LSA 函式

在使用者模式進程中執行的安全性支援提供者/驗證套件 (SSP/AP) 中的安全性套件,可以使用SECPKG_DLL_FUNCTIONS數據表中的指標來存取下列函式。

函式 PSDK 狀態
AllocateHeap 為傳回給本地安全機構 (LSA) 的緩衝區配置記憶體。
FreeHeap 釋放先前使用 AllocateHeap 所配置的記憶體。
RegisterCallback 註冊使用者模式回呼函式。

GINA 匯出函式

GINA DLL 必須匯出下列函式。

注意

Windows Vista 中會忽略 GINA DLL。

函式 描述
WlxActivateUserShell 啟動使用者殼層程式。
WlxDisplayLockedNotice 允許 GINA 顯示鎖定的相關信息,例如鎖定工作站的人員以及鎖定時。
WlxDisplaySASNotice 當沒有任何使用者登入時,Winlogon 會呼叫此函式。
WlxDisplayStatusMessage 當 GINA DLL 應該顯示訊息時,Winlogon 會呼叫此函式。
WlxGetConsoleSwitchCredentials Winlogon 會呼叫此函式,以讀取目前登入用戶的認證,以透明方式將其傳輸至目標會話。
WlxGetStatusMessage Winlogon 會呼叫此函式,以取得 GINA DLL 所顯示的狀態消息。
WlxInitialize Winlogon 會針對計算機上存在的每個視窗站呼叫此函式一次。 操作系統目前支援每個工作站一個視窗月臺。
WlxIsLockOk Winlogon 會在嘗試鎖定工作站之前呼叫此函式。
WlxIsLogoffOk 當使用者起始註銷作業時,Winlogon 會呼叫此函式。
WlxLoggedOnSAS Winlogon 會在使用者登入且工作站未鎖定時收到 安全注意序列 (SAS) 事件時呼叫此函式。
WlxLoggedOutSAS Winlogon 會在未登入使用者時收到 安全注意序列 (SAS) 事件時呼叫此函式。
WlxLogoff Winlogon 會呼叫此函式,以通知 GINA 此工作站上的註銷作業,讓 GINA 執行任何可能需要的註銷作業。
WlxNegotiate WlxNegotiate 函式必須由取代 GINA DLL 實作。 這是 Winlogon 對 GINA DLL 進行的第一次呼叫。 WlxNegotiate 可讓 GINA 確認它支援已安裝的 Winlogon 版本。
WlxNetworkProviderLoad Winlogon 會呼叫此函式來收集有效的驗證和識別資訊。
WlxRemoveStatusMessage Winlogon 會呼叫此函式,告知 GINA DLL 停止顯示狀態消息。
WlxScreenSaverNotify Winlogon 會在啟動螢幕保護程式之前立即呼叫此函式,讓 GINA 能夠與螢幕保護程式互動。
WlxShutdown Winlogon 會在關閉之前呼叫此函式,讓 GINA 執行任何關機工作,例如從讀取器中退出智慧卡
WlxStartApplication 當系統需要在使用者的內容啟動應用程式時,Winlogon 會呼叫此函式。
WlxWkstaLockedSAS Winlogon 會在收到 安全注意序列 (SAS) 且工作站鎖定時呼叫此函式。

登入使用者函式

下列函式提供登入使用者的能力。

函式 描述
LogonUser 嘗試將使用者登入本機計算機。
LogonUserEx 嘗試將使用者登入本機計算機。 此函式是 LogonUser 函式的擴充版本,會擷取登入使用者安全標識碼 (SID)、配置檔和配額限制的相關信息。
LogonUserExExW LogonUserExExW 函式會嘗試將使用者登入本機計算機。 此函式不會在公用標頭中宣告,而且沒有相關聯的匯入連結庫。 您必須使用 LoadLibrary GetProcAddress 函式,動態連結至Advapi32.dll。

Winlogon 支援函式

GINA DLL 可以呼叫下列 Winlogon 支援函式。

注意

Windows Vista 中會忽略 GINA DLL。

函式 由 GINA 呼叫
WlxAssignShellProtection GINA 呼叫,將保護指派給新登入使用者的殼層程式。
WlxChangePasswordNotify GINA 呼叫,表示它已變更密碼。
WlxChangePasswordNotifyEx GINA 呼叫,告知特定網路提供者(或所有網路提供者)密碼已變更。
WlxCloseUserDesktop 由 GINA 呼叫以關閉替代使用者桌面,並在關閉桌面之後清除。
WlxCreateUserDesktop GINA 呼叫以建立使用者的替代應用程式桌面。
WlxDialogBox 由 GINA 呼叫,以從對話框範本建立強制響應對話方塊。
WlxDialogBoxIndirect GINA 呼叫,從記憶體中的對話框範本建立強制響應對話方塊。
WlxDialogBoxIndirectParam GINA 呼叫以初始化對話方塊控制件,然後從記憶體中的對話框範本建立強制回應對話方塊。
WlxDialogBoxParam GINA 呼叫以初始化對話方塊控制件,然後從對話框範本資源建立強制回應對話方塊。
WlxDisconnect 如果啟用終端機服務,則由取代 GINA DLL 呼叫。 GINA 會呼叫此函式,以中斷與終端機服務網路會話的連線。
WlxGetOption GINA 呼叫以擷取選項的目前值。
WlxGetSourceDesktop GINA 呼叫,以判斷 Winlogon 切換至 Winlogon 桌面之前目前桌面的名稱和句柄。
WlxMessageBox 由 GINA 呼叫以建立、顯示及操作消息框。
WlxQueryClientCredentials 如果啟用終端機服務,則由取代 GINA DLL 呼叫。 GINA 會呼叫此函式,以擷取未使用因特網連接器授權之遠端終端機服務客戶端的認證。
WlxQueryConsoleSwitchCredentials GINA 呼叫,以讀取從暫存工作階段的 Winlogon 傳輸至目的地工作階段的 Winlogon 認證。
WlxQueryInetConnectorCredentials 如果啟用終端機服務,則由取代 GINA DLL 呼叫。 GINA 會呼叫此函式,以判斷終端機伺服器是否使用因特網連接器授權,以及擷取 認證 資訊。
WlxQueryTerminalServicesData 由 GINA 呼叫,以在使用者登入之後擷取終端機服務用戶設定資訊。
WlxSasNotify GINA 呼叫,以通知 Winlogon 安全注意序列 (SAS) 事件。
WlxSetContextPointer GINA 呼叫,以指定 Winlogon 傳遞的內容指標做為所有未來對 GINA 函式呼叫的第一個參數。
WlxSetOption GINA 呼叫以設定選項的值。
WlxSetReturnDesktop GINA 呼叫,以指定 Winlogon 在目前安全注意力順序 (SAS) 事件處理函式完成時,將切換至的替代應用程式桌面
WlxSetTimeout GINA 呼叫以變更與對話框相關聯的逾時。 默認逾時為兩分鐘。
WlxSwitchDesktopToUser GINA 呼叫以切換至應用程式桌面。
WlxSwitchDesktopToWinlogon 允許 GINA DLL 切換至 Winlogon 桌面。
WlxUseCtrlAltDel GINA 呼叫,告知 Winlogon 使用標準 CTRL+ALT+DEL 按鍵組合作為安全注意力序列(SAS)。
WlxWin31Migrate 如果啟用終端機服務,則由取代 GINA DLL 呼叫。 GINA 會呼叫此函式,以完成終端機服務客戶端的設定。

網路提供者函式

下列主題提供網路提供者函式的參考資訊。

主題 說明
網路提供者實作的函式 詳細數據可由網路提供者實作的函式。
支援函式 詳細說明操作系統所實作的函式,而且可由網路提供者呼叫。
線上通知函式 當網路資源連線或中斷連線時,需要從 多個提供者路由器 (MPR) 接收通知的應用程式所實作的詳細數據函式。

網路提供者實作的函式

網路提供者可以實作下列函式。 網路提供者支援的唯一功能是 NPGetCaps

函式 描述
NPAddConnection 將本機裝置連線到網路資源。
NPAddConnection3 將本機裝置連線到網路資源。
NPCancelConnection 中斷網路連線。
NPCloseEnum 關閉列舉。
NPDeviceMode 指定裝置的父視窗。 此視窗擁有來自裝置的任何對話框。
NPDirectoryNotify 通知特定目錄作業的網路提供者。
NPEnumResource 根據 NPOpenEnum傳回的句柄執行列舉。
NPFormatNetworkName 以提供者特定格式格式化網路名稱,以在控件中顯示。
NPGetCaps 傳回網路上支援哪些服務的相關信息。
NPGetConnection 擷取連線的相關資訊。
NPGetConnection3 擷取網路連線的相關信息,即使目前已中斷連線也一樣。
NPGetConnectionPerformance 傳回用來存取網路資源之連線的預期效能相關信息。 要求只能用於目前連線的網路資源。
NPGetDirectoryType 決定網路目錄的類型。
NPGetPropertyText 擷取要新增至網路資源之屬性對話框的按鈕名稱。
NPGetResourceInformation 將透過 WNet API 存取的網路資源部分,與透過資源類型專屬 API 存取的元件區隔開。
NPGetResourceParent 擷取瀏覽階層中指定之網路資源的父代。
NPGetUniversalName 擷取網路資源的通用名稱。 NPGetUniversalName 函式可以使用 UNC 格式或較舊的遠端名稱格式擷取此通用名稱。
NPGetUser 擷取目前預設使用者名稱的值,或用來建立網路連線的用戶名稱。
NPOpenEnum 開啟網路資源或現有連線的列舉。 必須呼叫 NPOpenEnum 函式,才能取得列舉的有效句柄。
NPPropertyDialog 當使用者按兩下使用 NPPropertyDialog 函式新增的按鈕時呼叫。 NPPropertyDialog 函式只會針對檔案和目錄網路屬性呼叫。
NPSearchDialog 可讓網路廠商提供自己的瀏覽和搜尋形式,超出 [ 連線 ] 對話框中所呈現的階層式檢視。

支援函式

下列函式是由操作系統實作,而且可由網路提供者呼叫。

函式 描述
WNetSetLastError 設定擴充錯誤資訊。 網路提供者應該呼叫此函式,而不是 SetLastError

線上通知函式

當網路資源連線或中斷連線時,需要從 多個提供者路由器 (MPR) 接收通知的應用程式會實作下列函式。 如需如何撰寫接收這類通知的應用程式的詳細資訊,請參閱 接收連線通知

函式 描述
AddConnectNotify 在每個新增連線作業之前和之後呼叫 (WNetAddConnectionWNetAddConnection2 WNetAddConnection3)。
CancelConnectNotify 在每個取消連線作業之前和之後呼叫 (WNetCancelConnection 或 WNetCancelConnection2)。

LSA 登入函式

下列 本機安全性授權單位 (LSA) 驗證功能會驗證和登入使用者,並提供登入會話資訊。

函式 描述
LsaCallAuthenticationPackage 向驗證套件要求套件特定的服務。
LsaConnectUntrusted 建立與 LSA 不受信任的連線。
LsaDeregisterLogonProcess 中斷與 LSA 的連接,並釋放配置給呼叫端內容的資源。
LsaEnumerateLogonSessions 擷取現有登入會話的本機唯一標識碼 (LUID)。
LsaFreeReturnBuffer 釋放配置給呼叫端之緩衝區的記憶體。
LsaGetLogonSessionData 擷取指定登入會話的相關信息。
LsaLogonUser 根據預存認證驗證使用者登入數據。 如果成功,它會建立新的登入會話,並傳回使用者令牌。
LsaLookupAuthenticationPackage 取得驗證套件的唯一標識碼。
LsaQueryDomainInformationPolicy 從 Policy 物件擷取網域資訊。
LsaQueryForestTrustInformation 擷取指定之 Local Security Authority TrustedDomain 物件的樹系信任資訊。
LsaRegisterLogonProcess 建立與 LSA 伺服器的連線,並驗證呼叫端是否為登入應用程式。
LsaSetDomainInformationPolicy 將網域資訊設定為 Policy 物件。
LsaSetForestTrustInformation 會設定指定之 Local Security Authority TrustedDomain 物件的樹系信任資訊。

驗證套件所實作的函式

自定義驗證套件必須實作這些函式,由本地安全機構 (LSA) 呼叫。 這些函式是由MSV1_0和Microsoft提供的 Kerberos 驗證套件所實作。

函式 描述
LsaApCallPackage 當使用受信任連線的應用程式呼叫 LsaCallAuthenticationPackage 中指定驗證套件的標識符時呼叫。
此函式提供登入應用程式直接與驗證套件通訊的方式。
LsaApCallPackagePassthrough 在呼叫 LsaCallAuthenticationPackage 以取得傳遞登入要求時,呼叫驗證套件的標識符。
LsaApCallPackageUntrusted 當應用程式使用不受信任的連線呼叫 LsaCallAuthenticationPackage 時,呼叫驗證套件的識別碼。 此函式用於與沒有 SeTcbPrivilege 許可權的進程通訊。
LsaApInitializePackage 在系統初始化期間呼叫,以允許驗證套件執行初始化工作。
LsaApLogonTerminated 當登入會話結束時呼叫,以允許驗證套件釋放配置給登入會話的任何資源。
LsaApLogonUser 在呼叫 LsaLogonUser 時呼叫驗證套件時呼叫 此函式會 驗證安全性主體的 登入數據。
LsaApLogonUserEx LsaApLogonUser 相同,不同之處在於它會針對稽核目的傳回工作站名稱。
驗證套件可以實作 LsaApLogonUserLsaApLogonUserEx LsaApLogonUserEx2 不需要全部實作。
LsaApLogonUserEx2 LsaApLogonUserEx 相同,不同之處在於它會傳回安全性主體的主要和補充認證。 驗證套件可以實作 LsaApLogonUserLsaApLogonUserEx LsaApLogonUserEx2 不需要全部實作。

由驗證套件呼叫的 LSA 函式

您可以從自訂驗證套件呼叫下列 Local Security Authority (LSA) 函式。 當 LSA 呼叫 LsaApInitializePackage 來初始化封裝時,它會傳遞支援函式的數據表。

函式 描述
AddCredential 將認證新增至登入會話。
AllocateClientBuffer 在客戶端的位址空間中配置緩衝區。
AllocateLsaHeap 配置必須從驗證套件傳回至 LSA 的緩衝區。
CopyFromClientBuffer 將用戶端位址空間中的緩衝區內容複製到本機緩衝區。
CopyToClientBuffer 將本機緩衝區的內容複製到用戶端的位址空間。
CreateLogonSession 由驗證套件用來建立登入會話。
DeleteCredential 刪除現有的認證。
DeleteLogonSession 清除在判斷使用者的驗證資訊是否合法時所建立的任何登入會話。
FreeClientBuffer 釋放先前使用 AllocateClientBuffer 函式配置的客戶端緩衝區。
FreeLsaHeap 釋放先前使用 AllocateLsaHeap 函式所配置的緩衝區。
GetCredentials 擷取先前由 AddCredential 快取的認證。

子驗證函式

下列子驗證函式可由Microsoft提供的驗證套件呼叫,以提供額外的使用者建立登入驗證。

函式 描述
Msv1_0SubAuthenticationFilter 執行域控制器特定的使用者登入驗證。
Msv1_0SubAuthenticationRoutine 執行用戶端/伺服器特定的驗證。

認證管理功能

下列主題提供認證管理功能的參考資訊。

主題 說明
認證管理UI函式 詳細數據用於認證管理UI的函式。
低階認證管理功能 詳細數據用於低階認證管理的功能。
認證管理通知函式 詳細數據認證管理員在驗證資訊變更時接收通知所實作的函式。

認證管理UI函式

以下是認證管理UI函式。

函式 描述
CredUICmdLinePromptForCredentials 提示並接受來自在命令行程式中工作的使用者的使用者認證資訊。
CredUIConfirmCredentials 確認 CredUIPromptForCredentials CredUICmdLinePromptForCredentials傳回的認證有效性。
CredUIParseUserName 從完整用戶名稱中擷取網域和用戶帳戶名稱。
CredUIPromptForCredentials 顯示接受使用者認證信息的對話框。
CredUIPromptForWindowsCredentials 建立並顯示可設定的對話框,可讓使用者使用本機計算機上安裝的任何認證提供者來提供認證資訊。
CredUIReadSSOCredW 擷取單一登錄認證的用戶名稱。
CredUIStoreSSOCredW 儲存單一登入認證。

低階認證管理功能

以下是低階認證管理功能。

函式 描述
CredDelete 從使用者的認證集合中刪除認證。
CredEnumerate 列出用戶認證集中的認證。
CredFindBestCredential 搜尋認證 管理 (CredMan) 資料庫,以取得與目前登入會話相關聯的一組泛型認證,且最符合指定的目標資源。
CredFree 釋放任何認證管理功能所傳回之緩衝區所使用的記憶體。
CredGetSessionTypes 擷取目前登入會話所支援的最大持續性。
CredGetTargetInfo 擷取具名資源的所有已知目標名稱資訊。
CredIsMarshaledCredential 判斷指定的用戶名稱字串是否為 CredMarshalCredential 先前封送處理的封送處理認證。
CredIsProtected 指定指定的認證是否由先前對 CredProtect 函式的呼叫加密。
CredMarshalCredential 將認證轉換成文字字串。
CredPackAuthenticationBuffer 將字串使用者名稱和密碼轉換成驗證緩衝區。
CredProtect 加密指定的認證,以便只有目前的安全性內容可以解密它們。
CredRead 從使用者的認證集讀取認證。
CredReadDomainCredentials 從使用者的認證集讀取網域認證。
CredRename 從使用者的認證集重新命名認證。
CredUnmarshalCredential 將封送處理認證字串轉換回其非封送處理形式。
CredUnPackAuthenticationBuffer 將呼叫 CredUIPromptForWindowsCredentials 函式傳回的驗證緩衝區轉換成字串使用者名稱和密碼。
CredUnprotect 解密先前使用 CredProtect 函式加密的認證。
CredWrite 建立新的認證或修改用戶認證集中的現有認證。
CredWriteDomainCredentials 將網域認證寫入至使用者的認證集。

認證管理通知函式

下列函式是由認證管理員實作,以在驗證資訊變更時接收通知。

函式 描述
NPLogonNotify MPR 會呼叫此函式,以通知認證管理員已發生登入事件,讓認證管理員傳回登入腳本。
NPPasswordChangeNotify MPR 會呼叫此函式,以通知認證管理員密碼變更事件。

智慧卡函式

智慧卡 SDK 提供下列功能。

函式 描述
GetOpenCardName SCardUIDlgSelectCard 取代,其會顯示智慧卡 [選取卡片] 對話方塊。
SCardAccessStartedEvent 取得智慧卡資源管理員啟動時的事件句柄。
SCardAddReaderToGroup 將讀取器新增至讀取器群組。
SCardAudit 將事件訊息寫入 Windows 應用程式記錄檔Microsoft-Windows-SmartCard-Audit/Authentication。
SCardBeginTransaction 啟動交易
SCardCancel 終止內容中的所有未完成動作。
SCardCancelTransaction 保留供未來使用。
SCardConnect 建立呼叫端應用程式與智慧卡之間的連線。
SCardControl 在呼叫 SCardConnect 之後,取得讀取器的直接控制權。
SCardDisconnect 終止呼叫應用程式與智慧卡之間的連線。
SCardEndTransaction 完成 交易
SCardEstablishContext 建立資源管理員內容來存取智慧卡資料庫。
SCardForgetCardType 智慧卡子系統移除先前定義的智慧卡。
SCardForgetReader 從智慧卡子系統移除先前定義的讀取器。
SCardForgetReaderGroup 從智慧卡子系統移除先前定義的讀取器群組。
SCardFreeMemory 釋放資源管理員配置的記憶體。
SCardGetAttrib 從指定的讀取器、驅動程式或智慧卡取得目前的讀取器屬性。
SCardGetCardTypeProviderName 取得提供卡片名稱和提供者類型的提供者名稱。
SCardGetDeviceTypeId 取得指定讀取器名稱之卡片讀取器的裝置類型識別碼。 此函式不會影響讀取器的狀態。
SCardGetProviderId 取得智慧卡主要服務提供者標識碼(GUID)。
SCardGetReaderDeviceInstanceId 取得指定讀取器名稱之卡片讀取器的裝置實例標識碼。 此函式不會影響讀取器的狀態。
SCardGetReaderIcon 取得指定讀取器名稱之智慧卡讀取器的圖示。
SCardGetStatusChange 封鎖執行,直到讀取器的狀態變更為止。
SCardGetTransmitCount 擷取自插入指定卡片讀取器後已完成的傳輸作業數目。
SCardIntroduceCardType 引進智慧卡子系統的新智慧卡
SCardIntroduceReader 引進智慧卡子系統的新讀取器。
SCardIntroduceReaderGroup 將新的讀取器群組引入智慧卡子系統。
SCardIsValidContext 驗證智慧卡內容句柄。
SCardListCards 提供已導入子系統的智慧卡清單。
SCardListInterfaces 提供指定智慧卡所提供的介面清單。
SCardListReaderGroups 提供已導入子系統的讀取器群組清單。
SCardListReaders 提供已導入子系統的讀取器清單。
SCardListReadersWithDeviceInstanceId 取得已提供裝置實例標識碼的讀取器清單。 此函式不會影響讀取器的狀態。
SCardLocateCards 找出符合指定 ATR 字串的卡片。
SCardLocateCardsByATR 找出符合指定 ATR 字串的卡片。
SCardReadCache 從智慧卡資源管理員所維護的全域快取擷取名稱/值組的值部分。
SCardReconnect 重新建立從呼叫端應用程式到智慧卡的現有連線。
SCardReleaseContext 關閉已建立 的資源管理員內容
SCardReleaseStartedEvent 遞減使用 SCardAccessStartedEvent 函式取得之句柄的參考計數。
SCardRemoveReaderFromGroup 從現有的讀取器群組中移除讀取器。
SCardSetAttrib 設定指定的讀取器屬性。
SCardSetCardTypeProviderName 設定卡片名稱和提供者類型的提供者名稱。
SCardStatus 取得讀取器目前 的狀態
SCardTransmit 將服務要求傳送至智慧卡。
SCardUIDlgSelectCard 顯示 [智慧卡選取卡片] 對話框。
SCardWriteCache 將智慧卡的名稱/值組寫入智慧卡資源管理員所維護的全域快取。

SASL 函式

簡單驗證和安全性層 (SASL) 提供下列功能。

函式 描述
SaslAcceptSecurityContext 包裝 SSPI AcceptSecurityContext (一般) 函式的標準呼叫,並包含建立 SASL 伺服器 Cookie。
SaslEnumerateProfiles 列出提供SASL介面的套件。
SaslGetContextOption 擷取指定 SASL 內容的指定屬性。
SaslGetProfilePackage 傳回指定封裝的封裝資訊。
SaslIdentifyPackage 傳回符合指定SASL交涉緩衝區的交涉前置詞。
SaslInitializeSecurityContext 包裝 SSPI InitializeSecurityContext (一般) 函式的標準呼叫,並從伺服器處理 SASL 伺服器 Cookie。
SaslSetContextOption 設定指定SASL內容之指定屬性值。

其他函式

以下是用於驗證的其他函式。

函式 描述
AddSecurityPackage 將安全性支援提供者新增至 Microsoft Negotiate支援的提供者清單。
ChangeAccountPassword 使用指定的 安全性支援提供者,變更 Windows 網域帳戶的密碼。
CredMarshalTargetInfo 將指定的目標串行化為位元組值的陣列。
DeleteSecurityPackage 從 Microsoft Negotiate 支援的提供者清單中刪除安全性支援提供者。
LsaManageSidNameMapping 從向 LSA 查閱服務註冊的對應集新增或移除 SID/名稱對應。
LsaOpenPolicy 開啟本機或遠端系統上 Policy 物件的句柄
LsaQueryInformationPolicy 擷取 Policy 物件的相關信息
LsaSetInformationPolicy 修改 Policy 物件中的資訊。
NPFMXEditPerm 可讓網路廠商提供自己的許可權編輯器對話方塊。
NPFMXGetPermCaps 擷取許可權編輯器的功能。 傳回值是位掩碼,表示要啟用檔案管理員中哪些 安全性 功能表項。
NPFMXGetPermHelp 當選取 [檔案管理員的安全性] 功能表中的功能表項並按下 F1 時,擷取許可權編輯器對話框的說明檔和說明內容。
SeciAllocateAndSetIPAddress 設定要出現在安全性稽核事件中的呼叫端IP位址。
SeciFreeCallContext 釋放 SeciAllocateAndSetIPAddress配置的記憶體。
SpGetCredUIContextFn 從認證提供者擷取內容資訊。
SpLsaModeInitialize 為 LSA 提供 SSP/AP DLL 中每個 安全性套件 所實作之函式的指標。
SpQueryMetaDataFn 在起始安全性內容時,從安全性支援提供者 (SSP) 取得元數據。
SpUpdateCredentialsFn 更新與指定內容相關聯的認證。
SspiCompareAuthIdentities 比較兩個指定的認證。
SspiCopyAuthIdentity 建立指定不透明認證結構的複本。
SspiDecryptAuthIdentity 解密指定的加密認證。
SspiEncodeAuthIdentityAsStrings 將指定的驗證識別編碼為三個字串。
SspiEncodeStringsAsAuthIdentity 將一組三個認證字串編碼為驗證身分識別結構。
SspiEncryptAuthIdentity 加密指定的識別結構。
SspiExcludePackage 建立新的身分識別結構,該結構是修改的指定識別結構複本,以排除指定的 安全性支援提供者 (SSP)。
SspiFreeAuthIdentity 釋放配置給指定識別結構的記憶體。
SspiGetCredUIContext 從認證提供者擷取內容資訊。
SspiGetTargetHostName 取得與指定目標相關聯的主機名。
SspiIsAuthIdentityEncrypted 指出指定的識別結構是否已加密。
SspiIsPromptingNeeded 指出在呼叫 InitializeSecurityContext 或 AcceptSecurityContext 函式之後傳回的錯誤是否需要對 SspiPromptForCredentials 函式進行額外的呼叫。
SspiLocalFree 釋放與指定緩衝區相關聯的記憶體。
SspiMarshalAuthIdentity 將指定的識別結構串行化為位元組數位。
SspiPrepareForCredRead 從指定的識別結構產生目標名稱和認證類型。
SspiPrepareForCredWrite 從識別結構產生值,這個識別結構可以當做 CredWrite 函式呼叫中的參數值傳遞。
SspiPromptForCredentials 允許安全性支援提供者介面(SSPI) 應用程式提示使用者輸入認證。
SspiUnmarshalAuthIdentity 將指定的位元組值陣列還原串行化為識別結構。
SspiUnmarshalCredUIContext 還原串行化認證提供者在先前呼叫 ICredentialProvider::SetSerialization 方法時取得的認證 資訊。
SspiUpdateCredentials 更新與指定內容相關聯的認證。
SspiValidateAuthIdentity 指出指定的識別結構是否有效。
SspiZeroAuthIdentity 以零填滿與指定識別結構相關聯的記憶體區塊。
WlxQueryTsLogonCredentials 由取代 GINA DLL 呼叫,以在啟用終端機服務時擷取認證資訊。 GINA DLL 接著可以使用這項資訊自動填入登入方塊,並嘗試登入使用者。