MDAC 2.5 SDK - OLE DB Programmer's Reference
Chapter 18: Programming Considerations

Providers are identified in the registry by the OLE DB Provider subkey under the class ID of the provider. Under HKEY_CLASSES_ROOT, providers must have the following subkeys and values for the extension of persisted data source object files and for the programmatic identifier.
| Keys and subkeys | Name | Value | 
| HKEY_CLASSES_ROOT | ||
| CLSID | ||
| ProviderCLSID | (Default) | VersionIndependentProgID | 
| OLEDB_SERVICES | SupportedServices[1] | |
| ExtendedErrors[2] | (Default) | Extended Error Service | 
| ErrorLookupCLSID[2] | (Default) | FriendlyDisplayName | 
| InprocServer32 | (Default) | ProviderDLLFilename | 
| ThreadingModel | Apartment|Free|Both | |
| OLE DB Provider | (Default) | Description | 
| ProgID | (Default) | ProviderProgID | 
| VersionIndependentProgID | (Default) | VersionIndependentProgID | 
| ProviderProgID | (Default) | Description | 
| Clsid | (Default) | ProviderCLSID | 
[1] Generally 0xffffffff.
[2] If Error Lookup Service is supported.
When an instance of the object is first created, providers return an interface pointer on a data source object. For more information about data source objects, see "Data Source Objects" in Chapter 2, "Data Source and Session Objects."