In this section, an object means the object, as a whole, as an ADSI client views it. That is, ADSI and all its extensions.
If two or more dual IDispatch interfaces in an object support a property or method of the same name, for example, Func1, invocation is determined using the following criteria:
If both conditions are true, that is, a client has a pointer to a dual (only) interface, IDuallInf1, which supports a function called Func1, and the Automation environment supports vtable access, IDualInf1::Func1 is invoked directly through ADSI vtable access.
If either condition 1 or 2, as stated above, fails, IDispatch::GetIDsOfNames and IDispatch::Invoke are called to invoke Func1. Because all extension objects redirect the IDispatch functions back to the aggregator, the aggregator controls which Func1 is invoked. The rules are as follows: