Registrieren der neuen Funktionalität
Unterstützung für die Registrierung der neuen Funktionalität in einer Systemregistrierung muss in der neuen DLL zusammen mit der neuen Funktion bereitgestellt werden. OID-Unterstützungsfunktionen bieten Unterstützung bei dieser Registrierung. Regsvr32.exe registriert neue Funktionen. Dieses Tool ist im Lieferumfang Windows.
Die neue DLL muss DllRegisterServer- und DllUnregisterServer-Einstiegspunkte für die Verwendung durch Regsvr32.exe. CryptoAPI-Funktionen wie CryptRegisterOIDFunction oder CryptUnregisterOIDFunctionkönnen innerhalb dieser Einstiegspunkte verwendet werden, wie im folgenden Beispiel gezeigt.
// 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;
}
Dieses Beispiel muss kompiliert und mit der neuen DLL verknüpft werden. Diese beiden Einstiegspunkte müssen zusammen mit dem Funktionseinstiegspunkt exportiert werden.
Um die neue Funktionalität auf einem Computer zu installieren, führen Sie Regsvr32.exe an einer Eingabeaufforderung aus, und geben Sie dabei den Namen und Pfad der neuen DLL an. Regsvr32.exe über den DllRegisterServer-Funktionseinstiegspunkt auf die CryptRegisterOIDFunction-Funktion zu und registriert die neue Funktion und DLL.