注册新功能

必须在新的 DLL 中以及新函数中提供对在系统注册表中注册新功能的支持。 OID 支持函数 提供有关此注册的帮助。 Regsvr32.exe注册新函数。 此工具包含在 Windows 中。

新 DLL 必须提供 DllRegisterServerDllUnregisterServer 入口点供Regsvr32.exe使用。 CryptoAPI 函数(如 CryptRegisterOIDFunctionCryptUnregisterOIDFunction)可在这些入口点中使用,如以下示例所示。

//  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通过 DllRegisterServer 函数入口点访问 CryptRegisterOIDFunction 函数,并注册新函数和 DLL。