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 [in, out]

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

Retornar valor

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 NTSTATUS .

Comentários

Um adaptador gráfico corresponde a um cartão de vídeo. Uma saída de monitor corresponde a uma cabeça em um cartão de vídeo. Um sistema com um único cartão de vídeo contém apenas um adaptador. No entanto, se o cartão de vídeo der suporte a vários cabeçalhos, ele 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 OpenGL ICD pode usar D3DKMTOpenAdapterFromHdc para recuperar o identificador do adaptador gráfico e a saída para o 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
Cliente mínimo com suporte Windows Vista
Plataforma de Destino Universal
Cabeçalho d3dkmthk.h (inclua D3dkmthk.h)
Biblioteca Gdi32.lib
DLL Gdi32.dll

Confira também

D3DKMT_OPENADAPTERFROMHDC