PFND3DDDI_SETDISPLAYMODECB fonction de rappel (d3dumddi.h)
La fonction pfnSetDisplayModeCb définit l’allocation utilisée pour analyser sur 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 de D3DDDICB_SETDISPLAYMODE qui décrit l’allocation utilisée pour analyser.
Valeur retournée
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 en 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’ancienne principale 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 a appelé la fonction SetDisplayMode ou SetDisplayModeDXGI du pilote d’affichage en mode utilisateur 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 de 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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dumddi.h (inclure D3dumddi.h) |