Registrando a nova funcionalidade
O suporte para registrar a nova funcionalidade em um registro do sistema deve ser fornecido na nova DLL junto com a nova função. As funções de suporte do OID fornecem assistência com esse registro. Regsvr32.exe registra novas funções. Essa ferramenta está incluída no Windows.
A nova DLL deve fornecer pontos de entrada DllRegisterServer e DllUnregisterServer para uso por Regsvr32.exe. As funções CryptoAPI , como CryptRegisterOIDFunction ou CryptUnregisterOIDFunction, podem ser usadas nesses pontos de entrada, conforme mostrado no exemplo a seguir.
// 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;
}
Este exemplo deve ser compilado e vinculado à nova DLL. Esses dois pontos de entrada, juntamente com o ponto de entrada da função, devem ser exportados.
Para instalar a nova funcionalidade em um computador, execute Regsvr32.exe em um prompt de comando, especificando o nome e o caminho da nova DLL. Regsvr32.exe acessa a função CryptRegisterOIDFunction por meio do ponto de entrada da função DllRegisterServer e registra a nova função e a DLL.