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 | 使用者模式顯示驅動程式必須將與 D3DDDICB_SETDISPLAYMODE 之 hPrimaryAllocation 成員所指定之配置關聯的介面格式轉換成 privateDriverFormatAttributember D3DDDICB_SETDISPLAYMODE 所指定之 format 屬性。 然後驅動程序應該再次呼叫 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) |