DirectX11 で設計しているレンダラーでは、いつでもスワップ チェーンを作成できる必要がありますが、使用するメソッドは CreateSwapChain() 呼び出しでクラッシュします。
IDXGIDevice * device;
HR(d3ddevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&device));
IDXGIAdapter * adapter;
HR(device->GetParent(__uuidof(IDXGIAdapter), (void**)&adapter));
IDXGIFactory * factory;
HR(adapter->GetParent(__uuidof(IDXGIAdapter), (void**)&factory));
IDXGISwapChain* swapChain = 0;
HR(factory->CreateSwapChain(_device->GetContent(), &description, &swapChain));
d3ddevice は ID3D11Device へのポインターであり、完全に初期化され、すべてがテストされています。description は DXGI_SWAP_CHAIN_DESC 構造体で、各フィールドが入力されています。ただし、関数は E_NOINTERFACE を返します。私のシステムはシェーダー モデル 5/directx 11 をサポートしています。