CryptRegisterOIDFunction 函数 (wincrypt.h)

CryptRegisterOIDFunction 函数注册一个 DLL,其中包含要为指定的编码类型、函数名称和对象标识符调用的函数 (OID) 。

默认情况下,新函数名称安装在列表的末尾。 若要在已安装函数之前注册新函数,请调用 CryptSetOIDFunctionValueValue 函数,其中 dwValueType 设置为 REG_DWORDpwszValueName 设置为 CRYPT_OID_REG_FLAGS_VALUE_NAME。

CRYPT_OID_REG_FLAGS_VALUE_NAME定义为 L“CryptFlags”。

除了注册 DLL 之外,还可以重写要调用的函数的名称。 例如,pszFuncName 参数可以设置为 CryptDllEncodeObject,pszOverrideFuncName 参数设置为 MyEncodeXyz。 然后,可以使用名称 MyEncodeXyz 引用 CryptDllEncodeObject 的新形式。 这允许 DLL 导出多个 OID 函数,以获取相同的函数名称,而无需插接自己的 OID 调度程序函数。

语法

BOOL CryptRegisterOIDFunction(
  [in] DWORD   dwEncodingType,
  [in] LPCSTR  pszFuncName,
  [in] LPCSTR  pszOID,
  [in] LPCWSTR pwszDll,
  [in] LPCSTR  pszOverrideFuncName
);

参数

[in] dwEncodingType

指定要匹配的编码类型。 目前,仅使用X509_ASN_ENCODING和PKCS_7_ASN_ENCODING:但是,将来可能会添加其他编码类型。 若要匹配当前两种编码类型,请使用:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。

[in] pszFuncName

正在注册的函数的名称。

[in] pszOID

要注册的函数的 OID。 如果 OID 的高阶字非零, 则 pszOID 是指向 OID 字符串(如“2.5.29.1”)或 ASCII 字符串(如“file”)的指针。如果 OID 的高序字为零,则低序字将指定要用作对象标识符的数字标识符。

[in] pwszDll

要注册的 DLL 文件的名称。 加载 DLL 之前,它可以包含要通过使用 ExpandEnvironmentStrings 函数进行扩展的环境变量字符串。

[in] pszOverrideFuncName

指定 DLL 中导出的函数的名称的字符串。 如果 pszOverrideFuncNameNULL,则使用 pszFuncName 指定的函数名称。

返回值

如果函数成功,则返回值为非零 (TRUE) 。

如果函数失败,则返回值为零, (FALSE) 。

注解

使用完 OID 函数后,通过调用 CryptUnregisterOIDFunction 函数来注销它。

要求

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

另请参阅

CryptSetOIDFunctionValue

CryptUnregisterOIDFunction

OID 支持函数