When a late binding support is in place, every function call must go through one IDispatch, ADSI’s IDispatch, before it reroutes to the appropriate extension.
Consider the following example code:
Set MyObj = GetObject("IIS://W3SVC")
MyObj.SetPassword("newPassword")
MyObj.Backup( "\\MyServer\Backup")
MyObj.LastBackup = Date
MyObj.OtherMethod()
MyObj.OtherProperty = 314
Debug.Print MyObj.ServerComment
Debug.Print (" has been backed up.")
Note that there aren’t any explicit calls to QueryInterface to get to your extensions. The extensions must reroute their IDispatch calls to ADSI’s IDispatch. ADSI makes the decision and resolves any conflict if it occurs, then it reroutes back to the appropriate extension through an interface called IADsExtension. Hence, any extension intended to support late binding must implement the IADsExtension interface.
For more information regarding the IADs and IADsExtension interfaces, see the ADSI Reference section, under the Networking Services topic, in the Platform SDK.