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


структура SP_DRVINFO_DETAIL_DATA_A (setupapi.h)

Структура SP_DRVINFO_DETAIL_DATA содержит подробные сведения о конкретной структуре сведений о драйвере.

Синтаксис

typedef struct _SP_DRVINFO_DETAIL_DATA_A {
  DWORD     cbSize;
  FILETIME  InfDate;
  DWORD     CompatIDsOffset;
  DWORD     CompatIDsLength;
  ULONG_PTR Reserved;
  CHAR      SectionName[LINE_LEN];
  CHAR      InfFileName[MAX_PATH];
  CHAR      DrvDescription[LINE_LEN];
  CHAR      HardwareID[ANYSIZE_ARRAY];
} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;

Члены

cbSize

Размер структуры SP_DRVINFO_DETAIL_DATA в байтах.

InfDate

Дата INF-файла для этого драйвера.

CompatIDsOffset

Смещение в символах с начала буфера HardwareID, где начинается список compatIDs.

Это значение также можно использовать для определения того, существует ли идентификатор оборудования, предшествующий списку compatIDs. Если это значение больше 1, первая строка в буфере HardwareID является идентификатором оборудования. Если это значение меньше или равно 1, идентификатор оборудования отсутствует.

CompatIDsLength

Длина в символах списка compatIDs, начиная с смещения CompatIDsOffset с начала буфера HardwareID.

Если compatIDsLength ненулевое значение, список CompatIDs содержит одну или несколько строк, завершаемых значением NULL, с дополнительным символом NULL в конце списка.

Если compatIDsLength равно нулю, список compatIDs пуст. В этом случае в конце списка нет дополнительного символа NULL.

Reserved

Скрытный. Только для внутреннего использования.

SectionName[LINE_LEN]

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

InfFileName[MAX_PATH]

Строка, завершающая значение NULL, содержащая полное имя INF-файла для этого драйвера.

DrvDescription[LINE_LEN]

Строка, завершающая значение NULL, описывающая драйвер.

HardwareID[ANYSIZE_ARRAY]

Буфер, содержащий список идентификаторов (один идентификатор оборудования , за которым следует список совместимых идентификаторов). Эти идентификаторы соответствуют идентификаторам оборудования и совместимым идентификаторам в разделе INF Models.

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

Если идентификатор оборудования существует (то есть если CompatIDsOffset больше одного), эта строка, завершающаяся значением NULL, найдена в начале буфера.

Если список compatIDs не пуст (то есть, если CompatIDsLength не равно нулю), список CompatIDs начинается с смещения CompatIDsOffset с начала этого буфера и завершается дополнительным символом NULL в конце списка.

Замечания

Идентификаторы оборудования и совместимых идентификатор ов для устройства указываются в разделе INF Models в следующем порядке:

  • Первый идентификатор (если указан) — это идентификатор оборудования для устройства.
  • Остальные идентификаторы (при указании) совместимы с идентификаторами для устройства.
При анализе буфера HardwareID необходимо убедиться, что вы правильно определите конец данных в буфере. Помните, что буфер не обязательно завершается двойным значением NULL.

Например, в зависимости от того, как указан список идентификаторов оборудования и совместимых идентификаторов, указан в разделе INF Models, буфер HardwareID может выглядеть следующим образом:

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<COMPATID_N>\0\0
  • \0<COMPATID_1>\0...<COMPATID_N>\0\0
Алгоритм для правильного анализа этого буфера должен использовать поля CompatIDsOffset и поля CompatIDsLength для извлечения идентификатора оборудования и совместимых идентификаторов, как показано в следующем примере кода:
// parse the hardware ID, if it exists
if (CompatIDsOffset > 1)
{
    // Parse for hardware ID from index 0. 
    // This is a single NULL-terminated string
}
 // Parse the compatible IDs, if they exist
if (CompatIDsLength > 0)
{
    // Parse for list of compatible IDs from CompatIDsOffset. 
    // This is a double NULL-terminated list of strings (i.e. MULTI-SZ)
}

Заметка

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

Требования

Требование Ценность
заголовка setupapi.h (include Setupapi.h)

См. также

совместимые идентификаторы

идентификатор оборудования

раздел INF DDInstall

раздела моделей INF

SetupDiGetDriverInfoDetail