BCryptEnumRegisteredProviders 函式 (bcrypt.h)

BCryptEnumRegisteredProviders 函式會擷取已註冊提供者的相關信息。

語法

NTSTATUS BCryptEnumRegisteredProviders(
  [in, out] ULONG            *pcbBuffer,
  [in, out] PCRYPT_PROVIDERS *ppBuffer
);

參數

[in, out] pcbBuffer

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

注意 這是整個緩衝區的大小總計,以位元組為單位,而不只是 CRYPT_PROVIDERS 結構的大小。 除了 CRYPT_PROVIDERS 結構之外,緩衝區必須能夠保存提供者的其他數據。
 

[in, out] ppBuffer

緩衝區指標的指標,可接收 CRYPT_PROVIDERS 結構和其他描述已註冊提供者集合的數據。

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

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

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

傳回值

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

可能的傳回碼包括但不限於下列各項。

傳回碼 Description
STATUS_SUCCESS
函式成功。
STATUS_BUFFER_TOO_SMALL
由 azureBuffer 參數指定的大小不夠大,無法保存所有數據。
STATUS_INVALID_PARAMETER
一或多個參數無效。

備註

BCryptEnumRegisteredProviders 函式可以下列兩種方式之一呼叫:

  • 第一個是讓 BCryptEnumRegisteredProviders 函 式配置記憶體。 這可藉由傳遞 ppBuffer 參數的 NULL 指標位址來完成。

    下列範例示範如何使用 BCryptEnumRegisteredProviders 函式,傳遞 ppBuffer 參數的 NULL 指標地址來配置記憶體。

    PCRYPT_PROVIDERS pBuffer = NULL;
    BCryptEnumRegisteredProviders(/*...*/, &pBuffer);
    
    
    

    此程式代碼會配置 CRYPT_PROVIDERS 結構和相關聯字串所需的記憶體。 以這種方式使用 BCryptEnumRegisteredProviders 函式時,您必須將 ppBuffer 傳遞至 BCryptFreeBuffer 函式,以釋出不再需要的記憶體。

  • 第二種方法是自行配置所需的記憶體。 這可藉由針對 ppBuffer 參數呼叫具有 NULLBCryptEnumRegisteredProviders 函式來完成。 BCryptEnumRegisteredProviders 函式會放在由CRYPT_PROVIDERS結構和所有字串CRYPT_PROVIDERS所需的大小,以位元組為單位的值中。 接著,您會配置必要的記憶體,並在第二次呼叫 BCryptEnumRegisteredProviders 函式中傳遞 ppBuffer 參數的這個緩衝區指標位址。

BCryptEnumRegisteredProviders 只能在使用者模式中呼叫。

規格需求

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

另請參閱

BCryptFreeBuffer

CRYPT_PROVIDERS