Compartir a través de


Función D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

La función D3DKMTOpenAdapterFromHdc asigna un identificador de contexto de dispositivo (HDC) a un controlador de adaptador de gráficos y, si el adaptador contiene varias salidas de monitor, a una de esas salidas.

Sintaxis

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Parámetros

unnamedParam1

pData [in, out]

Puntero a una estructura D3DKMT_OPENADAPTERFROMHDC que describe los parámetros necesarios para realizar la asignación.

Valor devuelto

D3DKMTOpenAdapterFromHdc devuelve uno de los siguientes valores:

Código devuelto Descripción
STATUS_SUCCESS La asignación se realizó correctamente.
STATUS_NO_MEMORY El kernel se ha agotado de los recursos que le permitirían abrir otro identificador.
STATUS_INVALID_PARAMETER Los parámetros se validaron y determinaron que son incorrectos o no se usó el modelo de controlador de visualización de Windows Vista.

Esta función también puede devolver otros valores de NTSTATUS.

Observaciones

Un adaptador de gráficos corresponde a una tarjeta de vídeo. Una salida del monitor corresponde a un encabezado de una tarjeta de vídeo. Un sistema con una sola tarjeta de vídeo contiene solo un adaptador. Sin embargo, si la tarjeta de vídeo admite varios cabezales, admite la salida a varios monitores. Use la función D3DKMTCloseAdapter para evitar pérdidas de recursos.

Ejemplos

En el ejemplo de código siguiente se muestra cómo un ICD de OpenGL puede usar D3DKMTOpenAdapterFromHdc para recuperar el identificador del adaptador de gráficos y la salida del monitor principal de 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;
}

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista
de la plataforma de destino de Universal
encabezado de d3dkmthk.h (incluya D3dkmthk.h)
biblioteca de Gdi32.lib
DLL de Gdi32.dll

Consulte también

D3DKMT_OPENADAPTERFROMHDC