Поделиться через


Метод ICEnroll3::EnumAlgs (xenroll.h)

[Этот метод больше недоступен для использования в Windows Server 2008 и Windows Vista.]

Метод EnumAlgs извлекает идентификаторы криптографических алгоритмов в заданном классе алгоритмов, поддерживаемые текущим поставщиком служб шифрования (CSP). Этот метод был впервые определен в интерфейсе ICEnroll3 .

Синтаксис

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

Параметры

[in] dwIndex

Указывает порядковый номер алгоритма, идентификатор которого будет извлечен. Укажите ноль для первого алгоритма.

[in] algClass

Класс алгоритма шифрования. Идентификаторы, возвращаемые этим методом, будут находиться в указанном классе. Укажите одно из следующих значений:

  • ALG_CLASS_HASH
  • ALG_CLASS_KEY_EXCHANGE
  • ALG_CLASS_MSG_ENCRYPT
  • ALG_CLASS_DATA_ENCRYPT
  • ALG_CLASS_SIGNATURE

[out] pdwAlgID

Указатель на переменную для получения идентификатора алгоритма шифрования, поддерживаемого текущим поставщиком служб конфигурации.

Возвращаемое значение

C++

Возвращаемое значение — HRESULT. Значение S_OK указывает на успешное выполнение. Если алгоритмов для перечисления больше нет, возвращается значение, ERROR_NO_MORE_ITEMS.

VB

Идентификатор алгоритма шифрования, поддерживаемый текущим поставщиком служб конфигурации. Если алгоритмов для перечисления больше нет, возвращается значение, ERROR_NO_MORE_ITEMS.

Комментарии

Сведения об идентификаторах алгоритма и константах класса, используемых этим методом, см. в разделе 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
Header xenroll.h
Библиотека Uuid.lib
DLL Xenroll.dll

См. также раздел

CEnroll

ICEnroll3

ICEnroll4