Matteo Bruni (@Mystral) commented about dlls/d3dx9_36/tests/effect.c:
if (result_buf)
{
memset( result_buf, '\0', test_set_raw_data_values[x].expected_data_len );
hr = effect->lpVtbl->SetRawValue( effect,
effect->lpVtbl->GetParameterByName( effect, NULL, test_set_raw_data_values[x].param_name ),
test_set_raw_data_values[x].param_data,
test_set_raw_data_values[x].offset,
test_set_raw_data_values[x].param_data_len );
ok( hr == test_set_raw_data_values[x].expected_result,
"Test # %#1.1x var name %s : got HRESULT %#1.1x, expected %#1.1x.\n", x,
test_set_raw_data_values[x].param_name, hr,
test_set_raw_data_values[x].expected_result );
effect->lpVtbl->GetValue( effect,
effect->lpVtbl->GetParameterByName( effect, NULL, test_set_raw_data_values[x].param_name ),
result_buf,
test_set_raw_data_values[x].expected_data_len );
Please check the return value with ok(). I suspect this might play a role in your weird string test results.