COM/DCOM and Automation

C/C++ and Java rely on vptr and vtable mechanism to deal with abstract classes or interfaces. However this is not true with scripting languages like VB/JAVA Script and VB. These languages do not have this mechanism. Thus co-class that implement only IUnknown is not sufficient for these languages. Additionally co-class has to implement all the methods of IDispatch to ensure compatibility with automation. Sometimes IDispatch also called dual interface as it both supports all methods of IUnknown and methods for automation. To support automation it has four additional methods named:

  • IDispatch::GetTypeInfoCount
  • IDispatch::GetTypeInfo
  • IDispatch::GetIDsOfNames
  • IDispatch::Invoke
In automation, clients are written in VB/VB Script/Java Script etc. These languages does not use late binding or dynamic binding or vptr/vtable mechanism to deal with abstract methods. Here they use one mechanism called ID binding. ID binding assigns a unique ID or index number for each method in an interface. Client provides the method name by calling GetIDsOfNames(). It returns the ID of the corresponding method. Now client calls the method using Invoke() by providing the method ID as an argument.

About our authors: Team EQA

You have viewed 1 page out of 67. Your COM/DCOM learning is 0.00% complete. Login to check your learning progress.

#