では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;
XP sp3 マシンで Visual Studio 2010 を使用しています。この場合、上記の構造の次の 2 つのメンバーがグレー表示されることが予想されます。しかし、これは起こっていません、
#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif
NTDDI_VERSION
in-turn はsdkddkver.h
次のように定義されており、私の場合はXP SP3マシンであるため、_WIN32_WINNT
どういうわけか間違った値を取ります。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
問題の構造の上記の 2 つのメンバーはCERT_CHAIN_ENGINE_CONFIG
存在しませんが 、2010 年のビジュアル スタジオ プロジェクトは、構造が競合しているためC:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinCrypt.h
、ヘッダー ファイルと lib ファイルを自動的に取得します。C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
parameter is incorrect
この問題を克服する方法を教えてください。
Visual Studio 2010 SP1 をインストールする必要がありますか?
Web で、構造を初期化すると問題が解決するという1 つの参照が見つかりましたが、問題の 2 つのパラメーターはグレー表示されず、ビルド中に取り込まれるため、解決しません。
更新1:
私のプロジェクトの設定:
$(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
ありがとう