Sunday, December 21, 2003

Purpose of Idispatch interface ...

In yesterday's post (About IUNKnown interface ...), I discussed about Adodb.Recordset object creation, in which I invoked 2 methods namely Open and Close correct? when I call these 2 functions what is the background process going on is what I am going to address now.

When a function or a property of an object is called, the background execution is been carried out by an interface called Idispatch interface. It consists of 4 functions names:

1. GetTypeInfoCount: This determines whether the function or property is having any parameter or not.

2. GetTypeInfo: This not only determines the function names but a detailed collection of what are the parameters passed and what are its datatype and what is its return value, whether it is an IN parameter or OUT parameter etc.,

3. GetIDSofName: This determines the unique id given for each function or property of an object. The ID associated with each and every function or property of an object is called Idispatch ID.

4. Invoke: This is the one which does the job. This collects all the information acquired namely the number of parameters, its datatype and then identifies the function based on its ID and execute the function to return the result.

Let me now switch to the example discussed in the yesterday's post. I was calling OPEN method in that, now what happens is

A. First GetIdsofName will fire accepting the OPEN keyword as its parameter and it retreives the corresponding ID of OPEN method.

B. Then, GetTypeInfoCount will determine whether there are any parameters for this OPEN method.

C. Then, GetTypeInfo will collect all the parameters required for the OPEN method, namely the Query, Connection string, Lock, cursor type etc.,

D. Now the invoke method will execute the functionality with all its relevant collected values.

Thats it :) This is what happening internally when we call a method or a function.

No comments: