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
指向标识设备接口实例的字符串的指针。 此字符串是从先前调用 IoGetDeviceInterfaces、IoGetDeviceInterfaceAlias或 IoRegisterDeviceInterface 例程中获取的。
[in] PropertyKey
指向包含设备接口属性键的 DEVPROPKEY 结构的指针。
[in] Lcid
指定区域设置标识符。 将此参数设置为特定于语言的 LCID 值或 LOCALE_NEUTRAL。 LOCALE_NEUTRAL LCID 指定属性是非特定语言(即不特定于任何语言)。 不要将此参数设置为 LOCALE_SYSTEM_DEFAULT 或 LOCALE_USER_DEFAULT。 有关特定于语言的 LCID 值的详细信息,请参阅 LCID 结构。
Flags
保留供系统使用。 驱动程序应将此值设置为零。
[in] Size
指定 数据 指向的缓冲区的大小(以字节为单位)。
[out] Data
指向调用方分配的缓冲区的指针,例程会将设备接口属性数据写入其中。
[out] RequiredSize
指向 ULONG 变量的指针,IoGetDeviceInterfacePropertyData 写入属性数据所需的大小。 如果例程成功,则所需的大小值是例程写入到 数据 指向的输出缓冲区的字节数。 如果例程返回STATUS_BUFFER_TOO_SMALL,则所需的大小值是调用方应为此属性值分配的缓冲区的大小。
[out] Type
指向 DEVPROPTYPE 变量的指针。 如果 IoGetDeviceInterfacePropertyData 成功检索属性数据,则例程会将属性值写入此变量。 此值指示 数据 缓冲区中的属性数据类型。
返回值
IoGetDeviceInterfacePropertyData 如果成功,则返回STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。
返回代码 | 描述 |
---|---|
STATUS_BUFFER_TOO_SMALL | 数据 指向的缓冲区太小,无法包含属性数据。 * RequiredSize 包含所需的缓冲区长度。 |
STATUS_UNSUCCESSFUL | 指定的 LCID 值无效。 |
STATUS_NOT_IMPLEMENTED | 不支持指定的属性。 |
言论
内核模式驱动程序使用 IoGetDeviceInterfacePropertyData 例程检索定义为 统一设备属性模型的一部分的设备接口属性。 有关设备接口属性的详细信息,请参阅 设备属性。
驱动程序可以使用 IoSetDeviceInterfacePropertyData 例程来修改设备接口属性。
IoGetDeviceInterfacePropertyData 的调用方必须在系统线程的上下文中以 IRQL = PASSIVE_LEVEL运行。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows 8 及更高版本的 Windows 中可用。 |
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |