Partager via


Fonction IoGetDeviceInterfaceAlias (wdm.h)

La routine IoGetDeviceInterfaceAlias retourne l’interface de périphérique d’alias de l’interface d’appareil spécifiée instance, si l’alias existe.

Syntaxe

NTSTATUS IoGetDeviceInterfaceAlias(
  [in]  PUNICODE_STRING SymbolicLinkName,
  [in]  const GUID      *AliasInterfaceClassGuid,
  [out] PUNICODE_STRING AliasSymbolicLinkName
);

Paramètres

[in] SymbolicLinkName

Pointeur vers le nom de l’interface de l’appareil instance pour lequel récupérer un alias. L’appelant a généralement reçu cette chaîne à partir d’un appel à IoGetDeviceInterfaces ou dans une structure de notification PnP.

[in] AliasInterfaceClassGuid

Pointeur vers un GUID spécifiant la classe d’interface de l’alias à récupérer.

[out] AliasSymbolicLinkName

Spécifie un pointeur vers une chaîne Unicode NULL . En cas de retour réussi, AliasSymbolicLinkName. La mémoire tampon pointe vers une chaîne contenant le nom de l’alias. L’appelant doit libérer la chaîne Unicode avec RtlFreeUnicodeString quand elle n’est plus nécessaire.

Valeur retournée

IoGetDeviceInterfaceAlias retourne STATUS_SUCCESS si l’appel a réussi. Les valeurs de retour d’erreur possibles sont décrites ci-dessous.

Code de retour Description
STATUS_OBJECT_NAME_NOT_FOUND
Indique peut-être qu’il n’existe aucun alias de la classe d’interface spécifiée.
STATUS_OBJECT_PATH_NOT_FOUND
Indique peut-être qu’il n’existe aucun alias de la classe d’interface spécifiée.
STATUS_INVALID_HANDLE
Indique éventuellement un SymbolicLinkName non valide ou un AliasClassGuid non valide.

Remarques

Les interfaces d’appareil sont considérées comme des alias si elles sont exposées par le même appareil sous-jacent et ont des chaînes de référence d’interface identiques, mais qu’elles sont de classes d’interface différentes.

Le paramètre SymbolicLinkName spécifie une interface d’appareil instance pour un appareil particulier, appartenant à une classe d’interface particulière, avec une chaîne de référence particulière. IoGetDeviceInterfaceAlias retourne une autre interface d’appareil instance pour le même appareil et la même chaîne de référence, mais d’une classe d’interface différente, le cas échéant.

Par exemple, le pilote de fonction pour un volume à tolérance de pannes peut inscrire et définir deux interfaces d’appareil, l’une de la classe d’interface de volume à tolérance de pannes et l’une de la classe d’interface de volume. Un autre pilote peut appeler IoGetDeviceInterfaceAlias avec le lien symbolique pour l’une des interfaces et demander si l’autre interface existe en spécifiant sa classe d’interface.

Deux interfaces d’appareil avec des chaînes de référence NULL sont des alias s’ils sont exposés par le même appareil sous-jacent et ont des GUID de classe d’interface différents.

Les appelants d’IoGetDeviceInterfaceAlias doivent s’exécuter à IRQL = PASSIVE_LEVEL dans le contexte d’un thread système.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (voir la section Remarques)
Règles de conformité DDI HwStorPortProhibitedDDIs(storport),PowerIrpDDis(wdm)

Voir aussi

IoRegisterDeviceInterface

RtlFreeUnicodeString