Win32 API 日本語リファレンス
ホームGraphics.Dxgi › IDXGIAdapter

IDXGIAdapter

COM
IID2411e7e1-12ac-4ccf-bd14-9798e8534dc0継承元IDXGIObject自前メソッド開始 vtbl7

公式ドキュメント

IDXGIAdapter インターフェイスは、ディスプレイサブシステム(1 つ以上の GPU、DAC、およびビデオメモリを含む)を表します。

解説(Remarks)

ディスプレイサブシステムはビデオカードと呼ばれることが多いですが、一部のマシンではディスプレイサブシステムがマザーボードの一部になっています。

ディスプレイサブシステムを列挙するには、IDXGIFactory::EnumAdapters を使用します。

特定のデバイスに対応するアダプターのインターフェイスを取得するには、IDXGIDevice::GetAdapter を使用します。

ソフトウェアアダプターを作成するには、IDXGIFactory::CreateSoftwareAdapter を使用します。

Windows Phone 8: この API はサポートされています。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 7 HRESULT EnumOutputs(DWORD Output, IDXGIOutput** ppOutput)

アダプター(ビデオカード)の出力(アウトプット)を列挙します。

OutputDWORDin出力(アウトプット)のインデックス。
ppOutputIDXGIOutput**outOutput パラメーターで指定された位置にある IDXGIOutput インターフェイスへのポインターのアドレス。

戻り値

型: HRESULT

成功または失敗を示すコード(DXGI_ERROR を参照)。インデックスが出力(アウトプット)の数を超えている場合は DXGI_ERROR_NOT_FOUND が返されます。

アダプターが D3D_DRIVER_TYPE_WARP を使用して作成されたデバイスから取得されたものである場合、そのアダプターには出力がないため、DXGI_ERROR_NOT_FOUND が返されます。

解説(Remarks)

Note この API を Session 0 プロセスで呼び出すと、DXGI_ERROR_NOT_CURRENTLY_AVAILABLE が返されます。
EnumOutputs メソッドが成功し、ppOutput パラメーターに出力(アウトプット)インターフェイスへのポインターのアドレスが設定されると、EnumOutputs はその出力インターフェイスの参照カウントをインクリメントします。メモリリークを避けるため、出力インターフェイスの使用を終えたら、Release メソッドを呼び出して参照カウントをデクリメントしてください。

EnumOutputs は、まずデスクトップのプライマリが表示されている出力(アウトプット)を返します。この出力はインデックス 0 に対応します。その後、EnumOutputs は他の出力を返します。

出力(アウトプット)の列挙

EnumOutputs を使用してアダプター上のすべての出力を列挙する方法の例を次に示します。


UINT i = 0;
IDXGIOutput * pOutput;
std::vector<IDXGIOutput*> vOutputs;
while(pAdapter->EnumOutputs(i, &pOutput) != DXGI_ERROR_NOT_FOUND)
{
    vOutputs.push_back(pOutput);
    ++i;
}
vtbl 8 HRESULT GetDesc(DXGI_ADAPTER_DESC* pDesc)

アダプター(またはビデオカード)の DXGI 1.0 の記述を取得します。

pDescDXGI_ADAPTER_DESC*outアダプターを記述する DXGI_ADAPTER_DESC 構造体へのポインター。このパラメーターは NULL であってはなりません。フィーチャーレベル 9 のグラフィックスハードウェアでは、GetDescDXGI_ADAPTER_DESCVendorIdDeviceIdSubSysIdRevision の各メンバーにゼロを返し、Description メンバーの記述文字列には「Software Adapter」を返します。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合、pDesc パラメーターが NULL であれば E_INVALIDARG を返します。

解説(Remarks)

グラフィックスアプリケーションは、DXGI API を使用して、Windows Display Driver Model (WDDM) ドライバーを備えたシステムで正確なグラフィックスメモリの値のセットを取得できます。以下に、関係する重要な手順を示します。

vtbl 9 HRESULT CheckInterfaceSupport(GUID* InterfaceName, LONGLONG* pUMDVersion)

システムがグラフィックスコンポーネント用のデバイスインターフェイスをサポートしているかどうかを確認します。

InterfaceNameGUID*inサポートの有無を確認するデバイスバージョンのインターフェイスの GUID。通常は __uuidof(IDXGIDevice) を指定します。これは Direct3D 9 の UMD(ユーザーモードドライバー)バイナリのバージョン番号を返します。WDDM 2.3 以降、ドライバーパッケージ内のすべてのドライバーコンポーネント(D3D9、D3D11、D3D12)は単一のバージョン番号を共有することが求められているため、これはどの API を使用しているかにかかわらずドライバーのバージョンを照会する良い方法です。
pUMDVersionLONGLONG*outInterfaceName のユーザーモードドライバーのバージョン。これはインターフェイスがサポートされている場合にのみ返されます。それ以外の場合、このパラメーターは NULL になります。

戻り値

型: HRESULT

S_OK はインターフェイスがサポートされていることを示します。それ以外の場合は DXGI_ERROR_UNSUPPORTED が返されます(詳細については DXGI_ERROR を参照してください)。

解説(Remarks)

Note CheckInterfaceSupport は、Direct3D 10.x のインターフェイスがサポートされているかどうかを確認する用途にのみ使用でき、また Windows Vista SP1 以降のバージョンのオペレーティングシステムでのみ使用できます。CheckInterfaceSupport を使用して Direct3D 11.x 以降のバージョンのインターフェイスがサポートされているかどうかを確認しようとすると、CheckInterfaceSupportDXGI_ERROR_UNSUPPORTED を返します。したがって、CheckInterfaceSupport は使用しないでください。代わりに、オペレーティングシステムが特定のインターフェイスをサポートしているかどうかを確認するには、そのインターフェイスの作成を試みてください。たとえば、ID3D11Device::CreateBlendState メソッドを呼び出して失敗した場合、そのオペレーティングシステムは ID3D11BlendState インターフェイスをサポートしていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDXGIAdapter "{2411E7E1-12AC-4CCF-BD14-9798E8534DC0}"
#usecom global IDXGIAdapter IID_IDXGIAdapter "{}"
#comfunc global IDXGIAdapter_EnumOutputs            7 int,sptr
#comfunc global IDXGIAdapter_GetDesc                8 var
#comfunc global IDXGIAdapter_CheckInterfaceSupport  9 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。