Funzione D3DKMTOpenAdapterFromHdc (d3dkmthk.h)
La funzione D3DKMTOpenAdapterFromHdc esegue il mapping di un handle di contesto di dispositivo (HDC) a un handle di scheda grafica e, se la scheda contiene più output di monitoraggio, a uno di questi output.
Sintassi
NTSTATUS D3DKMTOpenAdapterFromHdc(
D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);
Parametri
unnamedParam1
pData [in, out]
Puntatore a una struttura D3DKMT_OPENADAPTERFROMHDC che descrive i parametri necessari per eseguire il mapping.
Valore restituito
D3DKMTOpenAdapterFromHdc restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | Il mapping è stato eseguito correttamente. |
STATUS_NO_MEMORY | Il kernel ha esaurito le risorse che lo avrebbero consentito di aprire un altro handle. |
STATUS_INVALID_PARAMETER | I parametri sono stati convalidati e sono stati determinati come non corretti oppure il modello di driver di visualizzazione di Windows Vista non è stato usato. |
Questa funzione potrebbe anche restituire altri valori NTSTATUS .
Commenti
Una scheda grafica corrisponde a una scheda video. Un output di monitoraggio corrisponde a una testa su una scheda video. Un sistema con una singola scheda video contiene una sola scheda. Tuttavia, se la scheda video supporta più teste, supporta l'output in più monitor. Usare la funzione D3DKMTCloseAdapter per evitare perdite di risorse.
Esempio
Nell'esempio di codice seguente viene illustrato come una progettazione immagine e configurazione OpenGL possa usare D3DKMTOpenAdapterFromHdc per recuperare l'handle della scheda grafica e l'output per il monitoraggio primario da 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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Piattaforma di destinazione | Universale |
Intestazione | d3dkmthk.h (include D3dkmthk.h) |
Libreria | Gdi32.lib |
DLL | Gdi32.dll |