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.