@Eugene. Я не смог заставить работать директивы препроцессора. Вместо этого я использовал Platform Toolset и переключился обратно на 6.0A, и он заработал, не теряя ничего, кроме имени поставщика RSA_AES_XP. Я добавил директиву препроцессора, если это дает какое-то представление о том, как я все еще могу полагаться на манипулирование директивами препроцессора. Спасибо

еделение дляC:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h являетсяCERT_CHAIN_ENGINE_CONFIGЯ использую Visual Studio 2010 на машине с XP sp3, и в этом случае я ожидаю, что следующие два члена в вышеупомянутой структуре будут выделены серым цветом. Но этого не происходит,

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;

 в свою очередь определяется в

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

NTDDI_VERSION следующим образом, иsdkddkver.h как-то принимает значение_WIN32_WINNT что в моем случае неверно, так как мой XP XP SP3 машина.NTDDI_WIN7Вышеуказанные два члена структуры

#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Но мой проект Visual Studio 2010 автоматически извлекает заголовочные файлы и файлы изC:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinCrypt.h Из-за конфликтующих структур я получаюC:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.hПосоветуйте, пожалуйста, как я могу решить эту проблему?parameter is incorrect

Должен ли я установить Visual Studio 2010 SP1?

нашел одну ссылку в сети

I  где говорится, что инициализация структуры решит проблему, но это не так, поскольку эти два параметра не будут выделены серым цветом и будут приняты во время сборки.Update1:

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

 $ (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

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

ОБНОВЛЕНИЕ 2:

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

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

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

Спасибо

_WINDLL
_MBCS

Проблема, которую вы имеете, может быть очень легко объяснена. Если вы используете v7.0A или v7.1, вы можете скомпилировать свой проект, чтобы он работал под Windows 7. Так что значение по умолчанию для

Ответы на вопрос(2)

Ваш ответ на вопрос