Partilhar via


Função D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

A função D3DKMTOpenAdapterFromHdc mapeia um HDC (identificador de contexto do dispositivo) para um identificador de adaptador gráfico e, se o adaptador contiver várias saídas de monitor, para uma dessas saídas.

Sintaxe

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Parâmetros

unnamedParam1

pData [dentro, fora]

Um ponteiro para uma estrutura D3DKMT_OPENADAPTERFROMHDC que descreve os parâmetros necessários para executar o mapeamento.

Valor de retorno

D3DKMTOpenAdapterFromHdc retorna um dos seguintes valores:

Código de retorno Descrição
STATUS_SUCCESS O mapeamento foi executado com êxito.
STATUS_NO_MEMORY O kernel ficou sem os recursos que o permitiriam abrir outro identificador.
STATUS_INVALID_PARAMETER Os parâmetros foram validados e determinados como incorretos ou o modelo de driver de exibição do Windows Vista não foi usado.

Essa função também pode retornar outros valores de NTSTATUS.

Observações

Um adaptador gráfico corresponde a uma placa de vídeo. Uma saída de monitor corresponde a uma cabeça em uma placa de vídeo. Um sistema com uma única placa de vídeo contém apenas um adaptador. No entanto, se a placa de vídeo der suporte a várias cabeças, ela oferecerá suporte à saída para vários monitores. Use a função D3DKMTCloseAdapter para evitar vazamentos de recursos.

Exemplos

O exemplo de código a seguir demonstra como um ICD OpenGL pode usar D3DKMTOpenAdapterFromHdc para recuperar o identificador do adaptador gráfico e a saída do monitor primário do 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
de cliente com suporte mínimo Windows Vista
da Plataforma de Destino Universal
cabeçalho d3dkmthk.h (inclua D3dkmthk.h)
biblioteca Gdi32.lib
de DLL Gdi32.dll

Consulte também

D3DKMT_OPENADAPTERFROMHDC