IWDFUnifiedPropertyStore::SetPropertyData 方法(wudfddi.h)
[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 没有将新功能添加到 UMDF 1,并且对较新版本的 Windows 10 上的 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅 UMDF入门 。]
SetPropertyData 方法修改设备属性的当前设置。
HRESULT SetPropertyData(
[in] const DEVPROPKEY *PropertyKey,
[in] LCID Lcid,
[in] ULONG Flags,
[in] DEVPROPTYPE PropertyType,
[in] ULONG PropertyDataSize,
[in, optional] PVOID PropertyData
);
[in] PropertyKey
指向指定设备属性键的 DEVPROPKEY 结构的指针。
[in] Lcid
指定区域设置标识符。 将此参数设置为特定于语言的 LCID 值或LOCALE_NEUTRAL。 LOCALE_NEUTRAL LCID 指定属性是非特定语言(即不特定于任何语言)。 不要将此参数设置为LOCALE_SYSTEM_DEFAULT或LOCALE_USER_DEFAULT。 有关特定于语言的 LCID 值的详细信息,请参阅 LCID 结构。
[in] Flags
保留。 驱动程序应将此值设置为 0。
[in] PropertyType
指向 DEVPROPTYPE 值的指针,该值指定在 PropertyData 缓冲区中提供的数据的类型。
[in] PropertyDataSize
PropertyData 指向的缓冲区的大小(以字节为单位)。
[in, optional] PropertyData
指向设备属性数据的指针。 将此参数设置为 NULL 以删除指定的属性。
SetPropertyData 如果作成功,则返回S_OK。 否则,该方法可能会返回以下值。
返回代码 | 描述 |
---|---|
|
框架尝试分配内存失败。 |
|
如果驱动程序指定 WdfPropertyStoreRootClassDeviceInterfaceKey,则请求的接口必须是以前注册的 UMDF 驱动程序的接口。 |
|
驱动程序只能从 Windows 8 开始修改设备接口属性数据。 |
此方法可能会返回与 Winerror.h 包含的其他值之一对应的 HRESULT 类型值。
基于框架的驱动程序使用 SetPropertyData 方法修改定义为统一设备属性模型的一部分的设备属性。
具体而言,可以使用此方法修改设备的 硬件密钥 或设备接口类的实例。 调用 IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore时,请将 RootSpecifier 参数的 RootClass 成员设置为 WdfPropertyStoreRootClassHardwareKey 或 WdfPropertyStoreRootClassDeviceInterfaceKey。
如果指定 WdfPropertyStoreRootClassHardwareKey,则在 调用 setPropertyData时,必须在 PropertyKey 参数中提供自定义 DEVPROPKEY 值,而不是 PnP 定义的密钥。 必须先通过调用 SetPropertyData、SetupDI 设备属性函数或使用 INF AddProperty 指令来设置该值。
如果驱动程序指定 WdfPropertyStoreRootClassDeviceInterfaceKey,则请求的接口必须是 UMDF 驱动程序以前在运行时注册的接口。
如果驱动程序在其 INF 文件中注册接口,则还必须在 INF 中设置关联的属性。
有关访问注册表的详细信息,请参阅 在基于 UMDF 的驱动程序中使用注册表。
HRESULT
SetFriendlyName(
_In_ IWDFUnifiedPropertyStore * pUnifiedPropertyStore
)
{
HRESULT hr = S_OK;
WCHAR friendlyName[] = L"UMDF OSR USB Fx2 Test Device";
hr = pUnifiedPropertyStore->SetPropertyData(
&DEVPKEY_Device_FriendlyName,
0, //Lcid
0, //Flags
DEVPROP_TYPE_STRING, //Type
sizeof(friendlyName),
friendlyName
);
if (FAILED(hr))
{
TraceEvents(
TRACE_LEVEL_ERROR,
TEST_TRACE_DEVICE,
"SetPropertyData failed: hr = %!HRESULT!",
hr
);
goto exit;
}
exit:
return hr;
}
要求 | 价值 |
---|---|
终止支持 | 在 UMDF 2.0 及更高版本中不可用。 |
目标平台 | 桌面 |
最低 UMDF 版本 | 1.11 |
标头 | wudfddi.h |
DLL | WUDFx.dll |
IWDFUnifiedPropertyStoreFactory