16.01.2004 15:47:06Delphi & CryptoAPI Ответов: 0
Евгений
Подскажите пожалуйста, где я не прав.
пишу следующий код:

procedure My_Procedure;
....
fillChar(ChainPara,SizeOf(ChainPara),0);
ChainPara.cbSize:=SizeOf(ChainPara);
while true do
begin
pCertContext := CertEnumCertificatesInStore(
vhCertStore,
pCertContext);
if not assigned (pCertContext) then break;

if(CertGetCertificateChain(
0, // use the default chain engine
pCertContext, // pointer to the end certificate
nil, // use the default time
nil, // search no additional stores
@ChainPara, // use AND logic and enhanced key usage
// as indicated in the ChainPara
// data structure
CERT_CHAIN_REVOCATION_CHECK_END_CERT,//dwFlags,
nil, // currently reserved
pChainContext)) Then // return a pointer to the chain created
begin
printf(’The chain has been created.’);
end
else
begin
HandleError(’The chain could not be created.’);
end;

//--------------------------------------------------------------------
// Free both chains.
CertFreeCertificateChain(pChainContext);

end; // end while loop
...
end;// end procedure

при вызове CertFreeCertificateChain(pChainContext) программа начинает вылетать с ошибкой доступа к памяти.
иногда сразу после вызова, иногда при выходе из процедуры
если не вызываю - не вылетает, но это не вариант.