In this section, you’ll learn how to implement published interfaces—that is, to write the code that carries out what our interface promises to do. You’ll also learn the sacred elements of COM, which include identity and lifetime rules. Finally, you’ll assemble a COM object from several interface implementations. As you march along, you’ll create a COM object that exposes the IOcr and ISpell interfaces, which were specified in the previous section. Recall that these interfaces can be implemented and used in a distributed environment, because the MIDL compiler has fully generated the code to marshal data across the network. In essence, you are putting together a distributed object in this section.
You have just signed a few contracts in the previous section; or to use the correct wording, you’ve just specified a few interfaces. These interfaces have now become everlasting protocols. To the world, a COM object is a bunch of interfaces. To a COM object’s implementor, it can be anything, as long as the internal implementation meets a few basic elements, including binary interface layout, identity, and lifetime rules.
A COM object is represented pictorially using a rectangular box, with its interfaces, which look like lollipops, protruding outward, as shown in Figure 3-9. The top vertical lollipop represents the required IUnknown interface that all COM objects must implement.
Figure 3-9. A ...