Partager via


structure SP_DRVINFO_DETAIL_DATA_A (setupapi.h)

Une structure SP_DRVINFO_DETAIL_DATA contient des informations détaillées sur une structure d’informations de pilote particulière.

Syntaxe

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;

Membres

cbSize

Taille, en octets, de la structure SP_DRVINFO_DETAIL_DATA.

InfDate

Date du fichier INF de ce pilote.

CompatIDsOffset

Décalage, en caractères, à partir du début du HardwareID tampon où commence la liste CompatIDs.

Cette valeur peut également être utilisée pour déterminer s’il existe un ID matériel qui précède la liste CompatIDs. Si cette valeur est supérieure à 1, la première chaîne du HardwareID tampon est l’ID matériel. Si cette valeur est inférieure ou égale à 1, il n’existe aucun ID matériel.

CompatIDsLength

Longueur, en caractères, de la liste CompatIDs commençant à offset CompatIDsOffset à partir du début de la mémoire tampon hardwareID .

Si CompatIDsLength n’est pas zéro, la liste CompatIDs contient une ou plusieurs chaînes terminées par NULL avec un caractère NULL supplémentaire à la fin de la liste.

Si CompatIDsLength est égal à zéro, la liste CompatIDs est vide. Dans ce cas, il n’existe aucun caractère NULL supplémentaire à la fin de la liste.

Reserved

Réservé. Pour une utilisation interne uniquement.

SectionName[LINE_LEN]

Chaîne terminée par NULL qui contient le nom de la section INF DDInstall pour ce pilote. Il doit s’agir du nom de section de base DDInstall, tel que InstallSec, sans extensions spécifiques au système d’exploitation/architecture.

InfFileName[MAX_PATH]

Chaîne terminée par NULL qui contient le nom complet du fichier INF pour ce pilote.

DrvDescription[LINE_LEN]

Chaîne terminée par NULL qui décrit le pilote.

HardwareID[ANYSIZE_ARRAY]

Mémoire tampon qui contient une liste d’ID (id matériel unique suivi d’une liste d’ID compatibles ). Ces ID correspondent à l’ID matériel et aux ID compatibles dans la section modèles INF .

Chaque ID de la liste est une chaîne terminée par NULL.

Si l’ID matériel existe (autrement dit, si CompatIDsOffset est supérieur à un), cette seule chaîne terminée par NULL est trouvée au début de la mémoire tampon.

Si la liste CompatIDs n’est pas vide (autrement dit, si CompatIDsLength n’est pas zéro), la liste CompatIDs démarre au décalage CompatIDsOffset à partir du début de cette mémoire tampon et se termine par un caractère NULL supplémentaire à la fin de la liste.

Remarques

L’ID matériel et les ID compatibles pour un appareil sont spécifiés dans la section modèles INF dans l’ordre suivant :

  • Le premier ID (s’il est spécifié) est l’ID matériel de l’appareil.
  • Les ID restants (s’ils sont spécifiés) sont des ID compatibles pour l’appareil.
Lorsque vous analysez la mémoire tampon HardwareID, vous devez vous assurer que vous devez déterminer correctement la fin des données dans la mémoire tampon. N’oubliez pas que la mémoire tampon n’est pas nécessairement double NULL terminée.

Par exemple, selon la façon dont la liste des ID matériels et id compatibles sont spécifiés dans la section modèles INF , la mémoire tampon HardwareID peut ressembler à l’une des options suivantes :

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<COMPATID_N>\0\0
  • \0<COMPATID_1>\0...<COMPATID_N>\0\0
Un algorithme pour analyser correctement cette mémoire tampon doit utiliser le CompatIDsOffset et les champs CompatIDsLength pour extraire l’ID matériel et ID compatibles, comme illustré dans l’exemple de code suivant :
// 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)
}

Note

L’en-tête setupapi.h définit SP_DRVINFO_DETAIL_DATA en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
d’en-tête setupapi.h (include Setupapi.h)

Voir aussi

ID compatibles

id matériel

section DDInstall INF

section modèles INF

SetupDiGetDriverInfoDetail