SP_DRVINFO_DETAIL_DATA_A struttura (setupapi.h)

Una struttura SP_DRVINFO_DETAIL_DATA contiene informazioni dettagliate su una particolare struttura di informazioni sui driver.

Sintassi

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;

Members

cbSize

Dimensioni, in byte, della struttura SP_DRVINFO_DETAIL_DATA.

InfDate

Data del file INF per questo driver.

CompatIDsOffset

Offset, in caratteri, dall'inizio del buffer HardwareID in cui inizia l'elenco CompatIDs.

Questo valore può essere usato anche per determinare se è presente un ID hardware che precede l'elenco CompatIDs. Se questo valore è maggiore di 1, la prima stringa nel buffer HardwareID è l'ID hardware. Se questo valore è minore o uguale a 1, non esiste alcun ID hardware.

CompatIDsLength

Lunghezza, in caratteri, dell'elenco CompatIDs a partire dall'offset CompatIDsOffset dall'inizio del buffer HardwareID .

Se CompatIDsLength è diverso da zero, l'elenco CompatIDs contiene una o più stringhe con terminazione NULL con un carattere NULL aggiuntivo alla fine dell'elenco.

Se CompatIDsLength è zero, l'elenco CompatIDs è vuoto. In questo caso, non esiste alcun carattere NULL aggiuntivo alla fine dell'elenco.

Reserved

Riservato. Solo per uso interno.

SectionName[LINE_LEN]

Stringa con terminazione NULL contenente il nome della sezione INF DDInstall per questo driver. Questo deve essere il nome della sezione DDInstall di base, ad esempio InstallSec, senza estensioni specifiche del sistema operativo/architettura.

InfFileName[MAX_PATH]

Stringa con terminazione NULL contenente il nome completo del file INF per questo driver.

DrvDescription[LINE_LEN]

Stringa con terminazione NULL che descrive il driver.

HardwareID[ANYSIZE_ARRAY]

Buffer che contiene un elenco di ID (un singolo ID hardware seguito da un elenco di ID compatibili). Questi ID corrispondono all'ID hardware e agli ID compatibili nella sezione Modelli INF.

Ogni ID nell'elenco è una stringa con terminazione NULL.

Se l'ID hardware esiste , ovvero se CompatIDsOffset è maggiore di uno, questa singola stringa con terminazione NULL viene trovata all'inizio del buffer.

Se l'elenco CompatIDs non è vuoto, ovvero se CompatIDsLength non è zero, l'elenco CompatIDs inizia all'offset CompatIDsOffset dall'inizio di questo buffer e viene terminato con un carattere NULL aggiuntivo alla fine dell'elenco.

Commenti

L'ID hardware e gli ID compatibili per un dispositivo vengono specificati nella sezione Modelli INF nell'ordine seguente:

  • Il primo ID (se specificato) è l'ID hardware per il dispositivo.
  • Gli ID rimanenti (se specificato) sono ID compatibili per il dispositivo.
Quando si analizza il buffer HardwareID , è necessario assicurarsi di determinare correttamente la fine dei dati nel buffer. Tenere presente che il buffer non è necessariamente doppio NULL terminato.

Ad esempio, a seconda del modo in cui viene specificato l'elenco di ID hardware e ID compatibili nella sezione Modelli INF, il buffer HardwareID può essere simile a uno dei seguenti:

  • \0
  • <HWID>\0
  • <HWID>\0 COMPATID_1>\0<...<>COMPATID_N\0\0
  • \0 COMPATID_1>\0<...<>COMPATID_N\0\0
Un algoritmo per analizzare correttamente questo buffer deve usare i campi CompatIDsOffset e CompatIDsLength per estrarre l'ID hardware e gli ID compatibili, come illustrato nell'esempio di codice seguente:
// 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)
}

Nota

L'intestazione setupapi.h definisce SP_DRVINFO_DETAIL_DATA come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Intestazione setupapi.h (includere Setupapi.h)

Vedi anche

ID compatibili

Hardware ID

Sezione INF DDInstall

Sezione Modelli INF

SetupDiGetDriverInfoDetail