Registrazione della nuova funzionalità
Il supporto per la registrazione della nuova funzionalità in un Registro di sistema deve essere fornito nella nuova DLL insieme alla nuova funzione. Le funzioni di supporto OID forniscono assistenza per questa registrazione. Regsvr32.exe registra nuove funzioni. Questo strumento è incluso in Windows.
La nuova DLL deve fornire punti di ingresso DllRegisterServer e DllUnregisterServer da usare da Regsvr32.exe. Le funzioni CryptoAPI, ad esempio CryptRegisterOIDFunction o CryptUnregisterOIDFunction, possono essere usate all'interno di questi punti di ingresso, come illustrato nell'esempio seguente.
// 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;
}
Questo esempio deve essere compilato e collegato alla nuova DLL. Questi due punti di ingresso, insieme al punto di ingresso della funzione, devono essere esportati.
Per installare la nuova funzionalità in un computer, eseguire Regsvr32.exe da un prompt dei comandi, specificando il nome e il percorso della nuova DLL. Regsvr32.exe accede alla funzione CryptRegisterOIDFunction tramite il punto di ingresso della funzione DllRegisterServer e registra la nuova funzione e la DLL.