Partager via


Fonction D3DKMTOpenAdapterFromHdc (d3dkmthk.h)

La fonction D3DKMTOpenAdapterFromHdc mappe un handle de contexte d’appareil (HDC) à un handle de carte graphique et, si l’adaptateur contient plusieurs sorties de moniteur, à l’une de ces sorties.

Syntaxe

NTSTATUS D3DKMTOpenAdapterFromHdc(
  D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);

Paramètres

unnamedParam1

pData [in, out]

Pointeur vers une structure de D3DKMT_OPENADAPTERFROMHDC qui décrit les paramètres requis pour effectuer le mappage.

Valeur retournée

D3DKMTOpenAdapterFromHdc retourne l’une des valeurs suivantes :

Code de retour Description
STATUS_SUCCESS Le mappage a été effectué avec succès.
STATUS_NO_MEMORY Le noyau a épuisé les ressources qui lui permettaient d’ouvrir un autre handle.
STATUS_INVALID_PARAMETER Les paramètres ont été validés et déterminés comme incorrects ou le modèle de pilote d’affichage Windows Vista n’a pas été utilisé.

Cette fonction peut également retourner d’autres valeurs NTSTATUS .

Remarques

Une carte graphique correspond à une carte vidéo. Une sortie de moniteur correspond à une tête sur une carte vidéo. Un système avec une seule carte vidéo ne contient qu’une seule carte. Toutefois, si la vidéo carte prend en charge plusieurs têtes, elle prend en charge la sortie sur plusieurs moniteurs. Utilisez la fonction D3DKMTCloseAdapter pour éviter les fuites de ressources.

Exemples

L’exemple de code suivant montre comment un ICD OpenGL peut utiliser D3DKMTOpenAdapterFromHdc pour récupérer le handle de la carte graphique et la sortie du moniteur principal à partir du 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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Plateforme cible Universal
En-tête d3dkmthk.h (inclure D3dkmthk.h)
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

D3DKMT_OPENADAPTERFROMHDC