LuaCOM just allows passing and receiving IUnknown pointers; it does not operate on them. They are converted from/to userdatas with a specific metatable.