Поделиться через


Пример записи реестра для единиц расширения UVC

Важно!

Содержимое и пример кода в этом разделе устарели и в настоящее время не поддерживаются. Она может не работать с текущей цепочкой инструментов разработки драйверов.

В этом разделе содержится пример записи реестра, которую можно использовать для поддержки модулей расширения.

Записи необходимо добавить в подраздел реестра HKLM\System\CurrentControlSet\Control\NodeInterfaces . Этот подраздел реестра содержит значения GUID набора свойств, а также значения IID и CLSID для интерфейсов, соответствующих этому набору свойств.

Проверьте следующее:

  • ИДЕНТИФИКАТОР GUID набора свойств соответствует ИДЕНТИФИКАТОРу GUID в дескрипторе единицы расширения.

  • Значения IID и CLSID в подразделе NodeInterfaces хранятся в двоичной форме с маленьким байтом.

Таким образом, значение IID {12345678-1234-5678-0123456789abcdef} будет храниться как:

78 56 34 12 34 12 78 56 01 23 45 67 89 ab cd ef
  • Идентификаторы GUID должны быть уникальными и должны быть созданы с помощью Guidgen.exe, средства, включенного в Microsoft Windows SDK.

Включите следующий код в скрипт реестра с произвольным именем 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'
                    }
                }
            }
        }
    }
}

Чтобы обеспечить поддержку установки путем регистрации подключаемой библиотеки DLL, добавьте следующий код в скрипт реестра:

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

    }
}