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

备注

可以将 pszOID 参数设置为 CMSG_DEFAULT_INSTALLABLE_FUNC_OID 调用 CryptGetOIDFunctionAddress,以获取以下回调函数的默认可安装函数。

若要检索默认函数,请将 dwEncodingType 设置为以下编码类型的按位 OR 组合。

CRYPT_ASN_ENCODINGX509_ASN_ENCODING

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 wincrypt.h
Library Crypt32.lib
DLL Crypt32.dll

另请参阅

OID 支持函数