For both Automation clients using ActiveX Data Objects (ADO) and
all non-Automation clients, ADSI supplies an OLE DB provider that
supports a subset of OLE DB query interfaces. Client code that
already uses OLE DB interfaces for queries can use the same
interfaces to query directory services.
Under the OLE DB implementation, a directory service is exposed
as a Data Source Object. Data source objects are factories for
session objects and support IDBInitialize to connect
to the directory, IDBCreateSession to create the
session object, IDBProperties to supply
authentication information to the underlying namespace and supply
the query command and IPersist to save the
information necessary to create the data source object to the
underlying directory service.
To perform an
Active Directory query using OLE DB
Retrieve the IDBInitialize interface from the OLE
DB provider. In the case of Active Directory, use the class id
Build a DBPROP array of connection information
specifying user name and password.
Populate an array of DBBINDING structures,
describing to the OLE DB provider how to expose the data types on a
per column basis to the application code. This step allows you to
specify which TYPE is contained in a particular column. Also the
offsets of the columns (relative to the returned row) are set here
on a column-by-column basis.
Call IRowset::GetData passing in a row handle
(from the set returned in Step 16). A raw pointer to the row is
To read the raw row data returned, use the
DBBINDING structure (created in Step 13), compute the
column offsets in the raw data pointer returned in Step 17. Read
the status portion of the column for a retrieval result on that