Condividi tramite


Funzione D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

La funzione D3DKMTOpenAdapterFromHdc esegue il mapping di un handle di contesto di dispositivo (HDC) 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 consentito di aprire un altro handle.
STATUS_INVALID_PARAMETER I parametri sono stati convalidati e sono stati determinati come non corretti oppure il modello di driver di visualizzazione di Windows Vista non è stato usato.

Questa funzione potrebbe anche restituire altri valori NTSTATUS .

Commenti

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 in più monitor. Usare la funzione D3DKMTCloseAdapter per evitare perdite di risorse.

Esempio

Nell'esempio di codice seguente viene illustrato come una progettazione immagine e configurazione OpenGL possa 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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Piattaforma di destinazione Universale
Intestazione d3dkmthk.h (include D3dkmthk.h)
Libreria Gdi32.lib
DLL Gdi32.dll

Vedi anche

D3DKMT_OPENADAPTERFROMHDC