VS2010 - Изменение структуры в CryptoAPI - v7.0A Vs v6.0A - WinCrypt.h

В C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Include \ WinCrypt.h определение для CERT_CHAIN_ENGINE_CONFIG равно

typedef struct _CERT_CHAIN_ENGINE_CONFIG {

    DWORD       cbSize;
    HCERTSTORE  hRestrictedRoot;
    HCERTSTORE  hRestrictedTrust;
    HCERTSTORE  hRestrictedOther;
    DWORD       cAdditionalStore;
    HCERTSTORE* rghAdditionalStore;
    DWORD       dwFlags;
    DWORD       dwUrlRetrievalTimeout;      // milliseconds
    DWORD       MaximumCachedCertificates;
    DWORD       CycleDetectionModulus;

*#if (NTDDI_VERSION >= NTDDI_WIN7)
    HCERTSTORE  hExclusiveRoot;
    HCERTSTORE  hExclusiveTrustedPeople;
#endif*

} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;

I Я использую Visual Studio 2010 на машине XP с пакетом обновления 3 (sp3), и в этом случае я ожидаю, что следующие два члена в приведенной выше структуре станут серыми. Но этого не происходит,

#if (NTDDI_VERSION >= NTDDI_WIN7)
    HCERTSTORE  hExclusiveRoot;
    HCERTSTORE  hExclusiveTrustedPeople;
#endif

NTDDI_VERSION в свою очередь определяется в sdkddkver.h следующим образом, а _WIN32_WINNT каким-то образом принимает значение NTDDI 1114_WIN7 [ ], что в моем случае неверно, поскольку у меня машина XP SP3.

#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
#define  _WIN32_WINNT   0x0601
#endif
#ifndef NTDDI_VERSION
#ifdef _WIN32_WINNT
// set NTDDI_VERSION based on _WIN32_WINNT
#define NTDDI_VERSION   NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
#else
#define NTDDI_VERSION   0x06010000
#endif
#endif

Два указанных выше члена структуры CERT_CHAIN_ENGINE_CONFIG , о которых идет речь, отсутствуют в C: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Include \ WinCrypt.h Но мой проект Visual Studio 2010 автоматически извлекает файлы заголовков и lib из C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Include \ WinCrypt .h Из-за конфликтующих структур я получаю неверный параметр

Посоветуйте, пожалуйста, как я могу решить эту проблему?

Нужно ли мне устанавливать Visual Studio 2010 с пакетом обновления 1?

Я нашел одну ссылку в Интернете , где говорится, что инициализация структуры решит проблему, но не решит, поскольку две Соответствующие параметры не будут выделены серым цветом и будут использоваться во время сборки.

UPDATE1:

Настройки моего проекта:

enter image description here $ (VCInstalDir) -> C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC

$ (WindowsSdkDir) -> C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A

$ (FrameworkSdkDir) -> C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A

Библиотека настройки файла,

$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
$(WindowsSdkDir)lib
$(FrameworkSDKDir)\lib

ОБНОВЛЕНИЕ 2: Мои определения препроцессора - это

WIN32;_DEBUG;_WINDOWS;_USRDLL;MY_DLL_EXPORTS;%(PreprocessorDefinitions)

% (PreprocessorDefinitions) унаследованные значения следующим образом

_WINDLL
_MBCS

Спасибо

7
задан Raj 23 June 2011 в 14:22
поделиться