Condividi tramite


Funzione D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

La funzione D3DKMTOpenAdapterFromHdc esegue il mapping di un handle hdc (Device Context Handle) a un handle di scheda grafica e, se la scheda contiene più output di monitoraggio, a uno di questi output.

Sintassi

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Parametri

unnamedParam1

pData [in, out]

Puntatore a una struttura D3DKMT_OPENADAPTERFROMHDC che descrive i parametri necessari per eseguire il mapping.

Valore restituito

D3DKMTOpenAdapterFromHdc restituisce uno dei valori seguenti:

Codice restituito Descrizione
STATUS_SUCCESS Il mapping è stato eseguito correttamente.
STATUS_NO_MEMORY Il kernel ha esaurito le risorse che lo avrebbero abilitato per aprire un altro handle.
STATUS_INVALID_PARAMETER I parametri sono stati convalidati e sono stati determinati in modo errato o il modello di driver di visualizzazione di Windows Vista non è stato usato.

Questa funzione potrebbe restituire anche altri valori NTSTATUS.

Osservazioni

Una scheda grafica corrisponde a una scheda video. Un output di monitoraggio corrisponde a una testa su una scheda video. Un sistema con una singola scheda video contiene una sola scheda. Tuttavia, se la scheda video supporta più teste, supporta l'output su più monitor. Usare la funzione D3DKMTCloseAdapter per evitare perdite di risorse.

Esempi

L'esempio di codice seguente illustra come una progettazione immagine e configurazione OpenGL può usare D3DKMTOpenAdapterFromHdc per recuperare l'handle della scheda grafica e l'output per il monitoraggio primario da 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;
}

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista
piattaforma di destinazione Universale
intestazione d3dkmthk.h (include D3dkmthk.h)
libreria Gdi32.lib
dll Gdi32.dll

Vedere anche

D3DKMT_OPENADAPTERFROMHDC