The first 3 steps give us an instance of COM object 01 and an interface pointer to IF1
Step 4 is application specific since you make COM calls into IF1 to perform application tasks
Step 5, the call into IF1::QueryInterface gives us a second interface pointer into COM object01 - a pointer to IF2
Step 6 is application specific, requires you make COM calls into IF2 to perform application tasks
Step 7 is required of all COM clients. You must call Release on all COM interface pointers when you are finished using them.
Step 8 tells COM that the current thread is no longer going to use COM services and objects