Freigeben über


D3DKMTOpenAdapterFromHdc-Funktion (d3dkmthk.h)

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

Syntax

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Parameter

unnamedParam1

pData- [in, out]

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

Rückgabewert

D3DKMTOpenAdapterFromHdc gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Die Zuordnung wurde erfolgreich ausgeführt.
STATUS_NO_MEMORY Der Kernel hat keine Ressourcen mehr, die es ermöglichen würden, ein anderes Handle zu öffnen.
STATUS_INVALID_PARAMETER Parameter wurden überprüft und ermittelt, dass sie falsch sind oder das Windows Vista-Anzeigetreibermodell nicht verwendet wurde.

Diese Funktion kann auch andere NTSTATUS- Werte zurückgeben.

Bemerkungen

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

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein OpenGL ICD D3DKMTOpenAdapterFromHdc- verwenden kann, um das Grafikadapterhandle und die Ausgabe für den primären Monitor aus der 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
mindestens unterstützte Client- Windows Vista
Zielplattform- Universal
Header- d3dkmthk.h (einschließlich D3dkmthk.h)
Library Gdi32.lib
DLL- Gdi32.dll

Siehe auch

D3DKMT_OPENADAPTERFROMHDC