fonction CM_Get_Device_Interface_ListW (cfgmgr32.h)
La fonction CM_Get_Device_Interface_List récupère une liste d’instances d’interface d’appareil appartenant à une classe d’interface d’appareil spécifiée.
Syntaxe
CMAPI CONFIGRET CM_Get_Device_Interface_ListW(
[in] LPGUID InterfaceClassGuid,
[in, optional] DEVINSTID_W pDeviceID,
[out] PZZWSTR Buffer,
[in] ULONG BufferLen,
[in] ULONG ulFlags
);
Paramètres
[in] InterfaceClassGuid
Fournit un GUID qui identifie une classe d’interface d’appareil.
[in, optional] pDeviceID
Pointeur fourni par l’appelant vers une chaîne terminée par NULL qui représente un ID d’instance d’appareil . Si elle est spécifiée, la fonction récupère les interfaces d’appareil prises en charge par l’appareil pour la classe spécifiée. Si cette valeur est NULL, ou si elle pointe vers une chaîne de longueur nulle, la fonction récupère toutes les interfaces appartenant à la classe spécifiée.
[out] Buffer
Pointeur fourni par l’appelant vers une mémoire tampon qui reçoit plusieurs chaînes Unicode terminées par NULL, chacune représentant le nom de lien symbolique d’une instance d’interface.
[in] BufferLen
Valeur fournie par l’appelant qui spécifie la longueur, en caractères, de la mémoire tampon pointée par tampon. Appelez CM_Get_Device_Interface_List_Size pour déterminer la taille de mémoire tampon requise.
[in] ulFlags
Contient l’un des indicateurs fournis par l’appelant suivant :
CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES
La fonction fournit une liste contenant des interfaces d’appareil associées à tous les appareils qui correspondent au GUID spécifié et à l’ID d’instance d’appareil, le cas échéant.
CM_GET_DEVICE_INTERFACE_LIST_PRESENT
La fonction fournit une liste contenant des interfaces d’appareil associées aux appareils actuellement actifs et qui correspondent au GUID et à l’ID d’instance d’appareil spécifiés, le cas échéant.
Valeur de retour
Si l’opération réussit, la fonction retourne CR_SUCCESS. Sinon, il retourne l’un des codes d’erreur avec le préfixe CR_ tel que défini dans Cfgmgr32.h.
Le tableau suivant inclut certains des codes d’erreur les plus courants que cette fonction peut retourner.
Retourner le code | Description |
---|---|
|
La mémoire tampon tampon est trop petite pour contenir la liste demandée des interfaces d’appareil. |
Remarques
Entre l’appel de CM_Get_Device_Interface_List_Size pour obtenir la taille de la liste et l’appel de CM_Get_Device_Interface_List pour obtenir la liste, une nouvelle interface d’appareil peut être ajoutée au système, ce qui entraîne l’absence de validité de la taille retournée. Les appelants doivent être robustes à cette condition et réessayer d’obtenir la taille et la liste si CM_Get_Device_Interface_List retourne CR_BUFFER_SMALL.
Exemples
Cet extrait de code illustre une nouvelle tentative d’obtention de la taille et de la liste, comme décrit dans la section Remarques.
CONFIGRET cr = CR_SUCCESS;
PWSTR DeviceInterfaceList = NULL;
ULONG DeviceInterfaceListLength = 0;
do {
cr = CM_Get_Device_Interface_List_Size(&DeviceInterfaceListLength,
(LPGUID)&GUID_DEVINTERFACE_VOLUME,
NULL,
CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES);
if (cr != CR_SUCCESS)
{
break;
}
if (DeviceInterfaceList != NULL) {
HeapFree(GetProcessHeap(),
0,
DeviceInterfaceList);
}
DeviceInterfaceList = (PWSTR)HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
DeviceInterfaceListLength * sizeof(WCHAR));
if (DeviceInterfaceList == NULL)
{
cr = CR_OUT_OF_MEMORY;
break;
}
cr = CM_Get_Device_Interface_List((LPGUID)&GUID_DEVINTERFACE_VOLUME,
NULL,
DeviceInterfaceList,
DeviceInterfaceListLength,
CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES);
} while (cr == CR_BUFFER_SMALL);
if (cr != CR_SUCCESS)
{
goto Exit;
}
Note
L’en-tête cfgmgr32.h définit CM_Get_Device_Interface_List 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 |
---|---|
client minimum pris en charge | Disponible dans Microsoft Windows 2000 et versions ultérieures de Windows. |
plateforme cible | Universel |
d’en-tête | cfgmgr32.h (include Cfgmgr32.h) |
bibliothèque | Cfgmgr32.lib |
DLL | CfgMgr32.dll |