Функция 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.
Замечания
Графический адаптер соответствует видеоадаптере. Выходные данные монитора соответствуют голове на видеокарте. Система с одной видеокартой содержит только один адаптер. Однако если видеокарта поддерживает несколько голов, она поддерживает вывод на несколько мониторов. Используйте функцию 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 |
целевая платформа | Всеобщий |
заголовка | d3dkmthk.h (include D3dkmthk.h) |
библиотеки | Gdi32.lib |
DLL | Gdi32.dll |