Función D3DKMTOpenAdapterFromHdc (d3dkmthk.h)
La función D3DKMTOpenAdapterFromHdc asigna un identificador de contexto del dispositivo (HDC) a un controlador de adaptador de gráficos y, si el adaptador contiene varias salidas de monitor, a una de esas salidas.
Sintaxis
NTSTATUS D3DKMTOpenAdapterFromHdc(
D3DKMT_OPENADAPTERFROMHDC *unnamedParam1
);
Parámetros
unnamedParam1
pData [in, out]
Puntero a una estructura de D3DKMT_OPENADAPTERFROMHDC que describe los parámetros necesarios para realizar la asignación.
Valor devuelto
D3DKMTOpenAdapterFromHdc devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
STATUS_SUCCESS | La asignación se realizó correctamente. |
STATUS_NO_MEMORY | El kernel se ha agotado de los recursos que le permitirían abrir otro identificador. |
STATUS_INVALID_PARAMETER | Los parámetros se validaron y determinaron ser incorrectos o no se usó el modelo de controlador de pantalla de Windows Vista. |
Esta función también podría devolver otros valores NTSTATUS .
Comentarios
Un adaptador de gráficos corresponde a una tarjeta de vídeo. Una salida de monitor corresponde a un encabezado en una tarjeta de vídeo. Un sistema con una sola tarjeta de vídeo contiene solo un adaptador. Sin embargo, si la tarjeta de vídeo admite varias cabezas, admite la salida a varios monitores. Use la función D3DKMTCloseAdapter para evitar pérdidas de recursos.
Ejemplos
En el ejemplo de código siguiente se muestra cómo un ICD de OpenGL puede usar D3DKMTOpenAdapterFromHdc para recuperar el identificador del adaptador de gráficos y la salida del monitor principal de 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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Plataforma de destino | Universal |
Encabezado | d3dkmthk.h (incluya D3dkmthk.h) |
Library | Gdi32.lib |
Archivo DLL | Gdi32.dll |