Understanding Interface Definition Language: A Developer's Survival Guide (Microsoft System Journal August 1998)
If you place an interface inside of a library, proxy/stub code will not be generated for it, though its type information will be included in the type library.
IDL can be a little confusing because of the overlap in marshaling and type information keywords.
It's good practice to initialize output parameters (BSTR*, LPVARIANT, LPDISPATCH etc.) immediately when called. COM does not look at the return code when marshaling output parameters. Even if a failure scode is returned, all output parameters are passed back to the caller. If the parameters contain bogus or uninitialized data, COM will crash.