Az új funkció regisztrálása

Az új funkciók rendszerregisztrációs adatbázisban való regisztrálásának támogatását az új DLL-ben és az új függvényben kell megadni. OID támogató funkciók nyújtanak segítséget ehhez a regisztrációhoz. Regsvr32.exe új függvényeket regisztrál. Ez az eszköz a Windows részét képezi.

Az új DLL-nek meg kell adnia DllRegisterServer és DllUnregisterServer belépési pontokat a Regsvr32.exeszámára. CryptoAPI függvények, például CryptRegisterOIDFunction vagy CryptUnregisterOIDFunction, használhatók ezeken a belépési pontokon, ahogy az alábbi példában is látható.

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

Ezt a példát az új DLL-be kell lefordítani és csatolni. Ezt a két belépési pontot a függvény belépési pontjával együtt exportálni kell.

Az új funkciók számítógépre való telepítéséhez futtassa a Regsvr32.exe egy parancssorból, és adja meg az új DLL nevét és elérési útját. Regsvr32.exe a CryptRegisterOIDFunction függvényt a DllRegisterServer függvény belépési pontján keresztül éri el, és regisztrálja az új függvényt és a DLL-t.