IoSetDevicePropertyData 函数 (wdm.h)

IoSetDevicePropertyData 例程修改设备属性的当前设置。

语法

NTSTATUS IoSetDevicePropertyData(
  [in]           PDEVICE_OBJECT   Pdo,
  [in]           const DEVPROPKEY *PropertyKey,
  [in]           LCID             Lcid,
  [in]           ULONG            Flags,
  [in]           DEVPROPTYPE      Type,
  [in]           ULONG            Size,
  [in, optional] PVOID            Data
);

参数

[in] Pdo

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

[in] PropertyKey

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

[in] Lcid

区域设置标识符。 将此参数设置为特定于语言的 LCID 值或 LOCALE_NEUTRAL

LOCALE_NEUTRAL LCID 指定属性是非特定语言(即不特定于任何语言)。

不要将此参数设置为 LOCALE_SYSTEM_DEFAULTLOCALE_USER_DEFAULT

有关特定于语言的 LCID 值的详细信息,请参阅 LCID 结构

[in] Flags

如果此例程设置的属性值应在计算机重启后持久保留,请将此参数设置为 PLUGPLAY_PROPERTY_PERSISTENT。 否则,请将 标志 设置为零。

Windows 8 和 Windows Server 2012 及更高版本的作系统将 标志 视为始终传递 PLUGPLAY_PROPERTY_PERSISTENT

[in] Type

DEVPROPTYPE 值,该值指定 数据 缓冲区中提供的数据的类型。

[in] Size

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

[in, optional] Data

指向设备属性数据的指针。 将此参数设置为 NULL 以删除指定的属性。 如果 数据 为非NULL,则例程将存储属性值的内部副本。 Data 指向的缓冲区不需要在调用返回后保持有效。

返回值

IoSetDevicePropertyData 在调用成功或失败时返回相应的 NTSTATUS 代码STATUS_SUCCESS。

言论

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

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

若要删除特定区域设置的属性,请 Lcid 中传递特定于语言的 LCID 值,并在 DataNULL

若要删除所有区域设置的属性,请传递 Lcid 中的 LOCALE_NEUTRAL,并在 Data中传递 NULL

若要修改特定区域设置的属性,请 Lcid 中传递特定于语言的 LCID 值,并在 Data中传递非NULL

若要修改所有区域设置的属性,请将 LOCALE_NEUTRAL 传入 Lcid 和非NULLData中。

从 Windows 8 和 Windows Server 2012 开始,Lcid 中传递 LOCALE_NEUTRAL 将被视为任何其他区域设置。

驱动程序可以使用 IoGetDevicePropertyData 例程获取设备属性的当前值。

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

要求

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

另请参阅

DEVPROPKEY

DEVPROPTYPE

IoGetDevicePropertyData