Partager via


D3DKMTOpenAdapterFromHdc, fonction (d3dkmthk.h)

La fonction D3DKMTOpenAdapterFromHdc mappe un handle de contexte d’appareil (HDC) à un handle d’adaptateur 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 D3DKMT_OPENADAPTERFROMHDC qui décrit les paramètres requis pour effectuer le mappage.

Valeur de retour

D3DKMTOpenAdapterFromHdc retourne l’une des valeurs suivantes :

Retourner le code Description
STATUS_SUCCESS Le mappage a été effectué avec succès.
STATUS_NO_MEMORY Le noyau a épuisé les ressources qui l’auraient permis 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’un seul adaptateur. Toutefois, si la carte vidéo 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;
}

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista
plateforme cible Universel
d’en-tête d3dkmthk.h (include D3dkmthk.h)
bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

D3DKMT_OPENADAPTERFROMHDC