x64

2008-10-29 18 views
7

पर COM कॉलिंग सम्मेलन मैं x64 मशीन पर COM व्यवहार के तरीके के बारे में एक निश्चित उत्तर प्राप्त करने का प्रयास कर रहा हूं। X64 मशीनों पर COM इंटरफेस पर कॉल प्रेषित करते समय विंडोज सामान्य x64 कॉलिंग सम्मेलन का उपयोग करता है (मानते हैं कि COM कार्यान्वयन 64 बिट्स है)? विशेष रूप से, मैं गतिशील रूप से रनटाइम के दौरान गतिशील रूप से लोड होने वाली असेंबली के एक हिस्से को इंगित करने के लिए अपनी vtbl प्रविष्टियां उत्पन्न करता हूं। इस असेंबली को यह जानने की जरूरत है कि जो भी इसे कॉल कर रहा है उससे सही तरीके से पैरामीटर कैसे प्राप्त करें। इस प्रकार, मैं जानना चाहता हूं कि क्या मानक मानक x64 कॉलिंग कन्वेंशन (बहुत अधिक फास्टकॉल) का उपयोग करके COM मेरी असेंबली को कॉल सेट करता है।x64

उत्तर

3

COM कॉलिंग सम्मेलन जो कुछ भी STDMETHOD/STDMETHODIMP मैक्रोज़ (और उनके रूप) परिभाषित करता है, वह परिभाषित करता है। आईए -32 पर, उनमें से अधिकांश के लिए stdcall है; मुझे नहीं पता कि x86-64 पर क्या उपयोग किया जाता है (मेरे पास केवल 32-बिट मिंगव क्रॉस-कंपाइलर स्थापित है)।

+0

stdmethod amd64 के लिए संकलन करते समय कुछ भी हल नहीं करता है। तो मुझे लगता है कि x64 पर COM कॉलिंग सम्मेलन सामान्य x64 कॉलिंग सम्मेलन है, भले ही विंडोज़ कॉल को प्रेषित करे? – Zach

+0

यह शायद सामान्य विंडोज x86-64 विधि कॉलिंग सम्मेलन है (जो गैर-विधियों के लिए कॉलिंग सम्मेलन से भिन्न हो सकता है)। – CesarB

+0

x64 का अनोखा तरीका कॉल सम्मेलन है: [फास्टकॉल] (http://blogs.msdn.com/oldnewthing/archive/2004/01/14/58579.aspx) – lsalamon