Регистрация новых функциональных возможностей
Поддержка регистрации новых функций в системном реестре должна предоставляться в новой библиотеке 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 обращается к функции CryptRegisterOIDFunction через точку входа функции DllRegisterServer и регистрирует новую функцию и библиотеку DLL.