Функция SetupDiGetClassPropertyW (setupapi.h)
Функция SetupDiGetClassProperty извлекает свойство устройства, заданное для класса настройки устройства или класса интерфейса устройства.
Синтаксис
WINSETUPAPI BOOL SetupDiGetClassPropertyW(
[in] const GUID *ClassGuid,
[in] const DEVPROPKEY *PropertyKey,
[out] DEVPROPTYPE *PropertyType,
[out] PBYTE PropertyBuffer,
[in] DWORD PropertyBufferSize,
[out, optional] PDWORD RequiredSize,
[in] DWORD Flags
);
Параметры
[in] ClassGuid
Указатель на GUID, идентифицирующий класс настройки устройства или класс интерфейса устройства, для которого требуется получить свойство устройства, заданное для класса устройства. Сведения об указании типа класса см. в параметре Flags .
[in] PropertyKey
Указатель на структуру DEVPROPKEY , представляющую ключ свойства устройства запрошенного свойства класса устройства.
[out] PropertyType
Указатель на переменную типа DEVPROPTYPE, которая получает идентификатор типа property-data-type запрошенного свойства класса устройства, где идентификатором типа property-data-type является побитовое ИЛИ между идентификатором базового типа данных и модификатором property-data-type( при изменении базового типа данных).
[out] PropertyBuffer
Указатель на буфер, который получает запрошенное свойство класса устройства. SetupDiGetClassProperty получает запрошенное значение свойства, только если буфер достаточно велик для хранения всех данных значения свойства. Указатель может иметь значение NULL. Если для указателя задано значение NULL и указан параметр RequiredSize , setupDiGetClassProperty возвращает размер свойства класса устройства в байтах в *RequiredSize.
[in] PropertyBufferSize
Размер буфера PropertyBuffer в байтах. Если свойство PropertyBuffer имеет значение NULL, свойство PropertyBufferSize должно иметь нулевое значение.
[out, optional] RequiredSize
Указатель на переменную типа DWORD, которая получает либо размер (в байтах) свойства класса устройства, если свойство класса устройства извлекается, либо требуемый размер буфера, если буфер недостаточно велик. Для этого указателя можно задать значение NULL.
[in] Flags
Одно из следующих значений, которое указывает, является ли класс классом настройки устройства или классом интерфейса устройства.
DICLASSPROP_INSTALLER
ClassGuid указывает класс настройки устройства. Этот флаг нельзя использовать с DICLASSPROP_INTERFACE.
DICLASSPROP_INTERFACE
ClassGuid указывает класс интерфейса устройства. Этот флаг нельзя использовать с DICLASSPROP_INSTALLER.
Возвращаемое значение
При успешном выполнении setupDiGetClassProperty возвращает значение TRUE . В противном случае возвращается значение FALSE, и зарегистрированную ошибку можно получить, вызвав Метод GetLastError.
В следующей таблице приведены некоторые из наиболее распространенных кодов ошибок, которые эта функция может записывать в журнал.
Код возврата | Описание |
---|---|
|
Значение Flags не равно нулю. |
|
Недопустимый класс настройки устройства, указанный в ClassGuid . Эта ошибка может возникать только в том случае, если указан флаг DICLASSPROP_INSTALLER. |
|
Недопустимый неуказаемый параметр. |
|
Ключ свойства, предоставленный PropertyKey , недопустим. |
|
Недопустимая строка ссылки на интерфейс устройства. Эта ошибка может быть возвращена, если указан флаг DICLASSPROP_INTERFACE. |
|
Неопределенное значение внутренних данных было недопустимым. |
|
Недопустимый буфер пользователя. Один из возможных вариантов заключается в том, что СвойствоBuffer имеет значение NULL, а PropertyBufferSize не равно нулю. |
|
Класс интерфейса устройства, указанный в ClassGuid , не существует. Эта ошибка может возникнуть только в том случае, если указан флаг DICLASSPROP_INTERFACE. |
|
Внутренний буфер данных, переданный в системный вызов, был слишком мал. |
|
Недостаточно системной памяти для завершения операции. |
|
Запрошенное свойство устройства не существует. |
|
Вызывающий объект не имеет прав администратора. |
Комментарии
SetupDiGetClassProperty является частью унифицированной модели свойств устройства.
SetupAPI поддерживает только версию Юникода SetupDiGetClassProperty.
Вызывающий объект SetupDiGetClassProperty должен быть членом группы Администраторы, чтобы задать свойство интерфейса устройства.
Чтобы получить ключи свойств устройства, представляющие свойства устройства, заданные для класса устройства на локальном компьютере, вызовите SetupDiGetClassPropertyKeys.
Чтобы получить свойство класса устройства на удаленном компьютере, вызовите SetupDiGetClassPropertyEx.
Чтобы задать свойство класса устройства на локальном компьютере, вызовите метод SetupDiSetClassProperty, а чтобы задать свойство класса устройства на удаленном компьютере, вызовите метод SetupDiSetClassPropertyEx.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях Windows. |
Целевая платформа | DesktopДля универсальности вызовите CM_Get_Class_Property |
Верхняя часть | setupapi.h (включая Setupapi.h) |
Библиотека | Setupapi.lib |