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 |