PFND3DDDI_SETDISPLAYMODECB Rückruffunktion (d3dumddi.h)

Die Funktion pfnSetDisplayModeCb legt die Zuordnung fest, die zum Scannen auf die Anzeige verwendet wird.

Syntax

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

HRESULT Pfnd3dddiSetdisplaymodecb(
  HANDLE hDevice,
  D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}

Parameter

hDevice

Ein Handle zum Anzeigegerät (Grafikkontext).

unnamedParam2

pData [in, out]

Ein Zeiger auf eine D3DDDICB_SETDISPLAYMODE Struktur, die die Zuordnung beschreibt, die zum Scannen verwendet wird.

Rückgabewert

pfnSetDisplayModeCb gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der Anzeigemodus wurde erfolgreich festgelegt.
E_INVALIDARG Parameter wurden überprüft und ermittelt, dass sie falsch sind.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT Der Benutzermodus-Anzeigetreiber muss das Format der Oberfläche konvertieren, die der Zuordnung zugeordnet ist, die das hPrimaryAllocation-Element von D3DDDICB_SETDISPLAYMODE in das Formatattribut angibt, das der PrivateDriverFormatAttributemember von D3DDDICB_SETDISPLAYMODE angibt. Der Treiber sollte dann pfnSetDisplayModeCb erneut aufrufen. Der Treiber könnte eine neue Zuordnung zuweisen, eine Konvertierungs-Bitblockübertragung (Bitblt) von der alten primären Oberfläche in die neue Oberfläche ausführen und dann die alte Primäre zerstören, solange der Treiber den neuen Zuordnungshandpunkt für alle nachfolgenden Vorgänge verwendet. Der Treiber sollte diesen Vorgang wiederholen, bis pfnSetDisplayModeCb einen anderen Rückgabewert zurückgibt.

Diese Funktion kann auch andere HRESULT-Werte zurückgeben.

Bemerkungen

Nachdem die Microsoft Direct3D-Laufzeit die SetDisplayMode- oder SetDisplayModeDXGI-Funktion des Benutzermodus aufruft, um die primäre Oberfläche festzulegen, die auf der Anzeige gescannt werden soll, ruft der Benutzermodus-Anzeigetreiber die pfnSetDisplayModeCb-Funktion auf, um die zugrunde liegende primäre Zuordnung festzulegen, die zum Scannen verwendet wird.

Hinweis Bevor der Benutzermodus-Anzeigetreiber pfnSetDisplayModeCb aufruft, um einen neuen Anzeigemodus festzulegen, der ein erweitertes Format verwendet, eine Multiple-Sampling-Methode oder beides, muss der Treiber sicherstellen, dass der aktuelle GDI-Anzeigemodus die gleiche Auflösung wie der neue Anzeigemodus hat; andernfalls gibt pfnSetDisplayModeCb E_INVALIDARG zurück.
 

Direct3D Version 11 Hinweis: Weitere Informationen zum Aufrufen des Treibers pfnSetDisplayModeCb finden Sie unter "Änderungen von Direct3D 10".

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Sie die Zuordnung für das Scannen auf die Anzeige festlegen.

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);
}

Anforderungen

   
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und späteren Versionen der Windows-Betriebssysteme.
Zielplattform Power BI Desktop
Header d3dumddi.h (einschließlich D3dumddi.h)

Weitere Informationen

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI