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 Unicode 字符串的指针。 成功返回后,AliasSymbolicLinkNameBuffer 指向包含别名名称的字符串。 当不再需要时,调用方必须使用 RtlFreeUnicodeString 释放 Unicode 字符串。

返回值

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