Compartir a través de


Función D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

La función D3DKMTOpenAdapterFromHdc asigna un identificador de contexto del 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 de 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 ser incorrectos o no se usó el modelo de controlador de pantalla de Windows Vista.

Esta función también podría devolver otros valores NTSTATUS .

Comentarios

Un adaptador de gráficos corresponde a una tarjeta de vídeo. Una salida de monitor corresponde a un encabezado en 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 varias cabezas, 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 Value
Cliente mínimo compatible Windows Vista
Plataforma de destino Universal
Encabezado d3dkmthk.h (incluya D3dkmthk.h)
Library Gdi32.lib
Archivo DLL Gdi32.dll

Consulte también

D3DKMT_OPENADAPTERFROMHDC