>> Does this mean that it is possible ...
Anything is possible when you don't use structures/API's correctly. Only access "bstrVal" if "vt" is VT_BSTR.

The call to SafeArrayGetElement() looks fine, assuming vtProp.vt == VT_ARRAY | VT_I4.

gg