The association between LFX or GFX sAPOs and the related device is stored under the registry key for the device interface. The DLL that contains the sAPOs must self-register by including a ‘RegisterDlls’ statement in the INF file.
The HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/DeviceClasses key has a subkey for each device interface that is named with the interface’s CLSID string. Under each CLSID key is a subkey for each device that exports the interface. For example, ##?#PCI#VEN_1106&DEV_3059&SUBSYS_810A1043&REV_60#3&61AAA01&1&8D#{6994ad04-93ef-11d0-a3cc-00a0c9223196} is the subkey of {6994AD04-93EF-11D0-A3CC-00A0C9223196} that represents the device for the VIA onboard AC '97 audio controller with a RealTek AC '97 codec.
Each device key has subkeys for all the interfaces that it exposes. For example, the device subkey under discussion has subkeys for wave, topology, and Universal Asynchronous Receiver Transmitter (UART) interfaces that are named #Wave, #Topology, and #UART, respectively. The following example shows these settings schematically. Note that the device subkey string has been truncated for readability.
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
DeviceClasses
…
{6994AD04-93EF-11D0-A3CC-00A0C9223196}
##?#PCI#VEN_1106&DEV_3059&SUBSYS_810A1043&REV_60…
#Topology
#UART
#Wave
…
To register a GFX or LFX sAPO, add a DeviceParameters subkey to the appropriate topology subkey, followed by an FX subkey. The FX key can have one or more system effect subkeys, one for each effect's sAPO. The system effect subkey names must be integers, starting with zero.
The data for the property store is contained in a series of values that are associated with the system effect key. The value names are globally unique identifier (GUID) strings, followed by an ID, much like property store key names. The property names and the associated data are listed in the following table.
|