次の方法で共有


PFND3DDDI_SIGNALSYNCHRONIZATIONOBJECTCB コールバック関数 (d3dumddi.h)

pfnSignalSynchronizationObjectCb 関数は、指定したコンテキスト DMA ストリーム内の指定された同期オブジェクトにシグナルを挿入します。

構文

PFND3DDDI_SIGNALSYNCHRONIZATIONOBJECTCB Pfnd3dddiSignalsynchronizationobjectcb;

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

パラメーター

hDevice

ディスプレイ デバイスへのハンドル (つまり、グラフィックス コンテキスト)。

unnamedParam2

pData [in]

シグナリングが設定されている同期オブジェクトとコンテキスト DMA ストリームを記述する D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT 構造体へのポインター。

戻り値

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 オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

D3DDDICB_SIGNALSYNCHRONIZATIONOBJECT