| Microsoft DirectX 8.1 (C++) | 
If your filter implements any interfaces that aren't implemented in the base classes, you must override the NonDelegatingQueryInterface function and return pointers to the implemented interfaces.
    STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
    // Reveal persistent stream and property pages.
    STDMETHODIMP CMyFilter::NonDelegatingQueryInterface(REFIID riid, void **ppv)
    {
        if (riid == IID_IPersistStream) {
          AddRef( );   // Add a reference count. Be sure to release when done.
         *ppv = (void *) (IPersistStream *) this; 
          return NOERROR;
       }
       else if (riid == IID_ISpecifyPropertyPages) {
             return GetInterface((ISpecifyPropertyPages *) this, ppv);
       }  
       else {
          return CTransInPlaceFilter::NonDelegatingQueryInterface(riid, ppv);
       }
    }