ICEnroll3::EnumAlgs 方法 (xenroll.h)

[此方法在 Windows Server 2008 和 Windows Vista 中不再可用。]

EnumAlgs 方法检索给定算法类中受当前加密服务提供商 (CSP) 支持的加密算法的 ID。 此方法首先在 ICEnroll3 接口中定义。

语法

HRESULT EnumAlgs(
  [in]  LONG dwIndex,
  [in]  LONG algClass,
  [out] LONG *pdwAlgID
);

参数

[in] dwIndex

指定将检索其 ID 的算法的序号位置。 为第一个算法指定零。

[in] algClass

加密算法类。 此方法返回的 ID 将位于指定的类中。 指定以下值之一:

  • ALG_CLASS_HASH
  • ALG_CLASS_KEY_EXCHANGE
  • ALG_CLASS_MSG_ENCRYPT
  • ALG_CLASS_DATA_ENCRYPT
  • ALG_CLASS_SIGNATURE

[out] pdwAlgID

指向变量的指针,用于接收当前 CSP 支持的加密算法 ID。

返回值

C++

返回值为 HRESULT。 值为 S_OK 表示成功。 如果没有其他要枚举的算法,则返回值ERROR_NO_MORE_ITEMS。

VB

当前 CSP 支持的加密算法 ID。 如果没有其他要枚举的算法,则返回值ERROR_NO_MORE_ITEMS。

注解

有关此方法使用的算法 ID 和类常量,请参阅 Wincrypt.h。

示例

#include <windows.h>
#include <stdio.h>
#include <Xenroll.h>

DWORD     dwAlgID;
DWORD     dwIndex;

BSTR      bstrAlgName = NULL;

HRESULT   hr, hr2;

// Loop through the AlgIDs.
dwIndex = 0;
while ( TRUE )
{
    // Enumerate the alg IDs for a specific class.
    hr = pEnroll->EnumAlgs(dwIndex, ALG_CLASS_SIGNATURE, &dwAlgID);
    if ( S_OK != hr )
    {
       break;
    }

    // Do something with the AlgID.
    // For example, retrieve the corresponding name.
    hr2 = pEnroll->GetAlgName( dwAlgID, &bstrAlgName);
    if ( FAILED( hr2 ) )    
        printf("Failed GetAlgName [%x]\n", hr);
    else
        printf("AlgID: %d Name: %S\n", dwAlgID, bstrAlgName );

    // Reuse the BSTR variable in next iteration.
    if ( NULL != bstrAlgName )
    {
        SysFreeString( bstrAlgName );
        bstrAlgName = NULL;
    }

    // Increment the index.
    dwIndex++;
}


要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 xenroll.h
Library Uuid.lib
DLL Xenroll.dll

另请参阅

CEnroll

ICEnroll3

ICEnroll4