新しい機能の登録

システム レジストリに新しい機能を登録するためのサポートは、新しい関数と共に新しい DLL で提供する必要があります。 OID サポート関数 は、この登録に関するサポートを提供します。 Regsvr32.exeは新しい関数を登録します。 このツールは Windows に含まれています。

新しい DLL は、Regsvr32.exeで使用する DllRegisterServer エントリ ポイントと DllUnregisterServer エントリ ポイントを提供する必要があります。 次の例に示すように、CryptRegisterOIDFunctionCryptUnregisterOIDFunction などの CryptoAPI 関数は、これらのエントリ ポイント内で使用できます。

//  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 にリンクする必要があります。 これら 2 つのエントリ ポイントと関数エントリ ポイントをエクスポートする必要があります。

コンピューターに新しい機能をインストールするには、コマンド プロンプトからRegsvr32.exeを実行し、新しい DLL の名前とパスを指定します。 Regsvr32.exe DllRegisterServer 関数エントリ ポイントを介して CryptRegisterOIDFunction 関数にアクセスし、新しい関数と DLL を登録します。