Rémi Bernon (@rbernon) commented about dlls/windows.devices.enumeration/tests/devices.c:
case PropertyType_String:
{ HSTRING str;
boolean bool_val;
hr = IDeviceInformation_get_Id( info, &str );
ok_(__FILE__, line)( hr == S_OK, "got hr %#lx\n", hr );
hr = IPropertyValue_GetString( propval, &str );
ok( hr == S_OK, "got hr %#lx\n", hr );
ok( prop->Type == DEVPROP_TYPE_STRING || prop->Type == DEVPROP_TYPE_STRING_INDIRECT, "got Type %#lx\n", prop->Type );
/* TODO:
* For DEVPROP_TYPE_STRING_INDIRECT, WinRT extracts the locale-specific string from the referenced INF.
* System.ItemNameDisplay's value is formatted differently by WinRT. */
if (prop->Type == DEVPROP_TYPE_STRING)
ok( !wcsicmp( WindowsGetStringRawBuffer( str, NULL ), prop->Buffer ) || broken( !wcsicmp( prop_name, L"System.ItemNameDisplay" ) ),
"got str %s != %s\n", debugstr_hstring( str ), debugstr_w( prop->Buffer ) );
I'm not sure we should use broken here, is it different across Windows versions or just different for this property? In the latter case, the property should be special cased and we should implement the same thing as native.