D3DKMTOpenAdapterFromHdc 関数 (d3dkmthk.h)
D3DKMTOpenAdapterFromHdc 関数は、デバイス コンテキスト ハンドル (HDC) をグラフィックス アダプター ハンドルにマップし、アダプターに複数のモニター出力が含まれている場合は、それらの出力のいずれかにマップします。
構文
NTSTATUS D3DKMTOpenAdapterFromHdc(
D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);
パラメーター
unnamedParam1
pData [in, out]
マッピングの実行に必要なパラメーターを記述する D3DKMT_OPENADAPTERFROMHDC 構造体へのポインター。
戻り値
D3DKMTOpenAdapterFromHdc は、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | マッピングが正常に実行されました。 |
STATUS_NO_MEMORY | カーネルは、別のハンドルを開くことができるリソースを使い果たしました。 |
STATUS_INVALID_PARAMETER | パラメーターが検証され、正しくないと判断されたか、Windows Vista ディスプレイ ドライバー モデルが使用されませんでした。 |
この関数は、他の NTSTATUS 値も 返す場合があります。
注釈
グラフィックス アダプターは、ビデオ カードに対応します。 モニター出力は、ビデオ カードのヘッドに対応します。 1 つのビデオ カードを持つシステムには、アダプターが 1 つだけ含まれています。 ただし、ビデオ カードが複数のヘッドをサポートしている場合は、複数のモニターへの出力をサポートします。 リソース リークを回避するには、 D3DKMTCloseAdapter 関数を使用します。
例
次のコード例では、OpenGL ICD で D3DKMTOpenAdapterFromHdc を使用して、HDC からプライマリ モニターのグラフィックス アダプター ハンドルと出力を取得する方法を示します。
HRESULT GetPrimaryAdapterHandle(HANDLE* phAdapter, UINT* pOutput)
{
D3DKMT_OPENADAPTERFROMHDC OpenAdapterData;
DISPLAY_DEVICE dd;
HDC hdc;
int i;
*phAdapter = NULL;
*pOutput = 0;
memset(&dd, 0, sizeof (dd));
dd.cb = sizeof dd;
for (i = 0; EnumDisplayDevicesA(NULL, i, &dd, 0); ++i) {
if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) {
break;
}
}
hdc = CreateDC (NULL, dd.DeviceName, NULL, NULL);
if (hdc == NULL) {
return E_FAIL;
}
OpenAdapterData.hDc = hdc;
if (NT_SUCCESS((*pfnKTOpenAdapterFromHdc)(&OpenAdapterData))) {
DeleteDC(hdc);
*phAdapter = OpenAdapterData.hAdapter;
*pOutput = OpenAdapterData.VidPnSourceId;
return S_OK;
}
DeleteDC(hdc);
return E_FAIL;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
対象プラットフォーム | ユニバーサル |
Header | d3dkmthk.h (D3dkmthk.h を含む) |
Library | Gdi32.lib |
[DLL] | Gdi32.dll |