1

インターフェイスを実装したいのですがIPinFlowControl、メソッド Block が 1 つあります。

以下のコードで試してみましたが、

Mux::NonDelegatingQueryInterface(REFIID iid, void** ppv)
{
   if(iid==IID_IPinFlowControl)
    {
    return GetInterface((IPinFlowControl*) this, ppv);
    }

    return CBaseFilter::NonDelegatingQueryInterface(iid, ppv);
}


STDMETHODIMP Mux::Block(DWORD dwBlockFlags,HANDLE hEvent)
{
    return S_OK;
}

フィルターの上に登録します。

コードで上記のフィルターのインスタンスを作成し、その出力ピンを接続してから試します

IPin *pMuxOut2 = NULL;
hr = FindUnconnectedPin(mux,PINDIR_OUTPUT,&pMuxOut2);

IPinFlowControl *pinFlowControl=NULL;

hr=pMuxOut2->QueryInterface(IID_IPinFlowControl,(void**)&pinFlowControl);

しかし、私は pinFlowControl で E_NonInterface を取得しました。

また、出力をブロックおよびブロック解除するためにブロックメソッドを適切に実装するのを手伝ってください。

4

2 に答える 2

2

IPinFlowControlフィルターに実装する場合はCDynamicOutputPin、BaseClasses で提供されるクラスを確認する必要があります。

Synth Filter Sample in Windows SDK は、このクラスから派生する例を提供します。

于 2012-06-02T16:24:36.520 に答える
0

フィルターにインターフェイスを実装しているように見えますが、ピンでそのインターフェイスを照会します。

ピンにそのインターフェイスを作成する場合は、それを作成する必要があり、そのピンの実装を使用するフィルターを作成する必要があります。

于 2012-06-02T15:15:39.397 に答える