वीबी 6 द्वारा उपयोग की जाने वाली सभी ऑब्जेक्ट COM ऑब्जेक्ट्स हैं। एक COM ऑब्जेक्ट अनिवार्य रूप से एक वेरिएबल लम्बाई डेटा संरचना है जिसका परिवर्तनीय लंबाई शीर्षलेख VTables में 32 बिट पॉइंटर्स की संख्या है, और सहायक बाइट्स में ऑब्जेक्ट का इंस्टेंस डेटा होता है। उदाहरण के लिए,
Bytes
0-3 VTable1 pointer
4-7 VTable2 pointer
8-11 VTable3 pointer
...
Instance data
एक vtable कार्य करता है जो सभी के लिए एक "यह" उदाहरण के सूचक पारित कर रहे हैं करने के लिए 32 बिट संकेत की एक सरणी है।
Bytes
0-3 Func1(this, ..., ...)
4-7 Func2(this, ..., ...)
8-11 Func3(this, ..., ...)
...
केवल अन्य विनिर्देश है कि सभी VTables MUST इनहेरिट IUnknown से, अर्थातपहले तीन कार्यों होना चाहिए:
QueryInterface()
AddRef()
Release()
अनिवार्य रूप से, QueryInterface() तुम बाहर एक COM वस्तु एक विशिष्ट इंटरफ़ेस (जो एक UUID का प्रतिनिधित्व करती है) का समर्थन करता है कि क्या पता लगाने के लिए अनुमति देता है। AddRef() ऑब्जेक्ट लेखक को आंतरिक संदर्भ गणना बढ़ाने की अनुमति देता है। रिलीज() ऑब्जेक्ट लेखक को काउंटर शून्य होने पर ऑब्जेक्ट को नष्ट करने, संदर्भ काउंटर को कम करने की अनुमति देता है। आप कभी भी इन तरीकों को वीबी में नहीं बुलाते हैं - संकलक आपके लिए ये कॉल जोड़ता है (वीबी 6 के फायदों में से एक)। अधिक जानकारी के लिए
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680509(v=vs.85).aspx देखें।
एक वीबी 'वस्तु' प्रकार एक संदर्भ एक वस्तु जो IDispatch इंटरफ़ेस (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318520(v=vs.85).aspx देखें) का समर्थन करता है के लिए है। यह आपको वीबी और वीबीस्क्रिप्ट में देर से बाध्यकारी करने की अनुमति देता है। वीबी 6 में लिखे गए सभी ऑब्जेक्ट्स स्वचालित रूप से एक इंटरफेस को कार्यान्वित करते हैं जो आईडीस्पैच से प्राप्त होता है। इसे दोहरी इंटरफ़ेस कहा जाता है, क्योंकि यह प्रारंभिक और देर से बाध्यकारी का समर्थन करता है।
ध्यान दें कि COM में निर्मित कोई प्रत्यक्ष प्रकार प्रणाली नहीं है। हालांकि, आप ITypeInfo इंटरफ़ेस का समर्थन करने का विकल्प चुन सकते हैं, जो आपके ऑब्जेक्ट के उपयोगकर्ताओं को उस ऑब्जेक्ट को एक्सेस करने की अनुमति देता है जिसे आप ऑब्जेक्ट के बारे में जोड़ना चाहते हैं (डिफ़ॉल्ट जानकारी का उपयोग करना आसान है जो इस जानकारी को स्टोर करने के लिए टाइप लाइब्रेरीज़ का उपयोग करता है)।
बॉब रिमेर्समा द्वारा वर्णित वैरिएंट प्रकार वास्तव में एक 16 बाइट संरचना है जिसमें 2 बाइट पूर्णांक (vt) है जो इंगित करता है कि स्वचालन प्रकार किस प्रकार encapsulated किया जा रहा है, और बाद के 8 बाइट मूल्य प्रकार के लिए इस्तेमाल किया जा सकता है 8 बाइट्स तक, या 32 बिट पॉइंटर दूसरे प्रकार के लिए। वीबी अपने आंतरिक कार्यों का उपयोग करके वीबी प्रकारों और प्रकारों के बीच सभी आवश्यक रूपांतरण करता है, और सभी आवश्यक स्मृति आवंटन और विध्वंस। वेरिएंट में वस्तु को पॉइंटर को वेरिएंट में कॉपी करके और ऑब्जेक्ट की AddRef() विधि को कॉल करके COM ऑब्जेक्ट्स में संदर्भ हो सकते हैं।
एक वीबी 6 संस्करण में http://msdn.microsoft.com/en-us/library/aa908601.aspx – Bob77