Функция SetupDiGetDeviceInterfaceDetailA (setupapi.h)
Функция SetupDiGetDeviceInterfaceDetail возвращает сведения об интерфейсе устройства.
Синтаксис
WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailA(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
[out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,
[in] DWORD DeviceInterfaceDetailDataSize,
[out, optional] PDWORD RequiredSize,
[out, optional] PSP_DEVINFO_DATA DeviceInfoData
);
Параметры
[in] DeviceInfoSet
Указатель на набор сведений об устройстве , содержащий интерфейс, для которого требуется получить сведения. Этот дескриптор обычно возвращается SetupDiGetClassDevs.
[in] DeviceInterfaceData
Указатель на структуру SP_DEVICE_INTERFACE_DATA , указывающую интерфейс в DeviceInfoSet , для которого требуется получить сведения. Указатель этого типа обычно возвращается методом SetupDiEnumDeviceInterfaces.
[out, optional] DeviceInterfaceDetailData
Указатель на структуру SP_DEVICE_INTERFACE_DETAIL_DATA для получения сведений о указанном интерфейсе. Этот параметр является необязательным и может иметь значение NULL. Этот параметр должен иметь значение NULL , если DeviceInterfaceDetailSize равно нулю. Если указан этот параметр, вызывающий объект должен задать для параметра DeviceInterfaceDetailData.cbSizeзначение sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) перед вызовом этой функции. Элемент cbSize всегда содержит размер фиксированной части структуры данных, а не размер, отражающий строку переменной длины в конце.
[in] DeviceInterfaceDetailDataSize
Размер буфера DeviceInterfaceDetailData . Буфер должен быть не менее (offsetof(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath) + sizeof(TCHAR)) байтов, чтобы содержать фиксированную часть структуры, и один null для завершения пустой строки MULTI_SZ.
Этот параметр должен иметь нулевое значение, если DeviceInterfaceDetailData имеет значение NULL.
[out, optional] RequiredSize
Указатель на переменную типа DWORD, которая получает требуемый размер буфера DeviceInterfaceDetailData . Этот размер включает размер фиксированной части структуры, а также количество байтов, необходимых для строки пути устройства переменной длины. Этот параметр является необязательным и может иметь значение NULL.
[out, optional] DeviceInfoData
Указатель на буфер, получающий сведения об устройстве, поддерживающем запрошенный интерфейс. Вызывающий объект должен задать для Параметра DeviceInfoData.cbSizeзначение sizeof(SP_DEVINFO_DATA). Этот параметр является необязательным и может иметь значение NULL.
Возвращаемое значение
SetupDiGetDeviceInterfaceDetail возвращает значение TRUE , если функция выполнена без ошибок. Если функция завершилась ошибкой, возвращается значение FALSE , а код ошибки для сбоя можно получить, вызвав Метод GetLastError.
Комментарии
Эта функция обычно используется для получения сведений об интерфейсе в два этапа.
- Получение требуемого размера буфера. Вызовите SetupDiGetDeviceInterfaceDetail с указателем Null DeviceInterfaceDetailData, deviceInterfaceDetailDataSize с нулевым значением и допустимой переменной RequiredSize. В ответ на такой вызов эта функция возвращает требуемый размер буфера в RequiredSize и завершается сбоем с getLastError , возвращающим ERROR_INSUFFICIENT_BUFFER.
- Выделите буфер соответствующего размера и вызовите функцию еще раз, чтобы получить сведения об интерфейсе.
SetupDiGetDeviceInterfaceDetail можно использовать для получения только DeviceInfoData. Если интерфейс существует, но DeviceInterfaceDetailData имеет значение NULL, эта функция завершается ошибкой, GetLastError возвращает ERROR_INSUFFICIENT_BUFFER, а структура DeviceInfoData заполняется сведениями об устройстве, которое предоставляет интерфейс.
Примечание
Заголовок setupapi.h определяет SetupDiGetDeviceInterfaceDetail как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Доступно в Microsoft Windows 2000 и более поздних версиях Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | setupapi.h (включая Setupapi.h) |
Библиотека | Setupapi.lib |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по