Introduction
COM as a better C++
Overview
Deployment - Static Linking vs Dynamic Linking
Static linking
Dynamic linking
Cross-compiler problems
Name mangling
Solutions
Aliasing with names
Aliasing with ordinals
Aliasing with vtables
Binary layout of object/vtables
Data encapsulation is syntactical
Absence of a binary standard for C++ objects
Solutions
Versioning
Better solutions
Handle classes
Pure shared abstract base classes
Refinements to the interface-based approach to exposing C++ classes
Defining and using an interface
Out-of-band technique for creating objects
A technique for deleting objects
Adding functionality
Extended functionality
Orthogonal functionality
Lifecycle management
When to delete objects
When references get duplicated
Object creation revisited
An extensible base for all interfaces
Shortcomings
Where are we?
COM Interfaces 1
COM Interfaces : The Basics
Interfaces Preamble
The COM Type System : IUnknown
COM Classes 1
The basics
The client's view of classes
The DLL server's view of classes
COM Apartments 1
Execution Contexts
Apartments : The Overview
Marshalling and Remoting
Standard Marshalling
Apartments : The Basic Details
Apartments : Call Dispatching