ADsPath strings in both COM and URL format. By definition, you
can retrieve an Active Directory object using an ADsPath. Providers
support the syntax that their directory service requires using the
ParseDisplayName implementation.
A top-level Namespace object that supports
IParseDisplayName::ParseDisplayName and IADsOpenDSObject. This object
contains the root nodes for this namespace. Part of the
ParseDisplayName implementation must include a parser that
checks for syntax errors for its own namespace. This object must
also support IADs and
IADsOpenDSObject.
The IADs interface. This includes a simple property
cache implementation through IADs::GetInfo and IADs::SetInfo. Operations that get or
set object properties occur in cached mode. Cache values are
written to the underlying directory store during
IADs::SetInfo. An ADSI method, however, is not cached, but
executes immediately.
The IADsPropertyList,
IADsPropertyEntry and
IADsPropertyValue
interfaces for directly accessing and enumerating the properties in
the property cache. For directory services that do not expose a
schema, this interface allows you to manipulate the properties of
an object.
The IDirectoryObject
interface for non-Automation clients. This uses on-the-wire
protocol for maximum performance and bypasses the property
cache.
The IADsContainer
interface. Every Active Directory object has a parent container
that controls its lifetime. Be aware that for ADs container
objects, GetInfo affects only the container properties and not its
contents. SetInfo on ADs container objects affects only the
container properties and does not affect newly created objects or
objects that already exist within the container.
The IDispatch interface. This is the Automation
interface for languages like Visual Basic that do not use
compile-time binding. Related to this is the type library data that
a provider must supply. For more information, see Implementation
Issues for ADSI Providers.
A schema class container object and the appropriate syntax,
property, and schema class objects that support IADsSyntax, IADsProperty, and IADsClass respectively. At a minimum,
each root node must contain its own schema class container
object.
The IADsMembers interface,
if any supported attributes are collections of ADSI objects, such
as security groups.
The IEnumXXXX enumeration supports all specific
enumerator objects.
Routines to map syntax and convert native data to the
VARIANT data type.
Follow ADSI conventions for provider-supplied ADSI objects.
Include help files and type libraries documenting the interface
properties and methods.
As with any COM implementation, calls to QueryInterface
must return E_NOINTERFACE for unimplemented interfaces, E_NOTIMPL
for unimplemented methods of interfaces that are otherwise
implemented and return E_ADS_PROPERTY_NOT_SUPPORTED for
unimplemented properties. For more information about dual
interfaces and how they effect property implementation, see
Dual Interfaces.