PFND3DDDI_CREATEOVERLAYCB Rückruffunktion (d3dumddi.h)
Die pfnCreateOverlayCb-Funktion erstellt ein Überlagerungsobjekt im Kernelmodus und ruft den Display-Miniporttreiber auf, um das Overlay 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 gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
S_OK | Das Überlagerungsobjekt wurde erfolgreich erstellt. |
D3DDDIERR_NOTAVAILABLE | pfnCreateOverlayCb ist aufgrund fehlender Overlayhardware oder Bandbreite fehlgeschlagen. |
E_INVALIDARG | Die Parameter wurden überprüft und als falsch ermittelt. |
E_OUTOFMEMORY | PfnCreateOverlayCb konnte keinen Speicher zuordnen, der für den Abschluss erforderlich war. |
Diese Funktion gibt möglicherweise auch andere HRESULT-Werte zurück.
Hinweise
Die pfnCreateOverlayCb-Funktion gibt ein Handle an das neu erstellte Kernelmodus-Overlayobjekt im hKernelOverlay-Member der D3DDDICB_CREATEOVERLAY-Struktur zurück, auf die von pData verwiesen wird. Der Anzeigetreiber für den Benutzermodus übergibt dieses Handle in Aufrufen der folgenden Funktionen:
Im folgenden Codebeispiel wird gezeigt, wie ein Überlagerungsobjekt 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 |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Desktop |
Kopfzeile | d3dumddi.h (include D3dumddi.h) |