C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
में, CERT_CHAIN_ENGINE_CONFIG
के लिए परिभाषाVS2010 - v7.0A बनाम v6.0A - - CryptoAPI में संरचना परिवर्तन 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;
मैं दृश्य स्टूडियो 2010 का उपयोग कर रहा एक XP SP3 मशीन में है, जो में है मामला, मुझे उम्मीद है कि उपर्युक्त संरचना में निम्नलिखित दो सदस्य गहरा हो जाएंगे। लेकिन इस नहीं हो रहा है,
#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif
NTDDI_VERSION
के रूप में इस प्रकार है, और किसी भी तरह _WIN32_WINNT
NTDDI_WIN7
के मूल्य के रूप में मेरा एक XP SP3 मशीन है जो मेरे मामले में सही नहीं है लेता है में बारी sdkddkver.h
में परिभाषित किया गया है।
#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 SDKs\Windows\v6.0A\Include\WinCrypt.h
में मौजूद नहीं है लेकिन मेरी 2010 दृश्य स्टूडियो परियोजना स्वचालित रूप से शीर्ष लेख और चूंकि विरोधी संरचनाओं के C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h
से lib फाइलों में खींचती है, मैं parameter is incorrect
कृपया सलाह दें कि मैं इस मुद्दे पर कैसे आ सकता हूं?
क्या मुझे विजुअल स्टूडियो 2010 SP1 इंस्टॉल करना होगा?
I found one reference in the web जहां यह कहता है कि संरचना शुरू करने से समस्या हल हो जाएगी, लेकिन ऐसा नहीं होगा, क्योंकि प्रश्न में दो पैरामीटर तैयार नहीं होंगे और इमारत के दौरान इसमें लिया जाएगा।
Update1:
अपने प्रोजेक्ट की सेटिंग्स:
$ (VCInstalDir) -> C: \ Program Files \ Microsoft Visual Studio 10.0 \ कुलपति
$ (WindowsSdkDir) - > सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v7.0A
$ (फ्रेमवर्क एसडीकेडीआईआर) -> सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v7.0A
लाइब्रेरी फ़ाइल सेटिंग्स,
$(VCInstallDir)lib
$(VCInstallDir)atlmfc\lib
$(WindowsSdkDir)lib
$(FrameworkSDKDir)\lib
अद्यतन 2: मेरे पूर्वप्रक्रमक परिभाषाओं
WIN32;_DEBUG;_WINDOWS;_USRDLL;MY_DLL_EXPORTS;%(PreprocessorDefinitions)
% (PreprocessorDefinitions) मान विरासत में मिला है के रूप में इस प्रकार है
_WINDLL
_MBCS
धन्यवाद
हैं
@ यूजीन, मेरा लक्ष्य सिस्टम XP, Vista, Win7, Server2003 और सर्वर 2008 होगा। क्या आप परियोजना सेटिंग्स को कॉन्फ़िगर करने के तरीके पर अपनी अंतिम वाक्य विस्तृत कर सकते हैं। या कुछ पॉइंटर्स के साथ शुरू करने के लिए? धन्यवाद – Raj
@राज आपके पास प्रोजेक्ट स्रोत कोड है और मुझे नहीं पता कि * आपके * प्रोजेक्ट में परिभाषा कहां और कैसे सेट की गई है। यदि आप Google में "NTDDI_WIN7" खोजते हैं, तो पहला लिंक http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx है, जो आपके लिए सहायक हो सकता है (हालांकि यह आपके विपरीत कार्य को लक्षित करता है)। –
@ यूजीन। मैंने अपनी मूल सेटिंग्स को मेरे प्रोजेक्ट सेटिंग्स के स्क्रीन शॉट्स के साथ संपादित किया है। जो लिंक आपने दिखाया है वह मुझे प्रीप्रोसेसर निर्देशों को परिभाषित करने की इजाजत दे रहा है जो उन सभी को शामिल करने के बजाय मेरे लक्षित प्लेटफॉर्म को प्रतिबंधित कर देगा। क्या आप कुछ भी सिफारिश कर सकते हैं? धन्यवाद – Raj