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 的指针,该 GUID 指定要检索的别名的接口类。

[out] AliasSymbolicLinkName

指定指向 NULL Unicode 字符串的指针。 成功返回时, AliasSymbolicLinkName缓冲区 指向包含别名名称的字符串。 当不再需要 Unicode 字符串时,调用方必须使用 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)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

IoRegisterDeviceInterface

RtlFreeUnicodeString