Partilhar via


Registrando a nova funcionalidade

Suporte para registrar a nova funcionalidade em um registro do sistema deve ser fornecido na nova DLL juntamente com a nova função. Funções de OID de Suporte fornecem assistência com este registo. Regsvr32.exe regista novas funções. Esta ferramenta está incluída no Windows.

A nova DLL deve fornecer DllRegisterServer e DllUnregisterServer pontos de entrada para uso por Regsvr32.exe. funções de CryptoAPI, como CryptRegisterOIDFunction ou CryptUnregisterOIDFunction, podem ser usadas dentro desses pontos de entrada, conforme mostrado no exemplo a seguir.

//  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 exemplo deve ser compilado e vinculado à nova DLL. Esses dois pontos de entrada, juntamente com o ponto de entrada da função, devem ser exportados.

Para instalar a nova funcionalidade em um computador, execute Regsvr32.exe a partir de um prompt de comando, especificando o nome e o caminho da nova DLL. Regsvr32.exe acede à função CryptRegisterOIDFunction através do ponto de entrada da função DllRegisterServer e regista a nova função e a DLL.