PFND3DDDI_SETDISPLAYMODECB fonction de rappel (d3dumddi.h)
La fonction pfnSetDisplayModeCb définit l’allocation utilisée pour analyser l’affichage.
Syntaxe
PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;
HRESULT Pfnd3dddiSetdisplaymodecb(
HANDLE hDevice,
D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}
Paramètres
hDevice
Handle de l’appareil d’affichage (contexte graphique).
unnamedParam2
pData [in, out]
Pointeur vers une structure D3DDDICB_SETDISPLAYMODE qui décrit l’allocation utilisée pour l’analyse.
Valeur de retour
pfnSetDisplayModeCb retourne l’une des valeurs suivantes :
code de retour | Description |
---|---|
S_OK | Le mode d’affichage a été correctement défini. |
E_INVALIDARG | Les paramètres ont été validés et déterminés comme incorrects. |
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT | Le pilote d’affichage en mode utilisateur doit convertir le format de la surface associée à l’allocation que le membre hPrimaryAllocation de D3DDDICB_SETDISPLAYMODE spécifie dans l’attribut de format que le privateDriverFormatAttributemember de D3DDDICB_SETDISPLAYMODE spécifie. Le pilote doit ensuite appeler à nouveau pfnSetDisplayModeCb. Le pilote peut allouer une nouvelle allocation, effectuer un transfert de bloc de bits de conversion (bitblt) de l’ancienne surface primaire vers la nouvelle, puis détruire l’ancien principal tant que le pilote utilise le nouveau handle d’allocation pour cette allocation pour toutes les opérations suivantes. Le pilote doit répéter ce processus jusqu’à ce que pfnSetDisplayModeCb retourne une valeur de retour différente. |
Cette fonction peut également retourner d’autres valeurs HRESULT.
Remarques
Une fois que le runtime Microsoft Direct3D appelle les setDisplayMode du pilote d’affichage en mode utilisateur ou Fonction SetDisplayModeDXGI pour définir la surface principale à analyser sur l’affichage, le pilote d’affichage en mode utilisateur appelle la fonction pfnSetDisplayModeCb pour définir l’allocation principale sous-jacente utilisée pour l’analyse.
Remarque direct3D version 11 : Pour plus d’informations sur la façon dont le pilote appelle pfnSetDisplayModeCb, consultez Modifications de Direct3D 10.
Exemples
L’exemple de code suivant montre comment définir l’allocation pour l’analyse sur l’affichage.
HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
DWORD dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
HRESULT hr;
// Timestamp the source surface
m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
// Send the presentation request to the display miniport driver
D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};
SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
dwSrcSurf);
hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);
return (hr);
}
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows. |
plateforme cible | Bureau |
d’en-tête | d3dumddi.h (include D3dumddi.h) |