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

Функция SetupDiCreateDeviceInfo создает новый элемент сведений об устройстве и добавляет его в качестве нового члена в указанный набор сведений об устройстве.

Синтаксис

WINSETUPAPI BOOL SetupDiCreateDeviceInfoA(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PCSTR            DeviceName,
  [in]            const GUID       *ClassGuid,
  [in, optional]  PCSTR            DeviceDescription,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            CreationFlags,
  [out, optional] PSP_DEVINFO_DATA DeviceInfoData
);

Параметры

[in] DeviceInfoSet

Дескриптор набора сведений об устройстве для локального компьютера.

[in] DeviceName

Указатель на строку, завершающуюся значением NULL, которая предоставляет полный идентификатор экземпляра устройства (например, "Root*PNP0500\0000") или идентификатор устройства с корнем без префикса перечислителя и суффикса идентификатора экземпляра (например, "*PNP0500"). Идентификатор устройства с корневым перечислением можно использовать только в том случае, если флаг DICD_GENERATE_ID указан в параметре CreationFlags .

[in] ClassGuid

Указатель на GUID класса установки устройства для устройства. Если класс настройки устройства устройства неизвестен, задайте для параметра *ClassGuid GUID_NULL структуру.

[in, optional] DeviceDescription

Указатель на строку, завершающуюся значением NULL, которая предоставляет текстовое описание устройства. Этот указатель является необязательным и может иметь значение NULL.

[in, optional] hwndParent

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

[in] CreationFlags

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

DICD_GENERATE_ID

Если этот флаг указан, DeviceName содержит только идентификатор устройства с корневым перечислением, и система использует этот идентификатор для создания полного идентификатора экземпляра устройства для нового элемента сведений об устройстве.

Вызовите SetupDiGetDeviceInstanceId , чтобы получить идентификатор экземпляра устройства, созданный для этого элемента сведений об устройстве.

DICD_INHERIT_CLASSDRVS

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

[out, optional] DeviceInfoData

Указатель на структуру SP_DEVINFO_DATA , которая получает новый элемент сведений об устройстве. Этот указатель является необязательным и может иметь значение NULL. Если указана структура, вызывающий объект должен задать для элемента cbSize этой структуры значение sizeof(SP_DEVINFO_DATA) перед вызовом функции. Дополнительные сведения см. в следующем разделе Примечаний .

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

Функция возвращает значение TRUE в случае успешного выполнения. В противном случае возвращается значение FALSE , а зарегистрированная ошибка может быть получена путем вызова Метода GetLastError.

Комментарии

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

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

Если указанный экземпляр устройства совпадает с существующим разделом экземпляра устройства в реестре, вызов завершается ошибкой. В этом случае вызов GetLastError возвращает ERROR_DEVINST_ALREADY_EXISTS. Это происходит, только если флаг DICD_GENERATE_ID не задан.

Если новый элемент сведений об устройстве успешно создан, но предоставленный вызывающим объектом буфер DeviceInfoData недопустим, функция возвращает значение FALSE. В этом случае вызов GetLastError возвращает ERROR_INVALID_USER_BUFFER. Однако элемент сведений об устройстве уже будет добавлен как новый член набора.

DeviceInfoSet должен содержать только элементы на локальном компьютере.

Примечание

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

Требования

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

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

SP_DEVINFO_DATA

SetupDiDeleteDeviceInfo

SetupDiEnumDeviceInfo

SetupDiOpenDeviceInfo