I personally think you're being a mite paranoid, not to mention showing some prejudice, over this. I wouldn't try to defend COM as an architecture - it's ghastly - but COM itself has nothing in it that prevents portability. It just uses standard C/C++ constructs, and as such can be implemented on any platform. This kind of approach only serves to weaken your argument. That aside, you seem to be missing the documentation for D3D11_RTV_DIMENSION, D3D11_SRV_DIMENSION, etc, which is the crucial part that implements the cast.