Регистрация новых функциональных возможностей

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