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_DEFAULT 或 LOCALE_USER_DEFAULT。
有关特定于语言的 LCID 值的详细信息,请参阅 LCID 结构。
[in] Flags
如果此例程设置的属性值应在计算机重启后保留,请将此参数设置为 PLUGPLAY_PROPERTY_PERSISTENT 。 否则,请将 Flags 设置为零。
Windows 8和Windows Server 2012及更高版本的操作系统将标志视为始终传递PLUGPLAY_PROPERTY_PERSISTENT。
[in] Type
一个 DEVPROPTYPE 值,该值指定数据缓冲区中提供的 数据类型 。
[in] Size
Data 指向的缓冲区的大小(以字节为单位)。
[in, optional] Data
指向设备属性数据的指针。 将此参数设置为 NULL 可删除指定的属性。 如果 Data 为非 NULL,则例程存储属性值的内部副本。 在调用返回后, Data 指向的缓冲区不需要保持有效。
返回值
如果调用成功,IoSetDevicePropertyData 将返回STATUS_SUCCESS,或者在失败时返回相应的 NTSTATUS 代码。
注解
若要查看此例程可用的属性类型,请参阅 的DEVPROP_TYPE_BYTE 和相邻页 DEVPROP_TYPE_*
。
内核模式驱动程序使用 IoSetDevicePropertyData 例程来修改定义为统一设备属性模型的一部分的设备属性。 有关设备属性的详细信息,请参阅 设备属性。
若要删除特定区域设置的属性,请在 Lcid 中传递特定于语言的 LCID 值,在数据中传递 NULL。
若要删除所有区域设置的属性,请在 Lcid 中传递LOCALE_NEUTRAL,在 Data 中传递 NULL。
若要修改特定区域设置的属性,请在 Lcid 中传递特定于语言的 LCID 值,在 Data 中传递非 NULL 值。
若要修改所有区域设置的属性,请在 Lcid 中传递LOCALE_NEUTRAL,在 Data 中传递非 NULL。
从 Windows 8 开始,Windows Server 2012 Lcid 中的传递LOCALE_NEUTRAL将被视为其他任何区域设置。
驱动程序可以使用 IoGetDevicePropertyData 例程来获取设备属性的当前值。
IoSetDeviceProperty 的调用方必须在系统线程上下文中的 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) |