estrutura SP_DRVINFO_DETAIL_DATA_W (setupapi.h)

Uma estrutura SP_DRVINFO_DETAIL_DATA contém informações detalhadas sobre uma estrutura de informações de driver específica.

Sintaxe

typedef struct _SP_DRVINFO_DETAIL_DATA_W {
  DWORD     cbSize;
  FILETIME  InfDate;
  DWORD     CompatIDsOffset;
  DWORD     CompatIDsLength;
  ULONG_PTR Reserved;
  WCHAR     SectionName[LINE_LEN];
  WCHAR     InfFileName[MAX_PATH];
  WCHAR     DrvDescription[LINE_LEN];
  WCHAR     HardwareID[ANYSIZE_ARRAY];
} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;

Membros

cbSize

O tamanho, em bytes, da estrutura SP_DRVINFO_DETAIL_DATA.

InfDate

Data do arquivo INF para esse driver.

CompatIDsOffset

O deslocamento, em caracteres, desde o início do buffer HardwareID em que a lista CompatIDs começa.

Esse valor também pode ser usado para determinar se há uma ID de hardware que precede a lista CompatIDs. Se esse valor for maior que 1, a primeira cadeia de caracteres no buffer HardwareID será a ID de hardware. Se esse valor for menor ou igual a 1, não haverá ID de hardware.

CompatIDsLength

O comprimento, em caracteres, da lista CompatIDs começando no deslocamento CompatIDsOffset desde o início do buffer HardwareID .

Se CompatIDsLength não for zero, a lista CompatIDs conterá uma ou mais cadeias de caracteres terminadas em NULL com um caractere NULL adicional no final da lista.

Se CompatIDsLength for zero, a lista CompatIDs estará vazia. Nesse caso, não há nenhum caractere NULL adicional no final da lista.

Reserved

Reservado. Apenas para uso interno.

SectionName[LINE_LEN]

Uma cadeia de caracteres terminada em NULL que contém o nome da seção INF DDInstall para esse driver. Esse deve ser o nome básico da seção DDInstall , como InstallSec, sem extensões específicas do sistema operacional/arquitetura.

InfFileName[MAX_PATH]

Uma cadeia de caracteres terminada em NULL que contém o nome totalmente qualificado do arquivo INF para esse driver.

DrvDescription[LINE_LEN]

Uma cadeia de caracteres terminada em NULL que descreve o driver.

HardwareID[ANYSIZE_ARRAY]

Um buffer que contém uma lista de IDs (uma única ID de hardware seguida por uma lista de IDs compatíveis). Essas IDs correspondem à ID de hardware e às IDs compatíveis na seção Modelos INF.

Cada ID na lista é uma cadeia de caracteres terminada em NULL.

Se a ID de hardware existir (ou seja, se CompatIDsOffset for maior que uma), essa única cadeia de caracteres terminada em NULL será encontrada no início do buffer.

Se a lista CompatIDs não estiver vazia (ou seja, se CompatIDsLength não for zero), a lista CompatIDs começará no deslocamento CompatIDsOffset do início desse buffer e será encerrada com um caractere NULL adicional no final da lista.

Comentários

A ID de hardware e as IDs compatíveis de um dispositivo são especificadas na seção Modelos INF na seguinte ordem:

  • A primeira ID (se especificada) é a ID de hardware do dispositivo.
  • As IDs restantes (se especificadas) são IDs compatíveis para o dispositivo.
Ao analisar o buffer HardwareID , você deve garantir que determine corretamente o fim dos dados no buffer. Lembre-se de que o buffer não é necessariamente nulo duplo encerrado.

Por exemplo, dependendo de como a lista de IDs de hardware e IDs compatíveis são especificadas na seção Modelos INF, o buffer HardwareID pode ser semelhante a qualquer um dos seguintes:

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<>COMPATID_N\0\0
  • \0<COMPATID_1>\0...<>COMPATID_N\0\0
Um algoritmo para analisar corretamente esse buffer deve usar os campos CompatIDsOffset e CompatIDsLength para extrair a ID de hardware e as IDs compatíveis, conforme mostrado no exemplo de código a seguir:
// 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)
}

Observação

O cabeçalho setupapi.h define SP_DRVINFO_DETAIL_DATA como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cabeçalho setupapi.h (inclua Setupapi.h)

Confira também

IDs compatíveis

Hardware ID

Seção INF DDInstall

Seção Modelos INF

SetupDiGetDriverInfoDetail