Определение интерфейса, который поддерживает объект

[Функция, связанная с этой страницей, Пользовательские обработчики файлов и потоков, является устаревшей функцией. Он был заменен классом MediaStreamSource. Класс MediaStreamSource оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать класс MediaStreamSource вместо пользовательских обработчиков файлов и потоков, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Метод QueryInterface позволяет приложению запрашивать объект , чтобы определить, какие интерфейсы оно поддерживает. Пример приложения задает ppv-указатель на текущий интерфейс.

STDMETHODIMP CAVIFileCF::QueryInterface( 
    const IID FAR& iid, 
    void FAR* FAR* ppv) 
{ 
    if (iid == IID_IUnknown) 
        *ppv = this;                     // set the interface pointer 
                                         // to this instance 
    else if (iid == IID_IClassFactory) 
        *ppv = this;                     // second chance to set the 
                                         // interface pointer to this 
                                         // instance 
    else 
        return ResultFromScode(E_NOINTERFACE); 
    AddRef();  //Increment the reference count 
    return NULL; 
}