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 |