Each dynamic key has a provider (also called handler) associated with it. A provider is a piece of code that, when requested by the OS registry code, provides one or more values that are associated with that dynamic key. Windows 95 supports only VxD providers. Future versions of Windows will support Win32 providers as well. Windows NT does not support either VxD or Win32 dynamic key providers, but will in future versions. The ring 0 for Windows NT will be different than the Windows 95 VxD interface. However, the Win32 interface should be the same for future versions of Windows 95 and Windows NT.
Note This documentation describes only the Windows 95 VxD interface for dynamic keys.
Following are some issues that implementors of dynamic keys should be aware of:
A single provider handles multiple keys and/or values via the notion of a context. A context is just a 32-bit value that is meaningful only to the provider; the system registry code never tries to evaluate it. When the provider is called, it can examine the key context that was passed in to determine which key is being queried, and the value context to figure out which value is being queried. Thus the key context is only necessary when one provider function is handling multiple dynamic keys. Likewise, the value context is only needed when the same provider function is handling a key or keys with multiple values.
There is an additional Win32 registry API that has been defined in Windows 95, in part to support dynamic keys, called RegQueryMultipleValues. This allows an application to atomically query multiple values of one registry key. Please consult the Win32 documentation for more information about this API.