PFND3DDDI_SETDISPLAYMODECB funzione di callback (d3dumddi.h)
La funzione pfnSetDisplayModeCb imposta l'allocazione usata per eseguire l'analisi sullo schermo.
Sintassi
PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;
HRESULT Pfnd3dddiSetdisplaymodecb(
HANDLE hDevice,
D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}
Parametri
hDevice
Handle per il dispositivo di visualizzazione (contesto grafico).
unnamedParam2
pData [in, out]
Puntatore a una struttura D3DDDICB_SETDISPLAYMODE che descrive l'allocazione usata per eseguire l'analisi.
Valore restituito
pfnSetDisplayModeCb restituisce uno dei valori seguenti:
codice restituito | Descrizione |
---|---|
S_OK | La modalità di visualizzazione è stata impostata correttamente. |
E_INVALIDARG | I parametri sono stati convalidati e sono stati determinati in modo che non siano corretti. |
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT | Il driver di visualizzazione in modalità utente deve convertire il formato della superficie associata all'allocazione specificata dal membro hPrimaryAllocation di D3DDDICB_SETDISPLAYMODE nell'attributo di formato specificato da PrivateDriverFormatAttributemember di D3DDDICB_SETDISPLAYMODE. Il driver deve quindi chiamare di nuovo pfnSetDisplayModeCb. Il driver potrebbe allocare una nuova allocazione, eseguire un trasferimento bit-block di conversione (bitblt) dalla superficie primaria precedente al nuovo e quindi distruggere il database primario precedente, purché il driver usi il nuovo handle di allocazione per questa allocazione per tutte le operazioni successive. Il driver deve ripetere questo processo fino a quando pfnSetDisplayModeCb restituisce un valore restituito diverso. |
Questa funzione potrebbe restituire anche altri valori HRESULT.
Osservazioni
Dopo che il runtime di Microsoft Direct3D chiama il driver di visualizzazione in modalità utente SetDisplayMode o SetDisplayModeDXGI funzione per impostare la superficie primaria da analizzare sullo schermo, il driver di visualizzazione in modalità utente chiama la funzione pfnSetDisplayModeCb per impostare l'allocazione primaria sottostante usata per l'analisi.
Direct3D versione 11 Nota: Per altre informazioni su come il driver chiama pfnSetDisplayModeCb, vedere modifiche da Direct3D 10.
Esempi
Nell'esempio di codice seguente viene illustrato come impostare l'allocazione per l'analisi sullo schermo.
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);
}
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows. |
piattaforma di destinazione | Desktop |
intestazione | d3dumddi.h (include D3dumddi.h) |