Freigeben über


PFND3DDDI_CREATEOVERLAYCB Rückruffunktion (d3dumddi.h)

Die pfnCreateOverlayCb--Funktion erstellt ein Kernelmodus-Überlagerungsobjekt und ruft den Anzeigeminiporttreiber auf, um die Überlagerung anzuzeigen.

Syntax

PFND3DDDI_CREATEOVERLAYCB Pfnd3dddiCreateoverlaycb;

HRESULT Pfnd3dddiCreateoverlaycb(
  HANDLE hDevice,
  D3DDDICB_CREATEOVERLAY *unnamedParam2
)
{...}

Parameter

hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

pData- [in, out]

Ein Zeiger auf eine D3DDDICB_CREATEOVERLAY Struktur, die die zu erstellende Überlagerung beschreibt.

Rückgabewert

pfnCreateOverlayCb einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Das Überlagerungsobjekt wurde erfolgreich erstellt.
D3DDDIERR_NOTAVAILABLE pfnCreateOverlayCb ist aufgrund eines Mangels an Überlagerungshardware oder Bandbreite fehlgeschlagen.
E_INVALIDARG Parameter wurden überprüft und ermittelt, dass sie falsch sind.
E_OUTOFMEMORY pfnCreateOverlayCb konnte keinen Speicher zuordnen, der für den Abschluss erforderlich war.

Diese Funktion kann auch andere HRESULT-Werte zurückgeben.

Bemerkungen

Die pfnCreateOverlayCb--Funktion gibt ein Handle für das neu erstellte Kernelmodus-Überlagerungsobjekt im hKernelOverlay Member der D3DDDICB_CREATEOVERLAY Struktur zurück, auf das von pData-verwiesen wird. Der Anzeigetreiber für den Benutzermodus übergibt dieses Handle in Aufrufen der folgenden Funktionen:

Das folgende Codebeispiel zeigt, wie ein Overlayobjekt erstellt wird.
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;
}

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Desktop
Header- d3dumddi.h (include D3dumddi.h)

Siehe auch

D3DDDICB_CREATEOVERLAY

D3DDDI_DEVICECALLBACKS

pfnDestroyOverlayCb

pfnFlipOverlayCb

pfnUpdateOverlayCb