PFND3DDDI_CREATEOVERLAYCB funzione di callback (d3dumddi.h)
La funzione pfnCreateOverlayCb crea un oggetto overlay in modalità kernel e chiama il driver miniport di visualizzazione per visualizzare la sovrimpressione.
Sintassi
PFND3DDDI_CREATEOVERLAYCB Pfnd3dddiCreateoverlaycb;
HRESULT Pfnd3dddiCreateoverlaycb(
HANDLE hDevice,
D3DDDICB_CREATEOVERLAY *unnamedParam2
)
{...}
Parametri
hDevice
Handle per il dispositivo di visualizzazione (contesto grafico).
unnamedParam2
pData [in, out]
Puntatore a una struttura D3DDDICB_CREATEOVERLAY che descrive la sovrimpressione da creare.
Valore restituito
pfnCreateOverlayCb restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
S_OK | L'oggetto overlay è stato creato correttamente. |
D3DDDIERR_NOTAVAILABLE | pfnCreateOverlayCb non è riuscito a causa di una mancanza di hardware o larghezza di banda sovrapposta. |
E_INVALIDARG | I parametri sono stati convalidati e sono stati determinati come non corretti. |
E_OUTOFMEMORY | PfnCreateOverlayCb non è riuscito ad allocare memoria necessaria per il completamento. |
Questa funzione potrebbe anche restituire altri valori HRESULT.
Commenti
La funzione pfnCreateOverlayCb restituisce un handle all'oggetto overlay in modalità kernel appena creato nel membro hKernelOverlay della struttura D3DDDICB_CREATEOVERLAY a cui punta pData. Il driver di visualizzazione in modalità utente passa questo handle nelle chiamate alle funzioni seguenti:
Nell'esempio di codice seguente viene illustrato come creare un oggetto overlay.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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | d3dumddi.h (include D3dumddi.h) |