Поделиться через


функция обратного вызова 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