Commit 6d2c277a authored by Jactry Zeng's avatar Jactry Zeng Committed by Alexandre Julliard

propsys: Add VT_CLSID support for PropVariantToGUID().

parent e0a829db
...@@ -739,6 +739,9 @@ HRESULT WINAPI PropVariantToGUID(const PROPVARIANT *ppropvar, GUID *guid) ...@@ -739,6 +739,9 @@ HRESULT WINAPI PropVariantToGUID(const PROPVARIANT *ppropvar, GUID *guid)
return PROPVAR_WCHARToGUID(ppropvar->u.bstrVal, SysStringLen(ppropvar->u.bstrVal), guid); return PROPVAR_WCHARToGUID(ppropvar->u.bstrVal, SysStringLen(ppropvar->u.bstrVal), guid);
case VT_LPWSTR: case VT_LPWSTR:
return PROPVAR_WCHARToGUID(ppropvar->u.pwszVal, strlenW(ppropvar->u.pwszVal), guid); return PROPVAR_WCHARToGUID(ppropvar->u.pwszVal, strlenW(ppropvar->u.pwszVal), guid);
case VT_CLSID:
memcpy(guid, ppropvar->u.puuid, sizeof(*ppropvar->u.puuid));
return S_OK;
default: default:
FIXME("unsupported vt: %d\n", ppropvar->vt); FIXME("unsupported vt: %d\n", ppropvar->vt);
......
...@@ -568,7 +568,7 @@ static void test_PropVariantToGUID(void) ...@@ -568,7 +568,7 @@ static void test_PropVariantToGUID(void)
hres = PropVariantToGUID(&propvar, &guid); hres = PropVariantToGUID(&propvar, &guid);
ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres); ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres);
ok(!memcmp(&IID_NULL, &guid, sizeof(GUID)), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid)); ok(IsEqualGUID(&IID_NULL, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
PropVariantClear(&propvar); PropVariantClear(&propvar);
hres = InitPropVariantFromGUIDAsString(&dummy_guid, &propvar); hres = InitPropVariantFromGUIDAsString(&dummy_guid, &propvar);
...@@ -576,7 +576,7 @@ static void test_PropVariantToGUID(void) ...@@ -576,7 +576,7 @@ static void test_PropVariantToGUID(void)
hres = PropVariantToGUID(&propvar, &guid); hres = PropVariantToGUID(&propvar, &guid);
ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres); ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres);
ok(!memcmp(&dummy_guid, &guid, sizeof(GUID)), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid)); ok(IsEqualGUID(&dummy_guid, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
ok(propvar.vt == VT_LPWSTR, "incorrect PROPVARIANT type: %d\n", propvar.vt); ok(propvar.vt == VT_LPWSTR, "incorrect PROPVARIANT type: %d\n", propvar.vt);
propvar.u.pwszVal[1] = 'd'; propvar.u.pwszVal[1] = 'd';
...@@ -584,7 +584,7 @@ static void test_PropVariantToGUID(void) ...@@ -584,7 +584,7 @@ static void test_PropVariantToGUID(void)
propvar.u.pwszVal[3] = 'a'; propvar.u.pwszVal[3] = 'a';
hres = PropVariantToGUID(&propvar, &guid); hres = PropVariantToGUID(&propvar, &guid);
ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres); ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres);
ok(!memcmp(&dummy_guid, &guid, sizeof(GUID)), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid)); ok(IsEqualGUID(&dummy_guid, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
propvar.u.pwszVal[1] = 'z'; propvar.u.pwszVal[1] = 'z';
hres = PropVariantToGUID(&propvar, &guid); hres = PropVariantToGUID(&propvar, &guid);
...@@ -597,7 +597,7 @@ static void test_PropVariantToGUID(void) ...@@ -597,7 +597,7 @@ static void test_PropVariantToGUID(void)
hres = VariantToGUID(&var, &guid); hres = VariantToGUID(&var, &guid);
ok(hres == S_OK, "VariantToGUID failed %x\n", hres); ok(hres == S_OK, "VariantToGUID failed %x\n", hres);
ok(!memcmp(&IID_NULL, &guid, sizeof(GUID)), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid)); ok(IsEqualGUID(&IID_NULL, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
VariantClear(&var); VariantClear(&var);
hres = InitVariantFromGUIDAsString(&dummy_guid, &var); hres = InitVariantFromGUIDAsString(&dummy_guid, &var);
...@@ -605,7 +605,7 @@ static void test_PropVariantToGUID(void) ...@@ -605,7 +605,7 @@ static void test_PropVariantToGUID(void)
hres = VariantToGUID(&var, &guid); hres = VariantToGUID(&var, &guid);
ok(hres == S_OK, "VariantToGUID failed %x\n", hres); ok(hres == S_OK, "VariantToGUID failed %x\n", hres);
ok(!memcmp(&dummy_guid, &guid, sizeof(GUID)), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid)); ok(IsEqualGUID(&dummy_guid, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
ok(V_VT(&var) == VT_BSTR, "incorrect VARIANT type: %d\n", V_VT(&var)); ok(V_VT(&var) == VT_BSTR, "incorrect VARIANT type: %d\n", V_VT(&var));
V_BSTR(&var)[1] = 'z'; V_BSTR(&var)[1] = 'z';
...@@ -618,7 +618,14 @@ static void test_PropVariantToGUID(void) ...@@ -618,7 +618,14 @@ static void test_PropVariantToGUID(void)
V_VT(&var) = VT_EMPTY; V_VT(&var) = VT_EMPTY;
hres = PropVariantToGUID(&propvar, &guid); hres = PropVariantToGUID(&propvar, &guid);
ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres); ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres);
ok(!memcmp(&dummy_guid, &guid, sizeof(GUID)), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid)); ok(IsEqualGUID(&dummy_guid, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
PropVariantClear(&propvar);
memset(&guid, 0, sizeof(guid));
InitPropVariantFromCLSID(&dummy_guid, &propvar);
hres = PropVariantToGUID(&propvar, &guid);
ok(hres == S_OK, "PropVariantToGUID failed %x\n", hres);
ok(IsEqualGUID(&dummy_guid, &guid), "incorrect GUID created: %s\n", wine_dbgstr_guid(&guid));
PropVariantClear(&propvar); PropVariantClear(&propvar);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment