| ||||
| ||||
Подскажите пожалуйста, где я не прав. пишу следующий код: 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) программа начинает вылетать с ошибкой доступа к памяти. иногда сразу после вызова, иногда при выходе из процедуры если не вызываю - не вылетает, но это не вариант. |