See the question and my original answer on StackOverflow

This is described here: Interfaces Implemented by the Provider

The OLEDB provider's object that implements IIDBInitialize/IDBProperties must also implement IServiceProvider.

The system will call this IServiceProvider implementation with OLEDB_SVC_DSLPropertyPages (from MSDAGUID.H) as the service guid and ISpecifyPropertyPages as the interface ID.

ISpecifyPropertyPages::GetPages Fills a counted array of GUID values, where each GUID specifies the CLSID of each property page that can be displayed in the property sheet for this object. GetPages is called by the Data Link core component to get an array of exactly two CLSIDs that represent the extensible property pages: the first to replace the Connection tab, and the second to replace the Advanced tab. These pages must be registered properly so that they can be cocreated by the Data Link core component in-process.

These property pages are standard Windows property pages.