Registro de la nueva funcionalidad

La compatibilidad con el registro de la nueva funcionalidad en un registro del sistema debe proporcionarse en el nuevo archivo DLL junto con la nueva función. Las funciones de soporte técnico de OID proporcionan ayuda con este registro. Regsvr32.exe registra nuevas funciones. Esta herramienta se incluye con Windows.

El nuevo archivo DLL debe proporcionar puntos de entrada DllRegisterServer y DllUnregisterServer para su uso por Regsvr32.exe. Las funciones CryptoAPI , como CryptRegisterOIDFunction o CryptUnregisterOIDFunction, se pueden usar dentro de estos puntos de entrada, como se muestra en el ejemplo siguiente.

//  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;
}

Este ejemplo debe compilarse y vincularse al nuevo archivo DLL. Estos dos puntos de entrada, junto con el punto de entrada de la función, deben exportarse.

Para instalar la nueva funcionalidad en un equipo, ejecute Regsvr32.exe desde un símbolo del sistema, especificando el nombre y la ruta de acceso del nuevo archivo DLL. Regsvr32.exe accede a la función CryptRegisterOIDFunction a través del punto de entrada de la función DllRegisterServer y registra la nueva función y DLL.