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