D3DKMTOpenAdapterFromHdc-Funktion (d3dkmthk.h)

Die D3DKMTOpenAdapterFromHdc-Funktion ordnet ein Gerätekontexthandle (HDC) einem Grafikadapterhandle und, wenn der Adapter mehrere Monitorausgaben enthält, einer dieser Ausgaben zu.

Syntax

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Parameter

unnamedParam1

pData [in, out]

Ein Zeiger auf eine D3DKMT_OPENADAPTERFROMHDC-Struktur , die die Parameter beschreibt, die zum Durchführen der Zuordnung erforderlich sind.

Rückgabewert

D3DKMTOpenAdapterFromHdc gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Die Zuordnung wurde erfolgreich durchgeführt.
STATUS_NO_MEMORY Dem Kernel sind die Ressourcen nicht mehr verfügbar, mit denen ein weiteres Handle geöffnet werden kann.
STATUS_INVALID_PARAMETER Parameter wurden überprüft und als falsch ermittelt, oder das Windows Vista-Anzeigetreibermodell wurde nicht verwendet.

Diese Funktion gibt möglicherweise auch andere NTSTATUS-Werte zurück.

Hinweise

Eine Grafikkarte entspricht einer Video-Karte. Eine Monitorausgabe entspricht einem Kopf auf einem Video Karte. Ein System mit einem einzelnen Video Karte enthält nur einen Adapter. Wenn das Video Karte jedoch mehrere Köpfe unterstützt, unterstützt es die Ausgabe an mehrere Monitore. Verwenden Sie die Funktion D3DKMTCloseAdapter , um Ressourcenlecks zu vermeiden.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein OpenGL ICD D3DKMTOpenAdapterFromHdc verwenden kann, um das Grafikkartenhandle und die Ausgabe für den primären Monitor aus dem HDC abzurufen.

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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Zielplattform Universell
Header d3dkmthk.h (include D3dkmthk.h)
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen

D3DKMT_OPENADAPTERFROMHDC