Sample Registry Entry for UVC Extension Units

Important

The content and sample code in this topic is outdated and currently unsupported. It may not work with the current driver development toolchain.

This topic contains a sample registry entry that you can use to support Extension Units.

The entries must be added to the HKLM\System\CurrentControlSet\Control\NodeInterfaces registry subkey. This registry subkey contains property set GUID values and the IID and CLSID values for the interfaces that correspond to that property set.

Verify that:

  • The property set GUID matches the GUID in the Extension Unit descriptor.

  • The IID and CLSID values in the NodeInterfaces subkey are stored in binary, little-endian form.

Thus, an IID value of {12345678-1234-5678-0123456789abcdef} would be stored as:

78 56 34 12 34 12 78 56 01 23 45 67 89 ab cd ef
  • The GUIDs must be unique and should be generated by using Guidgen.exe, a tool that is included in the Microsoft Windows SDK.

Include the following code in the registry script, arbitrarily named Xusample.rgs:

HKLM
{
    NoRemove SYSTEM
    {
        NoRemove CurrentControlSet
        {
            NoRemove Control
            {
                NoRemove NodeInterfaces
                {
                    ForceRemove {xxxxxxxx-xxxx-xxxx-xxxx-
                       xxxxxxxxxxxx} = s 'Extension Unit
                       Property Set'
                    {
                        val IID = b 'yyyyyyyyyyyyyyyyyyy
                           yyyyyyyyyyyyy'
                        val CLSID = b 'zzzzzzzzzzzzzzzzz
                           zzzzzzzzzzzzzzz'
                    }
                }
            }
        }
    }
}

To support installation by registering the plug-in DLL, add the following code to your registry script:

HKCR
{
    NoRemove CLSID
    {
         ForceRemove {zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz} = s 'CompanyName Extension Unit Interface'
        {
            InprocServer32 = s '%MODULE%'
                                                {
                                val ThreadingModel = s 'Both'
                                                }
        }

    }
}