This code is invalid (even if it can work). You need to create a `SwapChain1` and then `QueryInterface<SwapChain2>()` from it, like this:
```C#
using (var swapChain = new SwapChain1(factory, device, comWindow, ref desc))
   return swapChain.QueryInterface<SwapChain2>();
```