Partager via


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 Avant que le pilote d’affichage en mode utilisateur appelle pfnSetDisplayModeCb pour définir un nouveau mode d’affichage qui utilise un format étendu, une méthode d’échantillonnage multiple, ou les deux, le pilote doit s’assurer que le mode d’affichage GDI actuel a la même résolution que le nouveau mode d’affichage ; sinon, pfnSetDisplayModeCb retourne E_INVALIDARG.
 

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)

Voir aussi

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI