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