When it comes interop, .NET has solved most of the hard problems. However, if you’ve worked with COM interfaces that return or take PROPVARIANTs as parameters, you may have noticed that there isn’t much support for this union’d struct type. I came across one such interface, and needed a good way to interop with its PROPVARIANT parameters. In fact, the implementation I was working with returned BLOBs, which break all sorts of basic implementations of variant interop.
Of course, PROPVARIANTs are used in other places than just COM. You may find yourself using P/Invoke with PROPVARIANT params, as well.