O'Reilly logo

COM+ Programming with Visual Basic by Jose Mojica

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

COM as a Binary Standard

The rules of COM state that for a client to communicate with a COM object, the COM server must allocate the memory for the object, and all access to the object must occur through a COM interface. COM is said to be a binary standard because it further defines the memory layout of interfaces. An interface is a pointer to a lookup table of functions. The pointer is known as a vptr, and the lookup table of functions is known as a vtable. Thankfully, we do not work with interfaces at the vptr and vtable level. If you were working in C (not C++), you would have to code a vptr and a vtable by hand, because the language does not offer any natural mappings of these structures to high-level language features. C++ and Visual Basic, however, do map interfaces to classes.

Interface Mappings In C++

When a C++ developer marks a function as virtual in a class and creates an instance of the class or creates an instance of a class that derives from a class with virtual functions, the C++ compiler creates a virtual function table (vtable) to represent the virtual functions of the class. Remember, the vtable is an array of pointers to functions. To each class that has virtual functions or derives from a class that has virtual functions, the C++ compiler adds a hidden data member known as a vtable pointer (or vptr). This hidden member is a long integer (4 bytes) that stores the address of the vtable array that corresponds to the class. The first 4 bytes of an object in memory ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required