PFND3DDDI_SIGNALSYNCHRONIZATIONOBJECTCB回调函数 (d3dumddi.h)

pfnSignalSynchronizationObjectCb 函数在指定上下文 DMA 流中的指定同步对象上插入信号。

语法

PFND3DDDI_SIGNALSYNCHRONIZATIONOBJECTCB Pfnd3dddiSignalsynchronizationobjectcb;

HRESULT Pfnd3dddiSignalsynchronizationobjectcb(
  HANDLE hDevice,
  const D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT *unnamedParam2
)
{...}

参数

hDevice

显示设备 (句柄,即图形上下文) 。

unnamedParam2

pData [in]

指向 D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT 结构的指针,该结构描述设置信号的同步对象和上下文 DMA 流。

返回值

pfnSignalSynchronizationObjectCb 返回以下值之一:

返回代码 说明
S_OK 信号已成功设置。
E_INVALIDARG 参数已验证并确定为不正确。

此函数还可能返回其他 HRESULT 值。

注解

Direct3D 版本 11 注意: 有关驱动程序如何调用 pfnSignalSynchronizationObjectCb 的详细信息,请参阅 Direct3D 10 中的更改

示例

下面的代码示例演示如何在同步对象上插入信号。

HRESULT CD3DContext::SyncEngines(DWORD dwEngineReleasingControl, DWORD dwEngineAcquiringControl) {
    HRESULT hr;
    D3DDDICB_WAITFORSYNCHRONIZATIONOBJECT   sWaitObject;
    D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT    sSignalObject;

    sSignalObject.hContext = m_sContexts[dwEngineReleasingControl].hContext;
    sSignalObject.ObjectCount = 1;
    sSignalObject.ObjectHandleArray[0] = m_hEngineSyncObject;
    hr = m_d3dCallbacks.pfnSignalSynchronizationObjectCb(m_hD3D, &sSignalObject);
    if (FAILED(hr)) {
        DBG_BREAK;
        return hr;
    }
    sWaitObject.hContext = m_sContexts[dwEngineAcquiringControl].hContext;
    sWaitObject.ObjectCount = 1;
    sWaitObject.ObjectHandleArray[0] = m_hEngineSyncObject;
    hr = m_d3dCallbacks.pfnWaitForSynchronizationObjectCb(m_hD3D, &sWaitObject);
    if (FAILED(hr)) {
        DBG_BREAK;        
    }
    return hr;
}

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT