Функция CryptGetOIDFunctionAddress (wincrypt.h)

Функция CryptGetOIDFunctionAddress выполняет поиск соответствия типа кодирования и идентификатора объекта (OID) в списке зарегистрированных и установленных функций. При обнаружении совпадения библиотека DLL, содержащая функцию, при необходимости загружается. При обнаружении совпадения также возвращаются указатель на адрес функции и указатель на дескриптор функции. Количество ссылок на дескриптор функции увеличивается.

Синтаксис

BOOL CryptGetOIDFunctionAddress(
  [in]  HCRYPTOIDFUNCSET  hFuncSet,
  [in]  DWORD             dwEncodingType,
  [in]  LPCSTR            pszOID,
  [in]  DWORD             dwFlags,
  [out] void              **ppvFuncAddr,
  [out] HCRYPTOIDFUNCADDR *phFuncAddr
);

Параметры

[in] hFuncSet

Дескриптор набора функций, полученный ранее при вызове функции CryptInitOIDFunctionSet .

[in] dwEncodingType

Указывает тип кодировки для сопоставления. В настоящее время используются только X509_ASN_ENCODING и PKCS_7_ASN_ENCODING; однако в будущем можно добавить дополнительные типы кодирования. Чтобы сопоставить оба текущих типа кодирования, используйте:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Для функций, которые не используют тип кодирования, задайте для этого параметра нулевое значение.

[in] pszOID

Если слово высокого порядка в OID не равно нулю, pszOID является указателем на строку OID, например "2.5.29.1", или строку ASCII , например "file". Если высокоупорядоченное слово OID равно нулю, слово нижнего порядка указывает числовой идентификатор, который будет использоваться в качестве идентификатора объекта. Полученный OID сопоставляется с функцией, которая была установлена или зарегистрирована в том же OID.

[in] dwFlags

Этот параметр может иметь следующее значение.

Значение Значение
CRYPT_GET_INSTALLED_OID_FUNC_FLAG
Выполняет поиск только по установленному списку функций.

[out] ppvFuncAddr

Указатель на указатель на адрес функции. Если совпадение найдено, ppvFuncAddr указывает на адрес функции.

[out] phFuncAddr

Если совпадение найдено, phFuncAddr указывает на дескриптор функции. Число ссылок для дескриптора увеличивается. Завершив использование дескриптора, отпустите дескриптор, вызвав функцию CryptFreeOIDFunctionAddress .

Примечание По умолчанию выполняется поиск в списках зарегистрированных и установленных функций. Чтобы выполнить поиск только в списке установленных функций, задайте CRYPT_GET_INSTALLED_OID_FUNC_FLAG. Этот флаг задается зарегистрированной функцией, чтобы получить адрес предустановленной функции, которую она заменяла. Например, зарегистрированная функция может обрабатывать новый особый случай и вызывать предустановленную функцию для обработки остальных вариантов.
 

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

Если функция выполнена успешно и найдено совпадение, функция возвращает ненулевое значение (TRUE).

Если функция завершается сбоем или совпадение не найдено, возвращается ноль (FALSE). Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.

Комментарии

Можно вызвать CryptGetOIDFunctionAddress с аргументом pszOID , равным CMSG_DEFAULT_INSTALLABLE_FUNC_OID , чтобы получить устанавливаемую функцию по умолчанию для следующих функций обратного вызова.

Для получения функций по умолчанию присвойте dwEncodingType побитовое или сочетание следующих типов кодирования.

CRYPT_ASN_ENCODINGX509_ASN_ENCODING

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

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

Функции поддержки OID