IoGetDevicePropertyData 函数 (wdm.h)

IoGetDevicePropertyData 例程检索设备属性的当前设置。

语法

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

参数

[in] Pdo

指向正在查询的设备 (PDO) 的物理设备对象的指针。

[in] PropertyKey

指向指定设备属性键的 DEVPROPKEY 结构的指针。

[in] Lcid

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

Flags

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

[in] Size

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

[out] Data

指向设备属性数据的指针。

[out] RequiredSize

指向 ULONG 的指针,用于接收 在 Data 中返回的属性信息的大小。 如果 IoGetDevicePropertyData 返回STATUS_BUFFER_TOO_SMALL,则调用方可以使用此值分配正确大小的缓冲区。

[out] Type

指向 DEVPROPTYPE 值的指针。 如果 IoGetDevicePropertyData 成功完成,则例程使用 Type 提供 数据 缓冲区中返回的数据类型。

返回值

IoGetDevicePropertyData 返回 NTSTATUS 值。 此例程可能会返回以下值之一:

返回代码 说明
STATUS_SUCCESS
操作成功。 数据缓冲区包含检索到的数据。 **Type* 包含检索到的数据的类型。
STATUS_BUFFER_TOO_SMALL
数据缓冲区太小。 **RequiredSize* 包含所需的缓冲区长度。
STATUS_OBJECT_NAME_NOT_FOUND
找不到指定的设备属性。

注解

内核模式驱动程序使用 IoGetDevicePropertyData 例程检索定义为统一设备属性模型的一部分的设备属性。

若要查看可供此例程使用的属性类型,请参阅 DEVPROP_TYPE_BYTE 和相邻页 DEVPROP_TYPE_*

驱动程序可以使用 IoSetDevicePropertyData 例程修改设备属性。

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

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

DEVPROPKEY

DEVPROPTYPE

IoSetDevicePropertyData