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 |