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


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

Функция SetupDiOpenDeviceInfo добавляет элемент сведений об устройстве для экземпляра устройства в набор сведений об устройстве, если он еще не существует в наборе сведений об устройстве, и извлекает сведения, идентифицирующий элемент сведений об устройстве для экземпляра устройства в наборе сведений об устройстве.

Синтаксис

WINSETUPAPI BOOL SetupDiOpenDeviceInfoA(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PCSTR            DeviceInstanceId,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            OpenFlags,
  [out, optional] PSP_DEVINFO_DATA DeviceInfoData
);

Параметры

[in] DeviceInfoSet

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

[in] DeviceInstanceId

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

[in, optional] hwndParent

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

[in] OpenFlags

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

DIOD_CANCEL_REMOVE

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

DIOD_INHERIT_CLASSDRVS

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

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

[out, optional] DeviceInfoData

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

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

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

Комментарии

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

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

Примечание

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

Требования

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

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

SP_DEVINFO_DATA

SetupDiCreateDeviceInfo

SetupDiDeleteDeviceInfo

SetupDiEnumDeviceInfo