PFND3DDDI_CREATEOVERLAYCB función de devolución de llamada (d3dumddi.h)
La función pfnCreateOverlayCb crea un objeto de superposición en modo kernel y llama al controlador de miniporte para mostrar la superposición.
Sintaxis
PFND3DDDI_CREATEOVERLAYCB Pfnd3dddiCreateoverlaycb;
HRESULT Pfnd3dddiCreateoverlaycb(
HANDLE hDevice,
D3DDDICB_CREATEOVERLAY *unnamedParam2
)
{...}
Parámetros
hDevice
Identificador del dispositivo de visualización (contexto de gráficos).
unnamedParam2
pData [in, out]
Puntero a una estructura D3DDDICB_CREATEOVERLAY que describe la superposición que se va a crear.
Valor devuelto
pfnCreateOverlayCb devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
S_OK | El objeto de superposición se creó correctamente. |
D3DDDIERR_NOTAVAILABLE | error pfnCreateOverlayCb debido a la falta de hardware o ancho de banda de superposición. |
E_INVALIDARG | Los parámetros se validaron y determinaron que son incorrectos. |
E_OUTOFMEMORY | pfnCreateOverlayCb no pudo asignar memoria necesaria para que se complete. |
Esta función también puede devolver otros valores HRESULT.
Observaciones
La función pfnCreateOverlayCb devuelve un identificador al objeto de superposición en modo kernel recién creado en el hKernelOverlay miembro de la estructura de D3DDDICB_CREATEOVERLAY a la que apunta pData. El controlador de visualización en modo de usuario pasa este identificador en llamadas a las siguientes funciones:
En el ejemplo de código siguiente se muestra cómo crear un objeto de superposición.D3DKMT_HANDLE g_hOverlay = NULL;
HRESULT CD3DContext::CreateOverlay(D3DDDIARG_CREATEOVERLAY* pCreateOverlay) {
D3DDDICB_CREATEOVERLAY CreateCB;
DWORD_PTR dwResource = (DWORD_PTR) pCreateOverlay->OverlayInfo.hResource;
dwResource += pCreateOverlay->OverlayInfo.SubResourceIndex;
LONG dwTempPitch;
pCreateOverlay->hOverlay = (HANDLE) 0x27;
CreateCB.VidPnSourceId = 0;
CreateCB.OverlayInfo.hAllocation = R200GetAllocationHandle(m_pR200Ctx,
(DWORD)dwResource,
&dwTempPitch);
CreateCB.OverlayInfo.DstRect.left = pCreateOverlay->OverlayInfo.DstRect.left;
CreateCB.OverlayInfo.DstRect.right = pCreateOverlay->OverlayInfo.DstRect.right;
CreateCB.OverlayInfo.DstRect.top = pCreateOverlay->OverlayInfo.DstRect.top;
CreateCB.OverlayInfo.DstRect.bottom = pCreateOverlay->OverlayInfo.DstRect.bottom;
CreateCB.OverlayInfo.SrcRect.left = pCreateOverlay->OverlayInfo.SrcRect.left;
CreateCB.OverlayInfo.SrcRect.right = pCreateOverlay->OverlayInfo.SrcRect.right;
CreateCB.OverlayInfo.SrcRect.top = pCreateOverlay->OverlayInfo.SrcRect.top;
CreateCB.OverlayInfo.SrcRect.bottom = pCreateOverlay->OverlayInfo.SrcRect.bottom;
CreateCB.OverlayInfo.pPrivateDriverData = "This is a test";
CreateCB.OverlayInfo.PrivateDriverDataSize = 10;
HRESULT hr = m_d3dCallbacks.pfnCreateOverlayCb(m_hD3D, &CreateCB);
if (SUCCEEDED(hr)) {
g_hOverlay = CreateCB.hKernelOverlay;
}
return hr;
}
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
de la plataforma de destino de | Escritorio |
encabezado de | d3dumddi.h (incluya D3dumddi.h) |