All ADSI interfaces that are not pure COM interfaces are implemented as dual interfaces, meaning that they support client access through both vtable methods and IDispatch methods. Early-bound clients written in languages such as C and C++ can call interface methods directly. Late-bound clients written in languages such as Java, Visual Basic and VBScript can access an interface's properties by calling dispinterface methods that get and set the values of those properties.
Each get_<property> method takes a single out parameter. This parameter is a method-allocated address of a variable of the property's data type. On return, this variable contains the current value of the requested property. The caller is responsible for releasing the allocated memory for the variable when the property is no longer needed.
Each put_<property> method takes a single in parameter of the corresponding property's data type, which contains the new property value.
All parameters and return types must be within the subset of those defined by the VARIANT data type. All methods on a dual interface return an HRESULT value to indicate success or failure.
For more information about getting and setting properties on ADSI objects, see Property Cache.