Share via


BCryptResolveProviders 函式 (bcrypt.h)

BCryptResolveProviders 函式會取得所有符合指定準則之提供者的集合。

語法

NTSTATUS BCryptResolveProviders(
  [in, optional] LPCWSTR              pszContext,
  [in, optional] ULONG                dwInterface,
  [in, optional] LPCWSTR              pszFunction,
  [in, optional] LPCWSTR              pszProvider,
  [in]           ULONG                dwMode,
  [in]           ULONG                dwFlags,
  [in, out]      ULONG                *pcbBuffer,
  [in, out]      PCRYPT_PROVIDER_REFS *ppBuffer
);

參數

[in, optional] pszContext

Null 終止 Unicode 字串的指標,其中包含要取得提供者之內容的標識碼。 如果此值設定為 NULL 或空字串,則會假設預設內容。

[in, optional] dwInterface

提供者必須支持的介面標識碼。 這必須是其中一個 CNG 介面識別碼。 如果 pszFunction 參數不是 NULL 或空字串,您可以將 dwInterface 設定為零,以強制函式推斷介面。

[in, optional] pszFunction

Null 終止 Unicode 字串的指標,其中包含提供者必須支持的演算法或函式識別碼。 這可以是其中一個標準 CNG 演演算法標識碼 ,或是另一個已註冊演算法的標識碼。 如果 dwInterface 設定為非零值, 則 pszFunction 可以是 NULL ,以包含所有演算法和函式。

[in, optional] pszProvider

Null 終止 Unicode 字串的指標,其中包含要擷取的提供者名稱。 如果此參數為 NULL,則會包含所有提供者。

此參數可讓您指定特定提供者,以擷取多個提供者符合其他準則的事件。

[in] dwMode

指定要擷取的提供者類型。 這可以是下列其中一個值。

意義
CRYPT_UM
擷取使用者模式提供者。
CRYPT_KM
擷取核心模式提供者。
CRYPT_MM
擷取使用者模式和核心模式提供者。

[in] dwFlags

一組旗標,可修改此函式的行為。

這可以是零或下列一或多個值的組合。

意義
CRYPT_ALL_FUNCTIONS
1
此函式會擷取每個符合指定準則的提供者所支援的所有函式。 如果未指定此旗標,此函式只會擷取符合指定準則之提供者或提供者的第一個函式。
CRYPT_ALL_PROVIDERS
2
此函式會擷取符合指定準則的所有提供者。 如果未指定此旗標,此函式只會擷取符合指定準則的第一個提供者。

[in, out] pcbBuffer

在專案上, DWORD 值的指標包含 ppBuffer 參數所指向緩衝區的大小,以位元組為單位。 結束時,這個值會接收複製到緩衝區的位元組數目,或緩衝區所需的大小,以位元組為單位。

[in, out] ppBuffer

接收符合指定準則之提供者集合 之CRYPT_PROVIDER_REFS 指標的位址。

如果此參數為 NULL,則此函式會 傳回STATUS_SUCCESS ,並將它放在 由STATUS_SUCCESS 參數所指向的值,也就是所有數據的必要大小,以位元組為單位。

如果此參數是 NULL 指標的位址,此函式會配置所需的記憶體、使用提供者的相關信息填入記憶體,並將指標放在此參數中。 當您完成使用此記憶體時,請將此指標傳遞至 BCryptFreeBuffer 函 式來釋放它。

如果此參數是非 NULL 指標的位址,此函式會將提供者資訊複製到此緩衝區。 其參數必須包含整個緩衝區的大小,以位元組為單位。 如果緩衝區不夠大,無法保存所有提供者資訊,此函式會 傳回STATUS_BUFFER_TOO_SMALL

傳回值

傳回狀態代碼,指出函式的成功或失敗。

可能的傳回碼包括但不限於下列專案。

傳回碼 Description
STATUS_SUCCESS
函式成功。
STATUS_BUFFER_TOO_SMALL
由參數指定的大小不夠大,無法保存所有數據。
STATUS_INVALID_PARAMETER
一或多個參數無效。
STATUS_NOT_FOUND
找不到符合所有指定準則的提供者。

備註

BCryptResolveProviders 可以從使用者模式或核心模式呼叫。 核心模式呼叫端必須在 IRQL PASSIVE_LEVEL執行。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 bcrypt.h
程式庫 Bcrypt.lib
Dll Bcrypt.dll