Функция 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 (включая D3dkmthk.h) |
Библиотека | Gdi32.lib |
DLL | Gdi32.dll |