Partager via


Inscription de la nouvelle fonctionnalité

La prise en charge de l’inscription de la nouvelle fonctionnalité dans un registre système doit être fournie dans la nouvelle DLL avec la nouvelle fonction. Les fonctions de support OID fournissent une assistance pour cette inscription. Regsvr32.exe inscrit de nouvelles fonctions. Cet outil est inclus dans Windows.

La nouvelle DLL doit fournir des points d’entrée DllRegisterServer et DllUnregisterServer à utiliser par Regsvr32.exe. Les fonctions CryptoAPI , telles que CryptRegisterOIDFunction ou CryptUnregisterOIDFunction, peuvent être utilisées dans ces points d’entrée, comme illustré dans l’exemple suivant.

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

Cet exemple doit être compilé et lié à la nouvelle DLL. Ces deux points d’entrée, ainsi que le point d’entrée de la fonction, doivent être exportés.

Pour installer la nouvelle fonctionnalité sur un ordinateur, exécutez Regsvr32.exe à partir d’une invite de commandes, en spécifiant le nom et le chemin d’accès de la nouvelle DLL. Regsvr32.exe accède à la fonction CryptRegisterOIDFunction via le point d’entrée de la fonction DllRegisterServer et inscrit la nouvelle fonction et la nouvelle DLL.