IoGetDeviceInterfacePropertyData 函数 (wdm.h)

IoGetDeviceInterfacePropertyData 例程检索设备接口属性的当前值。

语法

NTSTATUS IoGetDeviceInterfacePropertyData(
  [in]  PUNICODE_STRING  SymbolicLinkName,
  [in]  const DEVPROPKEY *PropertyKey,
  [in]  LCID             Lcid,
        ULONG            Flags,
  [in]  ULONG            Size,
  [out] PVOID            Data,
  [out] PULONG           RequiredSize,
  [out] PDEVPROPTYPE     Type
);

参数

[in] SymbolicLinkName

指向标识设备接口实例的字符串的指针。 此字符串是从之前对 IoGetDeviceInterfacesIoGetDeviceInterfaceAliasIoRegisterDeviceInterface 例程的调用中获取的。

[in] PropertyKey

指向包含设备接口属性键的 DEVPROPKEY 结构的指针。

[in] Lcid

指定区域设置标识符。 将此参数设置为特定于语言的 LCID 值或 LOCALE_NEUTRALLOCALE_NEUTRAL LCID 指定 属性是非特定语言 (,不特定于任何语言) 。 不要将此参数设置为 LOCALE_SYSTEM_DEFAULTLOCALE_USER_DEFAULT。 有关特定于语言的 LCID 值的详细信息,请参阅 LCID 结构

Flags

预留给系统使用。 驱动程序应将此值设置为零。

[in] Size

指定 Data 指向的缓冲区的大小(以字节为单位)。

[out] Data

指向调用方分配的缓冲区的指针,例程在其中写入设备接口属性数据。

[out] RequiredSize

指向 IoGetDeviceInterfacePropertyData 写入属性数据所需大小的 ULONG 变量的指针。 如果例程成功,则所需的大小值是例程写入 Data 指向的输出缓冲区的字节数。 如果例程返回STATUS_BUFFER_TOO_SMALL,则所需的 size 值是调用方应为此属性值分配的缓冲区的大小。

[out] Type

指向 DEVPROPTYPE 变量的指针。 如果 IoGetDeviceInterfacePropertyData 成功检索属性数据,则例程会将属性类型值写入此变量。 此值指示 数据 缓冲区中的属性数据类型。

返回值

如果成功,IoGetDeviceInterfacePropertyData 将返回STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。

返回代码 说明
STATUS_BUFFER_TOO_SMALL Data 指向的缓冲区太小,无法包含属性数据。 *RequiredSize 包含所需的缓冲区长度。
STATUS_UNSUCCESSFUL 指定的 LCID 值无效。
STATUS_NOT_IMPLEMENTED 不支持指定的属性。

注解

内核模式驱动程序使用 IoGetDeviceInterfacePropertyData 例程来检索定义为 统一设备属性模型的一部分的设备接口属性。 有关设备接口属性的详细信息,请参阅 设备属性

驱动程序可以使用 IoSetDeviceInterfacePropertyData 例程来修改设备接口属性。

IoGetDeviceInterfacePropertyData 的调用方必须在系统线程上下文中的 IRQL = PASSIVE_LEVEL 运行。

要求

要求
最低受支持的客户端 在 Windows 8 及更高版本的 Windows 中可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另请参阅

DEVPROPKEY

DEVPROPTYPE

IoSetDeviceInterfacePropertyData