PFND3DDDI_SETDISPLAYMODECB回呼函式 (d3dumddi.h)

pfnSetDisplayModeCb 函式會設定用來掃描顯示器的配置。

語法

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

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

參數

hDevice

顯示裝置的句柄 (圖形內容) 。

unnamedParam2

pData [in, out]

描述用來掃描之配置 之D3DDDICB_SETDISPLAYMODE 結構的指標。

傳回值

pfnSetDisplayModeCb 會傳回下列其中一個值:

傳回碼 描述
S_OK 已成功設定顯示模式。
E_INVALIDARG 已驗證參數,並判斷為不正確。
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT 使用者模式顯示驅動程式必須將與 hPrimaryAllocation 成員 D3DDDICB_SETDISPLAYMODE 指定之配置相關聯的表面格式轉換成 privateDriverFormatAttributember 所指定D3DDDICB_SETDISPLAYMODE格式屬性。 驅動程式接著應該再次呼叫 pfnSetDisplayModeCb。 驅動程式可以配置新的配置、執行轉換位區塊傳輸 (bitblt) 從舊的主要介面到新的,然後只要驅動程式針對所有後續作業使用此配置的新配置句柄,就會終結舊的主要複本。 驅動程式應該重複此程式,直到 pfnSetDisplayModeCb 傳回不同的傳回值為止。

此函式也可能傳回其他 HRESULT 值。

備註

在 Microsoft Direct3D 執行時間呼叫使用者模式顯示驅動程式的 SetDisplayMode 或 SetDisplayModeDXGI 函式,將主要表面設定為要掃描到顯示器之後,使用者模式顯示驅動程式會呼叫 pfnSetDisplayModeCb 函式,以設定用於掃描的基礎主要配置。

注意 在使用者模式顯示驅動程式呼叫 pfnSetDisplayModeCb 以設定使用擴充格式、多重取樣方法或兩者的新顯示模式之前,驅動程式必須確定目前的 GDI 顯示模式解析度與新的顯示模式相同;否則, pfnSetDisplayModeCb 會傳回E_INVALIDARG。
 

Direct3D 版本 11 附注: 如需驅動程式如何呼叫 pfnSetDisplayModeCb 的詳細資訊,請參閱 Direct3D 10 的變更

範例

下列程式代碼範例示範如何設定要掃描到顯示器的配置。

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

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 d3dumddi.h (包含 D3dumddi.h)

另請參閱

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI