Trong C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
, định nghĩa cho CERT_CHAIN_ENGINE_CONFIG
làVS2010 - thay đổi cấu trúc trong CryptoAPI - v7.0A Vs v6.0A - WinCrypt.h
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;
Tôi đang sử dụng Visual Studio 2010 trong một máy XP sp3, trong đó trường hợp, tôi hy vọng rằng hai thành viên sau trong cấu trúc trên được chuyển sang màu xám. Nhưng điều này không xảy ra,
#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif
NTDDI_VERSION
trong lần lượt được định nghĩa trong sdkddkver.h
như sau, và bằng cách nào đó _WIN32_WINNT
mất giá trị của NTDDI_WIN7
mà trong trường hợp của tôi là không chính xác như tôi là một máy 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
Hai thành viên trên của cấu trúc CERT_CHAIN_ENGINE_CONFIG
trong câu hỏi là không có mặt trong C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinCrypt.h
Nhưng dự án visual studio của tôi 2010 tự động kéo trong tiêu đề và các file lib từ C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
Do cấu trúc mâu thuẫn, tôi đang nhận parameter is incorrect
Vui lòng cho biết cách tôi có thể vượt qua vấn đề này?
Tôi có nên cài đặt studio hình ảnh 2010 sp1 không?
I found one reference in the web nơi thông báo khởi tạo cấu trúc sẽ giải quyết vấn đề, nhưng sẽ không có, vì hai thông số được đề cập sẽ không bị chuyển sang màu xám và sẽ được chụp trong khi xây dựng.
UPDATE1:
Cài đặt của dự án của tôi:
$ (VCInstalDir) -> C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC
$ (WindowsSdkDir) - > C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A
$ (FrameworkSdkDir) -> C: \ Program Files \ Microsoft SDK \ Windows \ v7.0A
cài đặt tập tin Thư viện,
$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
$(WindowsSdkDir)lib
$(FrameworkSDKDir)\lib
UPDATE 2: định nghĩa preprocessor của tôi là
WIN32;_DEBUG;_WINDOWS;_USRDLL;MY_DLL_EXPORTS;%(PreprocessorDefinitions)
% (PreprocessorDefinitions) kế thừa các giá trị như sau
_WINDLL
_MBCS
Cảm ơn
@Eugene, Hệ thống đích của tôi sẽ là XP, Vista, Win7, Server2003 và máy chủ 2008. Bạn có thể vui lòng xây dựng câu cuối cùng của bạn về cách định cấu hình cài đặt dự án hay không. hoặc một số gợi ý để bắt đầu? Cảm ơn – Raj
@Raj bạn có mã nguồn của dự án và tôi không biết vị trí và cách định nghĩa được đặt trong dự án * của bạn *. Nếu bạn tìm kiếm "NTDDI_WIN7" trong google, liên kết đầu tiên là http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx, điều này có thể hữu ích cho bạn (mặc dù nó nhắm vào nhiệm vụ ngược lại với nhiệm vụ của bạn). –
@Eugene. Tôi đã chỉnh sửa bài đăng gốc của mình với ảnh chụp màn hình về cài đặt dự án của tôi. Liên kết mà bạn đã hiển thị cho phép tôi xác định các chỉ thị tiền xử lý sẽ hạn chế các nền tảng đích của tôi thay vì bao gồm tất cả chúng. Có điều gì bạn có thể giới thiệu không? Cảm ơn – Raj