Функция IoGetDeviceInterfaceAlias (wdm.h)

Подпрограмма IoGetDeviceInterfaceAlias возвращает интерфейс псевдонима устройства указанного экземпляра интерфейса устройства, если псевдоним существует.

Синтаксис

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

Параметры

[in] SymbolicLinkName

Указатель на имя экземпляра интерфейса устройства, для которого требуется получить псевдоним. Вызывающий объект обычно получает эту строку из вызова IoGetDeviceInterfaces или в структуре уведомлений PnP.

[in] AliasInterfaceClassGuid

Указатель на GUID, указывающий класс интерфейса извлекаемого псевдонима.

[out] AliasSymbolicLinkName

Указывает указатель на строку Юникода NULL . При успешном возвращении — AliasSymbolicLinkName. Buffer указывает на строку, содержащую имя псевдонима. Вызывающий объект должен освободить строку Юникода с помощью RtlFreeUnicodeString , если она больше не нужна.

Возвращаемое значение

IoGetDeviceInterfaceAlias возвращает STATUS_SUCCESS, если вызов был успешным. Возможные возвращаемые значения ошибок описаны ниже.

Код возврата Описание
STATUS_OBJECT_NAME_NOT_FOUND
Возможно, указывает на отсутствие псевдонима указанного класса интерфейса.
STATUS_OBJECT_PATH_NOT_FOUND
Возможно, указывает на отсутствие псевдонима указанного класса интерфейса.
STATUS_INVALID_HANDLE
Возможно, указывает на недопустимое значение SymbolicLinkName или недопустимый AliasClassGuid.

Комментарии

Интерфейсы устройств считаются псевдонимами, если они предоставляются одним и тем же базовым устройством и имеют одинаковые строки ссылок на интерфейс, но имеют разные классы интерфейсов.

Параметр SymbolicLinkName указывает экземпляр интерфейса устройства для определенного устройства, относящегося к определенному классу интерфейса, с определенной ссылочной строкой. IoGetDeviceInterfaceAlias возвращает другой экземпляр интерфейса устройства для того же устройства и ссылочной строки, но другого класса интерфейса, если он существует.

Например, драйвер функции для отказоустойчивого тома может зарегистрировать и задать два интерфейса устройства: один из классов интерфейса отказоустойчивого тома и один из классов интерфейса тома. Другой драйвер может вызвать IoGetDeviceInterfaceAlias с символьной ссылкой для одного из интерфейсов и задать, существует ли другой интерфейс, указав его класс интерфейса.

Два интерфейса устройства со ссылочными строками NULL являются псевдонимами, если они предоставляются тем же базовым устройством и имеют разные идентификаторы GUID класса интерфейса.

Вызывающие объект IoGetDeviceInterfaceAlias должны выполняться в irQL = PASSIVE_LEVEL в контексте системного потока.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания")
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

IoRegisterDeviceInterface

RtlFreeUnicodeString