Я после этого учебника от Microsoft Example C Program: Creating a Certificate ChainНеобработанное исключение вызова функции CertCreateCertificateChainEngine
Но я получаю Необработанное исключение вызова функции CertCreateCertificateChainEngine в следующем блоке
if(CertCreateCertificateChainEngine(
&ChainConfig,
&hChainEngine)) {
printf("A chain engine has been created.\n");
}
else {
MyHandleError("The engine creation function failed.");
}
Сообщение об исключении является:
Unhandled exception at 0x7535F61A (crypt32.dll) in capi_verify.exe: 0xC0000005: Access violation writing location 0xCCCCCCD0.
Вот как определяются переменные:
HCERTCHAINENGINE hChainEngine = NULL;
CERT_CHAIN_ENGINE_CONFIG ChainConfig;
и структура ChainConfig инициализируется как:
ChainConfig.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG);
ChainConfig.hRestrictedRoot= NULL ;
ChainConfig.hRestrictedTrust= NULL ;
ChainConfig.hRestrictedOther= NULL ;
ChainConfig.cAdditionalStore=0 ;
ChainConfig.rghAdditionalStore = NULL ;
ChainConfig.dwFlags = CERT_CHAIN_CACHE_END_CERT;
ChainConfig.dwUrlRetrievalTimeout= 0 ;
ChainConfig.MaximumCachedCertificates=0 ;
ChainConfig.CycleDetectionModulus = 0;
функция CertCreateCertificateChainEngine имеет следующую подпись:
BOOL WINAPI CertCreateCertificateChainEngine(
_In_ PCERT_CHAIN_ENGINE_CONFIG pConfig,
_Out_ HCERTCHAINENGINE *phChainEngine
);
А вот скриншот Отладочная ChainConfig:
hChainEngine отображается как NULL, например. 0x00000000