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


Функция SetupDiCreateDevRegKeyA (setupapi.h)

Функция SetupDiCreateDevRegKey создает раздел реестра для сведений о конфигурации устройства и возвращает дескриптор для ключа.

Синтаксис

WINSETUPAPI HKEY SetupDiCreateDevRegKeyA(
  [in]           HDEVINFO         DeviceInfoSet,
  [in]           PSP_DEVINFO_DATA DeviceInfoData,
  [in]           DWORD            Scope,
  [in]           DWORD            HwProfile,
  [in]           DWORD            KeyType,
  [in, optional] HINF             InfHandle,
  [in, optional] PCSTR            InfSectionName
);

Параметры

[in] DeviceInfoSet

Дескриптор набора сведений об устройстве , содержащего элемент сведений об устройстве, представляющий устройство, для которого создается раздел реестра.

[in] DeviceInfoData

Указатель на структуру SP_DEVINFO_DATA , указывающую элемент сведений об устройстве в DeviceInfoSet.

[in] Scope

Область создаваемого раздела реестра. Область определяет, где хранятся сведения. Созданный ключ может быть глобальным или аппаратным профилем. Может иметь одно из следующих значений:

DICS_FLAG_GLOBAL

Создайте ключ для хранения сведений о глобальной конфигурации. Эти сведения не относятся к конкретному профилю оборудования. В операционных системах на основе NT создается ключ, который коренится в HKEY_LOCAL_MACHINE. Точный открытый ключ зависит от значения параметра KeyType .

DICS_FLAG_CONFIGSPECIFIC

Создайте ключ для хранения сведений о конфигурации для конкретного профиля оборудования. Этот ключ коренится в одной из ветвей аппаратного профиля, а не в HKEY_LOCAL_MACHINE.

[in] HwProfile

Профиль оборудования, для которого создается ключ, если для HwProfileFlags задано значение SPDICS_FLAG_CONFIGSPECIFIC. Если HwProfile имеет значение 0, создается ключ для текущего профиля оборудования. Если HwProfileFlags SPDICS_FLAG_GLOBAL, HwProfile игнорируется.

[in] KeyType

Тип создаваемого раздела хранилища реестра. Может иметь одно из следующих значений:

DIREG_DEV

Создайте аппаратный ключ для устройства.

DIREG_DRV

Создайте программный ключ для устройства.

[in, optional] InfHandle

Дескриптор открытого INF-файла, содержащего раздел INF DDInstall , который должен быть выполнен для только что созданного ключа. Этот параметр является необязательным и может иметь значение NULL. Если указан этот параметр, необходимо также указать InfSectionName .

[in, optional] InfSectionName

Имя раздела INF DDInstall в INF-файле, указанном в InfHandle. Этот раздел выполняется для только что созданного ключа. Этот параметр является необязательным и может иметь значение NULL. Если указан этот параметр, необходимо также указать InfHandle .

Возвращаемое значение

Если setupDiCreateDevRegKey завершается успешно, функция возвращает дескриптор указанного раздела реестра, в котором можно хранить и извлекать данные конфигурации для конкретного устройства. Если SetupDiCreateDevRegKey завершается сбоем, функция возвращает INVALID_HANDLE_VALUE. Вызовите Метод GetLastError , чтобы получить расширенные сведения об ошибке.

Комментарии

Вызывающий объект SetupDiCreateDevRegKey должен быть членом группы Администраторы.

Закройте дескриптор, возвращенный из SetupDiCreateDevRegKey , вызвав RegCloseKey.

Если указанный ключ уже существует, SetupDiCreateDevRegKey возвращает дескриптор этого ключа. В противном случае SetupDiCreateDevRegKey создает указанный ключ и возвращает дескриптор новому ключу. Для Windows Server 2003 и более поздних версий Windows дескриптор ключа имеет только KEY_READ и KEY_WRITE доступ. В предыдущих версиях Windows этот дескриптор имеет KEY_ALL_ACCESS доступ.

Указанный экземпляр устройства должен быть зарегистрирован перед вызовом SetupDiCreateDevRegKey . Однако обратите внимание, что операционная система автоматически регистрирует экземпляры устройств PnP. Сведения о регистрации экземпляров устройств, отличных от PnP, см. в разделе SetupDiRegisterDeviceInfo.

Для установок, использующих файлы макета (указанные в записи LayoutFile в разделе Версия INF), файл макета должен быть открыт вызовом SetupOpenAppendInfFile (описан в документации по Microsoft Windows SDK) перед вызовом SetupDiCreateDevRegKey.

Если предоставленный набор сведений об устройстве содержит элементы сведений об устройстве для удаленной системы, а также указаны InfHandle и InfSectionName , запрос на создание завершится ошибкой, а последующий вызов GetLastError вернет ERROR_REMOTE_REQUEST_UNSUPPORTED.

Примечание

Заголовок setupapi.h определяет SetupDiCreateDevRegKey в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Доступно в Microsoft Windows 2000 и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть setupapi.h (включая Setupapi.h)
Библиотека Setupapi.lib

См. также раздел

SetupDiCreateDeviceInfo

SetupDiGetHwProfileList

SetupDiOpenDevRegKey

SetupDiRegisterDeviceInfo