PFND3DDDI_CREATEOVERLAYCB fonction de rappel (d3dumddi.h)
La fonction pfnCreateOverlayCb crée un objet de superposition en mode noyau et appelle le pilote de miniport d’affichage pour afficher la superposition.
Syntaxe
PFND3DDDI_CREATEOVERLAYCB Pfnd3dddiCreateoverlaycb;
HRESULT Pfnd3dddiCreateoverlaycb(
HANDLE hDevice,
D3DDDICB_CREATEOVERLAY *unnamedParam2
)
{...}
Paramètres
hDevice
Handle pour le périphérique d’affichage (contexte graphique).
unnamedParam2
pData [in, out]
Pointeur vers une structure D3DDDICB_CREATEOVERLAY qui décrit la superposition à créer.
Valeur retournée
pfnCreateOverlayCb retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
S_OK | L’objet de superposition a été créé avec succès. |
D3DDDIERR_NOTAVAILABLE | pfnCreateOverlayCb a échoué en raison d’un manque de matériel de superposition ou de bande passante. |
E_INVALIDARG | Les paramètres ont été validés et déterminés comme incorrects. |
E_OUTOFMEMORY | pfnCreateOverlayCb n’a pas pu allouer la mémoire nécessaire pour qu’elle se termine. |
Cette fonction peut également retourner d’autres valeurs HRESULT.
Remarques
La fonction pfnCreateOverlayCb retourne un handle à l’objet de superposition en mode noyau nouvellement créé dans le membre hKernelOverlay de la structure D3DDDICB_CREATEOVERLAY pointée par pData. Le pilote d’affichage en mode utilisateur transmet ce handle dans les appels aux fonctions suivantes :
L’exemple de code suivant montre comment créer un objet de superposition.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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dumddi.h (inclure D3dumddi.h) |