Microsoft DirectX 8.1 (C++)

Access Additional Interfaces

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.

  1. In the public section of your filter class definition, declare NonDelegatingQueryInterface:
        STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
    
  2. In the implementation section of your class, implement the NonDelegatingQueryInterface function. For example:
        // 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);
           }
        }