Condividi tramite


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)

Vedi anche

D3DDDICB_CREATEOVERLAY

D3DDDI_DEVICECALLBACKS

pfnDestroyOverlayCb

pfnFlipOverlayCb

pfnUpdateOverlayCb