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) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour