注册新功能
必须在新的 DLL 中以及新函数中提供对在系统注册表中注册新功能的支持。 OID 支持函数 提供有关此注册的帮助。 Regsvr32.exe注册新函数。 此工具包含在 Windows 中。
新 DLL 必须提供 DllRegisterServer 和 DllUnregisterServer 入口点供Regsvr32.exe使用。 CryptoAPI 函数(如 CryptRegisterOIDFunction 或 CryptUnregisterOIDFunction)可在这些入口点中使用,如以下示例所示。
// The DllRegisterServer Entry Point
STDAPI DllRegisterServer(void)
{
if(!CryptRegisterOIDFunction(
X509_ASN_ENCODING, // Encoding type
CRYPT_OID_ENCODE_OBJECT_FUNC, // Function name
szOID_NEW_CERTIFICATE_TYPE, // OID
L"NewCert.dll", // Dll name
L"NewCertificateTypeEncodeObject" // Override function
)) // name
{
return E_FAIL;
}
else
{
return S_OK;
}
}
// The DllUnregisterServer Entry Point
STDAPI DllUnregisterServer(void)
{
HRESULT hr = S_OK;
if(!CryptUnregisterOIDFunction(
X509_ASN_ENCODING, // Encoding type
CRYPT_OID_ENCODE_OBJECT_FUNC, // Function name
szOID_NEW_CERTIFICATE_TYPE // OID
))
{
if(ERROR_FILE_NOT_FOUND != GetLastError())
hr = E_FAIL;
}
return hr;
}
必须编译此示例并将其链接到新的 DLL 中。 必须导出这两个入口点以及函数入口点。
若要在计算机上安装新功能,请从命令提示符运行 Regsvr32.exe,并指定新 DLL 的名称和路径。 Regsvr32.exe通过 DllRegisterServer 函数入口点访问 CryptRegisterOIDFunction 函数,并注册新函数和 DLL。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈